@strapi/upload 5.59.0 → 5.61.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/MediaLibraryPickerDialog.js +29 -0
- package/dist/admin/components/AssetPickerDialog/MediaLibraryPickerDialog.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/MediaLibraryPickerDialog.mjs +27 -0
- package/dist/admin/components/AssetPickerDialog/MediaLibraryPickerDialog.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/Drawer.js +12 -7
- package/dist/admin/components/Drawer.js.map +1 -1
- package/dist/admin/components/Drawer.mjs +12 -7
- package/dist/admin/components/Drawer.mjs.map +1 -1
- package/dist/admin/components/EditorFileDropZone/EditorFileDropZone.js +188 -0
- package/dist/admin/components/EditorFileDropZone/EditorFileDropZone.js.map +1 -0
- package/dist/admin/components/EditorFileDropZone/EditorFileDropZone.mjs +186 -0
- package/dist/admin/components/EditorFileDropZone/EditorFileDropZone.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +9 -4
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +9 -4
- 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 +163 -111
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +162 -114
- 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/openAssetDetails.js +46 -0
- package/dist/admin/components/MediaLibraryInput/openAssetDetails.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/openAssetDetails.mjs +43 -0
- package/dist/admin/components/MediaLibraryInput/openAssetDetails.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/index.js +10 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +10 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.js +14 -303
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.mjs +13 -282
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +2 -2
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +181 -65
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +184 -69
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.mjs +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/useIsAssetDetailsOpen.js +2 -6
- package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.mjs +2 -6
- package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.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/MediaLibraryPickerDialog.d.ts +19 -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/Drawer.d.ts +8 -0
- package/dist/admin/src/components/EditorFileDropZone/EditorFileDropZone.d.ts +21 -0
- package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +7 -1
- 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/openAssetDetails.d.ts +10 -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/AssetDetails/AssetDetailsDrawer.d.ts +41 -5
- 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/useIsAssetDetailsOpen.d.ts +2 -6
- 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 +24 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +24 -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/audit-logs.js +264 -0
- package/dist/server/audit-logs.js.map +1 -0
- package/dist/server/audit-logs.mjs +255 -0
- package/dist/server/audit-logs.mjs.map +1 -0
- package/dist/server/bootstrap.js +4 -0
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs +4 -0
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js +23 -1
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +23 -1
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- 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/folder.js +48 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs +48 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +14 -7
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +14 -7
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/upload.js +100 -16
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +102 -18
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/audit-logs.d.ts +142 -0
- package/dist/server/src/audit-logs.d.ts.map +1 -0
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-folder-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -4
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +11 -11
- package/dist/server/src/services/folder.d.ts.map +1 -1
- package/dist/server/src/services/image-manipulation.d.ts +4 -4
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -4
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/types.d.ts +63 -12
- package/dist/server/src/types.d.ts.map +1 -1
- package/package.json +11 -16
- 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,17 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
var React = require('react');
|
|
5
|
+
var core = require('@dnd-kit/core');
|
|
5
6
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
6
7
|
var designSystem = require('@strapi/design-system');
|
|
7
8
|
var icons = require('@strapi/icons');
|
|
8
9
|
var reactIntl = require('react-intl');
|
|
9
10
|
var styledComponents = require('styled-components');
|
|
10
|
-
var TruncatedText = require('../../../../components/TruncatedText.js');
|
|
11
11
|
var folders = require('../../../../services/folders.js');
|
|
12
|
+
var findFolderPath = require('../../../../utils/findFolderPath.js');
|
|
12
13
|
var isEventFromWithin = require('../../../../utils/isEventFromWithin.js');
|
|
13
14
|
var translations = require('../../../../utils/translations.js');
|
|
14
15
|
var AssetsDndProvider = require('../Dnd/AssetsDndProvider.js');
|
|
16
|
+
var dndIds = require('../Dnd/dndIds.js');
|
|
15
17
|
var useFolderTreeDroppable = require('../Dnd/useFolderTreeDroppable.js');
|
|
18
|
+
var collapsedBranch = require('./collapsedBranch.js');
|
|
16
19
|
var FolderTreeRowMenu = require('./FolderTreeRowMenu.js');
|
|
17
20
|
var useSpringLoadedExpand = require('./useSpringLoadedExpand.js');
|
|
18
21
|
|
|
@@ -56,6 +59,13 @@ var useSpringLoadedExpand = require('./useSpringLoadedExpand.js');
|
|
|
56
59
|
outline-offset: -2px;
|
|
57
60
|
}
|
|
58
61
|
`;
|
|
62
|
+
// Squared where path rows meet, so the path reads as one block rather than a
|
|
63
|
+
// stack of separately highlighted rows.
|
|
64
|
+
const getOpenPathRadius = (segment, radius)=>({
|
|
65
|
+
start: `${radius} ${radius} 0 0`,
|
|
66
|
+
middle: '0',
|
|
67
|
+
end: `0 0 ${radius} ${radius}`
|
|
68
|
+
})[segment];
|
|
59
69
|
const TreeRow = styledComponents.styled(designSystem.Flex)`
|
|
60
70
|
cursor: ${({ $isMovePending, $isInvalidDropCursor })=>{
|
|
61
71
|
if ($isMovePending) {
|
|
@@ -64,13 +74,28 @@ const TreeRow = styledComponents.styled(designSystem.Flex)`
|
|
|
64
74
|
return $isInvalidDropCursor ? 'not-allowed' : 'default';
|
|
65
75
|
}};
|
|
66
76
|
pointer-events: ${({ $isMovePending })=>$isMovePending ? 'none' : 'auto'};
|
|
67
|
-
border-radius: ${({ theme })
|
|
68
|
-
background: ${({ $isActive, theme })
|
|
77
|
+
border-radius: ${({ $openPathSegment, theme })=>$openPathSegment ? getOpenPathRadius($openPathSegment, theme.borderRadius) : theme.borderRadius};
|
|
78
|
+
background: ${({ $isActive, $openPathSegment, theme })=>{
|
|
79
|
+
if ($isActive) {
|
|
80
|
+
return theme.colors.primary100;
|
|
81
|
+
}
|
|
82
|
+
// While a summary row is open, the path down to the open folder is tinted —
|
|
83
|
+
// the folders it reveals plus the parent — so the tint reads as "on the way
|
|
84
|
+
// here" and the open folder's own highlight as "here".
|
|
85
|
+
return $openPathSegment ? theme.colors.neutral100 : 'transparent';
|
|
86
|
+
}};
|
|
69
87
|
|
|
70
88
|
// The whole row lights up, so pointing anywhere along it — chevron, label or
|
|
71
|
-
// the actions trigger — reads as one target.
|
|
89
|
+
// the actions trigger — reads as one target. A path row steps past its tint
|
|
90
|
+
// rather than to primary100, which would make it look like a second open
|
|
91
|
+
// folder (and, in dark mode, is the same colour as the tint).
|
|
72
92
|
&:hover {
|
|
73
|
-
background: ${({ $isActive, theme })
|
|
93
|
+
background: ${({ $isActive, $openPathSegment, theme })=>{
|
|
94
|
+
if ($isActive) {
|
|
95
|
+
return theme.colors.primary100;
|
|
96
|
+
}
|
|
97
|
+
return $openPathSegment ? theme.colors.neutral150 : theme.colors.neutral100;
|
|
98
|
+
}};
|
|
74
99
|
}
|
|
75
100
|
|
|
76
101
|
${({ $isValidDropTarget, theme })=>$isValidDropTarget && styledComponents.css`
|
|
@@ -85,31 +110,14 @@ const TreeRow = styledComponents.styled(designSystem.Flex)`
|
|
|
85
110
|
`;
|
|
86
111
|
/* -------------------------------------------------------------------------------------------------
|
|
87
112
|
* useExpandedFolders — local expand/collapse state
|
|
88
|
-
* -----------------------------------------------------------------------------------------------*/ const
|
|
89
|
-
for (const node of nodes){
|
|
90
|
-
if (node.id === targetId) {
|
|
91
|
-
return trail;
|
|
92
|
-
}
|
|
93
|
-
if (node.children?.length) {
|
|
94
|
-
const nextTrail = node.id != null ? [
|
|
95
|
-
...trail,
|
|
96
|
-
node.id
|
|
97
|
-
] : trail;
|
|
98
|
-
const found = findAncestorIds(node.children, targetId, nextTrail);
|
|
99
|
-
if (found !== null) {
|
|
100
|
-
return found;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return null;
|
|
105
|
-
};
|
|
106
|
-
const useExpandedFolders = (folderStructure, currentFolderId)=>{
|
|
113
|
+
* -----------------------------------------------------------------------------------------------*/ const useExpandedFolders = (folderStructure, currentFolderId)=>{
|
|
107
114
|
const [expandedIds, setExpandedIds] = React.useState(()=>new Set());
|
|
108
115
|
React.useEffect(()=>{
|
|
109
116
|
if (currentFolderId == null) {
|
|
110
117
|
return;
|
|
111
118
|
}
|
|
112
|
-
|
|
119
|
+
// The path ends with the current folder itself, which needs no expanding.
|
|
120
|
+
const ancestors = findFolderPath.findFolderPath(folderStructure, currentFolderId)?.slice(0, -1).map((folder)=>folder.id).filter((id)=>id != null);
|
|
113
121
|
if (!ancestors || ancestors.length === 0) {
|
|
114
122
|
return;
|
|
115
123
|
}
|
|
@@ -184,6 +192,11 @@ const useExpandedFolders = (folderStructure, currentFolderId)=>{
|
|
|
184
192
|
/* -------------------------------------------------------------------------------------------------
|
|
185
193
|
* FolderTreeItem — single tree row (internal)
|
|
186
194
|
* -----------------------------------------------------------------------------------------------*/ const INDENT_PER_LEVEL_REM = 1.6;
|
|
195
|
+
/**
|
|
196
|
+
* Deeper rows keep this level's indent, so a name never runs out of room however
|
|
197
|
+
* deep the tree goes. Rows past it stay readable through their path tooltip.
|
|
198
|
+
*/ const MAX_VISUAL_LEVEL = 4;
|
|
199
|
+
const getIndentRem = (level)=>Math.min(level, MAX_VISUAL_LEVEL) * INDENT_PER_LEVEL_REM;
|
|
187
200
|
/**
|
|
188
201
|
* Breathing room between the row's highlight and the controls at either end.
|
|
189
202
|
* Asymmetric on purpose: the chevron reads as part of the indent, while the
|
|
@@ -234,7 +247,7 @@ const RotatingChevron = styledComponents.styled(icons.ChevronDown)`
|
|
|
234
247
|
transform: rotate(${({ $expanded })=>$expanded ? '0deg' : '-90deg'});
|
|
235
248
|
transition: transform 0.2s ease;
|
|
236
249
|
`;
|
|
237
|
-
const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, currentFolderId, showActiveFolder, isExpanded, onToggle, onExpand, onSelect, isMovePending })=>{
|
|
250
|
+
const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, currentFolderId, showActiveFolder, isExpanded, onToggle, onExpand, onSelect, isMovePending, ancestorNames, isHiddenAncestor = false, openPathSegment, subtree })=>{
|
|
238
251
|
const { formatMessage } = reactIntl.useIntl();
|
|
239
252
|
const hasChildren = folderChildren.length > 0;
|
|
240
253
|
// A folder keeps its entry in the expanded set after its last subfolder is
|
|
@@ -242,6 +255,14 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
242
255
|
// show" — otherwise the chevron stays rotated on what is now a leaf.
|
|
243
256
|
const isFolderExpanded = isExpanded(id) && hasChildren;
|
|
244
257
|
const isActive = showActiveFolder && currentFolderId === id;
|
|
258
|
+
const pathLabel = [
|
|
259
|
+
formatMessage({
|
|
260
|
+
id: translations.getTranslationKey('plugin.name'),
|
|
261
|
+
defaultMessage: 'Media Library'
|
|
262
|
+
}),
|
|
263
|
+
...ancestorNames,
|
|
264
|
+
name
|
|
265
|
+
].join(' / ');
|
|
245
266
|
const { droppable: { setNodeRef }, isOver, showValidDropHighlight, showInvalidDropCursor } = useFolderTreeDroppable.useFolderTreeDroppable({
|
|
246
267
|
id,
|
|
247
268
|
name
|
|
@@ -256,7 +277,7 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
256
277
|
const rowButtonRef = React.useRef(null);
|
|
257
278
|
useSpringLoadedExpand.useSpringLoadedExpand({
|
|
258
279
|
isOver,
|
|
259
|
-
canExpand: hasChildren && !isFolderExpanded,
|
|
280
|
+
canExpand: !isHiddenAncestor && hasChildren && !isFolderExpanded,
|
|
260
281
|
onExpand: handleExpand
|
|
261
282
|
});
|
|
262
283
|
// TODO: full `role="tree"` + arrow-key treeview navigation before revamp GA
|
|
@@ -269,10 +290,11 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
269
290
|
alignItems: "center",
|
|
270
291
|
// Indent plus the row's own inset, so the chevron never sits flush
|
|
271
292
|
// against the edge of the highlight at any depth.
|
|
272
|
-
paddingLeft: `${level
|
|
293
|
+
paddingLeft: `${getIndentRem(level) + ROW_INSET_LEFT_REM}rem`,
|
|
273
294
|
paddingRight: `${ROW_INSET_RIGHT_REM}rem`,
|
|
274
295
|
gap: 1,
|
|
275
296
|
$isActive: isActive,
|
|
297
|
+
$openPathSegment: openPathSegment,
|
|
276
298
|
$isValidDropTarget: showValidDropHighlight,
|
|
277
299
|
$isInvalidDropCursor: showInvalidDropCursor,
|
|
278
300
|
$isMovePending: isMovePending,
|
|
@@ -287,7 +309,9 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
287
309
|
});
|
|
288
310
|
},
|
|
289
311
|
children: [
|
|
290
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
312
|
+
isHiddenAncestor ? /*#__PURE__*/ jsxRuntime.jsx(IconSlot, {
|
|
313
|
+
"aria-hidden": true
|
|
314
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(ChevronButton, {
|
|
291
315
|
label: hasChildren ? formatMessage({
|
|
292
316
|
id: translations.getTranslationKey(isFolderExpanded ? 'sidebar.tree.collapse' : 'sidebar.tree.expand'),
|
|
293
317
|
defaultMessage: isFolderExpanded ? 'Collapse {name}' : 'Expand {name}'
|
|
@@ -315,21 +339,25 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
315
339
|
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
316
340
|
flex: "1",
|
|
317
341
|
minWidth: 0,
|
|
318
|
-
children: /*#__PURE__*/ jsxRuntime.jsx(
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
342
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
343
|
+
label: pathLabel,
|
|
344
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(RowButton, {
|
|
345
|
+
ref: rowButtonRef,
|
|
346
|
+
type: "button",
|
|
347
|
+
$isActive: isActive,
|
|
348
|
+
$isValidDropTarget: showValidDropHighlight,
|
|
349
|
+
$isInvalidDropCursor: showInvalidDropCursor,
|
|
350
|
+
$isMovePending: isMovePending,
|
|
351
|
+
"aria-current": isActive ? 'page' : undefined,
|
|
352
|
+
onClick: ()=>onSelect(id),
|
|
353
|
+
"data-testid": `folder-tree-node-${id}`,
|
|
354
|
+
"data-folder-id": id,
|
|
355
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
356
|
+
ellipsis: true,
|
|
357
|
+
variant: "omega",
|
|
358
|
+
fontWeight: isActive ? 'semiBold' : 'regular',
|
|
359
|
+
children: name
|
|
360
|
+
})
|
|
333
361
|
})
|
|
334
362
|
})
|
|
335
363
|
}),
|
|
@@ -345,7 +373,7 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
345
373
|
})
|
|
346
374
|
]
|
|
347
375
|
}),
|
|
348
|
-
hasChildren && isFolderExpanded && /*#__PURE__*/ jsxRuntime.jsx(NavList, {
|
|
376
|
+
hasChildren && isFolderExpanded && !isHiddenAncestor && (subtree ?? /*#__PURE__*/ jsxRuntime.jsx(NavList, {
|
|
349
377
|
children: folderChildren.map((child)=>/*#__PURE__*/ jsxRuntime.jsx(FolderTreeItem, {
|
|
350
378
|
node: child,
|
|
351
379
|
parentId: id,
|
|
@@ -356,9 +384,13 @@ const FolderTreeItemInner = ({ id, name, parentId, folderChildren, level, curren
|
|
|
356
384
|
onToggle: onToggle,
|
|
357
385
|
onExpand: onExpand,
|
|
358
386
|
onSelect: onSelect,
|
|
359
|
-
isMovePending: isMovePending
|
|
387
|
+
isMovePending: isMovePending,
|
|
388
|
+
ancestorNames: [
|
|
389
|
+
...ancestorNames,
|
|
390
|
+
name
|
|
391
|
+
]
|
|
360
392
|
}, child.id ?? child.name))
|
|
361
|
-
})
|
|
393
|
+
}))
|
|
362
394
|
]
|
|
363
395
|
});
|
|
364
396
|
};
|
|
@@ -373,6 +405,155 @@ const FolderTreeItem = ({ node, ...props })=>{
|
|
|
373
405
|
folderChildren: node.children ?? []
|
|
374
406
|
});
|
|
375
407
|
};
|
|
408
|
+
/* -------------------------------------------------------------------------------------------------
|
|
409
|
+
* CollapsedAncestors — the "N parent folders" row of a deep branch (internal)
|
|
410
|
+
* -----------------------------------------------------------------------------------------------*/ const SummaryLabel = styledComponents.styled(designSystem.Typography)`
|
|
411
|
+
font-style: italic;
|
|
412
|
+
`;
|
|
413
|
+
const SummaryChevron = styledComponents.styled(icons.ChevronRight)`
|
|
414
|
+
transform: rotate(${({ $expanded })=>$expanded ? '90deg' : '0deg'});
|
|
415
|
+
transition: transform 0.2s ease;
|
|
416
|
+
`;
|
|
417
|
+
/**
|
|
418
|
+
* Stands in for the folders between a deep branch's root and the selected
|
|
419
|
+
* folder's parent, and lists them in place when opened.
|
|
420
|
+
*/ const CollapsedAncestors = ({ branch, isOpen, onOpenChange, ...itemProps })=>{
|
|
421
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
422
|
+
const listId = React.useId();
|
|
423
|
+
const open = React.useCallback(()=>onOpenChange(true), [
|
|
424
|
+
onOpenChange
|
|
425
|
+
]);
|
|
426
|
+
const rootName = branch.root.name ?? '';
|
|
427
|
+
const hiddenNames = branch.hidden.map((node)=>node.name ?? '');
|
|
428
|
+
// Without this the hidden folders would be unreachable mid-drag, since the row
|
|
429
|
+
// can't be clicked while dragging. It never resolves to a destination.
|
|
430
|
+
const { setNodeRef, isOver } = core.useDroppable({
|
|
431
|
+
id: dndIds.toFolderTreeSummaryId(branch.root.id),
|
|
432
|
+
disabled: itemProps.isMovePending
|
|
433
|
+
});
|
|
434
|
+
useSpringLoadedExpand.useSpringLoadedExpand({
|
|
435
|
+
isOver,
|
|
436
|
+
canExpand: !isOpen,
|
|
437
|
+
onExpand: open
|
|
438
|
+
});
|
|
439
|
+
return /*#__PURE__*/ jsxRuntime.jsxs("li", {
|
|
440
|
+
children: [
|
|
441
|
+
/*#__PURE__*/ jsxRuntime.jsx(TreeRow, {
|
|
442
|
+
ref: setNodeRef,
|
|
443
|
+
"data-native-context-menu": true,
|
|
444
|
+
alignItems: "center",
|
|
445
|
+
paddingLeft: `${getIndentRem(1) + ROW_INSET_LEFT_REM}rem`,
|
|
446
|
+
paddingRight: `${ROW_INSET_RIGHT_REM}rem`,
|
|
447
|
+
$isInvalidDropCursor: isOver,
|
|
448
|
+
$isMovePending: itemProps.isMovePending,
|
|
449
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
|
|
450
|
+
label: hiddenNames.join(' / '),
|
|
451
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(RowButton, {
|
|
452
|
+
type: "button",
|
|
453
|
+
$isActive: false,
|
|
454
|
+
$isInvalidDropCursor: isOver,
|
|
455
|
+
$isMovePending: itemProps.isMovePending,
|
|
456
|
+
"aria-expanded": isOpen,
|
|
457
|
+
"aria-controls": isOpen ? listId : undefined,
|
|
458
|
+
onClick: ()=>onOpenChange(!isOpen),
|
|
459
|
+
"data-testid": "folder-tree-hidden-ancestors",
|
|
460
|
+
children: [
|
|
461
|
+
/*#__PURE__*/ jsxRuntime.jsx(IconSlot, {
|
|
462
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(icons.More, {
|
|
463
|
+
"aria-hidden": true,
|
|
464
|
+
fill: "neutral500"
|
|
465
|
+
})
|
|
466
|
+
}),
|
|
467
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
468
|
+
flex: "1",
|
|
469
|
+
minWidth: 0,
|
|
470
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(SummaryLabel, {
|
|
471
|
+
ellipsis: true,
|
|
472
|
+
variant: "omega",
|
|
473
|
+
textColor: "neutral600",
|
|
474
|
+
children: formatMessage({
|
|
475
|
+
id: translations.getTranslationKey('sidebar.tree.hidden-ancestors'),
|
|
476
|
+
defaultMessage: '{count, plural, one {# parent folder} other {# parent folders}}'
|
|
477
|
+
}, {
|
|
478
|
+
count: branch.hidden.length
|
|
479
|
+
})
|
|
480
|
+
})
|
|
481
|
+
}),
|
|
482
|
+
/*#__PURE__*/ jsxRuntime.jsx(IconSlot, {
|
|
483
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(SummaryChevron, {
|
|
484
|
+
"aria-hidden": true,
|
|
485
|
+
$expanded: isOpen,
|
|
486
|
+
fill: "neutral500"
|
|
487
|
+
})
|
|
488
|
+
})
|
|
489
|
+
]
|
|
490
|
+
})
|
|
491
|
+
})
|
|
492
|
+
}),
|
|
493
|
+
isOpen && /*#__PURE__*/ jsxRuntime.jsx(NavList, {
|
|
494
|
+
id: listId,
|
|
495
|
+
children: branch.hidden.map((node, index)=>/*#__PURE__*/ React.createElement(FolderTreeItem, {
|
|
496
|
+
...itemProps,
|
|
497
|
+
key: node.id ?? node.name,
|
|
498
|
+
node: node,
|
|
499
|
+
parentId: (index === 0 ? branch.root.id : branch.hidden[index - 1].id) ?? null,
|
|
500
|
+
// All at one level: they are a list of the path, not a nested tree.
|
|
501
|
+
level: 2,
|
|
502
|
+
ancestorNames: [
|
|
503
|
+
rootName,
|
|
504
|
+
...hiddenNames.slice(0, index)
|
|
505
|
+
],
|
|
506
|
+
isHiddenAncestor: true,
|
|
507
|
+
openPathSegment: index === 0 ? 'start' : 'middle'
|
|
508
|
+
}))
|
|
509
|
+
})
|
|
510
|
+
]
|
|
511
|
+
});
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* The root folder of a deep branch, with everything between it and the selected
|
|
515
|
+
* folder's parent folded into one row. See `getCollapsedBranch`.
|
|
516
|
+
*/ const CollapsedBranchItem = ({ branch, ...itemProps })=>{
|
|
517
|
+
const { currentFolderId } = itemProps;
|
|
518
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
519
|
+
// Closed again on every new selection, clicking a hidden folder included.
|
|
520
|
+
// Reset during render rather than in an effect, so the list never paints open
|
|
521
|
+
// for a folder it wasn't opened on.
|
|
522
|
+
const [openedOn, setOpenedOn] = React.useState(currentFolderId);
|
|
523
|
+
if (openedOn !== currentFolderId) {
|
|
524
|
+
setOpenedOn(currentFolderId);
|
|
525
|
+
setIsOpen(false);
|
|
526
|
+
}
|
|
527
|
+
const ancestorNamesOfParent = [
|
|
528
|
+
branch.root,
|
|
529
|
+
...branch.hidden
|
|
530
|
+
].map((node)=>node.name ?? '');
|
|
531
|
+
return /*#__PURE__*/ jsxRuntime.jsx(FolderTreeItem, {
|
|
532
|
+
...itemProps,
|
|
533
|
+
node: branch.root,
|
|
534
|
+
parentId: null,
|
|
535
|
+
level: 0,
|
|
536
|
+
ancestorNames: [],
|
|
537
|
+
subtree: /*#__PURE__*/ jsxRuntime.jsxs(NavList, {
|
|
538
|
+
children: [
|
|
539
|
+
/*#__PURE__*/ jsxRuntime.jsx(CollapsedAncestors, {
|
|
540
|
+
...itemProps,
|
|
541
|
+
branch: branch,
|
|
542
|
+
isOpen: isOpen,
|
|
543
|
+
onOpenChange: setIsOpen
|
|
544
|
+
}),
|
|
545
|
+
/*#__PURE__*/ jsxRuntime.jsx(FolderTreeItem, {
|
|
546
|
+
...itemProps,
|
|
547
|
+
node: branch.parent,
|
|
548
|
+
parentId: branch.hidden[branch.hidden.length - 1]?.id ?? branch.root.id ?? null,
|
|
549
|
+
level: 2,
|
|
550
|
+
ancestorNames: ancestorNamesOfParent,
|
|
551
|
+
openPathSegment: isOpen ? 'end' : undefined
|
|
552
|
+
})
|
|
553
|
+
]
|
|
554
|
+
})
|
|
555
|
+
});
|
|
556
|
+
};
|
|
376
557
|
const FOLDER_TREE_ROOT_SELECTOR = '[data-folder-tree-root]';
|
|
377
558
|
/**
|
|
378
559
|
* Left-rail navigation for the Media Library. Fetches folder structure internally
|
|
@@ -397,6 +578,45 @@ const FOLDER_TREE_ROOT_SELECTOR = '[data-folder-tree-root]';
|
|
|
397
578
|
const { isMovePending } = AssetsDndProvider.useAssetsDndOptional() ?? {
|
|
398
579
|
isMovePending: false
|
|
399
580
|
};
|
|
581
|
+
const collapsedBranch$1 = React.useMemo(()=>collapsedBranch.getCollapsedBranch(folderStructure, currentFolderId), [
|
|
582
|
+
folderStructure,
|
|
583
|
+
currentFolderId
|
|
584
|
+
]);
|
|
585
|
+
// A selection that folds or unfolds a branch remounts the selected row, which
|
|
586
|
+
// drops focus to <body>. Whether focus was in the tree has to be read before
|
|
587
|
+
// the selection, since by the time the new row renders the old one is gone.
|
|
588
|
+
const restoreFocusRef = React.useRef(false);
|
|
589
|
+
const handleSelectFolder = React.useCallback((folderId)=>{
|
|
590
|
+
// Re-selecting the open folder renders nothing new, so a flag set here
|
|
591
|
+
// would linger and pull focus back on a later, unrelated navigation.
|
|
592
|
+
restoreFocusRef.current = folderId !== currentFolderId && document.activeElement?.closest(FOLDER_TREE_ROOT_SELECTOR) != null;
|
|
593
|
+
onSelectFolder(folderId);
|
|
594
|
+
}, [
|
|
595
|
+
currentFolderId,
|
|
596
|
+
onSelectFolder
|
|
597
|
+
]);
|
|
598
|
+
React.useEffect(()=>{
|
|
599
|
+
if (!restoreFocusRef.current || currentFolderId == null) {
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
restoreFocusRef.current = false;
|
|
603
|
+
// Only take back the focus the remount dropped, never steal it from elsewhere.
|
|
604
|
+
if (document.activeElement !== document.body) {
|
|
605
|
+
return;
|
|
606
|
+
}
|
|
607
|
+
document.querySelector(`${FOLDER_TREE_ROOT_SELECTOR} [data-folder-id="${currentFolderId}"]`)?.focus();
|
|
608
|
+
}, [
|
|
609
|
+
currentFolderId
|
|
610
|
+
]);
|
|
611
|
+
const sharedItemProps = {
|
|
612
|
+
currentFolderId,
|
|
613
|
+
showActiveFolder,
|
|
614
|
+
isExpanded,
|
|
615
|
+
onToggle: toggleExpanded,
|
|
616
|
+
onExpand: expandFolder,
|
|
617
|
+
onSelect: handleSelectFolder,
|
|
618
|
+
isMovePending
|
|
619
|
+
};
|
|
400
620
|
const isHomeActive = showActiveFolder && currentFolderId == null;
|
|
401
621
|
const homeLabel = formatMessage({
|
|
402
622
|
id: translations.getTranslationKey('sidebar.home'),
|
|
@@ -531,18 +751,16 @@ const FOLDER_TREE_ROOT_SELECTOR = '[data-folder-tree-root]';
|
|
|
531
751
|
})
|
|
532
752
|
})
|
|
533
753
|
}) : /*#__PURE__*/ jsxRuntime.jsx(NavList, {
|
|
534
|
-
children: folderStructure.map((node)
|
|
754
|
+
children: folderStructure.map((node)=>collapsedBranch$1 && node.id === collapsedBranch$1.root.id ? /*#__PURE__*/ jsxRuntime.jsx(CollapsedBranchItem, {
|
|
755
|
+
branch: collapsedBranch$1,
|
|
756
|
+
...sharedItemProps
|
|
757
|
+
}, node.id) : /*#__PURE__*/ jsxRuntime.jsx(FolderTreeItem, {
|
|
535
758
|
node: node,
|
|
536
759
|
// Top of the tree — these sit at the library root.
|
|
537
760
|
parentId: null,
|
|
538
761
|
level: 0,
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
isExpanded: isExpanded,
|
|
542
|
-
onToggle: toggleExpanded,
|
|
543
|
-
onExpand: expandFolder,
|
|
544
|
-
onSelect: onSelectFolder,
|
|
545
|
-
isMovePending: isMovePending
|
|
762
|
+
ancestorNames: [],
|
|
763
|
+
...sharedItemProps
|
|
546
764
|
}, node.id ?? node.name))
|
|
547
765
|
})
|
|
548
766
|
]
|
|
@@ -556,4 +774,5 @@ const FOLDER_TREE_ROOT_SELECTOR = '[data-folder-tree-root]';
|
|
|
556
774
|
|
|
557
775
|
exports.FOLDER_TREE_ROOT_SELECTOR = FOLDER_TREE_ROOT_SELECTOR;
|
|
558
776
|
exports.FolderTree = FolderTree;
|
|
777
|
+
exports.getIndentRem = getIndentRem;
|
|
559
778
|
//# sourceMappingURL=FolderTree.js.map
|