@strapi/upload 5.50.2 → 5.51.1
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/admin/future/pages/Assets/AssetsPage.js +201 -137
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +202 -138
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +161 -30
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +163 -32
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +222 -59
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +223 -60
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +252 -0
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +250 -0
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js +209 -0
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs +207 -0
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +111 -36
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +113 -38
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js +120 -13
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs +120 -13
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js +71 -0
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs +69 -0
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js +34 -0
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs +32 -0
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js +15 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs +13 -1
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +19 -25
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +19 -25
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js +35 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs +33 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/EmptyState.js +63 -0
- package/dist/admin/future/pages/Assets/components/EmptyState.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/EmptyState.mjs +61 -0
- package/dist/admin/future/pages/Assets/components/EmptyState.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +120 -22
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +121 -23
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js +22 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs +19 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.js +165 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs +163 -0
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js +59 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs +55 -0
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.js +124 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +120 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/listQueryKey.js +29 -0
- package/dist/admin/future/pages/Assets/utils/listQueryKey.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs +27 -0
- package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.js +84 -0
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs +81 -0
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/selection.js +104 -0
- package/dist/admin/future/pages/Assets/utils/selection.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/selection.mjs +94 -0
- package/dist/admin/future/pages/Assets/utils/selection.mjs.map +1 -0
- package/dist/admin/future/services/assets.js +33 -1
- package/dist/admin/future/services/assets.js.map +1 -1
- package/dist/admin/future/services/assets.mjs +33 -2
- package/dist/admin/future/services/assets.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +3 -3
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +3 -3
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/services/uploadFileViaXHR.js +23 -2
- package/dist/admin/future/services/uploadFileViaXHR.js.map +1 -1
- package/dist/admin/future/services/uploadFileViaXHR.mjs +23 -2
- package/dist/admin/future/services/uploadFileViaXHR.mjs.map +1 -1
- package/dist/admin/future/utils/buildDragSetFromSelection.js +33 -0
- package/dist/admin/future/utils/buildDragSetFromSelection.js.map +1 -0
- package/dist/admin/future/utils/buildDragSetFromSelection.mjs +31 -0
- package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +1 -0
- package/dist/admin/future/utils/canDropItemOnFolder.js +4 -0
- package/dist/admin/future/utils/canDropItemOnFolder.js.map +1 -1
- package/dist/admin/future/utils/canDropItemOnFolder.mjs +4 -0
- package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +1 -1
- package/dist/admin/future/utils/flattenFolderStructure.js +28 -0
- package/dist/admin/future/utils/flattenFolderStructure.js.map +1 -0
- package/dist/admin/future/utils/flattenFolderStructure.mjs +26 -0
- package/dist/admin/future/utils/flattenFolderStructure.mjs.map +1 -0
- package/dist/admin/future/utils/formatMoveSuccessMessage.js +19 -0
- package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +1 -0
- package/dist/admin/future/utils/formatMoveSuccessMessage.mjs +17 -0
- package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +1 -0
- package/dist/admin/future/utils/getFolderLabel.js +31 -0
- package/dist/admin/future/utils/getFolderLabel.js.map +1 -0
- package/dist/admin/future/utils/getFolderLabel.mjs +29 -0
- package/dist/admin/future/utils/getFolderLabel.mjs.map +1 -0
- package/dist/admin/hooks/useUpload.js +15 -9
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs +17 -11
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +1 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +7 -1
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +1 -0
- package/dist/admin/src/future/pages/Assets/components/BulkMoveDialog.d.ts +13 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +2 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/DragOverlayChip.d.ts +2 -2
- package/dist/admin/src/future/pages/Assets/components/Dnd/buildDragSet.d.ts +17 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +7 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/dndIds.d.ts +3 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +3 -1
- package/dist/admin/src/future/pages/Assets/components/Dnd/useFolderTreeDroppable.d.ts +19 -0
- package/dist/admin/src/future/pages/Assets/components/EmptyState.d.ts +11 -0
- package/dist/admin/src/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/SortMenu.d.ts +17 -0
- package/dist/admin/src/future/pages/Assets/hooks/useAssetSelection.d.ts +39 -0
- package/dist/admin/src/future/pages/Assets/hooks/useListSort.d.ts +47 -0
- package/dist/admin/src/future/pages/Assets/utils/listQueryKey.d.ts +30 -0
- package/dist/admin/src/future/pages/Assets/utils/mergeMixedList.d.ts +40 -0
- package/dist/admin/src/future/pages/Assets/utils/selection.d.ts +50 -0
- package/dist/admin/src/future/services/assets.d.ts +4 -1
- package/dist/admin/src/future/services/folders.d.ts +4 -1
- package/dist/admin/src/future/services/uploadFileViaXHR.d.ts +1 -17
- package/dist/admin/src/future/types/dnd.d.ts +5 -0
- package/dist/admin/src/future/utils/buildDragSetFromSelection.d.ts +11 -0
- package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +1 -1
- package/dist/admin/src/future/utils/flattenFolderStructure.d.ts +18 -0
- package/dist/admin/src/future/utils/formatMoveSuccessMessage.d.ts +14 -0
- package/dist/admin/src/future/utils/getFolderLabel.d.ts +11 -0
- package/dist/admin/translations/en.json.js +36 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +36 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/shared/contracts/folders.d.ts +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var canDropItemOnFolder = require('../../../../utils/canDropItemOnFolder.js');
|
|
4
|
+
var flattenFolderStructure = require('../../../../utils/flattenFolderStructure.js');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Evaluate destination validity once for the full drag set. Callers look up
|
|
8
|
+
* targets in O(1) via {@link Set.has} — `null` represents the Home/root drop.
|
|
9
|
+
*/ const computeValidDropTargets = (items, folderStructure)=>{
|
|
10
|
+
const valid = new Set();
|
|
11
|
+
if (items.length === 0) {
|
|
12
|
+
return valid;
|
|
13
|
+
}
|
|
14
|
+
if (canDropItemOnFolder.canDropItemOnFolder({
|
|
15
|
+
items,
|
|
16
|
+
targetFolderId: null,
|
|
17
|
+
folderStructure
|
|
18
|
+
})) {
|
|
19
|
+
valid.add(null);
|
|
20
|
+
}
|
|
21
|
+
for (const { id } of flattenFolderStructure.flattenFolderStructure(folderStructure)){
|
|
22
|
+
if (canDropItemOnFolder.canDropItemOnFolder({
|
|
23
|
+
items,
|
|
24
|
+
targetFolderId: id,
|
|
25
|
+
folderStructure
|
|
26
|
+
})) {
|
|
27
|
+
valid.add(id);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return valid;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
exports.computeValidDropTargets = computeValidDropTargets;
|
|
34
|
+
//# sourceMappingURL=computeValidDropTargets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeValidDropTargets.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.ts"],"sourcesContent":["import { canDropItemOnFolder } from '../../../../utils/canDropItemOnFolder';\nimport { flattenFolderStructure } from '../../../../utils/flattenFolderStructure';\n\nimport type { FolderNode } from '../../../../../../../shared/contracts/folders';\nimport type { DragItemData } from '../../../../types/dnd';\n\n/**\n * Evaluate destination validity once for the full drag set. Callers look up\n * targets in O(1) via {@link Set.has} — `null` represents the Home/root drop.\n */\nexport const computeValidDropTargets = (\n items: DragItemData[],\n folderStructure: FolderNode[]\n): Set<number | null> => {\n const valid = new Set<number | null>();\n\n if (items.length === 0) {\n return valid;\n }\n\n if (canDropItemOnFolder({ items, targetFolderId: null, folderStructure })) {\n valid.add(null);\n }\n\n for (const { id } of flattenFolderStructure(folderStructure)) {\n if (canDropItemOnFolder({ items, targetFolderId: id, folderStructure })) {\n valid.add(id);\n }\n }\n\n return valid;\n};\n"],"names":["computeValidDropTargets","items","folderStructure","valid","Set","length","canDropItemOnFolder","targetFolderId","add","id","flattenFolderStructure"],"mappings":";;;;;AAMA;;;AAGC,IACM,MAAMA,uBAAAA,GAA0B,CACrCC,KAAAA,EACAC,eAAAA,GAAAA;AAEA,IAAA,MAAMC,QAAQ,IAAIC,GAAAA,EAAAA;IAElB,IAAIH,KAAAA,CAAMI,MAAM,KAAK,CAAA,EAAG;QACtB,OAAOF,KAAAA;AACT,IAAA;AAEA,IAAA,IAAIG,uCAAAA,CAAoB;AAAEL,QAAAA,KAAAA;QAAOM,cAAAA,EAAgB,IAAA;AAAML,QAAAA;KAAgB,CAAA,EAAI;AACzEC,QAAAA,KAAAA,CAAMK,GAAG,CAAC,IAAA,CAAA;AACZ,IAAA;AAEA,IAAA,KAAK,MAAM,EAAEC,EAAE,EAAE,IAAIC,8CAAuBR,eAAAA,CAAAA,CAAkB;AAC5D,QAAA,IAAII,uCAAAA,CAAoB;AAAEL,YAAAA,KAAAA;YAAOM,cAAAA,EAAgBE,EAAAA;AAAIP,YAAAA;SAAgB,CAAA,EAAI;AACvEC,YAAAA,KAAAA,CAAMK,GAAG,CAACC,EAAAA,CAAAA;AACZ,QAAA;AACF,IAAA;IAEA,OAAON,KAAAA;AACT;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { canDropItemOnFolder } from '../../../../utils/canDropItemOnFolder.mjs';
|
|
2
|
+
import { flattenFolderStructure } from '../../../../utils/flattenFolderStructure.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Evaluate destination validity once for the full drag set. Callers look up
|
|
6
|
+
* targets in O(1) via {@link Set.has} — `null` represents the Home/root drop.
|
|
7
|
+
*/ const computeValidDropTargets = (items, folderStructure)=>{
|
|
8
|
+
const valid = new Set();
|
|
9
|
+
if (items.length === 0) {
|
|
10
|
+
return valid;
|
|
11
|
+
}
|
|
12
|
+
if (canDropItemOnFolder({
|
|
13
|
+
items,
|
|
14
|
+
targetFolderId: null,
|
|
15
|
+
folderStructure
|
|
16
|
+
})) {
|
|
17
|
+
valid.add(null);
|
|
18
|
+
}
|
|
19
|
+
for (const { id } of flattenFolderStructure(folderStructure)){
|
|
20
|
+
if (canDropItemOnFolder({
|
|
21
|
+
items,
|
|
22
|
+
targetFolderId: id,
|
|
23
|
+
folderStructure
|
|
24
|
+
})) {
|
|
25
|
+
valid.add(id);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return valid;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export { computeValidDropTargets };
|
|
32
|
+
//# sourceMappingURL=computeValidDropTargets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"computeValidDropTargets.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.ts"],"sourcesContent":["import { canDropItemOnFolder } from '../../../../utils/canDropItemOnFolder';\nimport { flattenFolderStructure } from '../../../../utils/flattenFolderStructure';\n\nimport type { FolderNode } from '../../../../../../../shared/contracts/folders';\nimport type { DragItemData } from '../../../../types/dnd';\n\n/**\n * Evaluate destination validity once for the full drag set. Callers look up\n * targets in O(1) via {@link Set.has} — `null` represents the Home/root drop.\n */\nexport const computeValidDropTargets = (\n items: DragItemData[],\n folderStructure: FolderNode[]\n): Set<number | null> => {\n const valid = new Set<number | null>();\n\n if (items.length === 0) {\n return valid;\n }\n\n if (canDropItemOnFolder({ items, targetFolderId: null, folderStructure })) {\n valid.add(null);\n }\n\n for (const { id } of flattenFolderStructure(folderStructure)) {\n if (canDropItemOnFolder({ items, targetFolderId: id, folderStructure })) {\n valid.add(id);\n }\n }\n\n return valid;\n};\n"],"names":["computeValidDropTargets","items","folderStructure","valid","Set","length","canDropItemOnFolder","targetFolderId","add","id","flattenFolderStructure"],"mappings":";;;AAMA;;;AAGC,IACM,MAAMA,uBAAAA,GAA0B,CACrCC,KAAAA,EACAC,eAAAA,GAAAA;AAEA,IAAA,MAAMC,QAAQ,IAAIC,GAAAA,EAAAA;IAElB,IAAIH,KAAAA,CAAMI,MAAM,KAAK,CAAA,EAAG;QACtB,OAAOF,KAAAA;AACT,IAAA;AAEA,IAAA,IAAIG,mBAAAA,CAAoB;AAAEL,QAAAA,KAAAA;QAAOM,cAAAA,EAAgB,IAAA;AAAML,QAAAA;KAAgB,CAAA,EAAI;AACzEC,QAAAA,KAAAA,CAAMK,GAAG,CAAC,IAAA,CAAA;AACZ,IAAA;AAEA,IAAA,KAAK,MAAM,EAAEC,EAAE,EAAE,IAAIC,uBAAuBR,eAAAA,CAAAA,CAAkB;AAC5D,QAAA,IAAII,mBAAAA,CAAoB;AAAEL,YAAAA,KAAAA;YAAOM,cAAAA,EAAgBE,EAAAA;AAAIP,YAAAA;SAAgB,CAAA,EAAI;AACvEC,YAAAA,KAAAA,CAAMK,GAAG,CAACC,EAAAA,CAAAA;AACZ,QAAA;AACF,IAAA;IAEA,OAAON,KAAAA;AACT;;;;"}
|
|
@@ -10,9 +10,24 @@ const parseFolderTargetId = (dndId)=>{
|
|
|
10
10
|
const match = /^folder-target:(\d+)$/.exec(dndId);
|
|
11
11
|
return match ? Number(match[1]) : null;
|
|
12
12
|
};
|
|
13
|
+
const toFolderTreeTargetId = (id)=>`folder-tree-target:${id}`;
|
|
14
|
+
const HOME_TREE_TARGET_ID = 'folder-tree-target:home';
|
|
15
|
+
const parseFolderTreeTargetId = (dndId)=>{
|
|
16
|
+
if (typeof dndId !== 'string') {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
if (dndId === HOME_TREE_TARGET_ID) {
|
|
20
|
+
return 'root';
|
|
21
|
+
}
|
|
22
|
+
const match = /^folder-tree-target:(\d+)$/.exec(dndId);
|
|
23
|
+
return match ? Number(match[1]) : null;
|
|
24
|
+
};
|
|
13
25
|
|
|
26
|
+
exports.HOME_TREE_TARGET_ID = HOME_TREE_TARGET_ID;
|
|
14
27
|
exports.parseFolderTargetId = parseFolderTargetId;
|
|
28
|
+
exports.parseFolderTreeTargetId = parseFolderTreeTargetId;
|
|
15
29
|
exports.toFileDraggableId = toFileDraggableId;
|
|
16
30
|
exports.toFolderDraggableId = toFolderDraggableId;
|
|
17
31
|
exports.toFolderTargetId = toFolderTargetId;
|
|
32
|
+
exports.toFolderTreeTargetId = toFolderTreeTargetId;
|
|
18
33
|
//# sourceMappingURL=dndIds.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dndIds.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/dndIds.ts"],"sourcesContent":["export const toFileDraggableId = (id: number) => `file:${id}` as const;\n\nexport const toFolderDraggableId = (id: number) => `folder:${id}` as const;\n\nexport const toFolderTargetId = (id: number) => `folder-target:${id}` as const;\n\nexport const parseFolderTargetId = (dndId: string | number): number | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n const match = /^folder-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n"],"names":["toFileDraggableId","id","toFolderDraggableId","toFolderTargetId","parseFolderTargetId","dndId","match","exec","Number"],"mappings":";;AAAO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,CAAC,KAAK,EAAEA;AAElD,MAAMC,sBAAsB,CAACD,EAAAA,GAAe,CAAC,OAAO,EAAEA;AAEtD,MAAME,mBAAmB,CAACF,EAAAA,GAAe,CAAC,cAAc,EAAEA;AAE1D,MAAMG,sBAAsB,CAACC,KAAAA,GAAAA;IAClC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;IAEA,MAAMC,KAAAA,GAAQ,uBAAA,CAAwBC,IAAI,CAACF,KAAAA,CAAAA;AAC3C,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC
|
|
1
|
+
{"version":3,"file":"dndIds.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/dndIds.ts"],"sourcesContent":["export const toFileDraggableId = (id: number) => `file:${id}` as const;\n\nexport const toFolderDraggableId = (id: number) => `folder:${id}` as const;\n\nexport const toFolderTargetId = (id: number) => `folder-target:${id}` as const;\n\nexport const parseFolderTargetId = (dndId: string | number): number | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n const match = /^folder-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n\nexport const toFolderTreeTargetId = (id: number) => `folder-tree-target:${id}` as const;\n\nexport const HOME_TREE_TARGET_ID = 'folder-tree-target:home' as const;\n\nexport const parseFolderTreeTargetId = (dndId: string | number): number | 'root' | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n if (dndId === HOME_TREE_TARGET_ID) {\n return 'root';\n }\n\n const match = /^folder-tree-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n"],"names":["toFileDraggableId","id","toFolderDraggableId","toFolderTargetId","parseFolderTargetId","dndId","match","exec","Number","toFolderTreeTargetId","HOME_TREE_TARGET_ID","parseFolderTreeTargetId"],"mappings":";;AAAO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,CAAC,KAAK,EAAEA;AAElD,MAAMC,sBAAsB,CAACD,EAAAA,GAAe,CAAC,OAAO,EAAEA;AAEtD,MAAME,mBAAmB,CAACF,EAAAA,GAAe,CAAC,cAAc,EAAEA;AAE1D,MAAMG,sBAAsB,CAACC,KAAAA,GAAAA;IAClC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;IAEA,MAAMC,KAAAA,GAAQ,uBAAA,CAAwBC,IAAI,CAACF,KAAAA,CAAAA;AAC3C,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC;AAEO,MAAMG,uBAAuB,CAACR,EAAAA,GAAe,CAAC,mBAAmB,EAAEA;AAEnE,MAAMS,sBAAsB;AAE5B,MAAMC,0BAA0B,CAACN,KAAAA,GAAAA;IACtC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,IAAIA,UAAUK,mBAAAA,EAAqB;QACjC,OAAO,MAAA;AACT,IAAA;IAEA,MAAMJ,KAAAA,GAAQ,4BAAA,CAA6BC,IAAI,CAACF,KAAAA,CAAAA;AAChD,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC;;;;;;;;;;"}
|
|
@@ -8,6 +8,18 @@ const parseFolderTargetId = (dndId)=>{
|
|
|
8
8
|
const match = /^folder-target:(\d+)$/.exec(dndId);
|
|
9
9
|
return match ? Number(match[1]) : null;
|
|
10
10
|
};
|
|
11
|
+
const toFolderTreeTargetId = (id)=>`folder-tree-target:${id}`;
|
|
12
|
+
const HOME_TREE_TARGET_ID = 'folder-tree-target:home';
|
|
13
|
+
const parseFolderTreeTargetId = (dndId)=>{
|
|
14
|
+
if (typeof dndId !== 'string') {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (dndId === HOME_TREE_TARGET_ID) {
|
|
18
|
+
return 'root';
|
|
19
|
+
}
|
|
20
|
+
const match = /^folder-tree-target:(\d+)$/.exec(dndId);
|
|
21
|
+
return match ? Number(match[1]) : null;
|
|
22
|
+
};
|
|
11
23
|
|
|
12
|
-
export { parseFolderTargetId, toFileDraggableId, toFolderDraggableId, toFolderTargetId };
|
|
24
|
+
export { HOME_TREE_TARGET_ID, parseFolderTargetId, parseFolderTreeTargetId, toFileDraggableId, toFolderDraggableId, toFolderTargetId, toFolderTreeTargetId };
|
|
13
25
|
//# sourceMappingURL=dndIds.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dndIds.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/dndIds.ts"],"sourcesContent":["export const toFileDraggableId = (id: number) => `file:${id}` as const;\n\nexport const toFolderDraggableId = (id: number) => `folder:${id}` as const;\n\nexport const toFolderTargetId = (id: number) => `folder-target:${id}` as const;\n\nexport const parseFolderTargetId = (dndId: string | number): number | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n const match = /^folder-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n"],"names":["toFileDraggableId","id","toFolderDraggableId","toFolderTargetId","parseFolderTargetId","dndId","match","exec","Number"],"mappings":"AAAO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,CAAC,KAAK,EAAEA;AAElD,MAAMC,sBAAsB,CAACD,EAAAA,GAAe,CAAC,OAAO,EAAEA;AAEtD,MAAME,mBAAmB,CAACF,EAAAA,GAAe,CAAC,cAAc,EAAEA;AAE1D,MAAMG,sBAAsB,CAACC,KAAAA,GAAAA;IAClC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;IAEA,MAAMC,KAAAA,GAAQ,uBAAA,CAAwBC,IAAI,CAACF,KAAAA,CAAAA;AAC3C,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC;;;;"}
|
|
1
|
+
{"version":3,"file":"dndIds.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/dndIds.ts"],"sourcesContent":["export const toFileDraggableId = (id: number) => `file:${id}` as const;\n\nexport const toFolderDraggableId = (id: number) => `folder:${id}` as const;\n\nexport const toFolderTargetId = (id: number) => `folder-target:${id}` as const;\n\nexport const parseFolderTargetId = (dndId: string | number): number | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n const match = /^folder-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n\nexport const toFolderTreeTargetId = (id: number) => `folder-tree-target:${id}` as const;\n\nexport const HOME_TREE_TARGET_ID = 'folder-tree-target:home' as const;\n\nexport const parseFolderTreeTargetId = (dndId: string | number): number | 'root' | null => {\n if (typeof dndId !== 'string') {\n return null;\n }\n\n if (dndId === HOME_TREE_TARGET_ID) {\n return 'root';\n }\n\n const match = /^folder-tree-target:(\\d+)$/.exec(dndId);\n return match ? Number(match[1]) : null;\n};\n"],"names":["toFileDraggableId","id","toFolderDraggableId","toFolderTargetId","parseFolderTargetId","dndId","match","exec","Number","toFolderTreeTargetId","HOME_TREE_TARGET_ID","parseFolderTreeTargetId"],"mappings":"AAAO,MAAMA,oBAAoB,CAACC,EAAAA,GAAe,CAAC,KAAK,EAAEA;AAElD,MAAMC,sBAAsB,CAACD,EAAAA,GAAe,CAAC,OAAO,EAAEA;AAEtD,MAAME,mBAAmB,CAACF,EAAAA,GAAe,CAAC,cAAc,EAAEA;AAE1D,MAAMG,sBAAsB,CAACC,KAAAA,GAAAA;IAClC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;IAEA,MAAMC,KAAAA,GAAQ,uBAAA,CAAwBC,IAAI,CAACF,KAAAA,CAAAA;AAC3C,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC;AAEO,MAAMG,uBAAuB,CAACR,EAAAA,GAAe,CAAC,mBAAmB,EAAEA;AAEnE,MAAMS,sBAAsB;AAE5B,MAAMC,0BAA0B,CAACN,KAAAA,GAAAA;IACtC,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,IAAIA,UAAUK,mBAAAA,EAAqB;QACjC,OAAO,MAAA;AACT,IAAA;IAEA,MAAMJ,KAAAA,GAAQ,4BAAA,CAA6BC,IAAI,CAACF,KAAAA,CAAAA;AAChD,IAAA,OAAOC,KAAAA,GAAQE,MAAAA,CAAOF,KAAK,CAAC,EAAE,CAAA,GAAI,IAAA;AACpC;;;;"}
|
|
@@ -2,11 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
4
|
var core = require('@dnd-kit/core');
|
|
5
|
-
var folders = require('../../../../services/folders.js');
|
|
6
|
-
var canDropItemOnFolder = require('../../../../utils/canDropItemOnFolder.js');
|
|
7
5
|
var AssetsDndProvider = require('./AssetsDndProvider.js');
|
|
8
6
|
var dndIds = require('./dndIds.js');
|
|
9
7
|
|
|
8
|
+
const getFileFolderId = (folder)=>{
|
|
9
|
+
if (folder == null) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
if (typeof folder === 'object') {
|
|
13
|
+
return folder.id ?? null;
|
|
14
|
+
}
|
|
15
|
+
if (typeof folder === 'number') {
|
|
16
|
+
return folder;
|
|
17
|
+
}
|
|
18
|
+
return Number(folder) || null;
|
|
19
|
+
};
|
|
10
20
|
const useFileDraggable = (asset)=>{
|
|
11
21
|
const { isMovePending } = AssetsDndProvider.useAssetsDndOptional() ?? {
|
|
12
22
|
isMovePending: false
|
|
@@ -15,7 +25,7 @@ const useFileDraggable = (asset)=>{
|
|
|
15
25
|
kind: 'file',
|
|
16
26
|
id: asset.id,
|
|
17
27
|
name: asset.name,
|
|
18
|
-
folderId:
|
|
28
|
+
folderId: getFileFolderId(asset.folder)
|
|
19
29
|
}), [
|
|
20
30
|
asset.folder,
|
|
21
31
|
asset.id,
|
|
@@ -28,11 +38,11 @@ const useFileDraggable = (asset)=>{
|
|
|
28
38
|
});
|
|
29
39
|
};
|
|
30
40
|
const useFolderDraggableDroppable = (folder)=>{
|
|
31
|
-
const { isMovePending } = AssetsDndProvider.useAssetsDndOptional() ?? {
|
|
32
|
-
isMovePending: false
|
|
41
|
+
const { isMovePending, isValidDropTarget } = AssetsDndProvider.useAssetsDndOptional() ?? {
|
|
42
|
+
isMovePending: false,
|
|
43
|
+
isValidDropTarget: ()=>false
|
|
33
44
|
};
|
|
34
45
|
const { active } = core.useDndContext();
|
|
35
|
-
const { data: folderStructure = [] } = folders.useGetFolderStructureQuery();
|
|
36
46
|
const parentId = typeof folder.parent === 'object' && folder.parent != null ? folder.parent.id ?? null : folder.parent ?? null;
|
|
37
47
|
const dragData = React.useMemo(()=>({
|
|
38
48
|
kind: 'folder',
|
|
@@ -62,26 +72,10 @@ const useFolderDraggableDroppable = (folder)=>{
|
|
|
62
72
|
data: dropData,
|
|
63
73
|
disabled: isMovePending
|
|
64
74
|
});
|
|
65
|
-
const
|
|
66
|
-
const isValidDropTarget = React.useMemo(()=>{
|
|
67
|
-
if (!activeData || activeData.id === folder.id && activeData.kind === 'folder') {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
return canDropItemOnFolder.canDropItemOnFolder({
|
|
71
|
-
items: [
|
|
72
|
-
activeData
|
|
73
|
-
],
|
|
74
|
-
targetFolderId: folder.id,
|
|
75
|
-
folderStructure
|
|
76
|
-
});
|
|
77
|
-
}, [
|
|
78
|
-
activeData,
|
|
79
|
-
folder.id,
|
|
80
|
-
folderStructure
|
|
81
|
-
]);
|
|
75
|
+
const isValidTarget = isValidDropTarget(folder.id);
|
|
82
76
|
const isOver = droppable.isOver;
|
|
83
|
-
const showValidDropHighlight = isOver &&
|
|
84
|
-
const showInvalidDropCursor = isOver && !
|
|
77
|
+
const showValidDropHighlight = isOver && isValidTarget;
|
|
78
|
+
const showInvalidDropCursor = isOver && !isValidTarget && active != null;
|
|
85
79
|
return {
|
|
86
80
|
dragData,
|
|
87
81
|
draggable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAssetDnd.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useAssetDnd.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useDndContext, useDraggable, useDroppable } from '@dnd-kit/core';\n\nimport {
|
|
1
|
+
{"version":3,"file":"useAssetDnd.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useAssetDnd.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useDndContext, useDraggable, useDroppable } from '@dnd-kit/core';\n\nimport { useAssetsDndOptional } from './AssetsDndProvider';\nimport { toFileDraggableId, toFolderDraggableId, toFolderTargetId } from './dndIds';\n\nimport type { DragFileData, DragFolderData, FolderTargetData } from '../../../../types/dnd';\n\nconst getFileFolderId = (\n folder: number | string | { id?: number } | null | undefined\n): number | null => {\n if (folder == null) {\n return null;\n }\n\n if (typeof folder === 'object') {\n return folder.id ?? null;\n }\n\n if (typeof folder === 'number') {\n return folder;\n }\n\n return Number(folder) || null;\n};\n\nexport const useFileDraggable = (asset: {\n id: number;\n name: string;\n folder?: number | string | { id?: number } | null;\n}) => {\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n\n const data = useMemo<DragFileData>(\n () => ({\n kind: 'file',\n id: asset.id,\n name: asset.name,\n folderId: getFileFolderId(asset.folder),\n }),\n [asset.folder, asset.id, asset.name]\n );\n\n return useDraggable({\n id: toFileDraggableId(asset.id),\n data,\n disabled: isMovePending,\n });\n};\n\nexport const useFolderDraggableDroppable = (folder: {\n id: number;\n name: string;\n parent?: number | null | { id?: number };\n}) => {\n const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {\n isMovePending: false,\n isValidDropTarget: () => false,\n };\n const { active } = useDndContext();\n\n const parentId =\n typeof folder.parent === 'object' && folder.parent != null\n ? (folder.parent.id ?? null)\n : (folder.parent ?? null);\n\n const dragData = useMemo<DragFolderData>(\n () => ({\n kind: 'folder',\n id: folder.id,\n name: folder.name,\n parentId,\n }),\n [folder.id, folder.name, parentId]\n );\n\n const dropData = useMemo<FolderTargetData>(\n () => ({\n kind: 'folder-target',\n id: folder.id,\n name: folder.name,\n }),\n [folder.id, folder.name]\n );\n\n const draggable = useDraggable({\n id: toFolderDraggableId(folder.id),\n data: dragData,\n disabled: isMovePending,\n });\n\n const droppable = useDroppable({\n id: toFolderTargetId(folder.id),\n data: dropData,\n disabled: isMovePending,\n });\n\n const isValidTarget = isValidDropTarget(folder.id);\n const isOver = droppable.isOver;\n const showValidDropHighlight = isOver && isValidTarget;\n const showInvalidDropCursor = isOver && !isValidTarget && active != null;\n\n return {\n dragData,\n draggable,\n droppable,\n isDragging: draggable.isDragging,\n showValidDropHighlight,\n showInvalidDropCursor,\n };\n};\n"],"names":["getFileFolderId","folder","id","Number","useFileDraggable","asset","isMovePending","useAssetsDndOptional","data","useMemo","kind","name","folderId","useDraggable","toFileDraggableId","disabled","useFolderDraggableDroppable","isValidDropTarget","active","useDndContext","parentId","parent","dragData","dropData","draggable","toFolderDraggableId","droppable","useDroppable","toFolderTargetId","isValidTarget","isOver","showValidDropHighlight","showInvalidDropCursor","isDragging"],"mappings":"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"}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useDndContext, useDraggable, useDroppable } from '@dnd-kit/core';
|
|
3
|
-
import { useGetFolderStructureQuery } from '../../../../services/folders.mjs';
|
|
4
|
-
import { canDropItemOnFolder } from '../../../../utils/canDropItemOnFolder.mjs';
|
|
5
3
|
import { useAssetsDndOptional } from './AssetsDndProvider.mjs';
|
|
6
4
|
import { toFolderDraggableId, toFolderTargetId, toFileDraggableId } from './dndIds.mjs';
|
|
7
5
|
|
|
6
|
+
const getFileFolderId = (folder)=>{
|
|
7
|
+
if (folder == null) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
if (typeof folder === 'object') {
|
|
11
|
+
return folder.id ?? null;
|
|
12
|
+
}
|
|
13
|
+
if (typeof folder === 'number') {
|
|
14
|
+
return folder;
|
|
15
|
+
}
|
|
16
|
+
return Number(folder) || null;
|
|
17
|
+
};
|
|
8
18
|
const useFileDraggable = (asset)=>{
|
|
9
19
|
const { isMovePending } = useAssetsDndOptional() ?? {
|
|
10
20
|
isMovePending: false
|
|
@@ -13,7 +23,7 @@ const useFileDraggable = (asset)=>{
|
|
|
13
23
|
kind: 'file',
|
|
14
24
|
id: asset.id,
|
|
15
25
|
name: asset.name,
|
|
16
|
-
folderId:
|
|
26
|
+
folderId: getFileFolderId(asset.folder)
|
|
17
27
|
}), [
|
|
18
28
|
asset.folder,
|
|
19
29
|
asset.id,
|
|
@@ -26,11 +36,11 @@ const useFileDraggable = (asset)=>{
|
|
|
26
36
|
});
|
|
27
37
|
};
|
|
28
38
|
const useFolderDraggableDroppable = (folder)=>{
|
|
29
|
-
const { isMovePending } = useAssetsDndOptional() ?? {
|
|
30
|
-
isMovePending: false
|
|
39
|
+
const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {
|
|
40
|
+
isMovePending: false,
|
|
41
|
+
isValidDropTarget: ()=>false
|
|
31
42
|
};
|
|
32
43
|
const { active } = useDndContext();
|
|
33
|
-
const { data: folderStructure = [] } = useGetFolderStructureQuery();
|
|
34
44
|
const parentId = typeof folder.parent === 'object' && folder.parent != null ? folder.parent.id ?? null : folder.parent ?? null;
|
|
35
45
|
const dragData = useMemo(()=>({
|
|
36
46
|
kind: 'folder',
|
|
@@ -60,26 +70,10 @@ const useFolderDraggableDroppable = (folder)=>{
|
|
|
60
70
|
data: dropData,
|
|
61
71
|
disabled: isMovePending
|
|
62
72
|
});
|
|
63
|
-
const
|
|
64
|
-
const isValidDropTarget = useMemo(()=>{
|
|
65
|
-
if (!activeData || activeData.id === folder.id && activeData.kind === 'folder') {
|
|
66
|
-
return false;
|
|
67
|
-
}
|
|
68
|
-
return canDropItemOnFolder({
|
|
69
|
-
items: [
|
|
70
|
-
activeData
|
|
71
|
-
],
|
|
72
|
-
targetFolderId: folder.id,
|
|
73
|
-
folderStructure
|
|
74
|
-
});
|
|
75
|
-
}, [
|
|
76
|
-
activeData,
|
|
77
|
-
folder.id,
|
|
78
|
-
folderStructure
|
|
79
|
-
]);
|
|
73
|
+
const isValidTarget = isValidDropTarget(folder.id);
|
|
80
74
|
const isOver = droppable.isOver;
|
|
81
|
-
const showValidDropHighlight = isOver &&
|
|
82
|
-
const showInvalidDropCursor = isOver && !
|
|
75
|
+
const showValidDropHighlight = isOver && isValidTarget;
|
|
76
|
+
const showInvalidDropCursor = isOver && !isValidTarget && active != null;
|
|
83
77
|
return {
|
|
84
78
|
dragData,
|
|
85
79
|
draggable,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAssetDnd.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useAssetDnd.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useDndContext, useDraggable, useDroppable } from '@dnd-kit/core';\n\nimport {
|
|
1
|
+
{"version":3,"file":"useAssetDnd.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useAssetDnd.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useDndContext, useDraggable, useDroppable } from '@dnd-kit/core';\n\nimport { useAssetsDndOptional } from './AssetsDndProvider';\nimport { toFileDraggableId, toFolderDraggableId, toFolderTargetId } from './dndIds';\n\nimport type { DragFileData, DragFolderData, FolderTargetData } from '../../../../types/dnd';\n\nconst getFileFolderId = (\n folder: number | string | { id?: number } | null | undefined\n): number | null => {\n if (folder == null) {\n return null;\n }\n\n if (typeof folder === 'object') {\n return folder.id ?? null;\n }\n\n if (typeof folder === 'number') {\n return folder;\n }\n\n return Number(folder) || null;\n};\n\nexport const useFileDraggable = (asset: {\n id: number;\n name: string;\n folder?: number | string | { id?: number } | null;\n}) => {\n const { isMovePending } = useAssetsDndOptional() ?? { isMovePending: false };\n\n const data = useMemo<DragFileData>(\n () => ({\n kind: 'file',\n id: asset.id,\n name: asset.name,\n folderId: getFileFolderId(asset.folder),\n }),\n [asset.folder, asset.id, asset.name]\n );\n\n return useDraggable({\n id: toFileDraggableId(asset.id),\n data,\n disabled: isMovePending,\n });\n};\n\nexport const useFolderDraggableDroppable = (folder: {\n id: number;\n name: string;\n parent?: number | null | { id?: number };\n}) => {\n const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {\n isMovePending: false,\n isValidDropTarget: () => false,\n };\n const { active } = useDndContext();\n\n const parentId =\n typeof folder.parent === 'object' && folder.parent != null\n ? (folder.parent.id ?? null)\n : (folder.parent ?? null);\n\n const dragData = useMemo<DragFolderData>(\n () => ({\n kind: 'folder',\n id: folder.id,\n name: folder.name,\n parentId,\n }),\n [folder.id, folder.name, parentId]\n );\n\n const dropData = useMemo<FolderTargetData>(\n () => ({\n kind: 'folder-target',\n id: folder.id,\n name: folder.name,\n }),\n [folder.id, folder.name]\n );\n\n const draggable = useDraggable({\n id: toFolderDraggableId(folder.id),\n data: dragData,\n disabled: isMovePending,\n });\n\n const droppable = useDroppable({\n id: toFolderTargetId(folder.id),\n data: dropData,\n disabled: isMovePending,\n });\n\n const isValidTarget = isValidDropTarget(folder.id);\n const isOver = droppable.isOver;\n const showValidDropHighlight = isOver && isValidTarget;\n const showInvalidDropCursor = isOver && !isValidTarget && active != null;\n\n return {\n dragData,\n draggable,\n droppable,\n isDragging: draggable.isDragging,\n showValidDropHighlight,\n showInvalidDropCursor,\n };\n};\n"],"names":["getFileFolderId","folder","id","Number","useFileDraggable","asset","isMovePending","useAssetsDndOptional","data","useMemo","kind","name","folderId","useDraggable","toFileDraggableId","disabled","useFolderDraggableDroppable","isValidDropTarget","active","useDndContext","parentId","parent","dragData","dropData","draggable","toFolderDraggableId","droppable","useDroppable","toFolderTargetId","isValidTarget","isOver","showValidDropHighlight","showInvalidDropCursor","isDragging"],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var core = require('@dnd-kit/core');
|
|
4
|
+
var AssetsDndProvider = require('./AssetsDndProvider.js');
|
|
5
|
+
var dndIds = require('./dndIds.js');
|
|
6
|
+
|
|
7
|
+
const useFolderTreeDroppable = (target)=>{
|
|
8
|
+
const { isMovePending, isValidDropTarget } = AssetsDndProvider.useAssetsDndOptional() ?? {
|
|
9
|
+
isMovePending: false,
|
|
10
|
+
isValidDropTarget: ()=>false
|
|
11
|
+
};
|
|
12
|
+
const { active } = core.useDndContext();
|
|
13
|
+
const dropId = target.id == null ? dndIds.HOME_TREE_TARGET_ID : dndIds.toFolderTreeTargetId(target.id);
|
|
14
|
+
const data = {
|
|
15
|
+
kind: 'folder-tree-target',
|
|
16
|
+
id: target.id,
|
|
17
|
+
name: target.name
|
|
18
|
+
};
|
|
19
|
+
const droppable = core.useDroppable({
|
|
20
|
+
id: dropId,
|
|
21
|
+
data,
|
|
22
|
+
disabled: isMovePending
|
|
23
|
+
});
|
|
24
|
+
const isValidTarget = isValidDropTarget(target.id);
|
|
25
|
+
const isOver = droppable.isOver;
|
|
26
|
+
return {
|
|
27
|
+
droppable,
|
|
28
|
+
isOver,
|
|
29
|
+
showValidDropHighlight: isOver && isValidTarget,
|
|
30
|
+
showInvalidDropCursor: isOver && !isValidTarget && active != null
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
exports.useFolderTreeDroppable = useFolderTreeDroppable;
|
|
35
|
+
//# sourceMappingURL=useFolderTreeDroppable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFolderTreeDroppable.js","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useFolderTreeDroppable.ts"],"sourcesContent":["import { useDndContext, useDroppable } from '@dnd-kit/core';\n\nimport { useAssetsDndOptional } from './AssetsDndProvider';\nimport { HOME_TREE_TARGET_ID, toFolderTreeTargetId } from './dndIds';\n\nimport type { FolderTreeTargetData } from '../../../../types/dnd';\n\nexport const useFolderTreeDroppable = (\n target: { id: number; name: string } | { id: null; name: string }\n) => {\n const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {\n isMovePending: false,\n isValidDropTarget: () => false,\n };\n const { active } = useDndContext();\n\n const dropId = target.id == null ? HOME_TREE_TARGET_ID : toFolderTreeTargetId(target.id);\n const data: FolderTreeTargetData = {\n kind: 'folder-tree-target',\n id: target.id,\n name: target.name,\n };\n\n const droppable = useDroppable({ id: dropId, data, disabled: isMovePending });\n\n const isValidTarget = isValidDropTarget(target.id);\n const isOver = droppable.isOver;\n\n return {\n droppable,\n isOver,\n showValidDropHighlight: isOver && isValidTarget,\n showInvalidDropCursor: isOver && !isValidTarget && active != null,\n };\n};\n"],"names":["useFolderTreeDroppable","target","isMovePending","isValidDropTarget","useAssetsDndOptional","active","useDndContext","dropId","id","HOME_TREE_TARGET_ID","toFolderTreeTargetId","data","kind","name","droppable","useDroppable","disabled","isValidTarget","isOver","showValidDropHighlight","showInvalidDropCursor"],"mappings":";;;;;;AAOO,MAAMA,yBAAyB,CACpCC,MAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,sCAAAA,EAAAA,IAA0B;QACrEF,aAAAA,EAAe,KAAA;AACfC,QAAAA,iBAAAA,EAAmB,IAAM;AAC3B,KAAA;IACA,MAAM,EAAEE,MAAM,EAAE,GAAGC,kBAAAA,EAAAA;IAEnB,MAAMC,MAAAA,GAASN,OAAOO,EAAE,IAAI,OAAOC,0BAAAA,GAAsBC,2BAAAA,CAAqBT,OAAOO,EAAE,CAAA;AACvF,IAAA,MAAMG,IAAAA,GAA6B;QACjCC,IAAAA,EAAM,oBAAA;AACNJ,QAAAA,EAAAA,EAAIP,OAAOO,EAAE;AACbK,QAAAA,IAAAA,EAAMZ,OAAOY;AACf,KAAA;AAEA,IAAA,MAAMC,YAAYC,iBAAAA,CAAa;QAAEP,EAAAA,EAAID,MAAAA;AAAQI,QAAAA,IAAAA;QAAMK,QAAAA,EAAUd;AAAc,KAAA,CAAA;IAE3E,MAAMe,aAAAA,GAAgBd,iBAAAA,CAAkBF,MAAAA,CAAOO,EAAE,CAAA;IACjD,MAAMU,MAAAA,GAASJ,UAAUI,MAAM;IAE/B,OAAO;AACLJ,QAAAA,SAAAA;AACAI,QAAAA,MAAAA;AACAC,QAAAA,sBAAAA,EAAwBD,MAAAA,IAAUD,aAAAA;QAClCG,qBAAAA,EAAuBF,MAAAA,IAAU,CAACD,aAAAA,IAAiBZ,MAAAA,IAAU;AAC/D,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useDndContext, useDroppable } from '@dnd-kit/core';
|
|
2
|
+
import { useAssetsDndOptional } from './AssetsDndProvider.mjs';
|
|
3
|
+
import { HOME_TREE_TARGET_ID, toFolderTreeTargetId } from './dndIds.mjs';
|
|
4
|
+
|
|
5
|
+
const useFolderTreeDroppable = (target)=>{
|
|
6
|
+
const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {
|
|
7
|
+
isMovePending: false,
|
|
8
|
+
isValidDropTarget: ()=>false
|
|
9
|
+
};
|
|
10
|
+
const { active } = useDndContext();
|
|
11
|
+
const dropId = target.id == null ? HOME_TREE_TARGET_ID : toFolderTreeTargetId(target.id);
|
|
12
|
+
const data = {
|
|
13
|
+
kind: 'folder-tree-target',
|
|
14
|
+
id: target.id,
|
|
15
|
+
name: target.name
|
|
16
|
+
};
|
|
17
|
+
const droppable = useDroppable({
|
|
18
|
+
id: dropId,
|
|
19
|
+
data,
|
|
20
|
+
disabled: isMovePending
|
|
21
|
+
});
|
|
22
|
+
const isValidTarget = isValidDropTarget(target.id);
|
|
23
|
+
const isOver = droppable.isOver;
|
|
24
|
+
return {
|
|
25
|
+
droppable,
|
|
26
|
+
isOver,
|
|
27
|
+
showValidDropHighlight: isOver && isValidTarget,
|
|
28
|
+
showInvalidDropCursor: isOver && !isValidTarget && active != null
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export { useFolderTreeDroppable };
|
|
33
|
+
//# sourceMappingURL=useFolderTreeDroppable.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFolderTreeDroppable.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/Dnd/useFolderTreeDroppable.ts"],"sourcesContent":["import { useDndContext, useDroppable } from '@dnd-kit/core';\n\nimport { useAssetsDndOptional } from './AssetsDndProvider';\nimport { HOME_TREE_TARGET_ID, toFolderTreeTargetId } from './dndIds';\n\nimport type { FolderTreeTargetData } from '../../../../types/dnd';\n\nexport const useFolderTreeDroppable = (\n target: { id: number; name: string } | { id: null; name: string }\n) => {\n const { isMovePending, isValidDropTarget } = useAssetsDndOptional() ?? {\n isMovePending: false,\n isValidDropTarget: () => false,\n };\n const { active } = useDndContext();\n\n const dropId = target.id == null ? HOME_TREE_TARGET_ID : toFolderTreeTargetId(target.id);\n const data: FolderTreeTargetData = {\n kind: 'folder-tree-target',\n id: target.id,\n name: target.name,\n };\n\n const droppable = useDroppable({ id: dropId, data, disabled: isMovePending });\n\n const isValidTarget = isValidDropTarget(target.id);\n const isOver = droppable.isOver;\n\n return {\n droppable,\n isOver,\n showValidDropHighlight: isOver && isValidTarget,\n showInvalidDropCursor: isOver && !isValidTarget && active != null,\n };\n};\n"],"names":["useFolderTreeDroppable","target","isMovePending","isValidDropTarget","useAssetsDndOptional","active","useDndContext","dropId","id","HOME_TREE_TARGET_ID","toFolderTreeTargetId","data","kind","name","droppable","useDroppable","disabled","isValidTarget","isOver","showValidDropHighlight","showInvalidDropCursor"],"mappings":";;;;AAOO,MAAMA,yBAAyB,CACpCC,MAAAA,GAAAA;AAEA,IAAA,MAAM,EAAEC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,oBAAAA,EAAAA,IAA0B;QACrEF,aAAAA,EAAe,KAAA;AACfC,QAAAA,iBAAAA,EAAmB,IAAM;AAC3B,KAAA;IACA,MAAM,EAAEE,MAAM,EAAE,GAAGC,aAAAA,EAAAA;IAEnB,MAAMC,MAAAA,GAASN,OAAOO,EAAE,IAAI,OAAOC,mBAAAA,GAAsBC,oBAAAA,CAAqBT,OAAOO,EAAE,CAAA;AACvF,IAAA,MAAMG,IAAAA,GAA6B;QACjCC,IAAAA,EAAM,oBAAA;AACNJ,QAAAA,EAAAA,EAAIP,OAAOO,EAAE;AACbK,QAAAA,IAAAA,EAAMZ,OAAOY;AACf,KAAA;AAEA,IAAA,MAAMC,YAAYC,YAAAA,CAAa;QAAEP,EAAAA,EAAID,MAAAA;AAAQI,QAAAA,IAAAA;QAAMK,QAAAA,EAAUd;AAAc,KAAA,CAAA;IAE3E,MAAMe,aAAAA,GAAgBd,iBAAAA,CAAkBF,MAAAA,CAAOO,EAAE,CAAA;IACjD,MAAMU,MAAAA,GAASJ,UAAUI,MAAM;IAE/B,OAAO;AACLJ,QAAAA,SAAAA;AACAI,QAAAA,MAAAA;AACAC,QAAAA,sBAAAA,EAAwBD,MAAAA,IAAUD,aAAAA;QAClCG,qBAAAA,EAAuBF,MAAAA,IAAU,CAACD,aAAAA,IAAiBZ,MAAAA,IAAU;AAC/D,KAAA;AACF;;;;"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var designSystem = require('@strapi/design-system');
|
|
5
|
+
var symbols = require('@strapi/icons/symbols');
|
|
6
|
+
var reactIntl = require('react-intl');
|
|
7
|
+
var translations = require('../../../utils/translations.js');
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Empty state for the assets list (both views) when the current folder holds
|
|
11
|
+
* no assets and no folders. The "Add assets" button opens the same file picker
|
|
12
|
+
* as New > File upload; drag-and-drop upload keeps working since the page-wide
|
|
13
|
+
* drop zone wraps this component.
|
|
14
|
+
*/ const EmptyState = ({ onAddAssets })=>{
|
|
15
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
16
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
17
|
+
direction: "column",
|
|
18
|
+
alignItems: "center",
|
|
19
|
+
gap: 6,
|
|
20
|
+
padding: 11,
|
|
21
|
+
children: [
|
|
22
|
+
/*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
|
|
23
|
+
width: "16rem",
|
|
24
|
+
height: "8.8rem"
|
|
25
|
+
}),
|
|
26
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
27
|
+
direction: "column",
|
|
28
|
+
alignItems: "center",
|
|
29
|
+
gap: 2,
|
|
30
|
+
textAlign: "center",
|
|
31
|
+
children: [
|
|
32
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
33
|
+
variant: "delta",
|
|
34
|
+
tag: "p",
|
|
35
|
+
fontWeight: "bold",
|
|
36
|
+
textColor: "neutral800",
|
|
37
|
+
children: formatMessage({
|
|
38
|
+
id: translations.getTranslationKey('list.empty.title'),
|
|
39
|
+
defaultMessage: 'No assets yet'
|
|
40
|
+
})
|
|
41
|
+
}),
|
|
42
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
43
|
+
textColor: "neutral600",
|
|
44
|
+
children: formatMessage({
|
|
45
|
+
id: translations.getTranslationKey('list.empty.description'),
|
|
46
|
+
defaultMessage: 'Get started by uploading assets or creating a folder.'
|
|
47
|
+
})
|
|
48
|
+
})
|
|
49
|
+
]
|
|
50
|
+
}),
|
|
51
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Button, {
|
|
52
|
+
onClick: onAddAssets,
|
|
53
|
+
children: formatMessage({
|
|
54
|
+
id: translations.getTranslationKey('list.empty.add-assets'),
|
|
55
|
+
defaultMessage: 'Add assets'
|
|
56
|
+
})
|
|
57
|
+
})
|
|
58
|
+
]
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
exports.EmptyState = EmptyState;
|
|
63
|
+
//# sourceMappingURL=EmptyState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.js","sources":["../../../../../../admin/src/future/pages/Assets/components/EmptyState.tsx"],"sourcesContent":["import { Button, Flex, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslationKey } from '../../../utils/translations';\n\ninterface EmptyStateProps {\n onAddAssets: () => void;\n}\n\n/**\n * Empty state for the assets list (both views) when the current folder holds\n * no assets and no folders. The \"Add assets\" button opens the same file picker\n * as New > File upload; drag-and-drop upload keeps working since the page-wide\n * drop zone wraps this component.\n */\nexport const EmptyState = ({ onAddAssets }: EmptyStateProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"center\" gap={6} padding={11}>\n <EmptyDocuments width=\"16rem\" height=\"8.8rem\" />\n <Flex direction=\"column\" alignItems=\"center\" gap={2} textAlign=\"center\">\n <Typography variant=\"delta\" tag=\"p\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage({\n id: getTranslationKey('list.empty.title'),\n defaultMessage: 'No assets yet',\n })}\n </Typography>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('list.empty.description'),\n defaultMessage: 'Get started by uploading assets or creating a folder.',\n })}\n </Typography>\n </Flex>\n <Button onClick={onAddAssets}>\n {formatMessage({\n id: getTranslationKey('list.empty.add-assets'),\n defaultMessage: 'Add assets',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":["EmptyState","onAddAssets","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","padding","_jsx","EmptyDocuments","width","height","textAlign","Typography","variant","tag","fontWeight","textColor","id","getTranslationKey","defaultMessage","Button","onClick"],"mappings":";;;;;;;;AAUA;;;;;AAKC,IACM,MAAMA,UAAAA,GAAa,CAAC,EAAEC,WAAW,EAAmB,GAAA;IACzD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,eAAA,CAACC,iBAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,QAAA;QAASC,GAAAA,EAAK,CAAA;QAAGC,OAAAA,EAAS,EAAA;;0BAC5DC,cAAA,CAACC,sBAAAA,EAAAA;gBAAeC,KAAAA,EAAM,OAAA;gBAAQC,MAAAA,EAAO;;0BACrCT,eAAA,CAACC,iBAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,QAAA;gBAASC,GAAAA,EAAK,CAAA;gBAAGM,SAAAA,EAAU,QAAA;;kCAC7DJ,cAAA,CAACK,uBAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,GAAA;wBAAIC,UAAAA,EAAW,MAAA;wBAAOC,SAAAA,EAAU,YAAA;kCAC7DjB,aAAAA,CAAc;AACbkB,4BAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,kBAAA,CAAA;4BACtBC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFZ,cAAA,CAACK,uBAAAA,EAAAA;wBAAWI,SAAAA,EAAU,YAAA;kCACnBjB,aAAAA,CAAc;AACbkB,4BAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,wBAAA,CAAA;4BACtBC,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAGJZ,cAAA,CAACa,mBAAAA,EAAAA;gBAAOC,OAAAA,EAASvB,WAAAA;0BACdC,aAAAA,CAAc;AACbkB,oBAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,uBAAA,CAAA;oBACtBC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR;;;;"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { Flex, Typography, Button } from '@strapi/design-system';
|
|
3
|
+
import { EmptyDocuments } from '@strapi/icons/symbols';
|
|
4
|
+
import { useIntl } from 'react-intl';
|
|
5
|
+
import { getTranslationKey } from '../../../utils/translations.mjs';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Empty state for the assets list (both views) when the current folder holds
|
|
9
|
+
* no assets and no folders. The "Add assets" button opens the same file picker
|
|
10
|
+
* as New > File upload; drag-and-drop upload keeps working since the page-wide
|
|
11
|
+
* drop zone wraps this component.
|
|
12
|
+
*/ const EmptyState = ({ onAddAssets })=>{
|
|
13
|
+
const { formatMessage } = useIntl();
|
|
14
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
15
|
+
direction: "column",
|
|
16
|
+
alignItems: "center",
|
|
17
|
+
gap: 6,
|
|
18
|
+
padding: 11,
|
|
19
|
+
children: [
|
|
20
|
+
/*#__PURE__*/ jsx(EmptyDocuments, {
|
|
21
|
+
width: "16rem",
|
|
22
|
+
height: "8.8rem"
|
|
23
|
+
}),
|
|
24
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
25
|
+
direction: "column",
|
|
26
|
+
alignItems: "center",
|
|
27
|
+
gap: 2,
|
|
28
|
+
textAlign: "center",
|
|
29
|
+
children: [
|
|
30
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
31
|
+
variant: "delta",
|
|
32
|
+
tag: "p",
|
|
33
|
+
fontWeight: "bold",
|
|
34
|
+
textColor: "neutral800",
|
|
35
|
+
children: formatMessage({
|
|
36
|
+
id: getTranslationKey('list.empty.title'),
|
|
37
|
+
defaultMessage: 'No assets yet'
|
|
38
|
+
})
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
41
|
+
textColor: "neutral600",
|
|
42
|
+
children: formatMessage({
|
|
43
|
+
id: getTranslationKey('list.empty.description'),
|
|
44
|
+
defaultMessage: 'Get started by uploading assets or creating a folder.'
|
|
45
|
+
})
|
|
46
|
+
})
|
|
47
|
+
]
|
|
48
|
+
}),
|
|
49
|
+
/*#__PURE__*/ jsx(Button, {
|
|
50
|
+
onClick: onAddAssets,
|
|
51
|
+
children: formatMessage({
|
|
52
|
+
id: getTranslationKey('list.empty.add-assets'),
|
|
53
|
+
defaultMessage: 'Add assets'
|
|
54
|
+
})
|
|
55
|
+
})
|
|
56
|
+
]
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { EmptyState };
|
|
61
|
+
//# sourceMappingURL=EmptyState.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.mjs","sources":["../../../../../../admin/src/future/pages/Assets/components/EmptyState.tsx"],"sourcesContent":["import { Button, Flex, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { getTranslationKey } from '../../../utils/translations';\n\ninterface EmptyStateProps {\n onAddAssets: () => void;\n}\n\n/**\n * Empty state for the assets list (both views) when the current folder holds\n * no assets and no folders. The \"Add assets\" button opens the same file picker\n * as New > File upload; drag-and-drop upload keeps working since the page-wide\n * drop zone wraps this component.\n */\nexport const EmptyState = ({ onAddAssets }: EmptyStateProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"center\" gap={6} padding={11}>\n <EmptyDocuments width=\"16rem\" height=\"8.8rem\" />\n <Flex direction=\"column\" alignItems=\"center\" gap={2} textAlign=\"center\">\n <Typography variant=\"delta\" tag=\"p\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage({\n id: getTranslationKey('list.empty.title'),\n defaultMessage: 'No assets yet',\n })}\n </Typography>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('list.empty.description'),\n defaultMessage: 'Get started by uploading assets or creating a folder.',\n })}\n </Typography>\n </Flex>\n <Button onClick={onAddAssets}>\n {formatMessage({\n id: getTranslationKey('list.empty.add-assets'),\n defaultMessage: 'Add assets',\n })}\n </Button>\n </Flex>\n );\n};\n"],"names":["EmptyState","onAddAssets","formatMessage","useIntl","_jsxs","Flex","direction","alignItems","gap","padding","_jsx","EmptyDocuments","width","height","textAlign","Typography","variant","tag","fontWeight","textColor","id","getTranslationKey","defaultMessage","Button","onClick"],"mappings":";;;;;;AAUA;;;;;AAKC,IACM,MAAMA,UAAAA,GAAa,CAAC,EAAEC,WAAW,EAAmB,GAAA;IACzD,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEC,IAAA,CAACC,IAAAA,EAAAA;QAAKC,SAAAA,EAAU,QAAA;QAASC,UAAAA,EAAW,QAAA;QAASC,GAAAA,EAAK,CAAA;QAAGC,OAAAA,EAAS,EAAA;;0BAC5DC,GAAA,CAACC,cAAAA,EAAAA;gBAAeC,KAAAA,EAAM,OAAA;gBAAQC,MAAAA,EAAO;;0BACrCT,IAAA,CAACC,IAAAA,EAAAA;gBAAKC,SAAAA,EAAU,QAAA;gBAASC,UAAAA,EAAW,QAAA;gBAASC,GAAAA,EAAK,CAAA;gBAAGM,SAAAA,EAAU,QAAA;;kCAC7DJ,GAAA,CAACK,UAAAA,EAAAA;wBAAWC,OAAAA,EAAQ,OAAA;wBAAQC,GAAAA,EAAI,GAAA;wBAAIC,UAAAA,EAAW,MAAA;wBAAOC,SAAAA,EAAU,YAAA;kCAC7DjB,aAAAA,CAAc;AACbkB,4BAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,kBAAA,CAAA;4BACtBC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFZ,GAAA,CAACK,UAAAA,EAAAA;wBAAWI,SAAAA,EAAU,YAAA;kCACnBjB,aAAAA,CAAc;AACbkB,4BAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,wBAAA,CAAA;4BACtBC,cAAAA,EAAgB;AAClB,yBAAA;;;;0BAGJZ,GAAA,CAACa,MAAAA,EAAAA;gBAAOC,OAAAA,EAASvB,WAAAA;0BACdC,aAAAA,CAAc;AACbkB,oBAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,uBAAA,CAAA;oBACtBC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR;;;;"}
|