Files
kandev/apps/web/lib/state/dockview-file-state.ts
T
2026-02-25 02:10:16 +00:00

41 lines
1.1 KiB
TypeScript

import type { FileEditorState } from "./dockview-store";
type StoreSet = (
partial:
| { openFiles: Map<string, FileEditorState> }
| ((s: { openFiles: Map<string, FileEditorState> }) => {
openFiles: Map<string, FileEditorState>;
}),
) => void;
export function buildFileStateActions(set: StoreSet) {
return {
setFileState: (path: string, state: FileEditorState) => {
set((prev) => {
const m = new Map(prev.openFiles);
m.set(path, state);
return { openFiles: m };
});
},
updateFileState: (path: string, updates: Partial<FileEditorState>) => {
set((prev) => {
const e = prev.openFiles.get(path);
if (!e) return prev as { openFiles: Map<string, FileEditorState> };
const m = new Map(prev.openFiles);
m.set(path, { ...e, ...updates });
return { openFiles: m };
});
},
removeFileState: (path: string) => {
set((prev) => {
const m = new Map(prev.openFiles);
m.delete(path);
return { openFiles: m };
});
},
clearFileStates: () => {
set({ openFiles: new Map() });
},
};
}