import React, { useEffect, useState } from "react";
import clsx from "clsx";
import Image from "next/image";
const rotationDuration = 3800;
const bezier = "cubic-bezier(0.645,0.045,0.355,1)";
function Coin(props: {
frontList: boolean[];
rotation: boolean;
onTransitionEnd: any;
}) {
const [lastFront, setLastFront] = useState(props.frontList);
useEffect(function () {
if (!props.rotation) {
return;
}
let id = setTimeout(function () {
setLastFront(props.frontList);
props.onTransitionEnd();
}, rotationDuration);
return () => clearTimeout(id);
});
return (
{props.frontList.map((value, index) => (
))}
);
}
function CoinItem(props: {
front: boolean;
lastFront: boolean;
rotation: boolean;
onTransitionEnd?: any;
}) {
let animate = "";
if (props.rotation) {
// animate-[coin-front-front_3.8s_cubic-bezier(0.645,0.045,0.355,1)]
// animate-[coin-front-back_3.8s_cubic-bezier(0.645,0.045,0.355,1)]
// animate-[coin-back-front_3.8s_cubic-bezier(0.645,0.045,0.355,1)]
// animate-[coin-back-back_3.8s_cubic-bezier(0.645,0.045,0.355,1)]
animate = `animate-[coin-${getFront(props.lastFront)}-${getFront(
props.front,
)}_${rotationDuration / 1000}s_${bezier}]`;
}
return (
);
}
function getFront(front: boolean): string {
return front ? "front" : "back";
}
export default Coin;