@oxy.so/services 11.6.0 → 11.9.0
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/android/src/main/java/so/oxy/security/OxyCallerPolicy.kt +18 -0
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/assets/fonts/icons/manifest.json +8 -5
- package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/commonjs/assets/fonts/icons/manifest.json +8 -5
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js +2 -1
- package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/commonjs/ui/components/supervision/PersonPicker.js +69 -0
- package/lib/commonjs/ui/components/supervision/PersonPicker.js.map +1 -0
- package/lib/commonjs/ui/components/supervision/presentation.js +23 -0
- package/lib/commonjs/ui/components/supervision/presentation.js.map +1 -0
- package/lib/commonjs/ui/hooks/queries/queryKeys.js +3 -1
- package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js +39 -17
- package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -1
- package/lib/commonjs/ui/hooks/queries/useSupervision.js +37 -0
- package/lib/commonjs/ui/hooks/queries/useSupervision.js.map +1 -0
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js +3 -0
- package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/commonjs/ui/index.js +13 -0
- package/lib/commonjs/ui/index.js.map +1 -1
- package/lib/commonjs/ui/navigation/routes.js +2 -0
- package/lib/commonjs/ui/navigation/routes.js.map +1 -1
- package/lib/commonjs/ui/navigation/surfaceRegistry.js +2 -2
- package/lib/commonjs/ui/navigation/surfaceRegistry.js.map +1 -1
- package/lib/commonjs/ui/screens/CreateAccountScreen.js +10 -2
- package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileManagementScreen.js +102 -44
- package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/FileTrashScreen.js +235 -0
- package/lib/commonjs/ui/screens/FileTrashScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/ManageAccountScreen.js +7 -0
- package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/commonjs/ui/screens/SupervisionScreen.js +529 -0
- package/lib/commonjs/ui/screens/SupervisionScreen.js.map +1 -0
- package/lib/commonjs/ui/screens/fileManagement/trashActions.js +147 -0
- package/lib/commonjs/ui/screens/fileManagement/trashActions.js.map +1 -0
- package/lib/commonjs/ui/screens/index.js +7 -0
- package/lib/commonjs/ui/screens/index.js.map +1 -1
- package/lib/commonjs/ui/stores/assetStore.js +22 -7
- package/lib/commonjs/ui/stores/assetStore.js.map +1 -1
- package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/assets/fonts/icons/manifest.json +8 -5
- package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/lib/module/assets/fonts/icons/manifest.json +8 -5
- package/lib/module/ui/components/fileManagement/FileViewer.js +2 -1
- package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -1
- package/lib/module/ui/components/supervision/PersonPicker.js +65 -0
- package/lib/module/ui/components/supervision/PersonPicker.js.map +1 -0
- package/lib/module/ui/components/supervision/presentation.js +19 -0
- package/lib/module/ui/components/supervision/presentation.js.map +1 -0
- package/lib/module/ui/hooks/queries/queryKeys.js +3 -1
- package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
- package/lib/module/ui/hooks/queries/useFileQueries.js +38 -17
- package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -1
- package/lib/module/ui/hooks/queries/useSupervision.js +32 -0
- package/lib/module/ui/hooks/queries/useSupervision.js.map +1 -0
- package/lib/module/ui/icons/subsetGlyphMaps.js +3 -0
- package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
- package/lib/module/ui/index.js +1 -0
- package/lib/module/ui/index.js.map +1 -1
- package/lib/module/ui/navigation/routes.js +2 -0
- package/lib/module/ui/navigation/routes.js.map +1 -1
- package/lib/module/ui/navigation/surfaceRegistry.js +2 -2
- package/lib/module/ui/navigation/surfaceRegistry.js.map +1 -1
- package/lib/module/ui/screens/CreateAccountScreen.js +10 -2
- package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/FileManagementScreen.js +102 -44
- package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
- package/lib/module/ui/screens/FileTrashScreen.js +232 -0
- package/lib/module/ui/screens/FileTrashScreen.js.map +1 -0
- package/lib/module/ui/screens/ManageAccountScreen.js +7 -0
- package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
- package/lib/module/ui/screens/SupervisionScreen.js +525 -0
- package/lib/module/ui/screens/SupervisionScreen.js.map +1 -0
- package/lib/module/ui/screens/fileManagement/trashActions.js +138 -0
- package/lib/module/ui/screens/fileManagement/trashActions.js.map +1 -0
- package/lib/module/ui/screens/index.js +1 -0
- package/lib/module/ui/screens/index.js.map +1 -1
- package/lib/module/ui/stores/assetStore.js +22 -7
- package/lib/module/ui/stores/assetStore.js.map +1 -1
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts +3 -0
- package/lib/typescript/commonjs/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/components/supervision/PersonPicker.d.ts +6 -0
- package/lib/typescript/commonjs/ui/components/supervision/PersonPicker.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/components/supervision/presentation.d.ts +3 -0
- package/lib/typescript/commonjs/ui/components/supervision/presentation.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +2 -0
- package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts +22 -6
- package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/hooks/queries/useSupervision.d.ts +475 -0
- package/lib/typescript/commonjs/ui/hooks/queries/useSupervision.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts +1 -1
- package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +3 -0
- package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/index.d.ts +1 -0
- package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts +6 -0
- package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/FileTrashScreen.d.ts +14 -0
- package/lib/typescript/commonjs/ui/screens/FileTrashScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/screens/SupervisionScreen.d.ts +3 -0
- package/lib/typescript/commonjs/ui/screens/SupervisionScreen.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/trashActions.d.ts +66 -0
- package/lib/typescript/commonjs/ui/screens/fileManagement/trashActions.d.ts.map +1 -0
- package/lib/typescript/commonjs/ui/screens/index.d.ts +1 -0
- package/lib/typescript/commonjs/ui/screens/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/stores/assetStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/utils/identityCrypto.d.ts +1 -0
- package/lib/typescript/commonjs/ui/utils/identityCrypto.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts +3 -0
- package/lib/typescript/module/ui/components/fileManagement/FileViewer.d.ts.map +1 -1
- package/lib/typescript/module/ui/components/supervision/PersonPicker.d.ts +6 -0
- package/lib/typescript/module/ui/components/supervision/PersonPicker.d.ts.map +1 -0
- package/lib/typescript/module/ui/components/supervision/presentation.d.ts +3 -0
- package/lib/typescript/module/ui/components/supervision/presentation.d.ts.map +1 -0
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +2 -0
- package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts +22 -6
- package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
- package/lib/typescript/module/ui/hooks/queries/useSupervision.d.ts +475 -0
- package/lib/typescript/module/ui/hooks/queries/useSupervision.d.ts.map +1 -0
- package/lib/typescript/module/ui/icons/Ionicons.d.ts +1 -1
- package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
- package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +3 -0
- package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
- package/lib/typescript/module/ui/index.d.ts +1 -0
- package/lib/typescript/module/ui/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
- package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
- package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts +6 -0
- package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/CreateAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/FileTrashScreen.d.ts +14 -0
- package/lib/typescript/module/ui/screens/FileTrashScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
- package/lib/typescript/module/ui/screens/SupervisionScreen.d.ts +3 -0
- package/lib/typescript/module/ui/screens/SupervisionScreen.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/fileManagement/trashActions.d.ts +66 -0
- package/lib/typescript/module/ui/screens/fileManagement/trashActions.d.ts.map +1 -0
- package/lib/typescript/module/ui/screens/index.d.ts +1 -0
- package/lib/typescript/module/ui/screens/index.d.ts.map +1 -1
- package/lib/typescript/module/ui/stores/assetStore.d.ts.map +1 -1
- package/lib/typescript/module/ui/utils/identityCrypto.d.ts +1 -0
- package/lib/typescript/module/ui/utils/identityCrypto.d.ts.map +1 -1
- package/package.json +6 -21
- package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
- package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
- package/src/assets/fonts/icons/manifest.json +8 -5
- package/src/ui/components/fileManagement/FileViewer.tsx +5 -1
- package/src/ui/components/supervision/PersonPicker.tsx +67 -0
- package/src/ui/components/supervision/presentation.ts +17 -0
- package/src/ui/hooks/queries/__tests__/fileQueries.test.ts +70 -0
- package/src/ui/hooks/queries/queryKeys.ts +2 -0
- package/src/ui/hooks/queries/useFileQueries.ts +45 -16
- package/src/ui/hooks/queries/useSupervision.ts +25 -0
- package/src/ui/icons/subsetGlyphMaps.ts +3 -0
- package/src/ui/index.ts +2 -0
- package/src/ui/navigation/__tests__/getSurfaceConfig.test.ts +9 -0
- package/src/ui/navigation/routes.ts +4 -0
- package/src/ui/navigation/surfaceRegistry.ts +5 -1
- package/src/ui/screens/CreateAccountScreen.tsx +15 -1
- package/src/ui/screens/FileManagementScreen.tsx +142 -49
- package/src/ui/screens/FileTrashScreen.tsx +228 -0
- package/src/ui/screens/ManageAccountScreen.tsx +10 -0
- package/src/ui/screens/SupervisionScreen.tsx +593 -0
- package/src/ui/screens/fileManagement/__tests__/trashActions.test.ts +177 -0
- package/src/ui/screens/fileManagement/trashActions.ts +161 -0
- package/src/ui/screens/index.ts +2 -0
- package/src/ui/stores/assetStore.ts +24 -13
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What the file manager does when the person removes, restores or deletes a
|
|
5
|
+
* file (ADR 0043 D5). Pure of React and of the UI: every call takes the asset
|
|
6
|
+
* API and the confirmation it may need, so the decisions are testable on their
|
|
7
|
+
* own and the screens only render.
|
|
8
|
+
*
|
|
9
|
+
* - "Delete" in the library MOVES TO TRASH: the file stops being served, is
|
|
10
|
+
* kept, and can be restored from Trash. A `blocked` file (taken down after a
|
|
11
|
+
* content claim, D10) cannot be trashed — it is already served to nobody —
|
|
12
|
+
* so removing it is the permanent delete, which is its owner's to make.
|
|
13
|
+
* - Permanent deletion happens only from Trash (or for a blocked file). The
|
|
14
|
+
* API refuses to delete a file an application still uses (409, with the
|
|
15
|
+
* number of uses); the person is told and decides, and only then is the
|
|
16
|
+
* delete forced.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
/** The part of `oxyServices.assets` these actions use. */
|
|
20
|
+
|
|
21
|
+
/** What removing a file from the library does to it. */
|
|
22
|
+
|
|
23
|
+
/** A `blocked` file is deleted (it cannot go to trash); every other is trashed. */
|
|
24
|
+
export function libraryRemovalFor(file) {
|
|
25
|
+
return file.status === 'blocked' ? 'delete' : 'trash';
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** The HTTP status of a failed asset call, when it carries one. */
|
|
29
|
+
export function errorStatus(error) {
|
|
30
|
+
if (error && typeof error === 'object') {
|
|
31
|
+
const status = error.status;
|
|
32
|
+
if (typeof status === 'number') return status;
|
|
33
|
+
const response = error.response;
|
|
34
|
+
if (response && typeof response.status === 'number') return response.status;
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** The API's machine code of a failed asset call, when it carries one. */
|
|
40
|
+
function errorCode(error) {
|
|
41
|
+
if (error && typeof error === 'object') {
|
|
42
|
+
const code = error.code;
|
|
43
|
+
if (typeof code === 'string') return code;
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* How many uses an application still has of a file the API refused to delete
|
|
50
|
+
* (409, `details.summary.remainingLinks`), or `null` when the refusal is not
|
|
51
|
+
* that one.
|
|
52
|
+
*/
|
|
53
|
+
export function remainingUses(error) {
|
|
54
|
+
if (errorStatus(error) !== 409 || !error || typeof error !== 'object') return null;
|
|
55
|
+
const details = error.details;
|
|
56
|
+
const summary = details && typeof details === 'object' ? details.summary : undefined;
|
|
57
|
+
const remaining = summary && typeof summary === 'object' ? summary.remainingLinks : undefined;
|
|
58
|
+
return typeof remaining === 'number' && remaining > 0 ? remaining : null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Outcome of {@link deletePermanently}. */
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Delete a file for good. When applications still use it the API refuses;
|
|
65
|
+
* `confirmStillUsed(count)` asks the person, and only a yes forces the delete.
|
|
66
|
+
* A file already gone (404) is `gone` — the caller just refreshes. Any other
|
|
67
|
+
* failure is thrown.
|
|
68
|
+
*/
|
|
69
|
+
export async function deletePermanently(assets, fileId, confirmStillUsed) {
|
|
70
|
+
try {
|
|
71
|
+
await assets.delete(fileId);
|
|
72
|
+
return 'deleted';
|
|
73
|
+
} catch (error) {
|
|
74
|
+
if (errorStatus(error) === 404) return 'gone';
|
|
75
|
+
const uses = remainingUses(error);
|
|
76
|
+
if (uses === null) throw error;
|
|
77
|
+
if (!(await confirmStillUsed(uses))) return 'cancelled';
|
|
78
|
+
await assets.delete(fileId, {
|
|
79
|
+
force: true
|
|
80
|
+
});
|
|
81
|
+
return 'deleted';
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/** Outcome of {@link restoreFromTrash}. */
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Bring a file back from trash. One that is no longer in trash — restored
|
|
89
|
+
* elsewhere, or blocked after a claim (409 `FILE_NOT_IN_TRASH`) — or no longer
|
|
90
|
+
* exists (404) is reported, not thrown: the trash list is just stale.
|
|
91
|
+
*/
|
|
92
|
+
export async function restoreFromTrash(assets, fileId) {
|
|
93
|
+
try {
|
|
94
|
+
await assets.restore(fileId);
|
|
95
|
+
return 'restored';
|
|
96
|
+
} catch (error) {
|
|
97
|
+
if (errorStatus(error) === 404) return 'gone';
|
|
98
|
+
if (errorStatus(error) === 409 && errorCode(error) === 'FILE_NOT_IN_TRASH') {
|
|
99
|
+
return 'not_in_trash';
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Per-file outcome of removing several files from the library. */
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Remove several files from the library at once: each goes to trash, except a
|
|
109
|
+
* blocked one, which is deleted (asking about remaining uses as
|
|
110
|
+
* {@link deletePermanently} does). One failure never stops the others.
|
|
111
|
+
*/
|
|
112
|
+
export async function removeFromLibrary(assets, files, confirmStillUsed) {
|
|
113
|
+
const result = {
|
|
114
|
+
trashed: [],
|
|
115
|
+
deleted: [],
|
|
116
|
+
failed: []
|
|
117
|
+
};
|
|
118
|
+
const toTrash = files.filter(file => libraryRemovalFor(file) === 'trash');
|
|
119
|
+
const toDelete = files.filter(file => libraryRemovalFor(file) === 'delete');
|
|
120
|
+
const trashed = await Promise.allSettled(toTrash.map(file => assets.trash(file.id)));
|
|
121
|
+
trashed.forEach((settled, index) => {
|
|
122
|
+
(settled.status === 'fulfilled' ? result.trashed : result.failed).push(toTrash[index].id);
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
// One at a time: each may ask the person a question, and two questions at
|
|
126
|
+
// once would stack.
|
|
127
|
+
for (const file of toDelete) {
|
|
128
|
+
try {
|
|
129
|
+
const outcome = await deletePermanently(assets, file.id, uses => confirmStillUsed(uses, file.filename));
|
|
130
|
+
// `cancelled`: the person kept it; nothing to report.
|
|
131
|
+
if (outcome !== 'cancelled') result.deleted.push(file.id);
|
|
132
|
+
} catch {
|
|
133
|
+
result.failed.push(file.id);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=trashActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["libraryRemovalFor","file","status","errorStatus","error","response","undefined","errorCode","code","remainingUses","details","summary","remaining","remainingLinks","deletePermanently","assets","fileId","confirmStillUsed","delete","uses","force","restoreFromTrash","restore","removeFromLibrary","files","result","trashed","deleted","failed","toTrash","filter","toDelete","Promise","allSettled","map","trash","id","forEach","settled","index","push","outcome","filename"],"sourceRoot":"../../../../../src","sources":["ui/screens/fileManagement/trashActions.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -17,4 +17,5 @@ export { default as ConnectedAppsScreen } from "./ConnectedAppsScreen.js";
|
|
|
17
17
|
export { default as CreateAccountScreen } from "./CreateAccountScreen.js";
|
|
18
18
|
export { default as AccountMembersScreen } from "./AccountMembersScreen.js";
|
|
19
19
|
export { default as AccountSettingsScreen } from "./AccountSettingsScreen.js";
|
|
20
|
+
export { default as SupervisionScreen } from "./SupervisionScreen.js";
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["default","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen"],"sourceRoot":"../../../../src","sources":["ui/screens/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,aAAa,QAAQ,oBAAiB;AAC1D,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,0BAAuB;AACtE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,0BAAuB;AACtE,SAASH,OAAO,IAAII,iBAAiB,QAAQ,wBAAqB;AAClE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,0BAAuB;AACtE,SAASL,OAAO,IAAIM,mBAAmB,QAAQ,0BAAuB;AACtE,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,2BAAwB;AACxE,SAASP,OAAO,IAAIQ,qBAAqB,QAAQ,4BAAyB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["default","ProfileScreen","ManageAccountScreen","NotificationsScreen","PreferencesScreen","ConnectedAppsScreen","CreateAccountScreen","AccountMembersScreen","AccountSettingsScreen","SupervisionScreen"],"sourceRoot":"../../../../src","sources":["ui/screens/index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,OAAO,IAAIC,aAAa,QAAQ,oBAAiB;AAC1D,SAASD,OAAO,IAAIE,mBAAmB,QAAQ,0BAAuB;AACtE,SAASF,OAAO,IAAIG,mBAAmB,QAAQ,0BAAuB;AACtE,SAASH,OAAO,IAAII,iBAAiB,QAAQ,wBAAqB;AAClE,SAASJ,OAAO,IAAIK,mBAAmB,QAAQ,0BAAuB;AACtE,SAASL,OAAO,IAAIM,mBAAmB,QAAQ,0BAAuB;AACtE,SAASN,OAAO,IAAIO,oBAAoB,QAAQ,2BAAwB;AACxE,SAASP,OAAO,IAAIQ,qBAAqB,QAAQ,4BAAyB;AAE1E,SAASR,OAAO,IAAIS,iBAAiB,QAAQ,wBAAqB","ignoreList":[]}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { create } from 'zustand';
|
|
4
|
+
/**
|
|
5
|
+
* Whether a link is the given application's use. The Oxy API names the using
|
|
6
|
+
* application by ID (`applicationId`, mirrored in `app` since ADR 0043 D4);
|
|
7
|
+
* a link added locally before the server answered may still carry the name
|
|
8
|
+
* the caller passed in `app`. Either matches.
|
|
9
|
+
*/
|
|
10
|
+
function linkIsApp(link, app) {
|
|
11
|
+
return (link.applicationId ?? link.app) === app || link.app === app;
|
|
12
|
+
}
|
|
13
|
+
function sameLink(link, app, entityType, entityId) {
|
|
14
|
+
return linkIsApp(link, app) && link.entityType === entityType && link.entityId === entityId;
|
|
15
|
+
}
|
|
4
16
|
const initialState = {
|
|
5
17
|
assets: {},
|
|
6
18
|
uploadProgress: {},
|
|
@@ -86,12 +98,13 @@ export const useAssetStore = create((set, get) => ({
|
|
|
86
98
|
if (!asset) return state;
|
|
87
99
|
|
|
88
100
|
// Check if link already exists
|
|
89
|
-
const existingLink = asset.links.find(l => l.
|
|
101
|
+
const existingLink = asset.links.find(l => sameLink(l, link.applicationId ?? link.app, link.entityType, link.entityId) || sameLink(l, link.app, link.entityType, link.entityId));
|
|
90
102
|
if (existingLink) return state;
|
|
91
103
|
const updatedAsset = {
|
|
92
104
|
...asset,
|
|
93
105
|
links: [...asset.links, link],
|
|
94
|
-
usageCount: asset.links.length + 1
|
|
106
|
+
usageCount: asset.links.length + 1,
|
|
107
|
+
inUse: true
|
|
95
108
|
};
|
|
96
109
|
return {
|
|
97
110
|
assets: {
|
|
@@ -105,12 +118,14 @@ export const useAssetStore = create((set, get) => ({
|
|
|
105
118
|
set(state => {
|
|
106
119
|
const asset = state.assets[assetId];
|
|
107
120
|
if (!asset) return state;
|
|
108
|
-
const filteredLinks = asset.links.filter(link => !(link
|
|
121
|
+
const filteredLinks = asset.links.filter(link => !sameLink(link, app, entityType, entityId));
|
|
109
122
|
const updatedAsset = {
|
|
110
123
|
...asset,
|
|
111
124
|
links: filteredLinks,
|
|
112
125
|
usageCount: filteredLinks.length,
|
|
113
|
-
|
|
126
|
+
// The last link going never trashes the file (ADR 0043 D5): it stays
|
|
127
|
+
// where it is and is only no longer in use.
|
|
128
|
+
inUse: filteredLinks.length > 0
|
|
114
129
|
};
|
|
115
130
|
return {
|
|
116
131
|
assets: {
|
|
@@ -180,13 +195,13 @@ export const useAssetStore = create((set, get) => ({
|
|
|
180
195
|
const {
|
|
181
196
|
assets
|
|
182
197
|
} = get();
|
|
183
|
-
return Object.values(assets).filter(asset => asset.links.some(link => link
|
|
198
|
+
return Object.values(assets).filter(asset => asset.links.some(link => linkIsApp(link, app)));
|
|
184
199
|
},
|
|
185
200
|
getAssetsByEntity: (app, entityType, entityId) => {
|
|
186
201
|
const {
|
|
187
202
|
assets
|
|
188
203
|
} = get();
|
|
189
|
-
return Object.values(assets).filter(asset => asset.links.some(link => link
|
|
204
|
+
return Object.values(assets).filter(asset => asset.links.some(link => sameLink(link, app, entityType, entityId)));
|
|
190
205
|
},
|
|
191
206
|
getAssetUsageCount: assetId => {
|
|
192
207
|
const {
|
|
@@ -201,7 +216,7 @@ export const useAssetStore = create((set, get) => ({
|
|
|
201
216
|
} = get();
|
|
202
217
|
const asset = assets[assetId];
|
|
203
218
|
if (!asset) return false;
|
|
204
|
-
return asset.links.some(link => link
|
|
219
|
+
return asset.links.some(link => sameLink(link, app, entityType, entityId));
|
|
205
220
|
},
|
|
206
221
|
// Reset store
|
|
207
222
|
reset: () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["create","initialState","assets","uploadProgress","loading","uploading","linking","deleting","errors","useAssetStore","set","get","setAsset","asset","state","id","mergeAsset","patch","setAssets","assetMap","reduce","acc","removeAsset","assetId","removed","rest","setUploadProgress","fileId","progress","removeUploadProgress","addLink","
|
|
1
|
+
{"version":3,"names":["create","linkIsApp","link","app","applicationId","sameLink","entityType","entityId","initialState","assets","uploadProgress","loading","uploading","linking","deleting","errors","useAssetStore","set","get","setAsset","asset","state","id","mergeAsset","patch","setAssets","assetMap","reduce","acc","removeAsset","assetId","removed","rest","setUploadProgress","fileId","progress","removeUploadProgress","addLink","existingLink","links","find","l","updatedAsset","usageCount","length","inUse","removeLink","filteredLinks","filter","setUploading","setLinking","setDeleting","setUploadError","error","upload","setLinkError","setDeleteError","delete","clearErrors","getAssetsByApp","Object","values","some","getAssetsByEntity","getAssetUsageCount","isAssetLinked","reset","useAssets","useAsset","useUploadProgress","useAssetLoading","useAssetErrors","useAssetsByApp","useAssetsByEntity","useAssetUsageCount","useIsAssetLinked"],"sourceRoot":"../../../../src","sources":["ui/stores/assetStore.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,10 @@ interface FileViewerProps {
|
|
|
8
8
|
onToggleDetails: () => void;
|
|
9
9
|
onClose: () => void;
|
|
10
10
|
onDownload: (fileId: string, filename: string) => void;
|
|
11
|
+
/** Removes the file from the library: to trash, or for good if it is blocked. */
|
|
11
12
|
onDelete: (fileId: string, filename: string) => void;
|
|
13
|
+
/** The remove button's label — "Move to trash", or "Delete" for a blocked file. */
|
|
14
|
+
deleteLabel: string;
|
|
12
15
|
isOwner: boolean;
|
|
13
16
|
}
|
|
14
17
|
export declare const FileViewer: React.FC<FileViewerProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/fileManagement/FileViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,UAAU,eAAe;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,OAAO,EAAE,OAAO,CAAC;CAClB;AA0BD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,
|
|
1
|
+
{"version":3,"file":"FileViewer.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/fileManagement/FileViewer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,UAAU,eAAe;IACvB,IAAI,EAAE,YAAY,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,iFAAiF;IACjF,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AA0BD,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuWhD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonPicker.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/supervision/PersonPicker.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAY,GACb,EAAE;IACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,+BAmDA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/components/supervision/presentation.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAe5F"}
|
|
@@ -78,6 +78,8 @@ export declare const queryKeys: {
|
|
|
78
78
|
readonly files: {
|
|
79
79
|
readonly all: readonly ["files"];
|
|
80
80
|
readonly list: (ownerId?: string) => readonly ["files", "list", string];
|
|
81
|
+
/** The owner's trash (ADR 0043 D5) — under `files.all`, so one invalidation covers both. */
|
|
82
|
+
readonly trash: (ownerId?: string) => readonly ["files", "trash", string];
|
|
81
83
|
};
|
|
82
84
|
readonly connectedApps: {
|
|
83
85
|
readonly all: readonly ["connectedApps"];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queryKeys.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/queryKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,eAAO,MAAM,SAAS;;;;oCAKC,MAAM,EAAE;;qCAEP,MAAM;uCACJ,MAAM,GAAG,IAAI;;;;;;iCAWnB,MAAM,EAAE;;kCAEP,MAAM;QACvB,yFAAyF;2CAC/D,MAAM,YAAY,MAAM;QAElD;;;;;WAKG;wCACoB,MAAM,YAAY,MAAM;sCAQ1B,MAAM;;;;;iCAOX,MAAM;;qCAEF,MAAM;;oCAEP,MAAM;;;;;uCAOH,MAAM;;oCAET,MAAM;;;;qCAML,MAAM;QAE1B,uDAAuD;kCACtC,MAAM;;;;oCAMJ,MAAM,WAAW,MAAM,cAAc,MAAM;iCAE9C,MAAM;mCACJ,MAAM,cAAc,MAAM;;IAK9C,4GAA4G;;;oCAGvF,MAAM;;;;iCAKT,MAAM;;;;wCAMC,MAAM;;;;kCAOZ,MAAM;;;;;;;;
|
|
1
|
+
{"version":3,"file":"queryKeys.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/queryKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,eAAO,MAAM,SAAS;;;;oCAKC,MAAM,EAAE;;qCAEP,MAAM;uCACJ,MAAM,GAAG,IAAI;;;;;;iCAWnB,MAAM,EAAE;;kCAEP,MAAM;QACvB,yFAAyF;2CAC/D,MAAM,YAAY,MAAM;QAElD;;;;;WAKG;wCACoB,MAAM,YAAY,MAAM;sCAQ1B,MAAM;;;;;iCAOX,MAAM;;qCAEF,MAAM;;oCAEP,MAAM;;;;;uCAOH,MAAM;;oCAET,MAAM;;;;qCAML,MAAM;QAE1B,uDAAuD;kCACtC,MAAM;;;;oCAMJ,MAAM,WAAW,MAAM,cAAc,MAAM;iCAE9C,MAAM;mCACJ,MAAM,cAAc,MAAM;;IAK9C,4GAA4G;;;oCAGvF,MAAM;;;;iCAKT,MAAM;;;;wCAMC,MAAM;;;;kCAOZ,MAAM;QACvB,4FAA4F;mCAC1E,MAAM;;;;;;;;kCAYP,MAAM;;;;oCAMJ,MAAM;wCAEF,MAAM,GAAG,SAAS,SAAS,MAAM;;;;;;iCASxC,MAAM;;;;yCAME,MAAM;oCAEX,MAAM;mCAEP,MAAM;8CAEK,MAAM,WAAW,MAAM,WAAW,MAAM;;CAU/D,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,aAAa,WAAW,KAAG,IAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,aAAa,WAAW,KAAG,IAEhE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,aAAa,WAAW,KAAG,IAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,GAAI,aAAa,WAAW,KAAG,IAElE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,aAAa,WAAW,KAAG,IAEnE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,aAAa,WAAW,KAAG,IAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,GAAI,aAAa,WAAW,KAAG,IAEnE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GAAI,aAAa,WAAW,KAAG,IAEvE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,GAAI,aAAa,WAAW,KAAG,IAEpE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,GAAI,aAAa,WAAW,KAAG,IAEzE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,aAAa,WAAW,KAAG,IAEhE,CAAC"}
|
|
@@ -22,6 +22,12 @@ export interface RawUserFile {
|
|
|
22
22
|
createdAt?: string;
|
|
23
23
|
metadata?: Record<string, unknown>;
|
|
24
24
|
variants?: unknown[];
|
|
25
|
+
/** Whether any application uses the file (ADR 0043 D5). */
|
|
26
|
+
inUse?: boolean;
|
|
27
|
+
/** `blocked`: taken down after a content claim (ADR 0043 D10). */
|
|
28
|
+
status?: string;
|
|
29
|
+
/** When the owner moved it to trash (ADR 0043 D5). */
|
|
30
|
+
trashedAt?: string | null;
|
|
25
31
|
}
|
|
26
32
|
/** One page of the infinite file list. */
|
|
27
33
|
export interface UserFilesPage {
|
|
@@ -33,16 +39,26 @@ export interface UserFilesPage {
|
|
|
33
39
|
export type UserFilesInfinite = InfiniteData<UserFilesPage>;
|
|
34
40
|
/** Normalize a raw API file record into the client `FileMetadata` shape. */
|
|
35
41
|
export declare function mapRawFileToMetadata(raw: RawUserFile): FileMetadata;
|
|
42
|
+
/** Which of the owner's files a page lists: the library, or the trash (ADR 0043 D5). */
|
|
43
|
+
export type UserFilesListing = 'library' | 'trash';
|
|
44
|
+
/** Map one `oxyServices.assets.list` response onto a page. */
|
|
45
|
+
export declare function toUserFilesPage(response: {
|
|
46
|
+
files?: unknown[];
|
|
47
|
+
total?: number;
|
|
48
|
+
hasMore?: boolean;
|
|
49
|
+
}, offset: number): UserFilesPage;
|
|
36
50
|
/**
|
|
37
|
-
* Infinite-paginated list of the owner's files
|
|
38
|
-
*
|
|
39
|
-
*
|
|
51
|
+
* Infinite-paginated list of the owner's files: the LIBRARY (active files, and
|
|
52
|
+
* blocked ones shown as removed after a claim) or, with `listing: 'trash'`,
|
|
53
|
+
* what the owner moved to trash, most recently trashed first. Fires on mount
|
|
54
|
+
* and whenever `ownerId` changes (a new key); `staleTime: 0` reloads on every
|
|
55
|
+
* open. The rendered list is `data.pages.flatMap(p => p.files)`.
|
|
40
56
|
*/
|
|
41
|
-
export declare const useUserFilesInfinite: (ownerId?: string) => import("@tanstack/react-query").UseInfiniteQueryResult<InfiniteData<UserFilesPage, unknown>, Error>;
|
|
57
|
+
export declare const useUserFilesInfinite: (ownerId?: string, listing?: UserFilesListing) => import("@tanstack/react-query").UseInfiniteQueryResult<InfiniteData<UserFilesPage, unknown>, Error>;
|
|
42
58
|
/** Prepend an (optimistic) file to the first page. */
|
|
43
59
|
export declare function prependFileToCache(queryClient: QueryClient, ownerId: string | undefined, file: FileMetadata): void;
|
|
44
|
-
/** Remove a file (by id) from every page. */
|
|
45
|
-
export declare function removeFileFromCache(queryClient: QueryClient, ownerId: string | undefined, fileId: string): void;
|
|
60
|
+
/** Remove a file (by id) from every page of the library, or of the trash. */
|
|
61
|
+
export declare function removeFileFromCache(queryClient: QueryClient, ownerId: string | undefined, fileId: string, listing?: UserFilesListing): void;
|
|
46
62
|
/** Swap an optimistic file (by id) for its persisted counterpart. */
|
|
47
63
|
export declare function replaceFileInCache(queryClient: QueryClient, ownerId: string | undefined, oldId: string, newFile: FileMetadata): void;
|
|
48
64
|
/** Shallow-merge a metadata patch into a cached file (e.g. visibility change). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFileQueries.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useFileQueries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoB,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,8BAA8B;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"useFileQueries.d.ts","sourceRoot":"","sources":["../../../../../../src/ui/hooks/queries/useFileQueries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAoB,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAIjD,8BAA8B;AAC9B,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;IACrB,2DAA2D;IAC3D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,0CAA0C;AAC1C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAE5D,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,YAAY,CAgBnE;AAED,wFAAwF;AACxF,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnD,8DAA8D;AAC9D,wBAAgB,eAAe,CAC7B,QAAQ,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,EAClE,MAAM,EAAE,MAAM,GACb,aAAa,CAQf;AAED;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,GAAI,UAAU,MAAM,EAAE,UAAS,gBAA4B,wGAmB3F,CAAC;AAiBF,sDAAsD;AACtD,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,IAAI,EAAE,YAAY,GACjB,IAAI,CAUN;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAA4B,GACpC,IAAI,CAKN;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,GACpB,IAAI,CAIN;AAED,kFAAkF;AAClF,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,IAAI,CAYN"}
|