Files
HellreigN/frontend/src/modules/ide/store/useFilePickerStore.ts
T
nikita 2bc3da21fd
ci-front / build (push) Successful in 2m19s
feat: launch scripts
2026-04-05 06:54:33 +03:00

58 lines
1.3 KiB
TypeScript

import { create } from "zustand";
interface FilePickerState {
selectedPaths: Set<string>;
expandedFolders: Set<string>;
toggleSelection: (path: string) => void;
selectAll: (paths: string[]) => void;
clearSelection: () => void;
toggleFolder: (path: string) => void;
getSelectedPaths: () => string[];
}
export const useFilePickerStore = create<FilePickerState>((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);
},
}));