@strapi/upload 5.52.2 → 5.53.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/AssetCard/AssetCard.js +1 -0
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -0
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -0
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -0
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -0
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -0
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -0
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -0
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js +2 -2
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs +2 -2
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs +4 -4
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +4 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -0
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -0
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +1 -0
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -0
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +9 -21
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/constants.js +1 -0
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +1 -0
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +17 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/components/Drawer.mjs +17 -3
- package/dist/admin/future/components/Drawer.mjs.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.js +46 -12
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +47 -13
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +27 -2
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +9 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +19 -4
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +64 -10
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +66 -12
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +17 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +56 -28
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +58 -30
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +203 -83
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +207 -87
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +21 -3
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js +181 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs +179 -0
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js +22 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -1
- package/dist/admin/future/pages/Assets/constants.mjs +19 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +4 -3
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +5 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +105 -12
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +106 -13
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js +5 -5
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +6 -6
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js +111 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs +109 -0
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/hooks/useListSort.js +10 -10
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +11 -11
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js +86 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs +83 -0
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js +19 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +1 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs +17 -0
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +1 -0
- package/dist/admin/future/services/api.js +19 -6
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +19 -6
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +55 -2
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +53 -3
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +7 -9
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +8 -10
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js +1 -0
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs +1 -0
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +1 -0
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +8 -8
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs +9 -9
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js +1 -1
- package/dist/admin/pages/App/components/Header.js.map +1 -1
- package/dist/admin/pages/App/components/Header.mjs +2 -2
- package/dist/admin/pages/App/components/Header.mjs.map +1 -1
- package/dist/admin/src/future/components/Drawer.d.ts +10 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +4 -1
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
- package/dist/admin/src/future/pages/Assets/components/MainAreaContextMenu.d.ts +28 -0
- package/dist/admin/src/future/pages/Assets/constants.d.ts +20 -0
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/hooks/useListScrollRestoration.d.ts +15 -0
- package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
- package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +19 -0
- package/dist/admin/src/future/store/uploadProgress.d.ts +51 -0
- package/dist/admin/src/utils/index.d.ts +1 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +2 -2
- package/dist/admin/src/utils/resolveFileMime.d.ts +13 -0
- package/dist/admin/translations/en.json.js +5 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +5 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js +2 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs +2 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js +5 -3
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs +5 -3
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/resolveFileMime.js +69 -0
- package/dist/admin/utils/resolveFileMime.js.map +1 -0
- package/dist/admin/utils/resolveFileMime.mjs +64 -0
- package/dist/admin/utils/resolveFileMime.mjs.map +1 -0
- package/dist/admin/utils/urlsToAssets.js +8 -4
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs +8 -4
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/services/upload.js +20 -8
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +20 -8
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +2 -0
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -9,6 +9,7 @@ import { useTracking } from '../../../hooks/useTracking.mjs';
|
|
|
9
9
|
import 'byte-size';
|
|
10
10
|
import 'date-fns';
|
|
11
11
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
12
|
+
import '@strapi/admin/strapi-admin';
|
|
12
13
|
import 'qs';
|
|
13
14
|
import { rawFileToAsset } from '../../../utils/rawFileToAsset.mjs';
|
|
14
15
|
import '../../../utils/urlYupSchema.mjs';
|
|
@@ -43,18 +44,13 @@ const FromComputerForm = ({ onClose, onAddAssets, trackedLocation })=>{
|
|
|
43
44
|
setDragOver(true);
|
|
44
45
|
};
|
|
45
46
|
const handleDragLeave = ()=>setDragOver(false);
|
|
46
|
-
const
|
|
47
|
+
const filesToAssets = async (fileList)=>{
|
|
48
|
+
const files = Array.from(fileList);
|
|
49
|
+
return Promise.all(files.map((file)=>rawFileToAsset(file, ASSET_SOURCES.Computer)));
|
|
50
|
+
};
|
|
51
|
+
const handleChange = async ()=>{
|
|
47
52
|
const files = inputRef.current?.files;
|
|
48
|
-
const assets = [];
|
|
49
|
-
if (files) {
|
|
50
|
-
for(let i = 0; i < files.length; i++){
|
|
51
|
-
const file = files.item(i);
|
|
52
|
-
if (file) {
|
|
53
|
-
const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);
|
|
54
|
-
assets.push(asset);
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
}
|
|
53
|
+
const assets = files ? await filesToAssets(files) : [];
|
|
58
54
|
if (trackedLocation) {
|
|
59
55
|
trackUsage('didSelectFile', {
|
|
60
56
|
source: 'computer',
|
|
@@ -63,18 +59,10 @@ const FromComputerForm = ({ onClose, onAddAssets, trackedLocation })=>{
|
|
|
63
59
|
}
|
|
64
60
|
onAddAssets(assets);
|
|
65
61
|
};
|
|
66
|
-
const handleDrop = (e)=>{
|
|
62
|
+
const handleDrop = async (e)=>{
|
|
67
63
|
e.preventDefault();
|
|
68
64
|
if (e?.dataTransfer?.files) {
|
|
69
|
-
const
|
|
70
|
-
const assets = [];
|
|
71
|
-
for(let i = 0; i < files.length; i++){
|
|
72
|
-
const file = files.item(i);
|
|
73
|
-
if (file) {
|
|
74
|
-
const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);
|
|
75
|
-
assets.push(asset);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
65
|
+
const assets = await filesToAssets(e.dataTransfer.files);
|
|
78
66
|
onAddAssets(assets);
|
|
79
67
|
}
|
|
80
68
|
setDragOver(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromComputerForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_SOURCES } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, ASSET_SOURCES.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","ASSET_SOURCES","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FromComputerForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ASSET_SOURCES } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const filesToAssets = async (fileList: FileList) => {\n const files = Array.from(fileList);\n\n return Promise.all(files.map((file) => rawFileToAsset(file, ASSET_SOURCES.Computer)));\n };\n\n const handleChange = async () => {\n const files = inputRef.current?.files;\n const assets = files ? await filesToAssets(files) : [];\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = async (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const assets = await filesToAssets(e.dataTransfer.files);\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","filesToAssets","fileList","files","Array","from","Promise","all","map","file","rawFileToAsset","ASSET_SOURCES","Computer","handleChange","current","assets","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ var useTracking = require('../../../hooks/useTracking.js');
|
|
|
9
9
|
require('byte-size');
|
|
10
10
|
require('date-fns');
|
|
11
11
|
var getTrad = require('../../../utils/getTrad.js');
|
|
12
|
+
require('@strapi/admin/strapi-admin');
|
|
12
13
|
require('qs');
|
|
13
14
|
var urlsToAssets = require('../../../utils/urlsToAssets.js');
|
|
14
15
|
var urlYupSchema = require('../../../utils/urlYupSchema.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromUrlForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype TranslationMessage = MessageDescriptor & { values?: Record<string, PrimitiveType> };\n\nconst isMessageDescriptor = (error: unknown): error is TranslationMessage =>\n typeof error === 'object' && error !== null && 'id' in error;\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n /**\n * `urlSchema` errors are message descriptors: they carry the values needed to interpolate\n * placeholders such as `{max}` or `{number}`, even though Formik types the error as a string.\n */\n const formatValidationError = (validationError: unknown) => {\n if (isMessageDescriptor(validationError)) {\n const { values, ...message } = validationError;\n\n return formatMessage({ defaultMessage: 'An error occurred', ...message }, values);\n }\n\n if (typeof validationError === 'string') {\n return formatMessage({ id: validationError, defaultMessage: 'An error occurred' });\n }\n\n return undefined;\n };\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={error?.message || formatValidationError(errors.urls)}\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["isMessageDescriptor","error","FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","formatValidationError","validationError","values","message","defaultMessage","id","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","getTrad","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FromUrlForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype TranslationMessage = MessageDescriptor & { values?: Record<string, PrimitiveType> };\n\nconst isMessageDescriptor = (error: unknown): error is TranslationMessage =>\n typeof error === 'object' && error !== null && 'id' in error;\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n /**\n * `urlSchema` errors are message descriptors: they carry the values needed to interpolate\n * placeholders such as `{max}` or `{number}`, even though Formik types the error as a string.\n */\n const formatValidationError = (validationError: unknown) => {\n if (isMessageDescriptor(validationError)) {\n const { values, ...message } = validationError;\n\n return formatMessage({ defaultMessage: 'An error occurred', ...message }, values);\n }\n\n if (typeof validationError === 'string') {\n return formatMessage({ id: validationError, defaultMessage: 'An error occurred' });\n }\n\n return undefined;\n };\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={error?.message || formatValidationError(errors.urls)}\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["isMessageDescriptor","error","FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","formatValidationError","validationError","values","message","defaultMessage","id","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","getTrad","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { useTracking } from '../../../hooks/useTracking.mjs';
|
|
|
7
7
|
import 'byte-size';
|
|
8
8
|
import 'date-fns';
|
|
9
9
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
10
|
+
import '@strapi/admin/strapi-admin';
|
|
10
11
|
import 'qs';
|
|
11
12
|
import { urlsToAssets } from '../../../utils/urlsToAssets.mjs';
|
|
12
13
|
import { urlSchema } from '../../../utils/urlYupSchema.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FromUrlForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype TranslationMessage = MessageDescriptor & { values?: Record<string, PrimitiveType> };\n\nconst isMessageDescriptor = (error: unknown): error is TranslationMessage =>\n typeof error === 'object' && error !== null && 'id' in error;\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n /**\n * `urlSchema` errors are message descriptors: they carry the values needed to interpolate\n * placeholders such as `{max}` or `{number}`, even though Formik types the error as a string.\n */\n const formatValidationError = (validationError: unknown) => {\n if (isMessageDescriptor(validationError)) {\n const { values, ...message } = validationError;\n\n return formatMessage({ defaultMessage: 'An error occurred', ...message }, values);\n }\n\n if (typeof validationError === 'string') {\n return formatMessage({ id: validationError, defaultMessage: 'An error occurred' });\n }\n\n return undefined;\n };\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={error?.message || formatValidationError(errors.urls)}\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["isMessageDescriptor","error","FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","formatValidationError","validationError","values","message","defaultMessage","id","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","getTrad","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FromUrlForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\nimport type { MessageDescriptor, PrimitiveType } from 'react-intl';\n\ntype TranslationMessage = MessageDescriptor & { values?: Record<string, PrimitiveType> };\n\nconst isMessageDescriptor = (error: unknown): error is TranslationMessage =>\n typeof error === 'object' && error !== null && 'id' in error;\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n /**\n * `urlSchema` errors are message descriptors: they carry the values needed to interpolate\n * placeholders such as `{max}` or `{number}`, even though Formik types the error as a string.\n */\n const formatValidationError = (validationError: unknown) => {\n if (isMessageDescriptor(validationError)) {\n const { values, ...message } = validationError;\n\n return formatMessage({ defaultMessage: 'An error occurred', ...message }, values);\n }\n\n if (typeof validationError === 'string') {\n return formatMessage({ id: validationError, defaultMessage: 'An error occurred' });\n }\n\n return undefined;\n };\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={error?.message || formatValidationError(errors.urls)}\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["isMessageDescriptor","error","FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","formatValidationError","validationError","values","message","defaultMessage","id","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","getTrad","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ var useTracking = require('../../../hooks/useTracking.js');
|
|
|
8
8
|
require('byte-size');
|
|
9
9
|
require('date-fns');
|
|
10
10
|
var getTrad = require('../../../utils/getTrad.js');
|
|
11
|
+
require('@strapi/admin/strapi-admin');
|
|
11
12
|
require('qs');
|
|
12
13
|
require('../../../utils/urlYupSchema.js');
|
|
13
14
|
var AssetCard = require('../../AssetCard/AssetCard.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../enums';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item\n m={4}\n s={6}\n xs={12}\n key={assetKey}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","m","s","xs","UploadingAssetCard","onCancel","onStatusChange","rawFile","col","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PendingAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../enums';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item\n m={4}\n s={6}\n xs={12}\n key={assetKey}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","m","s","xs","UploadingAssetCard","onCancel","onStatusChange","rawFile","col","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import { useTracking } from '../../../hooks/useTracking.mjs';
|
|
|
6
6
|
import 'byte-size';
|
|
7
7
|
import 'date-fns';
|
|
8
8
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
9
|
+
import '@strapi/admin/strapi-admin';
|
|
9
10
|
import 'qs';
|
|
10
11
|
import '../../../utils/urlYupSchema.mjs';
|
|
11
12
|
import { AssetCard } from '../../AssetCard/AssetCard.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PendingAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../enums';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item\n m={4}\n s={6}\n xs={12}\n key={assetKey}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","m","s","xs","UploadingAssetCard","onCancel","onStatusChange","rawFile","col","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"PendingAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../enums';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item\n m={4}\n s={6}\n xs={12}\n key={assetKey}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","m","s","xs","UploadingAssetCard","onCancel","onStatusChange","rawFile","col","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
|
package/dist/admin/constants.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../admin/src/constants.ts"],"sourcesContent":["import { getTrad } from './utils';\n\nexport const ASSET_SOURCES = {\n Url: 'url',\n Computer: 'computer',\n} as const;\n\nexport type AssetSource = (typeof ASSET_SOURCES)[keyof typeof ASSET_SOURCES];\n\nexport const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::upload.read', subject: null },\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n {\n action: 'plugin::upload.assets.update',\n subject: null,\n },\n ],\n copyLink: [\n {\n action: 'plugin::upload.assets.copy-link',\n subject: null,\n },\n ],\n create: [\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n ],\n download: [\n {\n action: 'plugin::upload.assets.download',\n subject: null,\n },\n ],\n read: [{ action: 'plugin::upload.read', subject: null }],\n configureView: [{ action: 'plugin::upload.configure-view', subject: null }],\n settings: [{ action: 'plugin::upload.settings.read', subject: null }],\n update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],\n};\n\nexport const tableHeaders = [\n {\n name: 'preview',\n key: 'preview',\n metadatas: {\n label: { id: getTrad('list.table.header.preview'), defaultMessage: 'preview' },\n isSortable: false,\n },\n type: 'image',\n },\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: { id: getTrad('list.table.header.name'), defaultMessage: 'name' },\n isSortable: true,\n },\n type: 'text',\n },\n {\n name: 'ext',\n key: 'extension',\n metadatas: {\n label: { id: getTrad('list.table.header.ext'), defaultMessage: 'extension' },\n isSortable: false,\n },\n type: 'ext',\n },\n {\n name: 'size',\n key: 'size',\n metadatas: {\n label: { id: getTrad('list.table.header.size'), defaultMessage: 'size' },\n isSortable: false,\n },\n type: 'size',\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: { id: getTrad('list.table.header.createdAt'), defaultMessage: 'created' },\n isSortable: true,\n },\n type: 'date',\n },\n {\n name: 'updatedAt',\n key: 'updatedAt',\n metadatas: {\n label: { id: getTrad('list.table.header.updatedAt'), defaultMessage: 'last update' },\n isSortable: true,\n },\n type: 'date',\n },\n];\n\nexport const sortOptions = [\n { key: 'sort.created_at_desc', value: 'createdAt:DESC' },\n { key: 'sort.created_at_asc', value: 'createdAt:ASC' },\n { key: 'sort.name_asc', value: 'name:ASC' },\n { key: 'sort.name_desc', value: 'name:DESC' },\n { key: 'sort.updated_at_desc', value: 'updatedAt:DESC' },\n { key: 'sort.updated_at_asc', value: 'updatedAt:ASC' },\n];\n\nexport const pageSizes = [10, 20, 50, 100];\n\nexport const localStorageKeys = {\n modalView: `STRAPI_UPLOAD_MODAL_VIEW`,\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n LIST: 1,\n};\n"],"names":["ASSET_SOURCES","Computer","PERMISSIONS","main","action","subject","copyLink","create","download","read","configureView","settings","update","fields","tableHeaders","name","key","metadatas","label","id","getTrad","defaultMessage","isSortable","type","sortOptions","value","pageSizes","localStorageKeys","modalView","view","viewOptions","GRID","LIST"],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../admin/src/constants.ts"],"sourcesContent":["import { getTrad } from './utils';\n\nexport const ASSET_SOURCES = {\n Url: 'url',\n Computer: 'computer',\n} as const;\n\nexport type AssetSource = (typeof ASSET_SOURCES)[keyof typeof ASSET_SOURCES];\n\nexport const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::upload.read', subject: null },\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n {\n action: 'plugin::upload.assets.update',\n subject: null,\n },\n ],\n copyLink: [\n {\n action: 'plugin::upload.assets.copy-link',\n subject: null,\n },\n ],\n create: [\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n ],\n download: [\n {\n action: 'plugin::upload.assets.download',\n subject: null,\n },\n ],\n read: [{ action: 'plugin::upload.read', subject: null }],\n configureView: [{ action: 'plugin::upload.configure-view', subject: null }],\n settings: [{ action: 'plugin::upload.settings.read', subject: null }],\n update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],\n};\n\nexport const tableHeaders = [\n {\n name: 'preview',\n key: 'preview',\n metadatas: {\n label: { id: getTrad('list.table.header.preview'), defaultMessage: 'preview' },\n isSortable: false,\n },\n type: 'image',\n },\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: { id: getTrad('list.table.header.name'), defaultMessage: 'name' },\n isSortable: true,\n },\n type: 'text',\n },\n {\n name: 'ext',\n key: 'extension',\n metadatas: {\n label: { id: getTrad('list.table.header.ext'), defaultMessage: 'extension' },\n isSortable: false,\n },\n type: 'ext',\n },\n {\n name: 'size',\n key: 'size',\n metadatas: {\n label: { id: getTrad('list.table.header.size'), defaultMessage: 'size' },\n isSortable: false,\n },\n type: 'size',\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: { id: getTrad('list.table.header.createdAt'), defaultMessage: 'created' },\n isSortable: true,\n },\n type: 'date',\n },\n {\n name: 'updatedAt',\n key: 'updatedAt',\n metadatas: {\n label: { id: getTrad('list.table.header.updatedAt'), defaultMessage: 'last update' },\n isSortable: true,\n },\n type: 'date',\n },\n];\n\nexport const sortOptions = [\n { key: 'sort.created_at_desc', value: 'createdAt:DESC' },\n { key: 'sort.created_at_asc', value: 'createdAt:ASC' },\n { key: 'sort.name_asc', value: 'name:ASC' },\n { key: 'sort.name_desc', value: 'name:DESC' },\n { key: 'sort.updated_at_desc', value: 'updatedAt:DESC' },\n { key: 'sort.updated_at_asc', value: 'updatedAt:ASC' },\n];\n\nexport const pageSizes = [10, 20, 50, 100];\n\nexport const localStorageKeys = {\n modalView: `STRAPI_UPLOAD_MODAL_VIEW`,\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n LIST: 1,\n};\n"],"names":["ASSET_SOURCES","Computer","PERMISSIONS","main","action","subject","copyLink","create","download","read","configureView","settings","update","fields","tableHeaders","name","key","metadatas","label","id","getTrad","defaultMessage","isSortable","type","sortOptions","value","pageSizes","localStorageKeys","modalView","view","viewOptions","GRID","LIST"],"mappings":"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"}
|
package/dist/admin/constants.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../admin/src/constants.ts"],"sourcesContent":["import { getTrad } from './utils';\n\nexport const ASSET_SOURCES = {\n Url: 'url',\n Computer: 'computer',\n} as const;\n\nexport type AssetSource = (typeof ASSET_SOURCES)[keyof typeof ASSET_SOURCES];\n\nexport const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::upload.read', subject: null },\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n {\n action: 'plugin::upload.assets.update',\n subject: null,\n },\n ],\n copyLink: [\n {\n action: 'plugin::upload.assets.copy-link',\n subject: null,\n },\n ],\n create: [\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n ],\n download: [\n {\n action: 'plugin::upload.assets.download',\n subject: null,\n },\n ],\n read: [{ action: 'plugin::upload.read', subject: null }],\n configureView: [{ action: 'plugin::upload.configure-view', subject: null }],\n settings: [{ action: 'plugin::upload.settings.read', subject: null }],\n update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],\n};\n\nexport const tableHeaders = [\n {\n name: 'preview',\n key: 'preview',\n metadatas: {\n label: { id: getTrad('list.table.header.preview'), defaultMessage: 'preview' },\n isSortable: false,\n },\n type: 'image',\n },\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: { id: getTrad('list.table.header.name'), defaultMessage: 'name' },\n isSortable: true,\n },\n type: 'text',\n },\n {\n name: 'ext',\n key: 'extension',\n metadatas: {\n label: { id: getTrad('list.table.header.ext'), defaultMessage: 'extension' },\n isSortable: false,\n },\n type: 'ext',\n },\n {\n name: 'size',\n key: 'size',\n metadatas: {\n label: { id: getTrad('list.table.header.size'), defaultMessage: 'size' },\n isSortable: false,\n },\n type: 'size',\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: { id: getTrad('list.table.header.createdAt'), defaultMessage: 'created' },\n isSortable: true,\n },\n type: 'date',\n },\n {\n name: 'updatedAt',\n key: 'updatedAt',\n metadatas: {\n label: { id: getTrad('list.table.header.updatedAt'), defaultMessage: 'last update' },\n isSortable: true,\n },\n type: 'date',\n },\n];\n\nexport const sortOptions = [\n { key: 'sort.created_at_desc', value: 'createdAt:DESC' },\n { key: 'sort.created_at_asc', value: 'createdAt:ASC' },\n { key: 'sort.name_asc', value: 'name:ASC' },\n { key: 'sort.name_desc', value: 'name:DESC' },\n { key: 'sort.updated_at_desc', value: 'updatedAt:DESC' },\n { key: 'sort.updated_at_asc', value: 'updatedAt:ASC' },\n];\n\nexport const pageSizes = [10, 20, 50, 100];\n\nexport const localStorageKeys = {\n modalView: `STRAPI_UPLOAD_MODAL_VIEW`,\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n LIST: 1,\n};\n"],"names":["ASSET_SOURCES","Computer","PERMISSIONS","main","action","subject","copyLink","create","download","read","configureView","settings","update","fields","tableHeaders","name","key","metadatas","label","id","getTrad","defaultMessage","isSortable","type","sortOptions","value","pageSizes","localStorageKeys","modalView","view","viewOptions","GRID","LIST"],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../admin/src/constants.ts"],"sourcesContent":["import { getTrad } from './utils';\n\nexport const ASSET_SOURCES = {\n Url: 'url',\n Computer: 'computer',\n} as const;\n\nexport type AssetSource = (typeof ASSET_SOURCES)[keyof typeof ASSET_SOURCES];\n\nexport const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::upload.read', subject: null },\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n {\n action: 'plugin::upload.assets.update',\n subject: null,\n },\n ],\n copyLink: [\n {\n action: 'plugin::upload.assets.copy-link',\n subject: null,\n },\n ],\n create: [\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n ],\n download: [\n {\n action: 'plugin::upload.assets.download',\n subject: null,\n },\n ],\n read: [{ action: 'plugin::upload.read', subject: null }],\n configureView: [{ action: 'plugin::upload.configure-view', subject: null }],\n settings: [{ action: 'plugin::upload.settings.read', subject: null }],\n update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],\n};\n\nexport const tableHeaders = [\n {\n name: 'preview',\n key: 'preview',\n metadatas: {\n label: { id: getTrad('list.table.header.preview'), defaultMessage: 'preview' },\n isSortable: false,\n },\n type: 'image',\n },\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: { id: getTrad('list.table.header.name'), defaultMessage: 'name' },\n isSortable: true,\n },\n type: 'text',\n },\n {\n name: 'ext',\n key: 'extension',\n metadatas: {\n label: { id: getTrad('list.table.header.ext'), defaultMessage: 'extension' },\n isSortable: false,\n },\n type: 'ext',\n },\n {\n name: 'size',\n key: 'size',\n metadatas: {\n label: { id: getTrad('list.table.header.size'), defaultMessage: 'size' },\n isSortable: false,\n },\n type: 'size',\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: { id: getTrad('list.table.header.createdAt'), defaultMessage: 'created' },\n isSortable: true,\n },\n type: 'date',\n },\n {\n name: 'updatedAt',\n key: 'updatedAt',\n metadatas: {\n label: { id: getTrad('list.table.header.updatedAt'), defaultMessage: 'last update' },\n isSortable: true,\n },\n type: 'date',\n },\n];\n\nexport const sortOptions = [\n { key: 'sort.created_at_desc', value: 'createdAt:DESC' },\n { key: 'sort.created_at_asc', value: 'createdAt:ASC' },\n { key: 'sort.name_asc', value: 'name:ASC' },\n { key: 'sort.name_desc', value: 'name:DESC' },\n { key: 'sort.updated_at_desc', value: 'updatedAt:DESC' },\n { key: 'sort.updated_at_asc', value: 'updatedAt:ASC' },\n];\n\nexport const pageSizes = [10, 20, 50, 100];\n\nexport const localStorageKeys = {\n modalView: `STRAPI_UPLOAD_MODAL_VIEW`,\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n LIST: 1,\n};\n"],"names":["ASSET_SOURCES","Computer","PERMISSIONS","main","action","subject","copyLink","create","download","read","configureView","settings","update","fields","tableHeaders","name","key","metadatas","label","id","getTrad","defaultMessage","isSortable","type","sortOptions","value","pageSizes","localStorageKeys","modalView","view","viewOptions","GRID","LIST"],"mappings":";;;;;;;MAEaA,aAAAA,GAAgB;IAE3BC,QAAAA,EAAU;AACZ;MAIaC,WAAAA,GAAc;;;;;IAKzBC,IAAAA,EAAM;AACJ,QAAA;YAAEC,MAAAA,EAAQ,qBAAA;YAAuBC,OAAAA,EAAS;AAAK,SAAA;AAC/C,QAAA;YACED,MAAAA,EAAQ,8BAAA;YACRC,OAAAA,EAAS;AACX,SAAA;AACA,QAAA;YACED,MAAAA,EAAQ,8BAAA;YACRC,OAAAA,EAAS;AACX;AACD,KAAA;IACDC,QAAAA,EAAU;AACR,QAAA;YACEF,MAAAA,EAAQ,iCAAA;YACRC,OAAAA,EAAS;AACX;AACD,KAAA;IACDE,MAAAA,EAAQ;AACN,QAAA;YACEH,MAAAA,EAAQ,8BAAA;YACRC,OAAAA,EAAS;AACX;AACD,KAAA;IACDG,QAAAA,EAAU;AACR,QAAA;YACEJ,MAAAA,EAAQ,gCAAA;YACRC,OAAAA,EAAS;AACX;AACD,KAAA;IACDI,IAAAA,EAAM;AAAC,QAAA;YAAEL,MAAAA,EAAQ,qBAAA;YAAuBC,OAAAA,EAAS;AAAK;AAAE,KAAA;IACxDK,aAAAA,EAAe;AAAC,QAAA;YAAEN,MAAAA,EAAQ,+BAAA;YAAiCC,OAAAA,EAAS;AAAK;AAAE,KAAA;IAC3EM,QAAAA,EAAU;AAAC,QAAA;YAAEP,MAAAA,EAAQ,8BAAA;YAAgCC,OAAAA,EAAS;AAAK;AAAE,KAAA;IACrEO,MAAAA,EAAQ;AAAC,QAAA;YAAER,MAAAA,EAAQ,8BAAA;YAAgCC,OAAAA,EAAS,IAAA;YAAMQ,MAAAA,EAAQ;AAAK;AAAE;AACnF;MAEaC,YAAAA,GAAe;AAC1B,IAAA;QACEC,IAAAA,EAAM,SAAA;QACNC,GAAAA,EAAK,SAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,2BAAA,CAAA;gBAA8BC,cAAAA,EAAgB;AAAU,aAAA;YAC7EC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR,KAAA;AACA,IAAA;QACER,IAAAA,EAAM,MAAA;QACNC,GAAAA,EAAK,MAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,wBAAA,CAAA;gBAA2BC,cAAAA,EAAgB;AAAO,aAAA;YACvEC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR,KAAA;AACA,IAAA;QACER,IAAAA,EAAM,KAAA;QACNC,GAAAA,EAAK,WAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,uBAAA,CAAA;gBAA0BC,cAAAA,EAAgB;AAAY,aAAA;YAC3EC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR,KAAA;AACA,IAAA;QACER,IAAAA,EAAM,MAAA;QACNC,GAAAA,EAAK,MAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,wBAAA,CAAA;gBAA2BC,cAAAA,EAAgB;AAAO,aAAA;YACvEC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR,KAAA;AACA,IAAA;QACER,IAAAA,EAAM,WAAA;QACNC,GAAAA,EAAK,WAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;gBAAgCC,cAAAA,EAAgB;AAAU,aAAA;YAC/EC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR,KAAA;AACA,IAAA;QACER,IAAAA,EAAM,WAAA;QACNC,GAAAA,EAAK,WAAA;QACLC,SAAAA,EAAW;YACTC,KAAAA,EAAO;AAAEC,gBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,6BAAA,CAAA;gBAAgCC,cAAAA,EAAgB;AAAc,aAAA;YACnFC,UAAAA,EAAY;AACd,SAAA;QACAC,IAAAA,EAAM;AACR;;MAGWC,WAAAA,GAAc;AACzB,IAAA;QAAER,GAAAA,EAAK,sBAAA;QAAwBS,KAAAA,EAAO;AAAiB,KAAA;AACvD,IAAA;QAAET,GAAAA,EAAK,qBAAA;QAAuBS,KAAAA,EAAO;AAAgB,KAAA;AACrD,IAAA;QAAET,GAAAA,EAAK,eAAA;QAAiBS,KAAAA,EAAO;AAAW,KAAA;AAC1C,IAAA;QAAET,GAAAA,EAAK,gBAAA;QAAkBS,KAAAA,EAAO;AAAY,KAAA;AAC5C,IAAA;QAAET,GAAAA,EAAK,sBAAA;QAAwBS,KAAAA,EAAO;AAAiB,KAAA;AACvD,IAAA;QAAET,GAAAA,EAAK,qBAAA;QAAuBS,KAAAA,EAAO;AAAgB;;MAG1CC,SAAAA,GAAY;AAAC,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA,EAAA;AAAI,IAAA;;MAEzBC,gBAAAA,GAAmB;IAC9BC,SAAAA,EAAW,CAAC,wBAAwB,CAAC;IACrCC,IAAAA,EAAM,CAAC,0BAA0B;AACnC;MAEaC,WAAAA,GAAc;IACzBC,IAAAA,EAAM,CAAA;IACNC,IAAAA,EAAM;AACR;;;;"}
|
|
@@ -144,18 +144,32 @@ const CollapsibleContent = styledComponents.styled(designSystem.Box)`
|
|
|
144
144
|
overflow: hidden;
|
|
145
145
|
min-height: 0;
|
|
146
146
|
}
|
|
147
|
+
|
|
148
|
+
/* The scroll area wraps its children in a div styled inline as
|
|
149
|
+
display: table, min-width: 100%. A table box grows to its content, so a
|
|
150
|
+
single unbreakable string (a long file name) widens it past the scrollport
|
|
151
|
+
and the panel gains a horizontal scrollbar — with nothing left to clamp the
|
|
152
|
+
row, the name never truncates. Overriding to a block box makes the
|
|
153
|
+
scrollport the width again, which is what the vertical-only list wants.
|
|
154
|
+
Inline styles, hence the important. */
|
|
155
|
+
[data-radix-scroll-area-viewport] > div {
|
|
156
|
+
display: block !important;
|
|
157
|
+
}
|
|
147
158
|
`;
|
|
148
159
|
const CloseIconButton = styledComponents.styled(designSystem.IconButton)`
|
|
149
160
|
&:hover {
|
|
150
161
|
background: transparent;
|
|
151
162
|
}
|
|
152
163
|
`;
|
|
153
|
-
|
|
164
|
+
/** Vetoes an outside interaction that would otherwise dismiss the drawer. */ const keepOpen = (event)=>event.preventDefault();
|
|
165
|
+
const DrawerBody = /*#__PURE__*/ React__namespace.forwardRef(({ animationDirection, width, maxHeight, onPointerDownOutside = keepOpen, children, ...props }, ref)=>/*#__PURE__*/ jsxRuntime.jsx(Dialog__namespace.Content, {
|
|
154
166
|
ref: ref,
|
|
155
167
|
forceMount: true,
|
|
156
168
|
asChild: true,
|
|
157
|
-
onPointerDownOutside:
|
|
158
|
-
|
|
169
|
+
onPointerDownOutside: onPointerDownOutside,
|
|
170
|
+
// Non-modal, so focus legitimately moves outside (tabbing past the last
|
|
171
|
+
// field); only a pointer press should ever dismiss.
|
|
172
|
+
onFocusOutside: keepOpen,
|
|
159
173
|
"data-animation-direction": animationDirection,
|
|
160
174
|
children: /*#__PURE__*/ jsxRuntime.jsx(DrawerContainer, {
|
|
161
175
|
$animationDirection: animationDirection,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.js","sources":["../../../../admin/src/future/components/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { Box, ScrollArea, IconButton, Flex, FlexProps } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { keyframes, styled } from 'styled-components';\n\n/** Duration of the close animation in ms. Use for timing cleanup (e.g. removing URL params). */\nexport const DRAWER_CLOSE_ANIMATION_MS = 300;\n\n/* -------------------------------------------------------------------------------------------------\n * Animations\n * -----------------------------------------------------------------------------------------------*/\n\n// Direction: up\nconst slideUpFromBottomIn = keyframes`\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`;\n\nconst slideUpFromBottomOut = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(100%);\n }\n`;\n\n// Direction: left\nconst slideLeftFromRightIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n`;\n\nconst slideLeftFromRightOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(100%);\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Styled components\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerContainerProps {\n $animationDirection?: DrawerBodyProps['animationDirection'];\n $width?: string;\n $maxHeight?: string;\n}\n\nconst DrawerContainer = styled(Flex)<DrawerContainerProps>`\n flex-direction: column;\n position: fixed;\n bottom: 0;\n /* Mobile: full-bleed sheet. Anchoring to the right at a fixed width left a\n dead gutter on every phone wider than the panel, and the panel only filled\n the screen once the viewport happened to be narrower than it. Below the\n medium breakpoint the panel is the screen; medium+ restores the\n right-anchored rail. */\n left: 0;\n right: 0;\n width: 100%;\n padding: ${({ theme }) => theme.spaces[2]};\n max-width: 100%;\n /* Sit just below the overlay token (300) so that:\n - popovers (500) and tooltips (1000) rendered from descendant components\n surface above the drawer panel,\n - AlertDialog overlays (300) and contents (310) opened from inside the\n drawer (e.g. the asset details \"delete\" confirm) cover the drawer. */\n z-index: 200;\n overflow: hidden;\n /* dvh, not vh: anchored to the bottom, a 100vh cap on mobile (visual\n viewport < 100vh under the URL bar) would push the drawer top off-screen. */\n max-height: ${({ $maxHeight }) => $maxHeight ?? '100dvh'};\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: auto;\n width: ${({ $width }) => $width ?? '400px'};\n }\n\n &:focus {\n outline: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n &[data-state='open'] {\n animation: ${({ $animationDirection }) =>\n $animationDirection === 'up' ? slideUpFromBottomIn : slideLeftFromRightIn}\n ${DRAWER_CLOSE_ANIMATION_MS}ms cubic-bezier(0.32, 0.72, 0, 1) forwards;\n }\n\n &[data-state='closed'] {\n animation: ${({ $animationDirection }) =>\n $animationDirection === 'up' ? slideUpFromBottomOut : slideLeftFromRightOut}\n ${DRAWER_CLOSE_ANIMATION_MS}ms cubic-bezier(0.32, 0.72, 0, 1) forwards;\n pointer-events: none;\n }\n }\n`;\n\nconst DrawerContent = styled(Box)`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-radius: ${({ theme }) => theme.borderRadius};\n box-shadow: ${({ theme }) => theme.shadows.popupShadow};\n overflow: hidden;\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsibleContentProps {\n $isVisible: boolean;\n}\n\nconst CollapsibleContent = styled(Box)<CollapsibleContentProps>`\n display: grid;\n flex: 1;\n min-height: 0;\n grid-template-rows: ${({ $isVisible }) => ($isVisible ? '1fr' : '0fr')};\n transition: grid-template-rows 0.3s ease-in-out;\n\n > div {\n overflow: hidden;\n min-height: 0;\n }\n`;\n\nconst CloseIconButton = styled(IconButton)`\n &:hover {\n background: transparent;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Body\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerBodyProps extends Omit<FlexProps, 'width' | 'maxHeight'> {\n animationDirection?: 'up' | 'left';\n /** Width of the panel from the medium breakpoint up. Mobile is always full-bleed. */\n width?: string;\n /** Cap on the panel height. Defaults to the dynamic viewport height. */\n maxHeight?: string;\n children: React.ReactNode;\n}\n\nconst DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n ({ animationDirection, width, maxHeight, children, ...props }, ref) => (\n <Dialog.Content\n ref={ref}\n forceMount\n asChild\n onPointerDownOutside={(e) => e.preventDefault()}\n onInteractOutside={(e) => e.preventDefault()}\n data-animation-direction={animationDirection}\n >\n {/* width/maxHeight go through transient props so the DS Flex never emits a\n competing `width` rule that would outrank the mobile full-bleed one. */}\n <DrawerContainer\n $animationDirection={animationDirection}\n $width={width}\n $maxHeight={maxHeight}\n {...props}\n >\n <DrawerContent>{children}</DrawerContent>\n </DrawerContainer>\n </Dialog.Content>\n )\n);\nDrawerBody.displayName = 'DrawerBody';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerRootProps {\n isVisible?: boolean;\n onClose?: () => void;\n children: React.ReactNode;\n}\n\nconst DrawerRoot = ({ isVisible, onClose, children }: DrawerRootProps): React.ReactElement => (\n <Dialog.Root\n open={isVisible}\n onOpenChange={(nextVisible) => !nextVisible && onClose?.()}\n modal={false}\n >\n <Dialog.Portal>{children}</Dialog.Portal>\n </Dialog.Root>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Content - composable content slot (collapsible when isContentExpanded is used)\n * Contains a scrollable area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerScrollableContentProps {\n children: React.ReactNode;\n /** When provided, content can collapse/expand (e.g. for minimize). Omit to always show. */\n isContentExpanded?: boolean;\n}\n\nconst DrawerScrollableContent = ({\n children,\n isContentExpanded = true,\n}: DrawerScrollableContentProps) => (\n <CollapsibleContent $isVisible={isContentExpanded} data-collapsed={!isContentExpanded}>\n <ScrollArea>{children}</ScrollArea>\n </CollapsibleContent>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.CloseButton - composable close icon button (Cross icon by default)\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerCloseButtonProps extends React.PropsWithChildren {\n onClose: () => void;\n label?: string;\n}\n\nconst DrawerCloseButton = ({ onClose, label, children }: DrawerCloseButtonProps) => {\n const { formatMessage } = useIntl();\n const labelMessage = label ?? formatMessage({ id: 'global.close', defaultMessage: 'Close' });\n return (\n <CloseIconButton onClick={onClose} label={labelMessage} variant=\"ghost\">\n {children ?? <Cross />}\n </CloseIconButton>\n );\n};\n\nconst Drawer = {\n Root: DrawerRoot,\n Body: DrawerBody,\n ScrollableContent: DrawerScrollableContent,\n CloseButton: DrawerCloseButton,\n Title: Dialog.Title,\n Description: Dialog.Description,\n};\n\nexport { Drawer };\n"],"names":["DRAWER_CLOSE_ANIMATION_MS","slideUpFromBottomIn","keyframes","slideUpFromBottomOut","slideLeftFromRightIn","slideLeftFromRightOut","DrawerContainer","styled","Flex","theme","spaces","$maxHeight","breakpoints","medium","$width","$animationDirection","DrawerContent","Box","colors","neutral0","borderRadius","shadows","popupShadow","neutral150","CollapsibleContent","$isVisible","CloseIconButton","IconButton","DrawerBody","React","forwardRef","animationDirection","width","maxHeight","children","props","ref","_jsx","Dialog","Content","forceMount","asChild","onPointerDownOutside","e","preventDefault","onInteractOutside","data-animation-direction","displayName","DrawerRoot","isVisible","onClose","Root","open","onOpenChange","nextVisible","modal","Portal","DrawerScrollableContent","isContentExpanded","data-collapsed","ScrollArea","DrawerCloseButton","label","formatMessage","useIntl","labelMessage","id","defaultMessage","onClick","variant","Cross","Drawer","Body","ScrollableContent","CloseButton","Title","Description"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,iGACO,MAAMA,yBAAAA,GAA4B;AAEzC;;AAEkG;AAGlG,MAAMC,mBAAAA,GAAsBC,0BAAS;;;;;;;;;AASrC,CAAC;AAED,MAAMC,oBAAAA,GAAuBD,0BAAS;;;;;;;;;AAStC,CAAC;AAED;AACA,MAAME,oBAAAA,GAAuBF,0BAAS;;;;;;;;;AAStC,CAAC;AAED,MAAMG,qBAAAA,GAAwBH,0BAAS;;;;;;;;;AASvC,CAAC;AAYD,MAAMI,eAAAA,GAAkBC,uBAAAA,CAAOC,iBAAAA,CAA2B;;;;;;;;;;;;WAY/C,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;;;;;;;;;;AAW9B,cAAA,EAAE,CAAC,EAAEC,UAAU,EAAE,GAAKA,cAAc,QAAA,CAAS;;EAEzD,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,WAAW,CAACC,MAAM,CAAC;;AAEjC,WAAA,EAAE,CAAC,EAAEC,MAAM,EAAE,GAAKA,UAAU,OAAA,CAAQ;;;;;;;;;iBAS9B,EAAE,CAAC,EAAEC,mBAAmB,EAAE,GACjCA,mBAAAA,KAAwB,IAAA,GAAOd,sBAAsBG,oBAAAA;AACvD,QAAA,EAAEJ,yBAAAA,CAA0B;;;;iBAInB,EAAE,CAAC,EAAEe,mBAAmB,EAAE,GACjCA,mBAAAA,KAAwB,IAAA,GAAOZ,uBAAuBE,qBAAAA;AACxD,QAAA,EAAEL,yBAAAA,CAA0B;;;;AAIpC,CAAC;AAED,MAAMgB,aAAAA,GAAgBT,uBAAAA,CAAOU,gBAAAA,CAAI;;;;;;oBAMb,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAAA,CAAMS,MAAM,CAACC,QAAQ,CAAC;AAC1C,iBAAA,EAAE,CAAC,EAAEV,KAAK,EAAE,GAAKA,KAAAA,CAAMW,YAAY,CAAC;cACvC,EAAE,CAAC,EAAEX,KAAK,EAAE,GAAKA,KAAAA,CAAMY,OAAO,CAACC,WAAW,CAAC;;oBAErC,EAAE,CAAC,EAAEb,KAAK,EAAE,GAAKA,KAAAA,CAAMS,MAAM,CAACK,UAAU,CAAC;AAC7D,CAAC;AAMD,MAAMC,kBAAAA,GAAqBjB,uBAAAA,CAAOU,gBAAAA,CAA6B;;;;AAIzC,sBAAA,EAAE,CAAC,EAAEQ,UAAU,EAAE,GAAMA,UAAAA,GAAa,QAAQ,KAAA,CAAO;;;;;;;AAOzE,CAAC;AAED,MAAMC,eAAAA,GAAkBnB,uBAAAA,CAAOoB,uBAAAA,CAAW;;;;AAI1C,CAAC;AAeD,MAAMC,UAAAA,iBAAaC,iBAAMC,UAAU,CACjC,CAAC,EAAEC,kBAAkB,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGC,KAAAA,EAAO,EAAEC,GAAAA,iBAC7DC,cAAA,CAACC,kBAAOC,OAAO,EAAA;QACbH,GAAAA,EAAKA,GAAAA;QACLI,UAAU,EAAA,IAAA;QACVC,OAAO,EAAA,IAAA;QACPC,oBAAAA,EAAsB,CAACC,CAAAA,GAAMA,CAAAA,CAAEC,cAAc,EAAA;QAC7CC,iBAAAA,EAAmB,CAACF,CAAAA,GAAMA,CAAAA,CAAEC,cAAc,EAAA;QAC1CE,0BAAAA,EAA0Bf,kBAAAA;AAI1B,QAAA,QAAA,gBAAAM,cAAA,CAAC/B,eAAAA,EAAAA;YACCS,mBAAAA,EAAqBgB,kBAAAA;YACrBjB,MAAAA,EAAQkB,KAAAA;YACRrB,UAAAA,EAAYsB,SAAAA;AACX,YAAA,GAAGE,KAAK;AAET,YAAA,QAAA,gBAAAE,cAAA,CAACrB,aAAAA,EAAAA;AAAekB,gBAAAA,QAAAA,EAAAA;;;;AAKxBN,UAAAA,CAAWmB,WAAW,GAAG,YAAA;AAYzB,MAAMC,UAAAA,GAAa,CAAC,EAAEC,SAAS,EAAEC,OAAO,EAAEhB,QAAQ,EAAmB,iBACnEG,cAAA,CAACC,iBAAAA,CAAOa,IAAI,EAAA;QACVC,IAAAA,EAAMH,SAAAA;QACNI,YAAAA,EAAc,CAACC,WAAAA,GAAgB,CAACA,WAAAA,IAAeJ,OAAAA,IAAAA;QAC/CK,KAAAA,EAAO,KAAA;gCAEPlB,cAAA,CAACC,kBAAOkB,MAAM,EAAA;AAAEtB,YAAAA,QAAAA,EAAAA;;;AAepB,MAAMuB,uBAAAA,GAA0B,CAAC,EAC/BvB,QAAQ,EACRwB,iBAAAA,GAAoB,IAAI,EACK,iBAC7BrB,cAAA,CAACb,kBAAAA,EAAAA;QAAmBC,UAAAA,EAAYiC,iBAAAA;AAAmBC,QAAAA,gBAAAA,EAAgB,CAACD,iBAAAA;AAClE,QAAA,QAAA,gBAAArB,cAAA,CAACuB,uBAAAA,EAAAA;AAAY1B,YAAAA,QAAAA,EAAAA;;;AAajB,MAAM2B,iBAAAA,GAAoB,CAAC,EAAEX,OAAO,EAAEY,KAAK,EAAE5B,QAAQ,EAA0B,GAAA;IAC7E,MAAM,EAAE6B,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAMC,YAAAA,GAAeH,SAASC,aAAAA,CAAc;QAAEG,EAAAA,EAAI,cAAA;QAAgBC,cAAAA,EAAgB;AAAQ,KAAA,CAAA;AAC1F,IAAA,qBACE9B,cAAA,CAACX,eAAAA,EAAAA;QAAgB0C,OAAAA,EAASlB,OAAAA;QAASY,KAAAA,EAAOG,YAAAA;QAAcI,OAAAA,EAAQ,OAAA;AAC7DnC,QAAAA,QAAAA,EAAAA,QAAAA,kBAAYG,cAAA,CAACiC,WAAAA,EAAAA,EAAAA;;AAGpB,CAAA;AAEA,MAAMC,MAAAA,GAAS;IACbpB,IAAAA,EAAMH,UAAAA;IACNwB,IAAAA,EAAM5C,UAAAA;IACN6C,iBAAAA,EAAmBhB,uBAAAA;IACnBiB,WAAAA,EAAab,iBAAAA;AACbc,IAAAA,KAAAA,EAAOrC,kBAAOqC,KAAK;AACnBC,IAAAA,WAAAA,EAAatC,kBAAOsC;AACtB;;;;;"}
|
|
1
|
+
{"version":3,"file":"Drawer.js","sources":["../../../../admin/src/future/components/Drawer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { Box, ScrollArea, IconButton, Flex, FlexProps } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { keyframes, styled } from 'styled-components';\n\n/** Duration of the close animation in ms. Use for timing cleanup (e.g. removing URL params). */\nexport const DRAWER_CLOSE_ANIMATION_MS = 300;\n\n/* -------------------------------------------------------------------------------------------------\n * Animations\n * -----------------------------------------------------------------------------------------------*/\n\n// Direction: up\nconst slideUpFromBottomIn = keyframes`\n from {\n opacity: 0;\n transform: translateY(100%);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n`;\n\nconst slideUpFromBottomOut = keyframes`\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(100%);\n }\n`;\n\n// Direction: left\nconst slideLeftFromRightIn = keyframes`\n from {\n opacity: 0;\n transform: translateX(100%);\n }\n to {\n opacity: 1;\n transform: translateX(0);\n }\n`;\n\nconst slideLeftFromRightOut = keyframes`\n from {\n opacity: 1;\n transform: translateX(0);\n }\n to {\n opacity: 0;\n transform: translateX(100%);\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Styled components\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerContainerProps {\n $animationDirection?: DrawerBodyProps['animationDirection'];\n $width?: string;\n $maxHeight?: string;\n}\n\nconst DrawerContainer = styled(Flex)<DrawerContainerProps>`\n flex-direction: column;\n position: fixed;\n bottom: 0;\n /* Mobile: full-bleed sheet. Anchoring to the right at a fixed width left a\n dead gutter on every phone wider than the panel, and the panel only filled\n the screen once the viewport happened to be narrower than it. Below the\n medium breakpoint the panel is the screen; medium+ restores the\n right-anchored rail. */\n left: 0;\n right: 0;\n width: 100%;\n padding: ${({ theme }) => theme.spaces[2]};\n max-width: 100%;\n /* Sit just below the overlay token (300) so that:\n - popovers (500) and tooltips (1000) rendered from descendant components\n surface above the drawer panel,\n - AlertDialog overlays (300) and contents (310) opened from inside the\n drawer (e.g. the asset details \"delete\" confirm) cover the drawer. */\n z-index: 200;\n overflow: hidden;\n /* dvh, not vh: anchored to the bottom, a 100vh cap on mobile (visual\n viewport < 100vh under the URL bar) would push the drawer top off-screen. */\n max-height: ${({ $maxHeight }) => $maxHeight ?? '100dvh'};\n\n ${({ theme }) => theme.breakpoints.medium} {\n left: auto;\n width: ${({ $width }) => $width ?? '400px'};\n }\n\n &:focus {\n outline: none;\n }\n\n @media (prefers-reduced-motion: no-preference) {\n &[data-state='open'] {\n animation: ${({ $animationDirection }) =>\n $animationDirection === 'up' ? slideUpFromBottomIn : slideLeftFromRightIn}\n ${DRAWER_CLOSE_ANIMATION_MS}ms cubic-bezier(0.32, 0.72, 0, 1) forwards;\n }\n\n &[data-state='closed'] {\n animation: ${({ $animationDirection }) =>\n $animationDirection === 'up' ? slideUpFromBottomOut : slideLeftFromRightOut}\n ${DRAWER_CLOSE_ANIMATION_MS}ms cubic-bezier(0.32, 0.72, 0, 1) forwards;\n pointer-events: none;\n }\n }\n`;\n\nconst DrawerContent = styled(Box)`\n display: flex;\n flex-direction: column;\n flex: 1;\n min-height: 0;\n width: 100%;\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-radius: ${({ theme }) => theme.borderRadius};\n box-shadow: ${({ theme }) => theme.shadows.popupShadow};\n overflow: hidden;\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\ninterface CollapsibleContentProps {\n $isVisible: boolean;\n}\n\nconst CollapsibleContent = styled(Box)<CollapsibleContentProps>`\n display: grid;\n flex: 1;\n min-height: 0;\n grid-template-rows: ${({ $isVisible }) => ($isVisible ? '1fr' : '0fr')};\n transition: grid-template-rows 0.3s ease-in-out;\n\n > div {\n overflow: hidden;\n min-height: 0;\n }\n\n /* The scroll area wraps its children in a div styled inline as\n display: table, min-width: 100%. A table box grows to its content, so a\n single unbreakable string (a long file name) widens it past the scrollport\n and the panel gains a horizontal scrollbar — with nothing left to clamp the\n row, the name never truncates. Overriding to a block box makes the\n scrollport the width again, which is what the vertical-only list wants.\n Inline styles, hence the important. */\n [data-radix-scroll-area-viewport] > div {\n display: block !important;\n }\n`;\n\nconst CloseIconButton = styled(IconButton)`\n &:hover {\n background: transparent;\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Body\n * -----------------------------------------------------------------------------------------------*/\n\ntype PointerDownOutsideHandler = NonNullable<Dialog.DialogContentProps['onPointerDownOutside']>;\n\n/** Vetoes an outside interaction that would otherwise dismiss the drawer. */\nconst keepOpen = (event: { preventDefault: () => void }) => event.preventDefault();\n\ninterface DrawerBodyProps extends Omit<FlexProps, 'width' | 'maxHeight'> {\n animationDirection?: 'up' | 'left';\n /** Width of the panel from the medium breakpoint up. Mobile is always full-bleed. */\n width?: string;\n /** Cap on the panel height. Defaults to the dynamic viewport height. */\n maxHeight?: string;\n /**\n * Opt in to dismiss-on-outside-click. Omitted, an outside pointer press never\n * closes the drawer — it must be closed explicitly, as long-running panels\n * like the upload progress dialog need. Passed, the handler can still veto\n * individual presses via `event.preventDefault()`. Content rendered from\n * inside the panel but portaled elsewhere (DS dialogs, popovers, tooltips)\n * never counts as outside — Radix reads the React tree, not the DOM.\n */\n onPointerDownOutside?: PointerDownOutsideHandler;\n children: React.ReactNode;\n}\n\nconst DrawerBody = React.forwardRef<HTMLDivElement, DrawerBodyProps>(\n (\n { animationDirection, width, maxHeight, onPointerDownOutside = keepOpen, children, ...props },\n ref\n ) => (\n <Dialog.Content\n ref={ref}\n forceMount\n asChild\n onPointerDownOutside={onPointerDownOutside}\n // Non-modal, so focus legitimately moves outside (tabbing past the last\n // field); only a pointer press should ever dismiss.\n onFocusOutside={keepOpen}\n data-animation-direction={animationDirection}\n >\n {/* width/maxHeight go through transient props so the DS Flex never emits a\n competing `width` rule that would outrank the mobile full-bleed one. */}\n <DrawerContainer\n $animationDirection={animationDirection}\n $width={width}\n $maxHeight={maxHeight}\n {...props}\n >\n <DrawerContent>{children}</DrawerContent>\n </DrawerContainer>\n </Dialog.Content>\n )\n);\nDrawerBody.displayName = 'DrawerBody';\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Root\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerRootProps {\n isVisible?: boolean;\n onClose?: () => void;\n children: React.ReactNode;\n}\n\nconst DrawerRoot = ({ isVisible, onClose, children }: DrawerRootProps): React.ReactElement => (\n <Dialog.Root\n open={isVisible}\n onOpenChange={(nextVisible) => !nextVisible && onClose?.()}\n modal={false}\n >\n <Dialog.Portal>{children}</Dialog.Portal>\n </Dialog.Root>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.Content - composable content slot (collapsible when isContentExpanded is used)\n * Contains a scrollable area\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerScrollableContentProps {\n children: React.ReactNode;\n /** When provided, content can collapse/expand (e.g. for minimize). Omit to always show. */\n isContentExpanded?: boolean;\n}\n\nconst DrawerScrollableContent = ({\n children,\n isContentExpanded = true,\n}: DrawerScrollableContentProps) => (\n <CollapsibleContent $isVisible={isContentExpanded} data-collapsed={!isContentExpanded}>\n <ScrollArea>{children}</ScrollArea>\n </CollapsibleContent>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * Drawer.CloseButton - composable close icon button (Cross icon by default)\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerCloseButtonProps extends React.PropsWithChildren {\n onClose: () => void;\n label?: string;\n}\n\nconst DrawerCloseButton = ({ onClose, label, children }: DrawerCloseButtonProps) => {\n const { formatMessage } = useIntl();\n const labelMessage = label ?? formatMessage({ id: 'global.close', defaultMessage: 'Close' });\n return (\n <CloseIconButton onClick={onClose} label={labelMessage} variant=\"ghost\">\n {children ?? <Cross />}\n </CloseIconButton>\n );\n};\n\nconst Drawer = {\n Root: DrawerRoot,\n Body: DrawerBody,\n ScrollableContent: DrawerScrollableContent,\n CloseButton: DrawerCloseButton,\n Title: Dialog.Title,\n Description: Dialog.Description,\n};\n\nexport { Drawer };\n"],"names":["DRAWER_CLOSE_ANIMATION_MS","slideUpFromBottomIn","keyframes","slideUpFromBottomOut","slideLeftFromRightIn","slideLeftFromRightOut","DrawerContainer","styled","Flex","theme","spaces","$maxHeight","breakpoints","medium","$width","$animationDirection","DrawerContent","Box","colors","neutral0","borderRadius","shadows","popupShadow","neutral150","CollapsibleContent","$isVisible","CloseIconButton","IconButton","keepOpen","event","preventDefault","DrawerBody","React","forwardRef","animationDirection","width","maxHeight","onPointerDownOutside","children","props","ref","_jsx","Dialog","Content","forceMount","asChild","onFocusOutside","data-animation-direction","displayName","DrawerRoot","isVisible","onClose","Root","open","onOpenChange","nextVisible","modal","Portal","DrawerScrollableContent","isContentExpanded","data-collapsed","ScrollArea","DrawerCloseButton","label","formatMessage","useIntl","labelMessage","id","defaultMessage","onClick","variant","Cross","Drawer","Body","ScrollableContent","CloseButton","Title","Description"],"mappings":"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"}
|