@strapi/upload 5.59.0 → 5.60.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/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js +434 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs +432 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js +91 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs +89 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js +178 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs +175 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js +143 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs +141 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js +49 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs +41 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +4 -3
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +4 -3
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AssetCard.js +240 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs +237 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js +161 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs +159 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +76 -49
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +77 -50
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js +109 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs +106 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js +146 -79
- package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +148 -82
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/FieldControls.js +32 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs +29 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +130 -88
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +129 -91
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js +42 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs +40 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js +122 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs +120 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs.map +1 -0
- package/dist/admin/components/UploadProgressDialog.js +2 -1
- package/dist/admin/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/components/UploadProgressDialog.mjs +2 -1
- package/dist/admin/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js +12 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs +12 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.js +13 -302
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.mjs +11 -280
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js +142 -31
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +145 -34
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js +43 -2
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs +45 -4
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js +58 -34
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs +60 -36
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsView.js +145 -0
- package/dist/admin/pages/Assets/components/AssetsView.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs +143 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +1 -1
- package/dist/admin/pages/Assets/components/BusyOverlay.mjs +1 -1
- package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs +1 -1
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js +40 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs +38 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js +29 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs +24 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js +5 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs +5 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.mjs +2 -2
- package/dist/admin/pages/Assets/components/FilterMenu.mjs +2 -2
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +274 -55
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +277 -59
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js +32 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs +29 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js +126 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs +104 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js +19 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +20 -3
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetsList.js +87 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs +85 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js +2 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js +80 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs +77 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js +32 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs +29 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSort.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListSort.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/services/api.js +92 -7
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +91 -9
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/components/AssetPickerDialog/AssetPickerDialog.d.ts +19 -0
- package/dist/admin/src/components/AssetPickerDialog/FolderBreadcrumbs.d.ts +10 -0
- package/dist/admin/src/components/AssetPickerDialog/PickerSelectionProvider.d.ts +28 -0
- package/dist/admin/src/components/AssetPickerDialog/SortableSelection.d.ts +12 -0
- package/dist/admin/src/components/AssetPickerDialog/pickerSelection.d.ts +26 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCard.d.ts +25 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCarousel.d.ts +16 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +11 -3
- package/dist/admin/src/components/MediaLibraryInput/AssetPreview.d.ts +17 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +13 -3
- package/dist/admin/src/components/MediaLibraryInput/FieldControls.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +3 -1
- package/dist/admin/src/components/MediaLibraryInput/UploadProgressBar.d.ts +7 -0
- package/dist/admin/src/components/MediaLibraryInput/useFieldUploads.d.ts +31 -0
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +2 -0
- package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +3 -1
- package/dist/admin/src/pages/Assets/components/AssetsSearchInput.d.ts +11 -1
- package/dist/admin/src/pages/Assets/components/AssetsView.d.ts +29 -0
- package/dist/admin/src/pages/Assets/components/Dnd/ReorderHandle.d.ts +12 -0
- package/dist/admin/src/pages/Assets/components/Dnd/assetSortable.d.ts +37 -0
- package/dist/admin/src/pages/Assets/components/Dnd/dndIds.d.ts +5 -0
- package/dist/admin/src/pages/Assets/components/Dnd/useAssetDnd.d.ts +23 -2
- package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +1 -0
- package/dist/admin/src/pages/Assets/components/FolderTree/collapsedBranch.d.ts +21 -0
- package/dist/admin/src/pages/Assets/components/ViewToggle.d.ts +8 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +26 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetsList.d.ts +30 -0
- package/dist/admin/src/pages/Assets/hooks/useListQueryParams.d.ts +27 -0
- package/dist/admin/src/pages/Assets/hooks/useListSettings.d.ts +29 -0
- package/dist/admin/src/services/api.d.ts +24 -1
- package/dist/admin/src/store/uploadProgress.d.ts +14 -1
- package/dist/admin/src/utils/findFolderPath.d.ts +6 -0
- package/dist/admin/src/utils/isAllowedAssetType.d.ts +14 -0
- package/dist/admin/store/uploadProgress.js +30 -3
- package/dist/admin/store/uploadProgress.js.map +1 -1
- package/dist/admin/store/uploadProgress.mjs +29 -4
- package/dist/admin/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/translations/en.json.js +20 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +20 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/findFolderPath.js +26 -0
- package/dist/admin/utils/findFolderPath.js.map +1 -0
- package/dist/admin/utils/findFolderPath.mjs +24 -0
- package/dist/admin/utils/findFolderPath.mjs.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.js +33 -0
- package/dist/admin/utils/isAllowedAssetType.js.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.mjs +31 -0
- package/dist/admin/utils/isAllowedAssetType.mjs.map +1 -0
- package/dist/server/controllers/admin-settings.js +5 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +5 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +2 -2
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +2 -2
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +11 -11
- package/dist/server/src/services/image-manipulation.d.ts +1 -1
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/types.d.ts +63 -12
- package/dist/server/src/types.d.ts.map +1 -1
- package/package.json +8 -6
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js +0 -45
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs +0 -43
- package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs.map +0 -1
- package/dist/admin/src/components/MediaLibraryInput/NoLibraryAccessDialog.d.ts +0 -10
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var React = require('react');
|
|
5
|
-
var ToggleGroup = require('@radix-ui/react-toggle-group');
|
|
6
5
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
7
6
|
var designSystem = require('@strapi/design-system');
|
|
8
7
|
var icons = require('@strapi/icons');
|
|
@@ -12,73 +11,32 @@ var useAIMetadataEnabled = require('../../hooks/useAIMetadataEnabled.js');
|
|
|
12
11
|
var useMediaLibraryPermissions = require('../../hooks/useMediaLibraryPermissions.js');
|
|
13
12
|
var useTracking = require('../../hooks/useTracking.js');
|
|
14
13
|
var api = require('../../services/api.js');
|
|
15
|
-
var folders = require('../../services/folders.js');
|
|
16
14
|
var settings = require('../../services/settings.js');
|
|
17
15
|
var itemLocations = require('../../utils/itemLocations.js');
|
|
18
16
|
var translations = require('../../utils/translations.js');
|
|
19
17
|
var typeFromMime = require('../../utils/typeFromMime.js');
|
|
20
18
|
var AssetDetailsDrawer = require('./components/AssetDetails/AssetDetailsDrawer.js');
|
|
21
|
-
var AssetsGrid = require('./components/AssetsGrid.js');
|
|
22
19
|
var AssetsSearchInput = require('./components/AssetsSearchInput.js');
|
|
23
|
-
var
|
|
24
|
-
var BulkActionsBar = require('./components/BulkActionsBar.js');
|
|
20
|
+
var AssetsView = require('./components/AssetsView.js');
|
|
25
21
|
var AssetsDndProvider = require('./components/Dnd/AssetsDndProvider.js');
|
|
26
22
|
var UploadDropZone = require('./components/DropZone/UploadDropZone.js');
|
|
27
23
|
var UploadDropZoneContext = require('./components/DropZone/UploadDropZoneContext.js');
|
|
28
|
-
var EmptyState = require('./components/EmptyState.js');
|
|
29
24
|
var FilterBadges = require('./components/FilterBadges.js');
|
|
30
25
|
var FilterMenu = require('./components/FilterMenu.js');
|
|
31
26
|
var FolderFormDialog = require('./components/FolderFormDialog.js');
|
|
32
27
|
var FolderTree = require('./components/FolderTree/FolderTree.js');
|
|
33
28
|
var ImportFromUrlDialog = require('./components/ImportFromUrlDialog.js');
|
|
34
|
-
var ItemContextMenu = require('./components/ItemContextMenu.js');
|
|
35
29
|
var MainAreaContextMenu = require('./components/MainAreaContextMenu.js');
|
|
36
30
|
var SortMenu = require('./components/SortMenu.js');
|
|
31
|
+
var ViewToggle = require('./components/ViewToggle.js');
|
|
37
32
|
var constants = require('./constants.js');
|
|
38
|
-
var useAssetSearch = require('./hooks/useAssetSearch.js');
|
|
39
33
|
var useAssetSelection = require('./hooks/useAssetSelection.js');
|
|
34
|
+
var useAssetsList = require('./hooks/useAssetsList.js');
|
|
40
35
|
var useBusyAssets = require('./hooks/useBusyAssets.js');
|
|
41
36
|
var useFolderInfo = require('./hooks/useFolderInfo.js');
|
|
42
|
-
var useFolderNavigation = require('./hooks/useFolderNavigation.js');
|
|
43
|
-
var useInfiniteAssets = require('./hooks/useInfiniteAssets.js');
|
|
44
|
-
var useInfiniteScrollSentinel = require('./hooks/useInfiniteScrollSentinel.js');
|
|
45
|
-
var useListFilters = require('./hooks/useListFilters.js');
|
|
46
37
|
var useListScrollRestoration = require('./hooks/useListScrollRestoration.js');
|
|
47
|
-
var useListSort = require('./hooks/useListSort.js');
|
|
48
|
-
var buildAssetFilters = require('./utils/buildAssetFilters.js');
|
|
49
38
|
var listQueryKey = require('./utils/listQueryKey.js');
|
|
50
|
-
var mergeMixedList = require('./utils/mergeMixedList.js');
|
|
51
|
-
var renderedKeys = require('./utils/renderedKeys.js');
|
|
52
39
|
|
|
53
|
-
function _interopNamespace(e) {
|
|
54
|
-
if (e && e.__esModule) return e;
|
|
55
|
-
var n = Object.create(null);
|
|
56
|
-
if (e) {
|
|
57
|
-
Object.keys(e).forEach(function (k) {
|
|
58
|
-
if (k !== 'default') {
|
|
59
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
60
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
61
|
-
enumerable: true,
|
|
62
|
-
get: function () { return e[k]; }
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
n.default = e;
|
|
68
|
-
return Object.freeze(n);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
var ToggleGroup__namespace = /*#__PURE__*/_interopNamespace(ToggleGroup);
|
|
72
|
-
|
|
73
|
-
// The negative bottom margin shrinks the trigger area by a pixel so the 1px
|
|
74
|
-
// sentinel sitting exactly at the fold (when a page's rows happen to fill the
|
|
75
|
-
// viewport) reads as "not visible" and doesn't pull an extra page. It still
|
|
76
|
-
// triggers as soon as the sentinel scrolls a hair into view. Tune the bottom
|
|
77
|
-
// value if the list over- or under-fetches near the fold.
|
|
78
|
-
const INTERSECTION_OPTIONS = {
|
|
79
|
-
threshold: 0,
|
|
80
|
-
rootMargin: '0px 0px -1px 0px'
|
|
81
|
-
};
|
|
82
40
|
// Module-level so the header sentinel's observer isn't rebuilt every render.
|
|
83
41
|
const HEADER_SENTINEL_OPTIONS = {
|
|
84
42
|
threshold: 0
|
|
@@ -110,116 +68,6 @@ const getSearchResultsCountMessage = (numberFolders, numberAssets)=>{
|
|
|
110
68
|
}
|
|
111
69
|
return SEARCH_RESULTS_COUNT_MESSAGES.both;
|
|
112
70
|
};
|
|
113
|
-
const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, locations, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch })=>{
|
|
114
|
-
const { formatMessage } = reactIntl.useIntl();
|
|
115
|
-
const isGridView = view === constants.viewOptions.GRID;
|
|
116
|
-
const isLoading = isLoadingAssets || isLoadingFolders;
|
|
117
|
-
// "Folders: Mixed with files" — interleave the complete folder list into the
|
|
118
|
-
// loaded asset stream client-side, following the active sort. Table view
|
|
119
|
-
// only: the grid always keeps folders in their own band on top.
|
|
120
|
-
const mixedItems = React.useMemo(()=>foldersPosition === 'mixed' && !isGridView ? mergeMixedList.mergeMixedList({
|
|
121
|
-
folders,
|
|
122
|
-
assets,
|
|
123
|
-
sort: assetsSort,
|
|
124
|
-
hasNextPage
|
|
125
|
-
}) : null, [
|
|
126
|
-
foldersPosition,
|
|
127
|
-
isGridView,
|
|
128
|
-
folders,
|
|
129
|
-
assets,
|
|
130
|
-
assetsSort,
|
|
131
|
-
hasNextPage
|
|
132
|
-
]);
|
|
133
|
-
// Derived once here so the table, the grid and the bulk bar all agree on what
|
|
134
|
-
// is on screen — in mixed mode that is not simply every folder.
|
|
135
|
-
const renderedKeys$1 = renderedKeys.buildRenderedKeys({
|
|
136
|
-
folders,
|
|
137
|
-
assets,
|
|
138
|
-
mixedItems
|
|
139
|
-
});
|
|
140
|
-
const loadMoreRef = useInfiniteScrollSentinel.useInfiniteScrollSentinel({
|
|
141
|
-
hasNextPage,
|
|
142
|
-
isFetchingMore,
|
|
143
|
-
onLoadMore: fetchNextPage,
|
|
144
|
-
options: INTERSECTION_OPTIONS
|
|
145
|
-
});
|
|
146
|
-
if (isLoading) {
|
|
147
|
-
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
148
|
-
justifyContent: "center",
|
|
149
|
-
padding: 8,
|
|
150
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
|
|
151
|
-
children: formatMessage({
|
|
152
|
-
id: 'app.loading',
|
|
153
|
-
defaultMessage: 'Loading...'
|
|
154
|
-
})
|
|
155
|
-
})
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
if (error) {
|
|
159
|
-
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
160
|
-
padding: 8,
|
|
161
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
162
|
-
textColor: "danger600",
|
|
163
|
-
children: formatMessage({
|
|
164
|
-
id: translations.getTranslationKey('list.assets.error'),
|
|
165
|
-
defaultMessage: 'An error occurred while fetching assets.'
|
|
166
|
-
})
|
|
167
|
-
})
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
if (folders.length === 0 && assets.length === 0) {
|
|
171
|
-
// While searching, the search empty state wins (it names the query); a
|
|
172
|
-
// filter-only dead end gets the filtered variant with its Clear action.
|
|
173
|
-
return hasActiveFilters && !searchQuery ? /*#__PURE__*/ jsxRuntime.jsx(EmptyState.FilteredEmptyState, {
|
|
174
|
-
onClearFilters: onClearFilters
|
|
175
|
-
}) : /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {
|
|
176
|
-
onAddAssets: onAddAssets,
|
|
177
|
-
canAddAssets: canAddAssets,
|
|
178
|
-
searchQuery: searchQuery,
|
|
179
|
-
onClearSearch: onClearSearch
|
|
180
|
-
});
|
|
181
|
-
}
|
|
182
|
-
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
183
|
-
children: [
|
|
184
|
-
/*#__PURE__*/ jsxRuntime.jsx(ItemContextMenu.ItemContextMenuProvider, {
|
|
185
|
-
locations: locations,
|
|
186
|
-
children: isGridView ? /*#__PURE__*/ jsxRuntime.jsx(AssetsGrid.AssetsGrid, {
|
|
187
|
-
folders: folders,
|
|
188
|
-
assets: assets,
|
|
189
|
-
renderedKeys: renderedKeys$1,
|
|
190
|
-
onAssetItemClick: onAssetItemClick
|
|
191
|
-
}) : /*#__PURE__*/ jsxRuntime.jsx(AssetsTable.AssetsTable, {
|
|
192
|
-
assets: assets,
|
|
193
|
-
folders: folders,
|
|
194
|
-
mixedItems: mixedItems,
|
|
195
|
-
renderedKeys: renderedKeys$1,
|
|
196
|
-
onAssetItemClick: onAssetItemClick
|
|
197
|
-
})
|
|
198
|
-
}),
|
|
199
|
-
/*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
200
|
-
ref: loadMoreRef,
|
|
201
|
-
style: {
|
|
202
|
-
height: 1
|
|
203
|
-
}
|
|
204
|
-
}),
|
|
205
|
-
isFetchingMore && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
206
|
-
justifyContent: "center",
|
|
207
|
-
padding: 4,
|
|
208
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
|
|
209
|
-
children: formatMessage({
|
|
210
|
-
id: translations.getTranslationKey('list.assets.loading-more'),
|
|
211
|
-
defaultMessage: 'Loading more assets...'
|
|
212
|
-
})
|
|
213
|
-
})
|
|
214
|
-
}),
|
|
215
|
-
/*#__PURE__*/ jsxRuntime.jsx(BulkActionsBar.BulkActionsBar, {
|
|
216
|
-
assets: assets,
|
|
217
|
-
renderedKeys: renderedKeys$1,
|
|
218
|
-
locations: locations
|
|
219
|
-
})
|
|
220
|
-
]
|
|
221
|
-
});
|
|
222
|
-
};
|
|
223
71
|
const ClearSelectionOnChange = ({ listQueryKey })=>{
|
|
224
72
|
const { clear } = useAssetSelection.useAssetSelection();
|
|
225
73
|
React.useEffect(()=>{
|
|
@@ -232,50 +80,7 @@ const ClearSelectionOnChange = ({ listQueryKey })=>{
|
|
|
232
80
|
};
|
|
233
81
|
/* -------------------------------------------------------------------------------------------------
|
|
234
82
|
* AssetsPage
|
|
235
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
236
|
-
* Mirrors the design-system Toggle look (grey track, white active segment
|
|
237
|
-
* card) — reproduced locally because the DS component is a labels-only
|
|
238
|
-
* boolean input (no icons) and paints its left segment in danger red. Here
|
|
239
|
-
* both segments use the primary blue when active.
|
|
240
|
-
*/ const StyledToggleGroup = styledComponents.styled(ToggleGroup__namespace.Root)`
|
|
241
|
-
display: flex;
|
|
242
|
-
padding: ${({ theme })=>theme.spaces[1]};
|
|
243
|
-
background: ${({ theme })=>theme.colors.neutral100};
|
|
244
|
-
border: 1px solid ${({ theme })=>theme.colors.neutral200};
|
|
245
|
-
border-radius: ${({ theme })=>theme.borderRadius};
|
|
246
|
-
`;
|
|
247
|
-
const StyledToggleItem = styledComponents.styled(ToggleGroup__namespace.Item)`
|
|
248
|
-
display: flex;
|
|
249
|
-
flex: 1 1 50%;
|
|
250
|
-
align-items: center;
|
|
251
|
-
justify-content: center;
|
|
252
|
-
gap: ${({ theme })=>theme.spaces[2]};
|
|
253
|
-
padding: 0.6rem ${({ theme })=>theme.spaces[3]};
|
|
254
|
-
border: 1px solid transparent;
|
|
255
|
-
border-radius: ${({ theme })=>theme.borderRadius};
|
|
256
|
-
background: transparent;
|
|
257
|
-
color: ${({ theme })=>theme.colors.neutral600};
|
|
258
|
-
cursor: pointer;
|
|
259
|
-
font-size: ${({ theme })=>theme.fontSizes[1]};
|
|
260
|
-
font-weight: ${({ theme })=>theme.fontWeights.semiBold};
|
|
261
|
-
white-space: nowrap;
|
|
262
|
-
|
|
263
|
-
&:hover {
|
|
264
|
-
color: ${({ theme })=>theme.colors.neutral700};
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
&[data-state='on'] {
|
|
268
|
-
background: ${({ theme })=>theme.colors.neutral0};
|
|
269
|
-
border-color: ${({ theme })=>theme.colors.neutral200};
|
|
270
|
-
color: ${({ theme })=>theme.colors.primary600};
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
svg {
|
|
274
|
-
width: 1.6rem;
|
|
275
|
-
height: 1.6rem;
|
|
276
|
-
}
|
|
277
|
-
`;
|
|
278
|
-
// A single sticky header — same layout scrolled or not, so the toolbar
|
|
83
|
+
* -----------------------------------------------------------------------------------------------*/ // A single sticky header — same layout scrolled or not, so the toolbar
|
|
279
84
|
// alignment can't reflow the way the shared sticky header did. Once the list
|
|
280
85
|
// scrolls under it, it shrinks (reduced vertical padding + a shadow to lift it
|
|
281
86
|
// off the rows), like the sticky headers elsewhere in the admin. Horizontal
|
|
@@ -385,73 +190,18 @@ const SearchSlot = styledComponents.styled(designSystem.Box)`
|
|
|
385
190
|
flex: 0 1 auto;
|
|
386
191
|
}
|
|
387
192
|
`;
|
|
388
|
-
// Toggle labels are hidden below desktop — icons only (buttons keep aria-label).
|
|
389
|
-
const ToggleLabel = styledComponents.styled.span`
|
|
390
|
-
display: none;
|
|
391
|
-
|
|
392
|
-
${({ theme })=>theme.breakpoints.large} {
|
|
393
|
-
display: inline;
|
|
394
|
-
}
|
|
395
|
-
`;
|
|
396
193
|
const AssetsPage = ()=>{
|
|
397
194
|
const { formatMessage } = reactIntl.useIntl();
|
|
398
195
|
const { openDetails } = AssetDetailsDrawer.useAssetDetailsParam();
|
|
399
196
|
const { canCreate, canUpdate } = useMediaLibraryPermissions.useMediaLibraryPermissions();
|
|
400
|
-
const { currentFolderId, navigateToFolderId,
|
|
401
|
-
// Deleted or missing folders (404) need a fetch — handled here, not in
|
|
402
|
-
// `useFolderNavigation` (which only strips malformed ?folder= values).
|
|
403
|
-
const { error: currentFolderError } = folders.useGetFolderQuery({
|
|
404
|
-
id: currentFolderId
|
|
405
|
-
}, {
|
|
406
|
-
skip: currentFolderId === null
|
|
407
|
-
});
|
|
408
|
-
React.useEffect(()=>{
|
|
409
|
-
if (currentFolderError?.name === 'NotFoundError') {
|
|
410
|
-
navigateToRoot();
|
|
411
|
-
}
|
|
412
|
-
}, [
|
|
413
|
-
currentFolderError,
|
|
414
|
-
navigateToRoot
|
|
415
|
-
]);
|
|
197
|
+
const { currentFolderId, navigateToFolderId, searchQuery, isSearching, clearSearch, listSort, listFilters, assets, subscribers: assetPageSubscribers, pagination, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, assetsError, folders, isLoadingFolders } = useAssetsList.useAssetsList();
|
|
416
198
|
const { title, itemCount } = useFolderInfo.useFolderInfo(currentFolderId);
|
|
417
|
-
const { searchQuery, isSearching, clearSearch } = useAssetSearch.useAssetSearch();
|
|
418
|
-
const listSort = useListSort.useListSort();
|
|
419
|
-
const listFilters = useListFilters.useListFilters();
|
|
420
|
-
// Resolve relative presets against "now" only when the filters change —
|
|
421
|
-
// keeps the query args (and RTK cache keys) stable between renders.
|
|
422
|
-
const builtFilters = React.useMemo(()=>buildAssetFilters.buildAssetFilters(listFilters.filters, new Date()), // eslint-disable-next-line react-hooks/exhaustive-deps -- serialized is the value identity of filters
|
|
423
|
-
[
|
|
424
|
-
listFilters.serialized
|
|
425
|
-
]);
|
|
426
|
-
const { assets, subscribers: assetPageSubscribers, pagination, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error: assetsError } = useInfiniteAssets.useInfiniteAssets({
|
|
427
|
-
// The real folder is passed even while searching: the service drops the folder
|
|
428
|
-
// filter when `search` is set, so results are still global. List filters
|
|
429
|
-
// compose with both modes.
|
|
430
|
-
folder: currentFolderId,
|
|
431
|
-
search: searchQuery || undefined,
|
|
432
|
-
sort: listSort.assetsSort,
|
|
433
|
-
filters: builtFilters.fileClauses,
|
|
434
|
-
enabled: builtFilters.showFiles
|
|
435
|
-
});
|
|
436
|
-
const { data: fetchedFolders = [], isLoading: isLoadingFolders } = folders.useGetFoldersQuery({
|
|
437
|
-
parentId: currentFolderId,
|
|
438
|
-
search: searchQuery || undefined,
|
|
439
|
-
sort: listSort.foldersSort,
|
|
440
|
-
filters: builtFilters.folderClauses
|
|
441
|
-
}, {
|
|
442
|
-
skip: !builtFilters.showFolders
|
|
443
|
-
});
|
|
444
|
-
// A type badge can exclude folders structurally (e.g. "Type is Picture").
|
|
445
|
-
const folders$1 = React.useMemo(()=>builtFilters.showFolders ? fetchedFolders : [], [
|
|
446
|
-
builtFilters.showFolders,
|
|
447
|
-
fetchedFolders
|
|
448
|
-
]);
|
|
449
199
|
// Both move affordances (drag and the bulk bar) resolve each item's parent
|
|
450
200
|
// from the rows on screen — while searching, results are global and the
|
|
451
201
|
// folder currently open says nothing about where an item lives.
|
|
452
|
-
const itemLocations$1 = React.useMemo(()=>itemLocations.buildItemLocations(assets, folders
|
|
202
|
+
const itemLocations$1 = React.useMemo(()=>itemLocations.buildItemLocations(assets, folders), [
|
|
453
203
|
assets,
|
|
454
|
-
folders
|
|
204
|
+
folders
|
|
455
205
|
]);
|
|
456
206
|
const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, {
|
|
457
207
|
count: itemCount
|
|
@@ -462,7 +212,7 @@ const AssetsPage = ()=>{
|
|
|
462
212
|
}, {
|
|
463
213
|
query: searchQuery
|
|
464
214
|
});
|
|
465
|
-
const numberFolders = folders
|
|
215
|
+
const numberFolders = folders.length;
|
|
466
216
|
const numberAssets = pagination?.total ?? 0;
|
|
467
217
|
const searchResultsCountLabel = formatMessage(getSearchResultsCountMessage(numberFolders, numberAssets), {
|
|
468
218
|
numberFolders,
|
|
@@ -723,48 +473,9 @@ const AssetsPage = ()=>{
|
|
|
723
473
|
showFoldersGroup: !isGridView
|
|
724
474
|
})
|
|
725
475
|
}),
|
|
726
|
-
/*#__PURE__*/ jsxRuntime.
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
|
|
730
|
-
"aria-label": formatMessage({
|
|
731
|
-
id: translations.getTranslationKey('view.switch.label'),
|
|
732
|
-
defaultMessage: 'View options'
|
|
733
|
-
}),
|
|
734
|
-
children: [
|
|
735
|
-
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
|
|
736
|
-
value: "table",
|
|
737
|
-
"aria-label": formatMessage({
|
|
738
|
-
id: translations.getTranslationKey('view.table'),
|
|
739
|
-
defaultMessage: 'Table view'
|
|
740
|
-
}),
|
|
741
|
-
children: [
|
|
742
|
-
/*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
|
|
743
|
-
/*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
|
|
744
|
-
children: formatMessage({
|
|
745
|
-
id: translations.getTranslationKey('view.table'),
|
|
746
|
-
defaultMessage: 'Table view'
|
|
747
|
-
})
|
|
748
|
-
})
|
|
749
|
-
]
|
|
750
|
-
}),
|
|
751
|
-
/*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
|
|
752
|
-
value: "grid",
|
|
753
|
-
"aria-label": formatMessage({
|
|
754
|
-
id: translations.getTranslationKey('view.grid'),
|
|
755
|
-
defaultMessage: 'Grid view'
|
|
756
|
-
}),
|
|
757
|
-
children: [
|
|
758
|
-
/*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
|
|
759
|
-
/*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
|
|
760
|
-
children: formatMessage({
|
|
761
|
-
id: translations.getTranslationKey('view.grid'),
|
|
762
|
-
defaultMessage: 'Grid view'
|
|
763
|
-
})
|
|
764
|
-
})
|
|
765
|
-
]
|
|
766
|
-
})
|
|
767
|
-
]
|
|
476
|
+
/*#__PURE__*/ jsxRuntime.jsx(ViewToggle.ViewToggle, {
|
|
477
|
+
view: view,
|
|
478
|
+
onChange: setView
|
|
768
479
|
})
|
|
769
480
|
]
|
|
770
481
|
})
|
|
@@ -785,9 +496,9 @@ const AssetsPage = ()=>{
|
|
|
785
496
|
uploadDropZoneRef: uploadDropZoneRef,
|
|
786
497
|
folderName: title
|
|
787
498
|
}),
|
|
788
|
-
/*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
|
|
499
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetsView.AssetsView, {
|
|
789
500
|
view: view,
|
|
790
|
-
folders: folders
|
|
501
|
+
folders: folders,
|
|
791
502
|
isLoadingFolders: isLoadingFolders,
|
|
792
503
|
assets: assets,
|
|
793
504
|
isLoadingAssets: isLoadingAssets,
|