import * as React from "react"; import {getMatrix, getNumbers, multiStyles} from "../../utils"; import Controls from "../Controls"; import Grid from "../Grid"; import N from "../Grid/components/N"; import styles from "./styles.module.scss"; const AddPuzzleScreen = ({open, onClose}) => { const [dim, setDim] = React.useState([3, 3]); const [gridMat, setGridMat] = React.useState([]); const [gridNumbers, setGridNumbers] = React.useState([]); React.useEffect(() => { if (!isNaN(dim[0]) && dim[0] > 0 && !isNaN(dim[1]) && dim[1] > 0) { setGridMat(getMatrix(dim, [], gridNumbers)); } }, [dim[0], dim[1]]); React.useEffect(() => { setGridNumbers(getNumbers(gridMat)); }, [JSON.stringify(gridMat)]); const [gridReset, setGridReset] = React.useState(false); React.useEffect(() => { if (gridReset) { if (!isNaN(dim[0]) && dim[0] > 0 && !isNaN(dim[1]) && dim[1] > 0) { setGridNumbers([]); setGridMat(getMatrix(dim)); } setGridReset(false); } }, [gridReset]); const [submitState, setSubmitState] = React.useState("none"); const [submitText, setSubmitText] = React.useState("Submit"); const onSubmit = () => { setSubmitState("passed"); setSubmitText("Thanks for submitting! 😀"); }; React.useEffect(() => { let timeout; if (submitState === "passed") { timeout = setTimeout(() => { setSubmitState("none"); setSubmitText("Submit"); }, 5000); } return () => !isNaN(timeout) && clearTimeout(timeout); }, [submitState]); const shouldShowGrid = !isNaN(dim[0]) && dim[0] > 0 && !isNaN(dim[1]) && dim[1] > 0; return ( <> {open && (
Set dimensions
{ setGridReset(true); setDim([n, dim[1]]); }} editorMode className={styles.input} /> X { setGridReset(true); setDim([dim[0], n]); }} editorMode className={styles.input} />
Set matrix
{shouldShowGrid ? ( ) : ( "Please set valid dimensions above" )}
{shouldShowGrid && ( {submitText} )}
setGridReset(true)} editorMode />
)} ); }; export default AddPuzzleScreen;