summaryrefslogtreecommitdiff
path: root/shared/components/src/stores/navigation-folders-open.ts
blob: b761371b3c6aec1cf37424027925cad5a244a868 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { type Writable, writable } from 'svelte/store';

type FolderState = Writable<boolean>;
const folderStates = new Map<string, FolderState>();

export function subscribeFolderOpenState(
    id: string,
    defaultState?: boolean,
): FolderState {
    let stateById = folderStates.get(id);
    if (!stateById) {
        folderStates.set(id, writable(defaultState ?? false));
        stateById = folderStates.get(id);
    }

    return stateById;
}

export function resetFoldersOpenState() {
    folderStates.clear();
}