import Slider from "@/components/slider"; import { EngineName } from "@/types/enums"; import { MenuItem, Select, Button, Dialog, DialogTitle, DialogContent, FormControl, InputLabel, OutlinedInput, DialogActions, Typography, Grid2 as Grid, } from "@mui/material"; import { engineNameAtom, engineDepthAtom, engineMultiPvAtom, } from "../analysis/states"; import ArrowOptions from "./arrowOptions"; import { useAtomLocalStorage } from "@/hooks/useAtomLocalStorage"; import { useEffect } from "react"; import { isEngineSupported } from "@/lib/engine/shared"; import { Stockfish16_1 } from "@/lib/engine/stockfish16_1"; import { useAtom } from "jotai"; import { boardHueAtom, pieceSetAtom } from "@/components/board/states"; import { DEFAULT_ENGINE, ENGINE_LABELS, PIECE_SETS, STRONGEST_ENGINE, } from "@/constants"; interface Props { open: boolean; onClose: () => void; } export default function EngineSettingsDialog({ open, onClose }: Props) { const [depth, setDepth] = useAtomLocalStorage( "engine-depth", engineDepthAtom ); const [multiPv, setMultiPv] = useAtomLocalStorage( "engine-multi-pv", engineMultiPvAtom ); const [engineName, setEngineName] = useAtomLocalStorage( "engine-name", engineNameAtom ); const [boardHue, setBoardHue] = useAtom(boardHueAtom); const [pieceSet, setPieceSet] = useAtom(pieceSetAtom); useEffect(() => { if (!isEngineSupported(engineName)) { if (Stockfish16_1.isSupported()) { setEngineName(EngineName.Stockfish16_1Lite); } else { setEngineName(EngineName.Stockfish11); } } }, [setEngineName, engineName]); return ( Settings {ENGINE_LABELS[DEFAULT_ENGINE].small} is the default engine if your device support its requirements. It offers the best balance between speed and strength.{" "} {ENGINE_LABELS[STRONGEST_ENGINE].small} is the strongest engine available, note that it requires a one time download of 75MB. Engine Piece set ); }