diff --git a/src/atoms/atoms.ts b/src/atoms/atoms.ts index 2f03cccf..7ad0cbfc 100644 --- a/src/atoms/atoms.ts +++ b/src/atoms/atoms.ts @@ -205,9 +205,9 @@ export const missingMovesAtom = atomWithStorage>( createJSONStorage(() => sessionStorage), ); -function tabValue( - family: AtomFamily>, -) { +function tabValue< + T extends object | string | boolean | number | null | undefined, +>(family: AtomFamily>) { return atom( (get) => { const tab = get(currentTabAtom); @@ -283,6 +283,11 @@ export const currentDbTabAtom = tabValue(dbTabFamily); const analysisTabFamily = atomFamily((tab: string) => atom("engines")); export const currentAnalysisTabAtom = tabValue(analysisTabFamily); +const expandedEnginesFamily = atomFamily((tab: string) => + atom(undefined), +); +export const currentExpandedEnginesAtom = tabValue(expandedEnginesFamily); + const pgnOptionsFamily = atomFamily((tab: string) => atom({ comments: true, diff --git a/src/components/panels/analysis/AnalysisPanel.tsx b/src/components/panels/analysis/AnalysisPanel.tsx index 2dc28f49..4e8c3d95 100644 --- a/src/components/panels/analysis/AnalysisPanel.tsx +++ b/src/components/panels/analysis/AnalysisPanel.tsx @@ -2,6 +2,7 @@ import { activeTabAtom, allEnabledAtom, currentAnalysisTabAtom, + currentExpandedEnginesAtom, enableAllAtom, engineMovesFamily, enginesAtom, @@ -74,6 +75,7 @@ function AnalysisPanel({ allEnabledLoader.state === "hasData" && allEnabledLoader.data; const [tab, setTab] = useAtom(currentAnalysisTabAtom); + const [expanded, setExpanded] = useAtom(currentExpandedEnginesAtom); const stats = useMemo(() => getGameStats(root), [root]); const is960 = useMemo(() => headers.variant === "Chess960", [headers]); @@ -90,7 +92,6 @@ function AnalysisPanel({ e.name)} + value={expanded} + onChange={(v) => setExpanded(v)} styles={{ label: { paddingTop: 0,