import { createContext, useCallback, useEffect, useMemo, useState } from "react"; type GameContextValue = { all: Record selected?: string; setSelected: (name: string) => void; value?: string; setValue: (value: string) => void; create: (name: string, value: string) => void; remove: (name: string) => void; } type GameProviderProps = { children: React.ReactNode; }; const GameContext = createContext(undefined as any); const GameProvider: React.FC = ({ children }) => { const [all, setAll] = useState>( JSON.parse(localStorage.getItem('ai') || '{}'), ); const [selected, setSelected] = useState(); const create = useCallback((name: string, value: string) => { setAll((prev) => ({ ...prev, [name]: value, })); setSelected(name); }, [setAll]); const remove = useCallback((name: string) => { setAll((prev) => { const next = { ...prev }; delete next[name]; return next; }); }, [setAll]); const setValue= useCallback((value: string) => { if (!selected) return; setAll((prev) => ({ ...prev, [selected]: value, })); }, [selected, setAll]); const value = useMemo(() => { if (!selected) return; return all[selected]; }, [selected, all]); useEffect(() => { localStorage.setItem('ai', JSON.stringify(all)); }, [all]); return ( {children} ); }; export { GameContext, GameProvider };