@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useQueryParams, withEncodedUserParams, useNotification, Form, Blocker, getDisplayName, useForm, useField, useClipboard } from '@strapi/admin/strapi-admin';
|
|
4
|
-
import {
|
|
5
|
-
import { FileError, ArrowLineRight, Crop, Trash,
|
|
3
|
+
import { ConfirmDialog, useQueryParams, withEncodedUserParams, useNotification, Form, Blocker, getDisplayName, useForm, useField, useClipboard } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { Flex, Box, Typography, VisuallyHidden, Dialog, Loader, Alert, Button, IconButton, Field, TextInput, Tooltip, SingleSelect, SingleSelectOption } from '@strapi/design-system';
|
|
5
|
+
import { WarningCircle, FileError, ArrowLineRight, Crop, Trash, Link, Download, ArrowsCounterClockwise } from '@strapi/icons';
|
|
6
6
|
import { useIntl } from 'react-intl';
|
|
7
7
|
import { styled } from 'styled-components';
|
|
8
8
|
import { Drawer } from '../../../../components/Drawer.mjs';
|
|
@@ -42,35 +42,12 @@ const useAssetOperation = ()=>{
|
|
|
42
42
|
return ctx;
|
|
43
43
|
};
|
|
44
44
|
/* -------------------------------------------------------------------------------------------------
|
|
45
|
-
* useAssetDetailsParam -
|
|
45
|
+
* useAssetDetailsParam - read and write the open asset in URL ?{ASSET_DETAILS_URL_PARAM}={id}
|
|
46
46
|
* -----------------------------------------------------------------------------------------------*/ const useAssetDetailsParam = ()=>{
|
|
47
47
|
const [{ query }, setQuery] = useQueryParams();
|
|
48
48
|
const assetId = parseAssetDetailsId(query?.[ASSET_DETAILS_URL_PARAM]);
|
|
49
|
-
const hasValidId = assetId !== null;
|
|
50
49
|
// Closing is driven by removing the URL param (a navigation), so navigation
|
|
51
|
-
// guards like <Blocker> can intercept it.
|
|
52
|
-
// tree through the slide-out: it stays true once opened and only flips false
|
|
53
|
-
// when the close animation actually ends (see onCloseAnimationEnd), so the
|
|
54
|
-
// close duration lives entirely in CSS — no JS timer.
|
|
55
|
-
const [isMounted, setIsMounted] = React.useState(hasValidId);
|
|
56
|
-
const displayAssetId = React.useRef(null);
|
|
57
|
-
React.useEffect(()=>{
|
|
58
|
-
if (hasValidId) {
|
|
59
|
-
displayAssetId.current = assetId;
|
|
60
|
-
setIsMounted(true);
|
|
61
|
-
}
|
|
62
|
-
}, [
|
|
63
|
-
hasValidId,
|
|
64
|
-
assetId
|
|
65
|
-
]);
|
|
66
|
-
const onCloseAnimationEnd = React.useCallback((event)=>{
|
|
67
|
-
// Ignore animations bubbling up from descendants, and the slide-in.
|
|
68
|
-
if (event.target === event.currentTarget && !hasValidId) {
|
|
69
|
-
setIsMounted(false);
|
|
70
|
-
}
|
|
71
|
-
}, [
|
|
72
|
-
hasValidId
|
|
73
|
-
]);
|
|
50
|
+
// guards like <Blocker> can intercept it.
|
|
74
51
|
const openDetails = React.useCallback((id)=>{
|
|
75
52
|
setQuery(withEncodedUserParams(query, {
|
|
76
53
|
[ASSET_DETAILS_URL_PARAM]: String(id)
|
|
@@ -88,14 +65,44 @@ const useAssetOperation = ()=>{
|
|
|
88
65
|
setQuery
|
|
89
66
|
]);
|
|
90
67
|
return {
|
|
91
|
-
assetId
|
|
92
|
-
isVisible: hasValidId,
|
|
93
|
-
shouldRenderDrawer: isMounted,
|
|
94
|
-
onCloseAnimationEnd,
|
|
68
|
+
assetId,
|
|
95
69
|
openDetails,
|
|
96
70
|
closeDetails
|
|
97
71
|
};
|
|
98
72
|
};
|
|
73
|
+
/* -------------------------------------------------------------------------------------------------
|
|
74
|
+
* useDrawerPresence - keep the drawer mounted through its slide-out
|
|
75
|
+
* -----------------------------------------------------------------------------------------------*/ const useDrawerPresence = (assetId)=>{
|
|
76
|
+
const isVisible = assetId !== null;
|
|
77
|
+
// `isMounted` stays true once opened and only flips false when the close
|
|
78
|
+
// animation actually ends (see onCloseAnimationEnd), so the close duration
|
|
79
|
+
// lives entirely in CSS — no JS timer. The last id is kept so the content
|
|
80
|
+
// doesn't go blank mid-slide.
|
|
81
|
+
const [isMounted, setIsMounted] = React.useState(isVisible);
|
|
82
|
+
const displayAssetId = React.useRef(assetId);
|
|
83
|
+
React.useEffect(()=>{
|
|
84
|
+
if (assetId !== null) {
|
|
85
|
+
displayAssetId.current = assetId;
|
|
86
|
+
setIsMounted(true);
|
|
87
|
+
}
|
|
88
|
+
}, [
|
|
89
|
+
assetId
|
|
90
|
+
]);
|
|
91
|
+
const onCloseAnimationEnd = React.useCallback((event)=>{
|
|
92
|
+
// Ignore animations bubbling up from descendants, and the slide-in.
|
|
93
|
+
if (event.target === event.currentTarget && !isVisible) {
|
|
94
|
+
setIsMounted(false);
|
|
95
|
+
}
|
|
96
|
+
}, [
|
|
97
|
+
isVisible
|
|
98
|
+
]);
|
|
99
|
+
return {
|
|
100
|
+
displayAssetId: isVisible ? assetId : displayAssetId.current,
|
|
101
|
+
isVisible,
|
|
102
|
+
shouldRender: isMounted,
|
|
103
|
+
onCloseAnimationEnd
|
|
104
|
+
};
|
|
105
|
+
};
|
|
99
106
|
const DetailItemContainer = styled(Flex)`
|
|
100
107
|
flex: 0 0 calc(50% - ${({ theme })=>theme.spaces[2]});
|
|
101
108
|
`;
|
|
@@ -191,13 +198,14 @@ const DetailField = ({ name, label, required, disabled })=>{
|
|
|
191
198
|
const { formatMessage } = useIntl();
|
|
192
199
|
const field = useField(name);
|
|
193
200
|
const isSubmitting = useForm('DetailField', (state)=>state.isSubmitting);
|
|
194
|
-
// The
|
|
195
|
-
//
|
|
196
|
-
//
|
|
197
|
-
//
|
|
198
|
-
//
|
|
199
|
-
//
|
|
200
|
-
//
|
|
201
|
+
// The input is controlled by local state (synchronous, cursor-safe) and the
|
|
202
|
+
// form follows. This was needed when the form context echoed changes back
|
|
203
|
+
// asynchronously: driving the input straight from `field.value` made React
|
|
204
|
+
// rewrite the DOM value after the keystroke, which threw the cursor to the
|
|
205
|
+
// end of the field. The form context now updates synchronously, but the
|
|
206
|
+
// local state is kept as a safe default. The effect below only matters for
|
|
207
|
+
// EXTERNAL value changes (discard/reset), where a cursor jump is fine
|
|
208
|
+
// because the user isn't typing.
|
|
201
209
|
const fieldValue = field.value ?? '';
|
|
202
210
|
const [value, setValue] = React.useState(fieldValue);
|
|
203
211
|
React.useEffect(()=>{
|
|
@@ -540,7 +548,26 @@ const AssetImageActions = ({ onCrop })=>{
|
|
|
540
548
|
})
|
|
541
549
|
});
|
|
542
550
|
};
|
|
543
|
-
|
|
551
|
+
/* -------------------------------------------------------------------------------------------------
|
|
552
|
+
* AssetDetails
|
|
553
|
+
* -----------------------------------------------------------------------------------------------*/ /**
|
|
554
|
+
* Writes whether the form has unsaved edits into the drawer's ref. Only the
|
|
555
|
+
* drawer's close handlers read it, so a ref rather than state: toggling dirty
|
|
556
|
+
* doesn't re-render the drawer. A component, not a hook, because the form state
|
|
557
|
+
* is only reachable inside <Form>'s render prop.
|
|
558
|
+
*/ const ReportUnsavedEdits = ({ target, hasUnsavedEdits })=>{
|
|
559
|
+
React.useLayoutEffect(()=>{
|
|
560
|
+
target.current = hasUnsavedEdits;
|
|
561
|
+
return ()=>{
|
|
562
|
+
target.current = false;
|
|
563
|
+
};
|
|
564
|
+
}, [
|
|
565
|
+
target,
|
|
566
|
+
hasUnsavedEdits
|
|
567
|
+
]);
|
|
568
|
+
return null;
|
|
569
|
+
};
|
|
570
|
+
const AssetDetails = ({ asset, closeDetails, hasUnsavedEditsRef, guardNavigation = false, onAssetChange, onAssetDelete, trackedLocation = MEDIA_LIBRARY_LOCATION })=>{
|
|
544
571
|
const { formatMessage, formatDate } = useIntl();
|
|
545
572
|
const getErrorMessage = useApiErrorMessage();
|
|
546
573
|
const { canCreate, canUpdate, canDownload, canCopyLink } = useMediaLibraryPermissions();
|
|
@@ -565,13 +592,21 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
565
592
|
// own handlers (replace, update) read like the consumers do.
|
|
566
593
|
const notify = React.useCallback((toast)=>setDrawerToast(toast), []);
|
|
567
594
|
const isImage = asset.mime?.includes(ASSET_TYPES.Image);
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
595
|
+
// Stable until the asset changes: <Form> resets its values whenever this
|
|
596
|
+
// object does, which on every render would throw away the baseline a save
|
|
597
|
+
// sets and show the pre-save values until the refetch lands.
|
|
598
|
+
const initialValues = React.useMemo(()=>({
|
|
599
|
+
name: asset.name ?? '',
|
|
600
|
+
caption: asset.caption ?? '',
|
|
601
|
+
alternativeText: asset.alternativeText ?? '',
|
|
602
|
+
folder: typeof asset.folder === 'object' && asset.folder !== null ? asset.folder.id ?? null : asset.folder ?? null
|
|
603
|
+
}), [
|
|
604
|
+
asset.name,
|
|
605
|
+
asset.caption,
|
|
606
|
+
asset.alternativeText,
|
|
607
|
+
asset.folder
|
|
608
|
+
]);
|
|
609
|
+
const handleSubmit = async (values, { resetForm })=>{
|
|
575
610
|
const fileInfo = {
|
|
576
611
|
name: values.name,
|
|
577
612
|
caption: values.caption,
|
|
@@ -592,8 +627,13 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
592
627
|
});
|
|
593
628
|
return;
|
|
594
629
|
}
|
|
630
|
+
// What was saved is the new baseline. Otherwise the form stays "modified"
|
|
631
|
+
// until the refetched asset resets it, and closing in that gap asks about
|
|
632
|
+
// edits that are already saved.
|
|
633
|
+
resetForm(values);
|
|
634
|
+
onAssetChange?.(res.data);
|
|
595
635
|
trackUsage('didEditMediaLibraryElements', {
|
|
596
|
-
location:
|
|
636
|
+
location: trackedLocation,
|
|
597
637
|
// Legacy sends the mime top-level type (image/video/audio/application…).
|
|
598
638
|
type: asset.mime?.split('/')[0],
|
|
599
639
|
changeLocation: values.folder !== initialValues.folder
|
|
@@ -626,8 +666,9 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
626
666
|
});
|
|
627
667
|
return;
|
|
628
668
|
}
|
|
669
|
+
onAssetChange?.(res.data);
|
|
629
670
|
trackUsage('didReplaceMedia', {
|
|
630
|
-
location:
|
|
671
|
+
location: trackedLocation
|
|
631
672
|
});
|
|
632
673
|
notify({
|
|
633
674
|
type: 'success',
|
|
@@ -642,7 +683,9 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
642
683
|
formatMessage,
|
|
643
684
|
getErrorMessage,
|
|
644
685
|
notify,
|
|
686
|
+
onAssetChange,
|
|
645
687
|
replaceMutation,
|
|
688
|
+
trackedLocation,
|
|
646
689
|
trackUsage
|
|
647
690
|
]);
|
|
648
691
|
// Owns the delete: on error notify in-drawer (drawer stays), on success fire
|
|
@@ -668,6 +711,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
668
711
|
folderName
|
|
669
712
|
})
|
|
670
713
|
});
|
|
714
|
+
onAssetDelete?.(asset.id);
|
|
671
715
|
closeDetails();
|
|
672
716
|
}, [
|
|
673
717
|
asset.id,
|
|
@@ -677,6 +721,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
677
721
|
formatMessage,
|
|
678
722
|
getErrorMessage,
|
|
679
723
|
notify,
|
|
724
|
+
onAssetDelete,
|
|
680
725
|
toggleNotification
|
|
681
726
|
]);
|
|
682
727
|
const notifyCropError = (error)=>{
|
|
@@ -704,8 +749,9 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
704
749
|
notifyCropError(res.error);
|
|
705
750
|
return;
|
|
706
751
|
}
|
|
752
|
+
onAssetChange?.(res.data);
|
|
707
753
|
trackUsage('didCropFile', {
|
|
708
|
-
location:
|
|
754
|
+
location: trackedLocation,
|
|
709
755
|
duplicatedFile: false
|
|
710
756
|
});
|
|
711
757
|
notify({
|
|
@@ -717,6 +763,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
717
763
|
});
|
|
718
764
|
};
|
|
719
765
|
// Save as copy: upload the cropped file as a new asset in the same folder.
|
|
766
|
+
// The original is untouched, so `onAssetChange` stays silent.
|
|
720
767
|
const handleCropSaveAsCopy = async (file, focalPoint)=>{
|
|
721
768
|
setIsCropOpen(false);
|
|
722
769
|
// Silent single-file upload (no global progress dialog). Carry over the
|
|
@@ -736,7 +783,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
736
783
|
return;
|
|
737
784
|
}
|
|
738
785
|
trackUsage('didCropFile', {
|
|
739
|
-
location:
|
|
786
|
+
location: trackedLocation,
|
|
740
787
|
duplicatedFile: true
|
|
741
788
|
});
|
|
742
789
|
notify({
|
|
@@ -778,9 +825,12 @@ const AssetDetails = ({ asset, closeDetails })=>{
|
|
|
778
825
|
});
|
|
779
826
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
780
827
|
children: [
|
|
781
|
-
/*#__PURE__*/ jsx(Blocker, {
|
|
828
|
+
guardNavigation ? /*#__PURE__*/ jsx(Blocker, {
|
|
782
829
|
onProceed: resetForm
|
|
783
|
-
}),
|
|
830
|
+
}) : hasUnsavedEditsRef ? /*#__PURE__*/ jsx(ReportUnsavedEdits, {
|
|
831
|
+
target: hasUnsavedEditsRef,
|
|
832
|
+
hasUnsavedEdits: modified && !isSubmitting
|
|
833
|
+
}) : null,
|
|
784
834
|
isCropOpen && isImage ? /*#__PURE__*/ jsx(AssetCropEditor, {
|
|
785
835
|
asset: asset,
|
|
786
836
|
onClose: ()=>setIsCropOpen(false),
|
|
@@ -1038,7 +1088,7 @@ const DrawerHeader = ({ asset, closeDetails })=>{
|
|
|
1038
1088
|
]
|
|
1039
1089
|
});
|
|
1040
1090
|
};
|
|
1041
|
-
const DrawerContent = ({ assetId, closeDetails })=>{
|
|
1091
|
+
const DrawerContent = ({ assetId, requestClose, closeDetails, hasUnsavedEditsRef, guardNavigation, onAssetChange, onAssetDelete, trackedLocation })=>{
|
|
1042
1092
|
const { formatMessage } = useIntl();
|
|
1043
1093
|
const { data: asset, isLoading, error } = useGetAssetQuery(assetId, {
|
|
1044
1094
|
refetchOnMountOrArgChange: false,
|
|
@@ -1069,7 +1119,7 @@ const DrawerContent = ({ assetId, closeDetails })=>{
|
|
|
1069
1119
|
id: 'global.close',
|
|
1070
1120
|
defaultMessage: 'Close'
|
|
1071
1121
|
}),
|
|
1072
|
-
onClose:
|
|
1122
|
+
onClose: requestClose,
|
|
1073
1123
|
children: formatMessage({
|
|
1074
1124
|
id: getTranslationKey('asset-details.error'),
|
|
1075
1125
|
defaultMessage: 'Failed to load file details.'
|
|
@@ -1081,11 +1131,16 @@ const DrawerContent = ({ assetId, closeDetails })=>{
|
|
|
1081
1131
|
children: [
|
|
1082
1132
|
/*#__PURE__*/ jsx(DrawerHeader, {
|
|
1083
1133
|
asset: asset,
|
|
1084
|
-
closeDetails:
|
|
1134
|
+
closeDetails: requestClose
|
|
1085
1135
|
}),
|
|
1086
1136
|
/*#__PURE__*/ jsx(AssetDetails, {
|
|
1087
1137
|
asset: asset,
|
|
1088
|
-
closeDetails: closeDetails
|
|
1138
|
+
closeDetails: closeDetails,
|
|
1139
|
+
hasUnsavedEditsRef: hasUnsavedEditsRef,
|
|
1140
|
+
guardNavigation: guardNavigation,
|
|
1141
|
+
onAssetChange: onAssetChange,
|
|
1142
|
+
onAssetDelete: onAssetDelete,
|
|
1143
|
+
trackedLocation: trackedLocation
|
|
1089
1144
|
})
|
|
1090
1145
|
]
|
|
1091
1146
|
});
|
|
@@ -1118,15 +1173,29 @@ const DrawerContent = ({ assetId, closeDetails })=>{
|
|
|
1118
1173
|
// and stop the card's click, so no switch follows and the press dismisses.
|
|
1119
1174
|
return event.target.closest(ASSET_DETAILS_TRIGGER_SELECTOR) !== null && event.target.closest(ASSET_ITEM_CONTROL_SELECTOR) === null;
|
|
1120
1175
|
};
|
|
1121
|
-
const AssetDetailsDrawer = ()=>{
|
|
1176
|
+
const AssetDetailsDrawer = ({ assetId, onClose, guardNavigation = false, onAssetChange, onAssetDelete, trackedLocation })=>{
|
|
1122
1177
|
const { formatMessage } = useIntl();
|
|
1123
|
-
const {
|
|
1124
|
-
|
|
1178
|
+
const { displayAssetId, isVisible, shouldRender, onCloseAnimationEnd } = useDrawerPresence(assetId);
|
|
1179
|
+
const hasUnsavedEditsRef = React.useRef(false);
|
|
1180
|
+
const [isConfirmingClose, setIsConfirmingClose] = React.useState(false);
|
|
1181
|
+
// Where focus was when the drawer opened — the card or the field's edit
|
|
1182
|
+
// button — so closing can hand it back instead of dropping it on <body>.
|
|
1183
|
+
const returnFocusRef = React.useRef(null);
|
|
1184
|
+
const requestClose = React.useCallback(()=>{
|
|
1185
|
+
if (hasUnsavedEditsRef.current) {
|
|
1186
|
+
setIsConfirmingClose(true);
|
|
1187
|
+
return;
|
|
1188
|
+
}
|
|
1189
|
+
onClose();
|
|
1190
|
+
}, [
|
|
1191
|
+
onClose
|
|
1192
|
+
]);
|
|
1193
|
+
if (!shouldRender || displayAssetId === null) {
|
|
1125
1194
|
return null;
|
|
1126
1195
|
}
|
|
1127
1196
|
return /*#__PURE__*/ jsxs(Drawer.Root, {
|
|
1128
1197
|
isVisible: isVisible,
|
|
1129
|
-
onClose:
|
|
1198
|
+
onClose: requestClose,
|
|
1130
1199
|
children: [
|
|
1131
1200
|
/*#__PURE__*/ jsx("div", {
|
|
1132
1201
|
children: /*#__PURE__*/ jsxs(VisuallyHidden, {
|
|
@@ -1146,7 +1215,7 @@ const AssetDetailsDrawer = ()=>{
|
|
|
1146
1215
|
]
|
|
1147
1216
|
})
|
|
1148
1217
|
}),
|
|
1149
|
-
/*#__PURE__*/
|
|
1218
|
+
/*#__PURE__*/ jsxs(Drawer.Body, {
|
|
1150
1219
|
animationDirection: "left",
|
|
1151
1220
|
width: "41.6rem",
|
|
1152
1221
|
// dvh, not vh: the drawer is anchored to the bottom, so with 100vh on
|
|
@@ -1155,21 +1224,67 @@ const AssetDetailsDrawer = ()=>{
|
|
|
1155
1224
|
// off-screen. dvh tracks the actual visible height.
|
|
1156
1225
|
height: "100dvh",
|
|
1157
1226
|
onAnimationEnd: onCloseAnimationEnd,
|
|
1158
|
-
//
|
|
1159
|
-
|
|
1227
|
+
// Runs before focus moves in, so this is still the element that opened it.
|
|
1228
|
+
onOpenAutoFocus: ()=>{
|
|
1229
|
+
returnFocusRef.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
|
|
1230
|
+
},
|
|
1231
|
+
// By now the panel is gone: focus is on <body> unless the user moved it
|
|
1232
|
+
// somewhere — a press on another control dismissed the drawer — and that
|
|
1233
|
+
// choice wins.
|
|
1234
|
+
onCloseAutoFocus: (event)=>{
|
|
1235
|
+
const target = returnFocusRef.current;
|
|
1236
|
+
const active = document.activeElement;
|
|
1237
|
+
if (target?.isConnected && (active === null || active === document.body)) {
|
|
1238
|
+
event.preventDefault();
|
|
1239
|
+
target.focus();
|
|
1240
|
+
}
|
|
1241
|
+
},
|
|
1242
|
+
// Opt in to dismiss-on-outside-click; it goes through `requestClose`,
|
|
1243
|
+
// like the header's close button, so unsaved edits are still guarded.
|
|
1160
1244
|
onPointerDownOutside: (event)=>{
|
|
1161
1245
|
if (shouldKeepDrawerOpen(event, isVisible)) {
|
|
1162
1246
|
event.preventDefault();
|
|
1163
1247
|
}
|
|
1164
1248
|
},
|
|
1165
|
-
children:
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1249
|
+
children: [
|
|
1250
|
+
/*#__PURE__*/ jsx(DrawerContent, {
|
|
1251
|
+
assetId: displayAssetId,
|
|
1252
|
+
requestClose: requestClose,
|
|
1253
|
+
closeDetails: onClose,
|
|
1254
|
+
hasUnsavedEditsRef: hasUnsavedEditsRef,
|
|
1255
|
+
guardNavigation: guardNavigation,
|
|
1256
|
+
onAssetChange: onAssetChange,
|
|
1257
|
+
onAssetDelete: onAssetDelete,
|
|
1258
|
+
trackedLocation: trackedLocation
|
|
1259
|
+
}),
|
|
1260
|
+
/*#__PURE__*/ jsx(Dialog.Root, {
|
|
1261
|
+
open: isConfirmingClose,
|
|
1262
|
+
onOpenChange: setIsConfirmingClose,
|
|
1263
|
+
children: /*#__PURE__*/ jsx(ConfirmDialog, {
|
|
1264
|
+
onConfirm: onClose,
|
|
1265
|
+
variant: "danger",
|
|
1266
|
+
children: formatMessage({
|
|
1267
|
+
id: getTranslationKey('asset-details.unsaved.confirm'),
|
|
1268
|
+
defaultMessage: "You have unsaved changes, are you sure you want to close this file's details? Your changes will be lost."
|
|
1269
|
+
})
|
|
1270
|
+
})
|
|
1271
|
+
})
|
|
1272
|
+
]
|
|
1169
1273
|
})
|
|
1170
1274
|
]
|
|
1171
1275
|
});
|
|
1172
1276
|
};
|
|
1277
|
+
/**
|
|
1278
|
+
* The drawer bound to the URL's `?assetId=`, as the Media Library page uses it:
|
|
1279
|
+
* linkable, survives a refresh, and closing is a navigation.
|
|
1280
|
+
*/ const AssetDetailsDrawerFromUrl = ()=>{
|
|
1281
|
+
const { assetId, closeDetails } = useAssetDetailsParam();
|
|
1282
|
+
return /*#__PURE__*/ jsx(AssetDetailsDrawer, {
|
|
1283
|
+
assetId: assetId,
|
|
1284
|
+
onClose: closeDetails,
|
|
1285
|
+
guardNavigation: true
|
|
1286
|
+
});
|
|
1287
|
+
};
|
|
1173
1288
|
|
|
1174
|
-
export { AssetDetails, AssetDetailsDrawer, AssetOperationsContext, DrawerNotifyContext, getBusyMessage, useAssetDetailsParam };
|
|
1289
|
+
export { AssetDetails, AssetDetailsDrawer, AssetDetailsDrawerFromUrl, AssetOperationsContext, DrawerNotifyContext, getBusyMessage, useAssetDetailsParam };
|
|
1175
1290
|
//# sourceMappingURL=AssetDetailsDrawer.mjs.map
|