import defaultCharMap, { CharToDigit } from "../utils/charToDigit"; import { Digit } from "./Digit"; import React, { useEffect, useState } from "react"; type DisplayType = { count: number; height: number; value: any; color: string; backgroundColor?: string; skew: boolean; padding: string; charMap?: CharToDigit; }; export const Display = ({ count = 2, height = 250, value = null, color = "red", backgroundColor, skew = false, padding = "20px", charMap = defaultCharMap, }: DisplayType) => { const [digits, setDigits] = useState([]); const style = { display: "flex", flexDirection: "row", justifyContent: "center", alignItems: "center", height: "fit-content", width: "fit-content", padding, } as React.CSSProperties; const displayStyle = { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", height: "fit-content", width: "fit-content", backgroundColor: backgroundColor ? backgroundColor : "transparent", padding, color: "white", } as React.CSSProperties; useEffect(() => { let newDigits = value && value.toString().split(""); if (!value || count < value.toString().length) { newDigits = null; } if (value && count > value.toString().length) { for (let i = 0; i < count - value.toString().length; i++) { newDigits.unshift("0"); } } setDigits(newDigits); }, [count, value]); return (
{digits ? digits.map((digit, index) => { return ( ); }) : Array.from(Array(count).keys()).map((index) => { return ( ); })}
); };