import { useAtom, useAtomValue } from "jotai"; import { useMemo } from "react"; import { boardAtom, boardMatrixAtom, gameResultAtom, heightAtom, preferencesAtom, selectBoardSubset, selectGuessAt, selectSessionSubset, selectVariantAt, sessionMatrixAtom, variantsAtom, widthAtom, } from "./state"; export function useGuessAt(index: number) { const atomCell = useMemo(() => selectGuessAt(index), [index]); const [cell] = useAtom(atomCell); return cell; } export function useVariants() { return useAtomValue(variantsAtom); } export function useVariantAt(index: number) { const variantAtom = useMemo(() => selectVariantAt(index), [index]); return useAtomValue(variantAtom); } export function useBoard() { return useAtomValue(boardAtom); } export function useBoardDimensions() { const width = useAtomValue(widthAtom); const height = useAtomValue(heightAtom); return [width, height] as const; } export function useBoardMatrix() { return useAtomValue(boardMatrixAtom); } export function useSessionMatrix() { return useAtomValue(sessionMatrixAtom); } export function useGameResult() { return useAtomValue(gameResultAtom); } export function useBoardSubset(dir: "row" | "col", index: number) { const subset = useMemo(() => selectBoardSubset(dir, index), [dir, index]); return useAtomValue(subset); } export function useSessionSubset(dir: "row" | "col", index: number) { const subset = useMemo(() => selectSessionSubset(dir, index), [dir, index]); return useAtomValue(subset); } export function usePreferences() { return useAtom(preferencesAtom); }