import { create } from "zustand"; interface FilePickerState { selectedPaths: Set; expandedFolders: Set; toggleSelection: (path: string) => void; selectAll: (paths: string[]) => void; clearSelection: () => void; toggleFolder: (path: string) => void; getSelectedPaths: () => string[]; } export const useFilePickerStore = create((set, get) => ({ selectedPaths: new Set(), expandedFolders: new Set(), toggleSelection: (path: string) => { set((state) => { const newSet = new Set(state.selectedPaths); if (newSet.has(path)) { newSet.delete(path); } else { newSet.add(path); } return { selectedPaths: newSet }; }); }, selectAll: (paths: string[]) => { set((state) => { const newSet = new Set(state.selectedPaths); paths.forEach((p) => newSet.add(p)); return { selectedPaths: newSet }; }); }, clearSelection: () => { set({ selectedPaths: new Set() }); }, toggleFolder: (path: string) => { set((state) => { const newSet = new Set(state.expandedFolders); if (newSet.has(path)) { newSet.delete(path); } else { newSet.add(path); } return { expandedFolders: newSet }; }); }, getSelectedPaths: () => { return Array.from(get().selectedPaths); }, }));