@burdenoff/microfe-files 2026.527.1 → 2026.527.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/files/components/ActionMenu.js +44 -40
- package/dist/files/components/ActionMenu.js.map +1 -1
- package/dist/files/components/ConfirmDialog.js +42 -40
- package/dist/files/components/ConfirmDialog.js.map +1 -1
- package/dist/files/components/CopyDialog.js +1 -0
- package/dist/files/components/CopyDialog.js.map +1 -1
- package/dist/files/components/FileBrowser.js +186 -170
- package/dist/files/components/FileBrowser.js.map +1 -1
- package/dist/files/components/FileCard.js.map +1 -1
- package/dist/files/components/FileInfoPanel.js +102 -102
- package/dist/files/components/FileInfoPanel.js.map +1 -1
- package/dist/files/components/FileListItem.js.map +1 -1
- package/dist/files/components/FolderCard.js +147 -161
- package/dist/files/components/FolderCard.js.map +1 -1
- package/dist/files/components/MoveDialog.js +9 -12
- package/dist/files/components/MoveDialog.js.map +1 -1
- package/dist/files/components/SearchBar.js +125 -117
- package/dist/files/components/SearchBar.js.map +1 -1
- package/dist/files/components/ShareDialog.js +5 -0
- package/dist/files/components/ShareDialog.js.map +1 -1
- package/dist/files/components/Toast.js +27 -24
- package/dist/files/components/Toast.js.map +1 -1
- package/dist/files/components/UploadQueue.js +1 -1
- package/dist/files/components/UploadQueue.js.map +1 -1
- package/dist/files/components/viewers/AudioPlayer.js +3 -0
- package/dist/files/components/viewers/AudioPlayer.js.map +1 -1
- package/dist/files/components/viewers/TextViewer.js +1 -0
- package/dist/files/components/viewers/TextViewer.js.map +1 -1
- package/dist/files/components/viewers/VideoPlayer.js +3 -0
- package/dist/files/components/viewers/VideoPlayer.js.map +1 -1
- package/dist/files/hooks/useCreateFolder.js +15 -7
- package/dist/files/hooks/useCreateFolder.js.map +1 -1
- package/dist/files/hooks/useKeyboardNavigation.js +51 -51
- package/dist/files/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/files/hooks/useMoveFile.js +1 -2
- package/dist/files/hooks/useMoveFile.js.map +1 -1
- package/dist/files/hooks/useMoveFolder.js +0 -2
- package/dist/files/hooks/useMoveFolder.js.map +1 -1
- package/dist/files/hooks/useStarredItems.js +4 -3
- package/dist/files/hooks/useStarredItems.js.map +1 -1
- package/dist/files/hooks/useToggleStar.js +10 -10
- package/dist/files/hooks/useToggleStar.js.map +1 -1
- package/dist/files/pages/BrowserPage.js +312 -302
- package/dist/files/pages/BrowserPage.js.map +1 -1
- package/dist/files/pages/ShareAccessPage.js +1 -0
- package/dist/files/pages/ShareAccessPage.js.map +1 -1
- package/dist/files/utils/quotaUtils.js +14 -0
- package/dist/files/utils/quotaUtils.js.map +1 -0
- package/package.json +2 -2
|
@@ -1,105 +1,105 @@
|
|
|
1
1
|
import { useFilesStore as e } from "../store/filesStore.js";
|
|
2
|
-
import { useCallback as t, useEffect as n,
|
|
2
|
+
import { useCallback as t, useEffect as n, useMemo as r, useRef as i } from "react";
|
|
3
3
|
//#region src/files/hooks/useKeyboardNavigation.ts
|
|
4
|
-
function
|
|
5
|
-
let
|
|
6
|
-
|
|
7
|
-
}, [
|
|
8
|
-
let e =
|
|
9
|
-
return
|
|
4
|
+
function a({ files: a, folders: o, onFilePreview: s, onFileDelete: c, onFolderOpen: l, onFolderDelete: u, activeTab: d }) {
|
|
5
|
+
let f = i(-1), { selectedFiles: p, selectedFolders: m, clearSelection: h, selectFile: g, selectFolder: _, toggleFileSelection: v, toggleFolderSelection: y, selectAllFiles: b, selectAllFolders: x } = e(), S = r(() => [...o, ...a], [o, a]), C = S.length, w = t((e) => {
|
|
6
|
+
f.current = Math.max(-1, Math.min(e, C - 1));
|
|
7
|
+
}, [C]), T = t(() => f.current >= 0 && f.current < C ? S[f.current] : null, [S, C]), E = t((e) => e < o.length, [o.length]), D = t((e) => e >= o.length, [o.length]), O = t(() => {
|
|
8
|
+
let e = f.current;
|
|
9
|
+
return D(e) ? a[e - o.length] ?? null : null;
|
|
10
10
|
}, [
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
]),
|
|
15
|
-
let e =
|
|
16
|
-
return
|
|
17
|
-
}, [
|
|
11
|
+
a,
|
|
12
|
+
o.length,
|
|
13
|
+
D
|
|
14
|
+
]), k = t(() => {
|
|
15
|
+
let e = f.current;
|
|
16
|
+
return E(e) ? o[e] ?? null : null;
|
|
17
|
+
}, [o, E]), A = t((e) => {
|
|
18
18
|
let t = e.target;
|
|
19
19
|
if (t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.isContentEditable) return;
|
|
20
|
-
let n =
|
|
20
|
+
let n = d === "bin";
|
|
21
21
|
switch (e.key) {
|
|
22
22
|
case "ArrowDown":
|
|
23
|
-
e.preventDefault(),
|
|
23
|
+
e.preventDefault(), w(f.current + 1);
|
|
24
24
|
break;
|
|
25
25
|
case "ArrowUp":
|
|
26
|
-
e.preventDefault(),
|
|
26
|
+
e.preventDefault(), w(f.current - 1);
|
|
27
27
|
break;
|
|
28
28
|
case "ArrowRight":
|
|
29
|
-
e.preventDefault(),
|
|
29
|
+
e.preventDefault(), w(f.current + 1);
|
|
30
30
|
break;
|
|
31
31
|
case "ArrowLeft":
|
|
32
|
-
e.preventDefault(),
|
|
32
|
+
e.preventDefault(), w(f.current - 1);
|
|
33
33
|
break;
|
|
34
34
|
case "Enter": {
|
|
35
35
|
e.preventDefault();
|
|
36
|
-
let t =
|
|
37
|
-
if (t)
|
|
36
|
+
let t = k();
|
|
37
|
+
if (t) l?.(t);
|
|
38
38
|
else {
|
|
39
|
-
let e =
|
|
40
|
-
e &&
|
|
39
|
+
let e = O();
|
|
40
|
+
e && s?.(e);
|
|
41
41
|
}
|
|
42
42
|
break;
|
|
43
43
|
}
|
|
44
44
|
case " ": {
|
|
45
45
|
e.preventDefault();
|
|
46
|
-
let t =
|
|
47
|
-
if (t)
|
|
46
|
+
let t = k();
|
|
47
|
+
if (t) y(t.id);
|
|
48
48
|
else {
|
|
49
|
-
let e =
|
|
50
|
-
e &&
|
|
49
|
+
let e = O();
|
|
50
|
+
e && v(e.id);
|
|
51
51
|
}
|
|
52
52
|
break;
|
|
53
53
|
}
|
|
54
54
|
case "Delete":
|
|
55
55
|
case "Backspace": {
|
|
56
56
|
if (e.preventDefault(), n) return;
|
|
57
|
-
let t =
|
|
58
|
-
if (t)
|
|
57
|
+
let t = k();
|
|
58
|
+
if (t) u?.(t);
|
|
59
59
|
else {
|
|
60
|
-
let e =
|
|
61
|
-
e &&
|
|
60
|
+
let e = O();
|
|
61
|
+
e && c?.(e);
|
|
62
62
|
}
|
|
63
63
|
break;
|
|
64
64
|
}
|
|
65
65
|
case "Escape":
|
|
66
|
-
e.preventDefault(),
|
|
66
|
+
e.preventDefault(), h(), w(-1);
|
|
67
67
|
break;
|
|
68
68
|
case "a":
|
|
69
69
|
case "A":
|
|
70
70
|
if (e.ctrlKey || e.metaKey) {
|
|
71
71
|
e.preventDefault();
|
|
72
|
-
let t =
|
|
73
|
-
|
|
72
|
+
let t = a.map((e) => e.id), n = o.map((e) => e.id);
|
|
73
|
+
b(t), x(n);
|
|
74
74
|
}
|
|
75
75
|
break;
|
|
76
76
|
}
|
|
77
77
|
}, [
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
i,
|
|
78
|
+
d,
|
|
79
|
+
h,
|
|
81
80
|
a,
|
|
82
|
-
|
|
81
|
+
o,
|
|
83
82
|
O,
|
|
83
|
+
k,
|
|
84
|
+
c,
|
|
84
85
|
s,
|
|
85
|
-
|
|
86
|
+
u,
|
|
86
87
|
l,
|
|
87
|
-
c,
|
|
88
|
-
y,
|
|
89
88
|
b,
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
v
|
|
89
|
+
x,
|
|
90
|
+
w,
|
|
91
|
+
v,
|
|
92
|
+
y
|
|
93
93
|
]);
|
|
94
|
-
return n(() => (document.addEventListener("keydown",
|
|
95
|
-
document.removeEventListener("keydown",
|
|
96
|
-
}), [
|
|
97
|
-
focusedIndex:
|
|
98
|
-
setFocusedIndex:
|
|
99
|
-
getFocusedItem:
|
|
94
|
+
return n(() => (document.addEventListener("keydown", A), () => {
|
|
95
|
+
document.removeEventListener("keydown", A);
|
|
96
|
+
}), [A]), {
|
|
97
|
+
focusedIndex: f.current,
|
|
98
|
+
setFocusedIndex: w,
|
|
99
|
+
getFocusedItem: T
|
|
100
100
|
};
|
|
101
101
|
}
|
|
102
102
|
//#endregion
|
|
103
|
-
export {
|
|
103
|
+
export { a as useKeyboardNavigation };
|
|
104
104
|
|
|
105
105
|
//# sourceMappingURL=useKeyboardNavigation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useKeyboardNavigation.js","names":[],"sources":["../../../src/files/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from \"react\";\nimport type { FileItem, FolderItem } from \"../types\";\nimport { useFilesStore } from \"../store/filesStore\";\n\ninterface UseKeyboardNavigationOptions {\n files: FileItem[];\n folders: FolderItem[];\n onFilePreview?: (file: FileItem) => void;\n onFileDelete?: (file: FileItem) => void;\n onFolderOpen?: (folder: FolderItem) => void;\n onFolderDelete?: (folder: FolderItem) => void;\n activeTab: string;\n}\n\nexport function useKeyboardNavigation({\n files,\n folders,\n onFilePreview,\n onFileDelete,\n onFolderOpen,\n onFolderDelete,\n activeTab,\n}: UseKeyboardNavigationOptions) {\n const focusedIndexRef = useRef<number>(-1);\n const {\n selectedFiles,\n selectedFolders,\n clearSelection,\n selectFile,\n selectFolder,\n toggleFileSelection,\n toggleFolderSelection,\n selectAllFiles,\n selectAllFolders,\n } = useFilesStore();\n\n const allItems = [...folders, ...files];\n const totalItems = allItems.length;\n\n const setFocusedIndex = useCallback(\n (index: number) => {\n const clampedIndex = Math.max(-1, Math.min(index, totalItems - 1));\n focusedIndexRef.current = clampedIndex;\n },\n [totalItems],\n );\n\n const getFocusedItem = useCallback(() => {\n if (focusedIndexRef.current >= 0 && focusedIndexRef.current < totalItems) {\n return allItems[focusedIndexRef.current];\n }\n return null;\n }, [allItems, totalItems]);\n\n const isFocusedFolder = useCallback(\n (index: number): boolean => {\n return index < folders.length;\n },\n [folders.length],\n );\n\n const isFocusedFile = useCallback(\n (index: number): boolean => {\n return index >= folders.length;\n },\n [folders.length],\n );\n\n const getFocusedFile = useCallback((): FileItem | null => {\n const idx = focusedIndexRef.current;\n if (isFocusedFile(idx)) {\n return files[idx - folders.length] ?? null;\n }\n return null;\n }, [files, folders.length, isFocusedFile]);\n\n const getFocusedFolder = useCallback((): FolderItem | null => {\n const idx = focusedIndexRef.current;\n if (isFocusedFolder(idx)) {\n return folders[idx] ?? null;\n }\n return null;\n }, [folders, isFocusedFolder]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const isInputFocused =\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.isContentEditable;\n\n if (isInputFocused) {\n return;\n }\n\n const isBinTab = activeTab === \"bin\";\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current + 1);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current - 1);\n break;\n }\n case \"ArrowRight\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current + 1);\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current - 1);\n break;\n }\n case \"Enter\": {\n event.preventDefault();\n const folder = getFocusedFolder();\n if (folder) {\n onFolderOpen?.(folder);\n } else {\n const file = getFocusedFile();\n if (file) {\n onFilePreview?.(file);\n }\n }\n break;\n }\n case \" \": {\n event.preventDefault();\n const folder = getFocusedFolder();\n if (folder) {\n toggleFolderSelection(folder.id);\n } else {\n const file = getFocusedFile();\n if (file) {\n toggleFileSelection(file.id);\n }\n }\n break;\n }\n case \"Delete\":\n case \"Backspace\": {\n event.preventDefault();\n if (isBinTab) {\n return;\n }\n const folder = getFocusedFolder();\n if (folder) {\n onFolderDelete?.(folder);\n } else {\n const file = getFocusedFile();\n if (file) {\n onFileDelete?.(file);\n }\n }\n break;\n }\n case \"Escape\": {\n event.preventDefault();\n clearSelection();\n setFocusedIndex(-1);\n break;\n }\n case \"a\":\n case \"A\": {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n const fileIds = files.map((f) => f.id);\n const folderIds = folders.map((f) => f.id);\n selectAllFiles(fileIds);\n selectAllFolders(folderIds);\n }\n break;\n }\n }\n },\n [\n activeTab,\n clearSelection,\n files,\n folders,\n getFocusedFile,\n getFocusedFolder,\n onFileDelete,\n onFilePreview,\n onFolderDelete,\n onFolderOpen,\n selectAllFiles,\n selectAllFolders,\n setFocusedIndex,\n toggleFileSelection,\n toggleFolderSelection,\n ],\n );\n\n useEffect(() => {\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [handleKeyDown]);\n\n return {\n focusedIndex: focusedIndexRef.current,\n setFocusedIndex,\n getFocusedItem,\n };\n}\n"],"mappings":";;;AAcA,SAAgB,EAAsB,EACpC,UACA,YACA,kBACA,iBACA,iBACA,mBACA,gBAC+B;CAC/B,IAAM,IAAkB,EAAe,GAAG,EACpC,EACJ,kBACA,oBACA,mBACA,eACA,iBACA,wBACA,0BACA,mBACA,wBACE,GAAe,EAEb,IAAW,CAAC,GAAG,GAAS,GAAG,EAAM,
|
|
1
|
+
{"version":3,"file":"useKeyboardNavigation.js","names":[],"sources":["../../../src/files/hooks/useKeyboardNavigation.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef } from \"react\";\nimport type { FileItem, FolderItem } from \"../types\";\nimport { useFilesStore } from \"../store/filesStore\";\n\ninterface UseKeyboardNavigationOptions {\n files: FileItem[];\n folders: FolderItem[];\n onFilePreview?: (file: FileItem) => void;\n onFileDelete?: (file: FileItem) => void;\n onFolderOpen?: (folder: FolderItem) => void;\n onFolderDelete?: (folder: FolderItem) => void;\n activeTab: string;\n}\n\nexport function useKeyboardNavigation({\n files,\n folders,\n onFilePreview,\n onFileDelete,\n onFolderOpen,\n onFolderDelete,\n activeTab,\n}: UseKeyboardNavigationOptions) {\n const focusedIndexRef = useRef<number>(-1);\n const {\n selectedFiles,\n selectedFolders,\n clearSelection,\n selectFile,\n selectFolder,\n toggleFileSelection,\n toggleFolderSelection,\n selectAllFiles,\n selectAllFolders,\n } = useFilesStore();\n\n const allItems = useMemo(() => [...folders, ...files], [folders, files]);\n const totalItems = allItems.length;\n\n const setFocusedIndex = useCallback(\n (index: number) => {\n const clampedIndex = Math.max(-1, Math.min(index, totalItems - 1));\n focusedIndexRef.current = clampedIndex;\n },\n [totalItems],\n );\n\n const getFocusedItem = useCallback(() => {\n if (focusedIndexRef.current >= 0 && focusedIndexRef.current < totalItems) {\n return allItems[focusedIndexRef.current];\n }\n return null;\n }, [allItems, totalItems]);\n\n const isFocusedFolder = useCallback(\n (index: number): boolean => {\n return index < folders.length;\n },\n [folders.length],\n );\n\n const isFocusedFile = useCallback(\n (index: number): boolean => {\n return index >= folders.length;\n },\n [folders.length],\n );\n\n const getFocusedFile = useCallback((): FileItem | null => {\n const idx = focusedIndexRef.current;\n if (isFocusedFile(idx)) {\n return files[idx - folders.length] ?? null;\n }\n return null;\n }, [files, folders.length, isFocusedFile]);\n\n const getFocusedFolder = useCallback((): FolderItem | null => {\n const idx = focusedIndexRef.current;\n if (isFocusedFolder(idx)) {\n return folders[idx] ?? null;\n }\n return null;\n }, [folders, isFocusedFolder]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const target = event.target as HTMLElement;\n const isInputFocused =\n target.tagName === \"INPUT\" ||\n target.tagName === \"TEXTAREA\" ||\n target.isContentEditable;\n\n if (isInputFocused) {\n return;\n }\n\n const isBinTab = activeTab === \"bin\";\n\n switch (event.key) {\n case \"ArrowDown\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current + 1);\n break;\n }\n case \"ArrowUp\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current - 1);\n break;\n }\n case \"ArrowRight\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current + 1);\n break;\n }\n case \"ArrowLeft\": {\n event.preventDefault();\n setFocusedIndex(focusedIndexRef.current - 1);\n break;\n }\n case \"Enter\": {\n event.preventDefault();\n const folder = getFocusedFolder();\n if (folder) {\n onFolderOpen?.(folder);\n } else {\n const file = getFocusedFile();\n if (file) {\n onFilePreview?.(file);\n }\n }\n break;\n }\n case \" \": {\n event.preventDefault();\n const folder = getFocusedFolder();\n if (folder) {\n toggleFolderSelection(folder.id);\n } else {\n const file = getFocusedFile();\n if (file) {\n toggleFileSelection(file.id);\n }\n }\n break;\n }\n case \"Delete\":\n case \"Backspace\": {\n event.preventDefault();\n if (isBinTab) {\n return;\n }\n const folder = getFocusedFolder();\n if (folder) {\n onFolderDelete?.(folder);\n } else {\n const file = getFocusedFile();\n if (file) {\n onFileDelete?.(file);\n }\n }\n break;\n }\n case \"Escape\": {\n event.preventDefault();\n clearSelection();\n setFocusedIndex(-1);\n break;\n }\n case \"a\":\n case \"A\": {\n if (event.ctrlKey || event.metaKey) {\n event.preventDefault();\n const fileIds = files.map((f) => f.id);\n const folderIds = folders.map((f) => f.id);\n selectAllFiles(fileIds);\n selectAllFolders(folderIds);\n }\n break;\n }\n }\n },\n [\n activeTab,\n clearSelection,\n files,\n folders,\n getFocusedFile,\n getFocusedFolder,\n onFileDelete,\n onFilePreview,\n onFolderDelete,\n onFolderOpen,\n selectAllFiles,\n selectAllFolders,\n setFocusedIndex,\n toggleFileSelection,\n toggleFolderSelection,\n ],\n );\n\n useEffect(() => {\n document.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [handleKeyDown]);\n\n return {\n focusedIndex: focusedIndexRef.current,\n setFocusedIndex,\n getFocusedItem,\n };\n}\n"],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ var t = () => {
|
|
|
4
4
|
let [t, { loading: n, error: r }] = e({ refetchQueries: [
|
|
5
5
|
"GetFilesRootBrowsePage",
|
|
6
6
|
"GetFilesFolderBrowsePage",
|
|
7
|
-
"GetFilesRecentPage"
|
|
8
|
-
"GetFiles"
|
|
7
|
+
"GetFilesRecentPage"
|
|
9
8
|
] });
|
|
10
9
|
return {
|
|
11
10
|
mutateAsync: async ({ fileId: e, targetFolderId: n }) => (await t({ variables: { input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMoveFile.js","names":[],"sources":["../../../src/files/hooks/useMoveFile.ts"],"sourcesContent":["import { useMoveFileMutation } from \"../../generated/wspace-operations\";\n\nexport interface MoveFileInput {\n fileId: string;\n targetFolderId: string | null;\n}\n\nexport const useMoveFile = () => {\n const [moveFileMutation, { loading, error }] = useMoveFileMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"GetFilesRecentPage\",\n
|
|
1
|
+
{"version":3,"file":"useMoveFile.js","names":[],"sources":["../../../src/files/hooks/useMoveFile.ts"],"sourcesContent":["import { useMoveFileMutation } from \"../../generated/wspace-operations\";\n\nexport interface MoveFileInput {\n fileId: string;\n targetFolderId: string | null;\n}\n\nexport const useMoveFile = () => {\n const [moveFileMutation, { loading, error }] = useMoveFileMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"GetFilesRecentPage\",\n ],\n });\n\n return {\n mutateAsync: async ({ fileId, targetFolderId }: MoveFileInput) => {\n const result = await moveFileMutation({\n variables: {\n input: {\n fileId,\n targetFolderId,\n },\n },\n });\n return result.data?.moveFile;\n },\n isPending: loading,\n error,\n };\n};\n"],"mappings":";;AAOA,IAAa,UAAoB;CAC/B,IAAM,CAAC,GAAkB,EAAE,YAAS,cAAW,EAAoB,EACjE,gBAAgB;EACd;EACA;EACA;EACD,EACF,CAAC;AAEF,QAAO;EACL,aAAa,OAAO,EAAE,WAAQ,yBACb,MAAM,EAAiB,EACpC,WAAW,EACT,OAAO;GACL;GACA;GACD,EACF,EACF,CAAC,EACY,MAAM;EAEtB,WAAW;EACX;EACD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMoveFolder.js","names":[],"sources":["../../../src/files/hooks/useMoveFolder.ts"],"sourcesContent":["import { useMoveFolderMutation } from \"../../generated/wspace-operations\";\n\nexport interface MoveFolderInput {\n folderId: string;\n targetParentFolderId: string | null;\n}\n\nexport const useMoveFolder = () => {\n const [moveFolderMutation, { loading, error }] = useMoveFolderMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"
|
|
1
|
+
{"version":3,"file":"useMoveFolder.js","names":[],"sources":["../../../src/files/hooks/useMoveFolder.ts"],"sourcesContent":["import { useMoveFolderMutation } from \"../../generated/wspace-operations\";\n\nexport interface MoveFolderInput {\n folderId: string;\n targetParentFolderId: string | null;\n}\n\nexport const useMoveFolder = () => {\n const [moveFolderMutation, { loading, error }] = useMoveFolderMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"GetFilesRecentPage\",\n \"GetFolders\",\n ],\n });\n\n return {\n mutateAsync: async ({\n folderId,\n targetParentFolderId,\n }: MoveFolderInput) => {\n const result = await moveFolderMutation({\n variables: {\n input: {\n folderId,\n targetParentFolderId,\n },\n },\n });\n\n return result.data?.moveFolder;\n },\n isPending: loading,\n error,\n };\n};\n"],"mappings":";;AAOA,IAAa,UAAsB;CACjC,IAAM,CAAC,GAAoB,EAAE,YAAS,cAAW,EAAsB,EACrE,gBAAgB;EACd;EACA;EACA;EACA;EACD,EACF,CAAC;AAEF,QAAO;EACL,aAAa,OAAO,EAClB,aACA,+BAEe,MAAM,EAAmB,EACtC,WAAW,EACT,OAAO;GACL;GACA;GACD,EACF,EACF,CAAC,EAEY,MAAM;EAEtB,WAAW;EACX;EACD"}
|
|
@@ -3,13 +3,14 @@ import { useGetFilesStarredPageQuery as e } from "../../generated/wspace-operati
|
|
|
3
3
|
var t = (t) => {
|
|
4
4
|
let n = e({
|
|
5
5
|
variables: { pagination: { limit: 100 } },
|
|
6
|
-
skip: t?.skip
|
|
7
|
-
|
|
6
|
+
skip: t?.skip,
|
|
7
|
+
errorPolicy: "all"
|
|
8
|
+
}), r = (n.error?.message ?? "").includes("FEATURE_DISABLED");
|
|
8
9
|
return {
|
|
9
10
|
files: n.data?.getStarredFiles?.files || [],
|
|
10
11
|
folders: n.data?.getStarredFolders?.folders || [],
|
|
11
12
|
isLoading: n.loading,
|
|
12
|
-
error: n.error ?? null
|
|
13
|
+
error: r ? null : n.error ?? null
|
|
13
14
|
};
|
|
14
15
|
};
|
|
15
16
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useStarredItems.js","names":[],"sources":["../../../src/files/hooks/useStarredItems.ts"],"sourcesContent":["/**\n * Starred Items Hook\n *\n * Fetches starred files and folders for the starred view.\n * Uses one page-owned query for both starred files and folders.\n */\n\nimport { useGetFilesStarredPageQuery } from \"../../generated/wspace-operations\";\nimport type { FileItem, FolderItem } from \"../types\";\n\nexport const useStarredItems = (options?: { skip?: boolean }) => {\n const query = useGetFilesStarredPageQuery({\n variables: {\n pagination: { limit: 100 },\n },\n skip: options?.skip,\n });\n\n return {\n files: (query.data?.getStarredFiles?.files || []) as FileItem[],\n folders: (query.data?.getStarredFolders?.folders || []) as FolderItem[],\n isLoading: query.loading,\n error: query.error ?? null,\n };\n};\n"],"mappings":";;AAUA,IAAa,KAAmB,MAAiC;CAC/D,IAAM,IAAQ,EAA4B;EACxC,WAAW,EACT,YAAY,EAAE,OAAO,KAAK,EAC3B;EACD,MAAM,GAAS;
|
|
1
|
+
{"version":3,"file":"useStarredItems.js","names":[],"sources":["../../../src/files/hooks/useStarredItems.ts"],"sourcesContent":["/**\n * Starred Items Hook\n *\n * Fetches starred files and folders for the starred view.\n * Uses one page-owned query for both starred files and folders.\n */\n\nimport { useGetFilesStarredPageQuery } from \"../../generated/wspace-operations\";\nimport type { FileItem, FolderItem } from \"../types\";\n\nexport const useStarredItems = (options?: { skip?: boolean }) => {\n const query = useGetFilesStarredPageQuery({\n variables: {\n pagination: { limit: 100 },\n },\n skip: options?.skip,\n errorPolicy: \"all\",\n });\n\n // ApolloError serialises all graphQL error messages into its top-level\n // message, so checking for the code string is a reliable way to detect\n // FEATURE_DISABLED without depending on Apollo 4's restricted ErrorLike type.\n const isFeatureDisabled = (query.error?.message ?? \"\").includes(\n \"FEATURE_DISABLED\",\n );\n\n return {\n files: (query.data?.getStarredFiles?.files || []) as FileItem[],\n folders: (query.data?.getStarredFolders?.folders || []) as FolderItem[],\n isLoading: query.loading,\n error: isFeatureDisabled ? null : (query.error ?? null),\n };\n};\n"],"mappings":";;AAUA,IAAa,KAAmB,MAAiC;CAC/D,IAAM,IAAQ,EAA4B;EACxC,WAAW,EACT,YAAY,EAAE,OAAO,KAAK,EAC3B;EACD,MAAM,GAAS;EACf,aAAa;EACd,CAAC,EAKI,KAAqB,EAAM,OAAO,WAAW,IAAI,SACrD,mBACD;AAED,QAAO;EACL,OAAQ,EAAM,MAAM,iBAAiB,SAAS,EAAE;EAChD,SAAU,EAAM,MAAM,mBAAmB,WAAW,EAAE;EACtD,WAAW,EAAM;EACjB,OAAO,IAAoB,OAAQ,EAAM,SAAS;EACnD"}
|
|
@@ -2,17 +2,17 @@ import { useToggleFileStarredMutation as e, useToggleFolderStarredMutation as t
|
|
|
2
2
|
//#region src/files/hooks/useToggleStar.ts
|
|
3
3
|
var n = () => {
|
|
4
4
|
let [n, { loading: r, error: i }] = e({ refetchQueries: [
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"
|
|
8
|
-
"
|
|
9
|
-
"
|
|
5
|
+
"GetFilesRootBrowsePage",
|
|
6
|
+
"GetFilesFolderBrowsePage",
|
|
7
|
+
"GetFilesStarredPage",
|
|
8
|
+
"GetFilesRecentPage",
|
|
9
|
+
"GetFolders"
|
|
10
10
|
] }), [a, { loading: o, error: s }] = t({ refetchQueries: [
|
|
11
|
-
"
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
11
|
+
"GetFilesRootBrowsePage",
|
|
12
|
+
"GetFilesFolderBrowsePage",
|
|
13
|
+
"GetFilesStarredPage",
|
|
14
|
+
"GetFilesRecentPage",
|
|
15
|
+
"GetFolders"
|
|
16
16
|
] });
|
|
17
17
|
return {
|
|
18
18
|
mutateAsync: async ({ id: e, type: t }) => t === "file" ? (await n({ variables: { id: e } })).data?.toggleFileStarred : (await a({ variables: { id: e } })).data?.toggleFolderStarred,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToggleStar.js","names":[],"sources":["../../../src/files/hooks/useToggleStar.ts"],"sourcesContent":["import {\n useToggleFileStarredMutation,\n useToggleFolderStarredMutation,\n} from \"../../generated/wspace-operations\";\n\nexport interface ToggleStarInput {\n id: string;\n type: \"file\" | \"folder\";\n}\n\nexport const useToggleStar = () => {\n const [\n toggleFileStarredMutation,\n { loading: fileLoading, error: fileError },\n ] = useToggleFileStarredMutation({\n refetchQueries: [\n \"
|
|
1
|
+
{"version":3,"file":"useToggleStar.js","names":[],"sources":["../../../src/files/hooks/useToggleStar.ts"],"sourcesContent":["import {\n useToggleFileStarredMutation,\n useToggleFolderStarredMutation,\n} from \"../../generated/wspace-operations\";\n\nexport interface ToggleStarInput {\n id: string;\n type: \"file\" | \"folder\";\n}\n\nexport const useToggleStar = () => {\n const [\n toggleFileStarredMutation,\n { loading: fileLoading, error: fileError },\n ] = useToggleFileStarredMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"GetFilesStarredPage\",\n \"GetFilesRecentPage\",\n \"GetFolders\",\n ],\n });\n\n const [\n toggleFolderStarredMutation,\n { loading: folderLoading, error: folderError },\n ] = useToggleFolderStarredMutation({\n refetchQueries: [\n \"GetFilesRootBrowsePage\",\n \"GetFilesFolderBrowsePage\",\n \"GetFilesStarredPage\",\n \"GetFilesRecentPage\",\n \"GetFolders\",\n ],\n });\n\n return {\n mutateAsync: async ({ id, type }: ToggleStarInput) => {\n if (type === \"file\") {\n const result = await toggleFileStarredMutation({\n variables: { id },\n });\n return result.data?.toggleFileStarred;\n } else {\n const result = await toggleFolderStarredMutation({\n variables: { id },\n });\n return result.data?.toggleFolderStarred;\n }\n },\n isPending: fileLoading || folderLoading,\n error: fileError || folderError,\n };\n};\n"],"mappings":";;AAUA,IAAa,UAAsB;CACjC,IAAM,CACJ,GACA,EAAE,SAAS,GAAa,OAAO,OAC7B,EAA6B,EAC/B,gBAAgB;EACd;EACA;EACA;EACA;EACA;EACD,EACF,CAAC,EAEI,CACJ,GACA,EAAE,SAAS,GAAe,OAAO,OAC/B,EAA+B,EACjC,gBAAgB;EACd;EACA;EACA;EACA;EACA;EACD,EACF,CAAC;AAEF,QAAO;EACL,aAAa,OAAO,EAAE,OAAI,cACpB,MAAS,UACI,MAAM,EAA0B,EAC7C,WAAW,EAAE,OAAI,EAClB,CAAC,EACY,MAAM,qBAEL,MAAM,EAA4B,EAC/C,WAAW,EAAE,OAAI,EAClB,CAAC,EACY,MAAM;EAGxB,WAAW,KAAe;EAC1B,OAAO,KAAa;EACrB"}
|