@strapi/upload 5.37.0 → 5.38.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/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AudioPreview.js.map +1 -1
- package/dist/admin/components/AssetCard/AudioPreview.mjs.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/DialogFooter.js.map +1 -1
- package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/AssetGridList/AssetGridList.js.map +1 -1
- package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.js.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/ContextInfo/ContextInfo.js.map +1 -1
- package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +1 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +1 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +1 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +1 -1
- package/dist/admin/components/FolderGridList/FolderGridList.js.map +1 -1
- package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/SelectTree/Option.js.map +1 -1
- package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -1
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/future/App.js.map +1 -1
- package/dist/admin/future/App.mjs.map +1 -1
- package/dist/admin/future/components/Drawer.js +189 -0
- package/dist/admin/future/components/Drawer.js.map +1 -0
- package/dist/admin/future/components/Drawer.mjs +166 -0
- package/dist/admin/future/components/Drawer.mjs.map +1 -0
- package/dist/admin/future/components/UploadProgressDialog.js +60 -101
- package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs +62 -84
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +155 -100
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +160 -105
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +406 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +384 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +215 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +194 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +37 -8
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +38 -9
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +35 -5
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +37 -7
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js +143 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs +141 -0
- package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js +127 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs +106 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/constants.js.map +1 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
- package/dist/admin/future/services/api.js +181 -97
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +181 -98
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/services/assets.js +14 -1
- package/dist/admin/future/services/assets.js.map +1 -1
- package/dist/admin/future/services/assets.mjs +14 -2
- package/dist/admin/future/services/assets.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +16 -1
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +16 -2
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/store/hooks.js.map +1 -1
- package/dist/admin/future/store/hooks.mjs.map +1 -1
- package/dist/admin/future/store/uploadProgress.js +7 -4
- package/dist/admin/future/store/uploadProgress.js.map +1 -1
- package/dist/admin/future/store/uploadProgress.mjs +7 -4
- package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/future/utils/files.js +105 -3
- package/dist/admin/future/utils/files.js.map +1 -1
- package/dist/admin/future/utils/files.mjs +104 -4
- package/dist/admin/future/utils/files.mjs.map +1 -1
- package/dist/admin/future/utils/getAssetIcon.js +3 -3
- package/dist/admin/future/utils/getAssetIcon.js.map +1 -1
- package/dist/admin/future/utils/getAssetIcon.mjs +4 -4
- package/dist/admin/future/utils/getAssetIcon.mjs.map +1 -1
- package/dist/admin/future/utils/translations.js.map +1 -1
- package/dist/admin/future/utils/translations.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
- package/dist/admin/hooks/useAiAvailability.js.map +1 -1
- package/dist/admin/hooks/useAiAvailability.mjs.map +1 -1
- package/dist/admin/hooks/useAssets.js.map +1 -1
- package/dist/admin/hooks/useAssets.mjs.map +1 -1
- package/dist/admin/hooks/useBulkEdit.js.map +1 -1
- package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
- package/dist/admin/hooks/useBulkMove.js.map +1 -1
- package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
- package/dist/admin/hooks/useBulkRemove.js.map +1 -1
- package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
- package/dist/admin/hooks/useConfig.js.map +1 -1
- package/dist/admin/hooks/useConfig.mjs.map +1 -1
- package/dist/admin/hooks/useCropImg.js.map +1 -1
- package/dist/admin/hooks/useCropImg.mjs.map +1 -1
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
- package/dist/admin/hooks/useEditFolder.js.map +1 -1
- package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolder.js.map +1 -1
- package/dist/admin/hooks/useFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolderStructure.js.map +1 -1
- package/dist/admin/hooks/useFolderStructure.mjs.map +1 -1
- package/dist/admin/hooks/useFolders.js.map +1 -1
- package/dist/admin/hooks/useFolders.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
- package/dist/admin/hooks/usePersistentState.js.map +1 -1
- package/dist/admin/hooks/usePersistentState.mjs.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
- package/dist/admin/hooks/useSelectionState.js.map +1 -1
- package/dist/admin/hooks/useSelectionState.mjs.map +1 -1
- package/dist/admin/hooks/useSettings.js.map +1 -1
- package/dist/admin/hooks/useSettings.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/hooks/utils/renameKeys.js.map +1 -1
- package/dist/admin/hooks/utils/renameKeys.mjs.map +1 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/package.json.js +1 -152
- package/dist/admin/package.json.js.map +1 -1
- package/dist/admin/package.json.mjs +2 -141
- package/dist/admin/package.json.mjs.map +1 -1
- package/dist/admin/pages/App/App.js.map +1 -1
- package/dist/admin/pages/App/App.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +3 -3
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +1 -1
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +2 -2
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.js.map +1 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs.map +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/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -1
- package/dist/admin/pluginId.js.map +1 -1
- package/dist/admin/pluginId.mjs.map +1 -1
- package/dist/admin/src/future/components/Drawer.d.ts +32 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +8 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetPreview.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/CreateFolderDialog.d.ts +8 -0
- package/dist/admin/src/future/pages/Assets/components/ImportFromUrlDialog.d.ts +7 -0
- package/dist/admin/src/future/services/api.d.ts +10 -1
- package/dist/admin/src/future/services/assets.d.ts +2 -2
- package/dist/admin/src/future/services/folders.d.ts +1 -1
- package/dist/admin/src/future/store/uploadProgress.d.ts +1 -1
- package/dist/admin/src/future/utils/files.d.ts +70 -0
- package/dist/admin/translations/en.json.js +35 -3
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +35 -3
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -1
- package/dist/admin/translations/es.json.mjs +1 -1
- package/dist/admin/utils/appendSearchParamsToUrl.js.map +1 -1
- package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +1 -1
- package/dist/admin/utils/containsAssetFilter.js.map +1 -1
- package/dist/admin/utils/containsAssetFilter.mjs.map +1 -1
- package/dist/admin/utils/createAssetUrl.js.map +1 -1
- package/dist/admin/utils/createAssetUrl.mjs.map +1 -1
- package/dist/admin/utils/displayedFilters.js.map +1 -1
- package/dist/admin/utils/displayedFilters.mjs.map +1 -1
- package/dist/admin/utils/downloadFile.js.map +1 -1
- package/dist/admin/utils/downloadFile.mjs.map +1 -1
- package/dist/admin/utils/findRecursiveFolderByValue.js.map +1 -1
- package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/formatBytes.mjs.map +1 -1
- package/dist/admin/utils/formatDuration.js.map +1 -1
- package/dist/admin/utils/formatDuration.mjs.map +1 -1
- package/dist/admin/utils/getAPIInnerErrors.js.map +1 -1
- package/dist/admin/utils/getAPIInnerErrors.mjs.map +1 -1
- package/dist/admin/utils/getAllowedFiles.js.map +1 -1
- package/dist/admin/utils/getAllowedFiles.mjs.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataCM.js.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataML.js.map +1 -1
- package/dist/admin/utils/getBreadcrumbDataML.mjs.map +1 -1
- package/dist/admin/utils/getFileExtension.js.map +1 -1
- package/dist/admin/utils/getFileExtension.mjs.map +1 -1
- package/dist/admin/utils/getFolderParents.js.map +1 -1
- package/dist/admin/utils/getFolderParents.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/icons.js.map +1 -1
- package/dist/admin/utils/icons.mjs +1 -1
- package/dist/admin/utils/icons.mjs.map +1 -1
- package/dist/admin/utils/moveElement.js.map +1 -1
- package/dist/admin/utils/moveElement.mjs.map +1 -1
- package/dist/admin/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/rawFileToAsset.js.map +1 -1
- package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
- package/dist/admin/utils/toSingularTypes.js.map +1 -1
- package/dist/admin/utils/toSingularTypes.mjs.map +1 -1
- package/dist/admin/utils/typeFromMime.js.map +1 -1
- package/dist/admin/utils/typeFromMime.mjs.map +1 -1
- package/dist/admin/utils/urlYupSchema.js.map +1 -1
- package/dist/admin/utils/urlYupSchema.mjs.map +1 -1
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/bootstrap.js.map +1 -1
- package/dist/server/bootstrap.mjs.map +1 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/constants.js.map +1 -1
- package/dist/server/constants.mjs.map +1 -1
- package/dist/server/content-types/file.js.map +1 -1
- package/dist/server/content-types/file.mjs.map +1 -1
- package/dist/server/content-types/folder.js.map +1 -1
- package/dist/server/content-types/folder.mjs +1 -1
- package/dist/server/content-types/folder.mjs.map +1 -1
- package/dist/server/content-types/index.js.map +1 -1
- package/dist/server/content-types/index.mjs.map +1 -1
- package/dist/server/controllers/admin-file.js.map +1 -1
- package/dist/server/controllers/admin-file.mjs +1 -1
- package/dist/server/controllers/admin-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs +2 -2
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/admin-folder.js.map +1 -1
- package/dist/server/controllers/admin-folder.mjs +1 -1
- package/dist/server/controllers/admin-folder.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +144 -0
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +147 -3
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/index.js.map +1 -1
- package/dist/server/controllers/index.mjs.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs.map +1 -1
- package/dist/server/controllers/utils/folders.js.map +1 -1
- package/dist/server/controllers/utils/folders.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/configureView.js.map +1 -1
- package/dist/server/controllers/validation/admin/configureView.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/settings.js.map +1 -1
- package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/utils.js.map +1 -1
- package/dist/server/controllers/validation/admin/utils.mjs.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
- package/dist/server/controllers/view-configuration.js.map +1 -1
- package/dist/server/controllers/view-configuration.mjs.map +1 -1
- package/dist/server/graphql.js.map +1 -1
- package/dist/server/graphql.mjs.map +1 -1
- package/dist/server/index.js +8 -8
- package/dist/server/middlewares/upload.js.map +1 -1
- package/dist/server/middlewares/upload.mjs.map +1 -1
- package/dist/server/models/ai-metadata-job.js.map +1 -1
- package/dist/server/models/ai-metadata-job.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js +10 -0
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +10 -0
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/index.js.map +1 -1
- package/dist/server/routes/index.mjs +4 -4
- package/dist/server/routes/index.mjs.map +1 -1
- package/dist/server/routes/validation/upload.js.map +1 -1
- package/dist/server/routes/validation/upload.mjs.map +1 -1
- package/dist/server/routes/view-configuration.js.map +1 -1
- package/dist/server/routes/view-configuration.mjs.map +1 -1
- package/dist/server/services/ai-metadata-jobs.js.map +1 -1
- package/dist/server/services/ai-metadata-jobs.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/api-upload-folder.js.map +1 -1
- package/dist/server/services/api-upload-folder.mjs.map +1 -1
- package/dist/server/services/extensions/index.js.map +1 -1
- package/dist/server/services/extensions/index.mjs.map +1 -1
- package/dist/server/services/extensions/utils.js.map +1 -1
- package/dist/server/services/extensions/utils.mjs.map +1 -1
- package/dist/server/services/file.js +120 -1
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/file.mjs +122 -3
- package/dist/server/services/file.mjs.map +1 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs +1 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +1 -1
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/services/provider.js.map +1 -1
- package/dist/server/services/provider.mjs.map +1 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +1 -1
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/services/weekly-metrics.js.map +1 -1
- package/dist/server/services/weekly-metrics.mjs.map +1 -1
- package/dist/server/src/controllers/admin-upload.d.ts +13 -0
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.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/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/file.d.ts +15 -0
- package/dist/server/src/services/file.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/utils/cron.js.map +1 -1
- package/dist/server/utils/cron.mjs.map +1 -1
- package/dist/server/utils/images.js.map +1 -1
- package/dist/server/utils/images.mjs.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/dist/server/utils/mime-validation.js.map +1 -1
- package/dist/server/utils/mime-validation.mjs.map +1 -1
- package/dist/shared/contracts/files.d.ts +11 -0
- package/dist/shared/contracts/files.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { useQueryParams, getDisplayName } from '@strapi/admin/strapi-admin';
|
|
4
|
+
import { VisuallyHidden, Flex, Loader, Alert, Typography, Box, Field, TextInput } from '@strapi/design-system';
|
|
5
|
+
import { FileError, ArrowLineRight, WarningCircle } from '@strapi/icons';
|
|
6
|
+
import { useIntl } from 'react-intl';
|
|
7
|
+
import { styled } from 'styled-components';
|
|
8
|
+
import { DRAWER_CLOSE_ANIMATION_MS, Drawer } from '../../../../components/Drawer.mjs';
|
|
9
|
+
import { AssetType } from '../../../../enums.mjs';
|
|
10
|
+
import { useGetAssetQuery } from '../../../../services/assets.mjs';
|
|
11
|
+
import { formatBytes, getFileExtension } from '../../../../utils/files.mjs';
|
|
12
|
+
import { getAssetIcon } from '../../../../utils/getAssetIcon.mjs';
|
|
13
|
+
import { getTranslationKey } from '../../../../utils/translations.mjs';
|
|
14
|
+
import { AssetPreview } from './AssetPreview.mjs';
|
|
15
|
+
|
|
16
|
+
// Name of the parameter to look for in the URL to open the drawer
|
|
17
|
+
const URL_PARAM = 'assetId';
|
|
18
|
+
/* -------------------------------------------------------------------------------------------------
|
|
19
|
+
* useAssetDetailsParam - sync drawer visibility with URL ?{URL_PARAM}={id}
|
|
20
|
+
* -----------------------------------------------------------------------------------------------*/ const useAssetDetailsParam = ()=>{
|
|
21
|
+
const [{ query }, setQuery] = useQueryParams();
|
|
22
|
+
const detailsId = query?.[URL_PARAM];
|
|
23
|
+
const assetId = detailsId ? parseInt(detailsId, 10) : null;
|
|
24
|
+
const hasValidId = assetId !== null && !Number.isNaN(assetId);
|
|
25
|
+
const [isClosing, setIsClosing] = React.useState(false);
|
|
26
|
+
const displayAssetId = React.useRef(null);
|
|
27
|
+
const isVisible = hasValidId && !isClosing;
|
|
28
|
+
React.useEffect(()=>{
|
|
29
|
+
if (hasValidId) {
|
|
30
|
+
displayAssetId.current = assetId;
|
|
31
|
+
}
|
|
32
|
+
}, [
|
|
33
|
+
hasValidId,
|
|
34
|
+
assetId
|
|
35
|
+
]);
|
|
36
|
+
const openDetails = React.useCallback((id)=>{
|
|
37
|
+
setIsClosing(false);
|
|
38
|
+
setQuery({
|
|
39
|
+
[URL_PARAM]: String(id)
|
|
40
|
+
});
|
|
41
|
+
}, [
|
|
42
|
+
setQuery
|
|
43
|
+
]);
|
|
44
|
+
const closeDetails = React.useCallback(()=>{
|
|
45
|
+
if (!hasValidId) return;
|
|
46
|
+
setIsClosing(true);
|
|
47
|
+
}, [
|
|
48
|
+
hasValidId
|
|
49
|
+
]);
|
|
50
|
+
React.useEffect(()=>{
|
|
51
|
+
if (!isClosing) return;
|
|
52
|
+
const timer = window.setTimeout(()=>{
|
|
53
|
+
setQuery({
|
|
54
|
+
[URL_PARAM]: undefined
|
|
55
|
+
}, 'remove');
|
|
56
|
+
setIsClosing(false);
|
|
57
|
+
displayAssetId.current = null;
|
|
58
|
+
}, DRAWER_CLOSE_ANIMATION_MS);
|
|
59
|
+
return ()=>window.clearTimeout(timer);
|
|
60
|
+
}, [
|
|
61
|
+
isClosing,
|
|
62
|
+
setQuery
|
|
63
|
+
]);
|
|
64
|
+
const shouldRenderDrawer = hasValidId || isClosing;
|
|
65
|
+
const drawerAssetId = isClosing ? displayAssetId.current ?? assetId : assetId;
|
|
66
|
+
return {
|
|
67
|
+
assetId: drawerAssetId,
|
|
68
|
+
isVisible,
|
|
69
|
+
shouldRenderDrawer,
|
|
70
|
+
openDetails,
|
|
71
|
+
closeDetails
|
|
72
|
+
};
|
|
73
|
+
};
|
|
74
|
+
const DetailItemContainer = styled(Flex)`
|
|
75
|
+
flex: 0 0 calc(50% - ${({ theme })=>theme.spaces[2]});
|
|
76
|
+
`;
|
|
77
|
+
const DetailItem = ({ label, value })=>/*#__PURE__*/ jsxs(DetailItemContainer, {
|
|
78
|
+
direction: "column",
|
|
79
|
+
justifyContent: "flex-start",
|
|
80
|
+
alignItems: "flex-start",
|
|
81
|
+
gap: 1,
|
|
82
|
+
children: [
|
|
83
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
84
|
+
variant: "sigma",
|
|
85
|
+
textColor: "neutral600",
|
|
86
|
+
fontWeight: "semiBold",
|
|
87
|
+
textTransform: "uppercase",
|
|
88
|
+
children: label
|
|
89
|
+
}),
|
|
90
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
91
|
+
variant: "pi",
|
|
92
|
+
textColor: "neutral700",
|
|
93
|
+
children: value ?? '-'
|
|
94
|
+
})
|
|
95
|
+
]
|
|
96
|
+
});
|
|
97
|
+
/* -------------------------------------------------------------------------------------------------
|
|
98
|
+
* DetailField
|
|
99
|
+
* -----------------------------------------------------------------------------------------------*/ const StyledWarning = styled(WarningCircle)`
|
|
100
|
+
width: 1.6rem;
|
|
101
|
+
height: 1.6rem;
|
|
102
|
+
|
|
103
|
+
path {
|
|
104
|
+
fill: ${({ theme })=>theme.colors.warning500};
|
|
105
|
+
}
|
|
106
|
+
`;
|
|
107
|
+
const DetailField = ({ name, label, value, required })=>/*#__PURE__*/ jsxs(Field.Root, {
|
|
108
|
+
name: name,
|
|
109
|
+
required: required,
|
|
110
|
+
children: [
|
|
111
|
+
/*#__PURE__*/ jsx(Field.Label, {
|
|
112
|
+
children: label
|
|
113
|
+
}),
|
|
114
|
+
/*#__PURE__*/ jsx(TextInput, {
|
|
115
|
+
value: value ?? '',
|
|
116
|
+
// TODO: handle onChange
|
|
117
|
+
onChange: ()=>{},
|
|
118
|
+
endAction: !value ? /*#__PURE__*/ jsx(StyledWarning, {}) : undefined,
|
|
119
|
+
type: "text"
|
|
120
|
+
})
|
|
121
|
+
]
|
|
122
|
+
});
|
|
123
|
+
const AssetDetails = ({ asset })=>{
|
|
124
|
+
const { formatMessage, formatDate } = useIntl();
|
|
125
|
+
const isImage = asset.mime?.includes(AssetType.Image);
|
|
126
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
127
|
+
direction: "column",
|
|
128
|
+
alignItems: "stretch",
|
|
129
|
+
gap: 4,
|
|
130
|
+
paddingTop: 4,
|
|
131
|
+
paddingBottom: 4,
|
|
132
|
+
paddingLeft: 5,
|
|
133
|
+
paddingRight: 5,
|
|
134
|
+
children: [
|
|
135
|
+
/*#__PURE__*/ jsx(Typography, {
|
|
136
|
+
variant: "beta",
|
|
137
|
+
fontWeight: "semiBold",
|
|
138
|
+
tag: "h3",
|
|
139
|
+
children: formatMessage({
|
|
140
|
+
id: getTranslationKey('asset-details.fileInfo'),
|
|
141
|
+
defaultMessage: 'File info'
|
|
142
|
+
})
|
|
143
|
+
}),
|
|
144
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
145
|
+
wrap: "wrap",
|
|
146
|
+
gap: 4,
|
|
147
|
+
background: "neutral100",
|
|
148
|
+
paddingTop: 4,
|
|
149
|
+
paddingBottom: 4,
|
|
150
|
+
paddingLeft: 6,
|
|
151
|
+
paddingRight: 6,
|
|
152
|
+
alignItems: "flex-start",
|
|
153
|
+
children: [
|
|
154
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
155
|
+
label: formatMessage({
|
|
156
|
+
id: getTranslationKey('asset-details.creationDate'),
|
|
157
|
+
defaultMessage: 'Creation date'
|
|
158
|
+
}),
|
|
159
|
+
value: asset.createdAt ? formatDate(new Date(asset.createdAt), {
|
|
160
|
+
dateStyle: 'long',
|
|
161
|
+
timeStyle: 'short'
|
|
162
|
+
}) : null
|
|
163
|
+
}),
|
|
164
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
165
|
+
label: formatMessage({
|
|
166
|
+
id: getTranslationKey('asset-details.lastUpdated'),
|
|
167
|
+
defaultMessage: 'Last updated'
|
|
168
|
+
}),
|
|
169
|
+
value: asset.updatedAt ? formatDate(new Date(asset.updatedAt), {
|
|
170
|
+
dateStyle: 'long',
|
|
171
|
+
timeStyle: 'short'
|
|
172
|
+
}) : null
|
|
173
|
+
}),
|
|
174
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
175
|
+
label: formatMessage({
|
|
176
|
+
id: getTranslationKey('asset-details.createdBy'),
|
|
177
|
+
defaultMessage: 'Created by'
|
|
178
|
+
}),
|
|
179
|
+
value: asset.createdBy ? getDisplayName({
|
|
180
|
+
firstname: asset.createdBy.firstname ?? undefined,
|
|
181
|
+
lastname: asset.createdBy.lastname ?? undefined,
|
|
182
|
+
username: asset.createdBy.username ?? undefined,
|
|
183
|
+
email: asset.createdBy.email ?? undefined
|
|
184
|
+
}) ?? '-' : null
|
|
185
|
+
}),
|
|
186
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
187
|
+
label: formatMessage({
|
|
188
|
+
id: getTranslationKey('asset-details.size'),
|
|
189
|
+
defaultMessage: 'Size'
|
|
190
|
+
}),
|
|
191
|
+
value: asset.size ? formatBytes(asset.size, 1) : null
|
|
192
|
+
}),
|
|
193
|
+
isImage && (asset.width != null || asset.height != null) && /*#__PURE__*/ jsx(DetailItem, {
|
|
194
|
+
label: formatMessage({
|
|
195
|
+
id: getTranslationKey('asset-details.dimensions'),
|
|
196
|
+
defaultMessage: 'Dimensions'
|
|
197
|
+
}),
|
|
198
|
+
value: asset.width != null && asset.height != null ? `${asset.width} × ${asset.height}` : null
|
|
199
|
+
}),
|
|
200
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
201
|
+
label: formatMessage({
|
|
202
|
+
id: getTranslationKey('asset-details.extension'),
|
|
203
|
+
defaultMessage: 'Extension'
|
|
204
|
+
}),
|
|
205
|
+
value: getFileExtension(asset.ext)
|
|
206
|
+
}),
|
|
207
|
+
/*#__PURE__*/ jsx(DetailItem, {
|
|
208
|
+
label: formatMessage({
|
|
209
|
+
id: getTranslationKey('asset-details.assetId'),
|
|
210
|
+
defaultMessage: 'Asset ID'
|
|
211
|
+
}),
|
|
212
|
+
value: String(asset.id)
|
|
213
|
+
})
|
|
214
|
+
]
|
|
215
|
+
}),
|
|
216
|
+
/*#__PURE__*/ jsx(DetailField, {
|
|
217
|
+
name: "fileName",
|
|
218
|
+
label: formatMessage({
|
|
219
|
+
id: getTranslationKey('asset-details.fileName'),
|
|
220
|
+
defaultMessage: 'File name'
|
|
221
|
+
}),
|
|
222
|
+
value: asset.name,
|
|
223
|
+
required: true
|
|
224
|
+
}),
|
|
225
|
+
isImage && /*#__PURE__*/ jsxs(Fragment, {
|
|
226
|
+
children: [
|
|
227
|
+
/*#__PURE__*/ jsx(DetailField, {
|
|
228
|
+
name: "caption",
|
|
229
|
+
label: formatMessage({
|
|
230
|
+
id: getTranslationKey('asset-details.caption'),
|
|
231
|
+
defaultMessage: 'Caption'
|
|
232
|
+
}),
|
|
233
|
+
value: asset.caption
|
|
234
|
+
}),
|
|
235
|
+
/*#__PURE__*/ jsx(DetailField, {
|
|
236
|
+
name: "alternativeText",
|
|
237
|
+
label: formatMessage({
|
|
238
|
+
id: getTranslationKey('asset-details.alternativeText'),
|
|
239
|
+
defaultMessage: 'Alternative text'
|
|
240
|
+
}),
|
|
241
|
+
value: asset.alternativeText
|
|
242
|
+
})
|
|
243
|
+
]
|
|
244
|
+
})
|
|
245
|
+
]
|
|
246
|
+
});
|
|
247
|
+
};
|
|
248
|
+
const DrawerHeader = ({ asset, closeDetails })=>{
|
|
249
|
+
const DocIcon = asset ? getAssetIcon(asset.mime, asset.ext) : FileError;
|
|
250
|
+
return /*#__PURE__*/ jsxs(Flex, {
|
|
251
|
+
gap: 2,
|
|
252
|
+
paddingLeft: 5,
|
|
253
|
+
paddingTop: 3,
|
|
254
|
+
paddingBottom: 3,
|
|
255
|
+
paddingRight: 3,
|
|
256
|
+
children: [
|
|
257
|
+
/*#__PURE__*/ jsx(DocIcon, {
|
|
258
|
+
width: 20,
|
|
259
|
+
height: 20
|
|
260
|
+
}),
|
|
261
|
+
/*#__PURE__*/ jsx(Drawer.Title, {
|
|
262
|
+
asChild: true,
|
|
263
|
+
children: /*#__PURE__*/ jsx(Typography, {
|
|
264
|
+
variant: "omega",
|
|
265
|
+
fontWeight: "semiBold",
|
|
266
|
+
overflow: "hidden",
|
|
267
|
+
ellipsis: true,
|
|
268
|
+
tag: "h2",
|
|
269
|
+
children: asset.name
|
|
270
|
+
})
|
|
271
|
+
}),
|
|
272
|
+
/*#__PURE__*/ jsx(Box, {
|
|
273
|
+
marginLeft: "auto",
|
|
274
|
+
children: /*#__PURE__*/ jsx(Drawer.CloseButton, {
|
|
275
|
+
onClose: closeDetails,
|
|
276
|
+
children: /*#__PURE__*/ jsx(ArrowLineRight, {})
|
|
277
|
+
})
|
|
278
|
+
})
|
|
279
|
+
]
|
|
280
|
+
});
|
|
281
|
+
};
|
|
282
|
+
const DrawerContent = ({ assetId, closeDetails })=>{
|
|
283
|
+
const { formatMessage } = useIntl();
|
|
284
|
+
const { data: asset, isLoading, error } = useGetAssetQuery(assetId, {
|
|
285
|
+
refetchOnMountOrArgChange: false,
|
|
286
|
+
refetchOnReconnect: false,
|
|
287
|
+
refetchOnFocus: false
|
|
288
|
+
});
|
|
289
|
+
if (isLoading) {
|
|
290
|
+
return /*#__PURE__*/ jsx(Flex, {
|
|
291
|
+
justifyContent: "center",
|
|
292
|
+
padding: 8,
|
|
293
|
+
children: /*#__PURE__*/ jsx(Loader, {
|
|
294
|
+
children: formatMessage({
|
|
295
|
+
id: 'app.loading',
|
|
296
|
+
defaultMessage: 'Loading...'
|
|
297
|
+
})
|
|
298
|
+
})
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
if (error || !asset) {
|
|
302
|
+
return /*#__PURE__*/ jsx(Flex, {
|
|
303
|
+
direction: "column",
|
|
304
|
+
alignItems: "stretch",
|
|
305
|
+
gap: 4,
|
|
306
|
+
padding: 4,
|
|
307
|
+
children: /*#__PURE__*/ jsx(Alert, {
|
|
308
|
+
variant: "danger",
|
|
309
|
+
closeLabel: formatMessage({
|
|
310
|
+
id: 'global.close',
|
|
311
|
+
defaultMessage: 'Close'
|
|
312
|
+
}),
|
|
313
|
+
onClose: closeDetails,
|
|
314
|
+
children: formatMessage({
|
|
315
|
+
id: getTranslationKey('asset-details.error'),
|
|
316
|
+
defaultMessage: 'Failed to load file details.'
|
|
317
|
+
})
|
|
318
|
+
})
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
322
|
+
children: [
|
|
323
|
+
/*#__PURE__*/ jsx(DrawerHeader, {
|
|
324
|
+
asset: asset,
|
|
325
|
+
closeDetails: closeDetails
|
|
326
|
+
}),
|
|
327
|
+
/*#__PURE__*/ jsxs(Drawer.ScrollableContent, {
|
|
328
|
+
children: [
|
|
329
|
+
/*#__PURE__*/ jsx(AssetPreview, {
|
|
330
|
+
asset: asset
|
|
331
|
+
}),
|
|
332
|
+
/*#__PURE__*/ jsx(AssetDetails, {
|
|
333
|
+
asset: asset
|
|
334
|
+
})
|
|
335
|
+
]
|
|
336
|
+
})
|
|
337
|
+
]
|
|
338
|
+
});
|
|
339
|
+
};
|
|
340
|
+
/* -------------------------------------------------------------------------------------------------
|
|
341
|
+
* AssetDetailsDrawer
|
|
342
|
+
* -----------------------------------------------------------------------------------------------*/ const AssetDetailsDrawer = ()=>{
|
|
343
|
+
const { formatMessage } = useIntl();
|
|
344
|
+
const { assetId, isVisible, shouldRenderDrawer, closeDetails } = useAssetDetailsParam();
|
|
345
|
+
if (!shouldRenderDrawer || assetId === null) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
return /*#__PURE__*/ jsxs(Drawer.Root, {
|
|
349
|
+
isVisible: isVisible,
|
|
350
|
+
onClose: closeDetails,
|
|
351
|
+
children: [
|
|
352
|
+
/*#__PURE__*/ jsx("div", {
|
|
353
|
+
children: /*#__PURE__*/ jsxs(VisuallyHidden, {
|
|
354
|
+
children: [
|
|
355
|
+
/*#__PURE__*/ jsx(Drawer.Title, {
|
|
356
|
+
children: formatMessage({
|
|
357
|
+
id: getTranslationKey('asset-details.title'),
|
|
358
|
+
defaultMessage: 'File details'
|
|
359
|
+
})
|
|
360
|
+
}),
|
|
361
|
+
/*#__PURE__*/ jsx(Drawer.Description, {
|
|
362
|
+
children: formatMessage({
|
|
363
|
+
id: getTranslationKey('asset-details.description'),
|
|
364
|
+
defaultMessage: 'Displays file information and metadata'
|
|
365
|
+
})
|
|
366
|
+
})
|
|
367
|
+
]
|
|
368
|
+
})
|
|
369
|
+
}),
|
|
370
|
+
/*#__PURE__*/ jsx(Drawer.Body, {
|
|
371
|
+
animationDirection: "left",
|
|
372
|
+
width: "41.6rem",
|
|
373
|
+
height: "100vh",
|
|
374
|
+
children: /*#__PURE__*/ jsx(DrawerContent, {
|
|
375
|
+
assetId: assetId,
|
|
376
|
+
closeDetails: closeDetails
|
|
377
|
+
})
|
|
378
|
+
})
|
|
379
|
+
]
|
|
380
|
+
});
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
export { AssetDetailsDrawer, useAssetDetailsParam };
|
|
384
|
+
//# sourceMappingURL=AssetDetailsDrawer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetDetailsDrawer.mjs","sources":["../../../../../../../admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams, getDisplayName } from '@strapi/admin/strapi-admin';\nimport {\n Alert,\n Box,\n Field,\n Flex,\n Loader,\n TextInput,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ArrowLineRight, FileError, WarningCircle } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { Drawer, DRAWER_CLOSE_ANIMATION_MS } from '../../../../components/Drawer';\nimport { AssetType } from '../../../../enums';\nimport { useGetAssetQuery } from '../../../../services/assets';\nimport { formatBytes, getFileExtension } from '../../../../utils/files';\nimport { getAssetIcon } from '../../../../utils/getAssetIcon';\nimport { getTranslationKey } from '../../../../utils/translations';\n\nimport { AssetPreview } from './AssetPreview';\n\nimport type { AssetWithPopulatedCreatedBy } from '../../../../../../../shared/contracts/files';\n\n// Name of the parameter to look for in the URL to open the drawer\nconst URL_PARAM = 'assetId';\n\n/* -------------------------------------------------------------------------------------------------\n * useAssetDetailsParam - sync drawer visibility with URL ?{URL_PARAM}={id}\n * -----------------------------------------------------------------------------------------------*/\n\nexport const useAssetDetailsParam = () => {\n const [{ query }, setQuery] = useQueryParams<{ [URL_PARAM]?: string }>();\n\n const detailsId = query?.[URL_PARAM];\n const assetId = detailsId ? parseInt(detailsId, 10) : null;\n const hasValidId = assetId !== null && !Number.isNaN(assetId);\n\n const [isClosing, setIsClosing] = React.useState(false);\n const displayAssetId = React.useRef<number | null>(null);\n\n const isVisible = hasValidId && !isClosing;\n\n React.useEffect(() => {\n if (hasValidId) {\n displayAssetId.current = assetId;\n }\n }, [hasValidId, assetId]);\n\n const openDetails = React.useCallback(\n (id: number) => {\n setIsClosing(false);\n setQuery({ [URL_PARAM]: String(id) });\n },\n [setQuery]\n );\n\n const closeDetails = React.useCallback(() => {\n if (!hasValidId) return;\n setIsClosing(true);\n }, [hasValidId]);\n\n React.useEffect(() => {\n if (!isClosing) return;\n const timer = window.setTimeout(() => {\n setQuery({ [URL_PARAM]: undefined }, 'remove');\n setIsClosing(false);\n displayAssetId.current = null;\n }, DRAWER_CLOSE_ANIMATION_MS);\n return () => window.clearTimeout(timer);\n }, [isClosing, setQuery]);\n\n const shouldRenderDrawer = hasValidId || isClosing;\n const drawerAssetId = isClosing ? (displayAssetId.current ?? assetId) : assetId;\n\n return {\n assetId: drawerAssetId,\n isVisible,\n shouldRenderDrawer,\n openDetails,\n closeDetails,\n };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DetailItem\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DetailItemProps {\n label: string;\n value: React.ReactNode;\n}\n\nconst DetailItemContainer = styled(Flex)`\n flex: 0 0 calc(50% - ${({ theme }) => theme.spaces[2]});\n`;\n\nconst DetailItem = ({ label, value }: DetailItemProps) => (\n <DetailItemContainer\n direction=\"column\"\n justifyContent=\"flex-start\"\n alignItems=\"flex-start\"\n gap={1}\n >\n <Typography\n variant=\"sigma\"\n textColor=\"neutral600\"\n fontWeight=\"semiBold\"\n textTransform=\"uppercase\"\n >\n {label}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral700\">\n {value ?? '-'}\n </Typography>\n </DetailItemContainer>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * DetailField\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledWarning = styled(WarningCircle)`\n width: 1.6rem;\n height: 1.6rem;\n\n path {\n fill: ${({ theme }) => theme.colors.warning500};\n }\n`;\n\ninterface DetailFieldProps {\n name: string;\n label: string;\n value: string | null | undefined;\n required?: boolean;\n}\n\nconst DetailField = ({ name, label, value, required }: DetailFieldProps) => (\n <Field.Root name={name} required={required}>\n <Field.Label>{label}</Field.Label>\n <TextInput\n value={value ?? ''}\n // TODO: handle onChange\n onChange={() => {}}\n endAction={!value ? <StyledWarning /> : undefined}\n type=\"text\"\n />\n </Field.Root>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * AssetDetails\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetDetailsProps {\n asset: AssetWithPopulatedCreatedBy;\n}\n\nconst AssetDetails = ({ asset }: AssetDetailsProps) => {\n const { formatMessage, formatDate } = useIntl();\n\n const isImage = asset.mime?.includes(AssetType.Image);\n\n return (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={5}\n paddingRight={5}\n >\n <Typography variant=\"beta\" fontWeight=\"semiBold\" tag=\"h3\">\n {formatMessage({\n id: getTranslationKey('asset-details.fileInfo'),\n defaultMessage: 'File info',\n })}\n </Typography>\n <Flex\n wrap=\"wrap\"\n gap={4}\n background=\"neutral100\"\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={6}\n paddingRight={6}\n alignItems=\"flex-start\"\n >\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.creationDate'),\n defaultMessage: 'Creation date',\n })}\n value={\n asset.createdAt\n ? formatDate(new Date(asset.createdAt), { dateStyle: 'long', timeStyle: 'short' })\n : null\n }\n />\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.lastUpdated'),\n defaultMessage: 'Last updated',\n })}\n value={\n asset.updatedAt\n ? formatDate(new Date(asset.updatedAt), { dateStyle: 'long', timeStyle: 'short' })\n : null\n }\n />\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.createdBy'),\n defaultMessage: 'Created by',\n })}\n value={\n asset.createdBy\n ? (getDisplayName({\n firstname: asset.createdBy.firstname ?? undefined,\n lastname: asset.createdBy.lastname ?? undefined,\n username: asset.createdBy.username ?? undefined,\n email: asset.createdBy.email ?? undefined,\n }) ?? '-')\n : null\n }\n />\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.size'),\n defaultMessage: 'Size',\n })}\n value={asset.size ? formatBytes(asset.size, 1) : null}\n />\n {isImage && (asset.width != null || asset.height != null) && (\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.dimensions'),\n defaultMessage: 'Dimensions',\n })}\n value={\n asset.width != null && asset.height != null\n ? `${asset.width} × ${asset.height}`\n : null\n }\n />\n )}\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.extension'),\n defaultMessage: 'Extension',\n })}\n value={getFileExtension(asset.ext)}\n />\n <DetailItem\n label={formatMessage({\n id: getTranslationKey('asset-details.assetId'),\n defaultMessage: 'Asset ID',\n })}\n value={String(asset.id)}\n />\n </Flex>\n <DetailField\n name=\"fileName\"\n label={formatMessage({\n id: getTranslationKey('asset-details.fileName'),\n defaultMessage: 'File name',\n })}\n value={asset.name}\n required\n />\n {isImage && (\n <>\n <DetailField\n name=\"caption\"\n label={formatMessage({\n id: getTranslationKey('asset-details.caption'),\n defaultMessage: 'Caption',\n })}\n value={asset.caption}\n />\n <DetailField\n name=\"alternativeText\"\n label={formatMessage({\n id: getTranslationKey('asset-details.alternativeText'),\n defaultMessage: 'Alternative text',\n })}\n value={asset.alternativeText}\n />\n </>\n )}\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DrawerHeader\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerHeaderProps {\n asset: AssetWithPopulatedCreatedBy;\n closeDetails: () => void;\n}\n\nconst DrawerHeader = ({ asset, closeDetails }: DrawerHeaderProps) => {\n const DocIcon = asset ? getAssetIcon(asset.mime, asset.ext) : FileError;\n return (\n <Flex gap={2} paddingLeft={5} paddingTop={3} paddingBottom={3} paddingRight={3}>\n <DocIcon width={20} height={20} />\n <Drawer.Title asChild>\n <Typography variant=\"omega\" fontWeight=\"semiBold\" overflow=\"hidden\" ellipsis tag=\"h2\">\n {asset.name}\n </Typography>\n </Drawer.Title>\n <Box marginLeft=\"auto\">\n <Drawer.CloseButton onClose={closeDetails}>\n <ArrowLineRight />\n </Drawer.CloseButton>\n </Box>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * DrawerContent\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DrawerContentProps {\n assetId: number;\n closeDetails: () => void;\n}\n\nconst DrawerContent = ({ assetId, closeDetails }: DrawerContentProps) => {\n const { formatMessage } = useIntl();\n const {\n data: asset,\n isLoading,\n error,\n } = useGetAssetQuery(assetId, {\n refetchOnMountOrArgChange: false,\n refetchOnReconnect: false,\n refetchOnFocus: false,\n });\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error || !asset) {\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4} padding={4}>\n <Alert\n variant=\"danger\"\n closeLabel={formatMessage({ id: 'global.close', defaultMessage: 'Close' })}\n onClose={closeDetails}\n >\n {formatMessage({\n id: getTranslationKey('asset-details.error'),\n defaultMessage: 'Failed to load file details.',\n })}\n </Alert>\n </Flex>\n );\n }\n\n return (\n <>\n <DrawerHeader asset={asset} closeDetails={closeDetails} />\n <Drawer.ScrollableContent>\n <AssetPreview asset={asset} />\n <AssetDetails asset={asset} />\n </Drawer.ScrollableContent>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetDetailsDrawer\n * -----------------------------------------------------------------------------------------------*/\n\nexport const AssetDetailsDrawer = () => {\n const { formatMessage } = useIntl();\n const { assetId, isVisible, shouldRenderDrawer, closeDetails } = useAssetDetailsParam();\n\n if (!shouldRenderDrawer || assetId === null) {\n return null;\n }\n\n return (\n <Drawer.Root isVisible={isVisible} onClose={closeDetails}>\n {/* Wrapper div required: Dialog.Portal uses asChild and merges ref onto each child.\n VisuallyHidden does not forward refs, so we wrap it in a div that can receive the ref. */}\n <div>\n <VisuallyHidden>\n <Drawer.Title>\n {formatMessage({\n id: getTranslationKey('asset-details.title'),\n defaultMessage: 'File details',\n })}\n </Drawer.Title>\n <Drawer.Description>\n {formatMessage({\n id: getTranslationKey('asset-details.description'),\n defaultMessage: 'Displays file information and metadata',\n })}\n </Drawer.Description>\n </VisuallyHidden>\n </div>\n <Drawer.Body animationDirection=\"left\" width=\"41.6rem\" height=\"100vh\">\n <DrawerContent assetId={assetId} closeDetails={closeDetails} />\n </Drawer.Body>\n </Drawer.Root>\n );\n};\n"],"names":["URL_PARAM","useAssetDetailsParam","query","setQuery","useQueryParams","detailsId","assetId","parseInt","hasValidId","Number","isNaN","isClosing","setIsClosing","React","useState","displayAssetId","useRef","isVisible","useEffect","current","openDetails","useCallback","id","String","closeDetails","timer","window","setTimeout","undefined","DRAWER_CLOSE_ANIMATION_MS","clearTimeout","shouldRenderDrawer","drawerAssetId","DetailItemContainer","styled","Flex","theme","spaces","DetailItem","label","value","_jsxs","direction","justifyContent","alignItems","gap","_jsx","Typography","variant","textColor","fontWeight","textTransform","StyledWarning","WarningCircle","colors","warning500","DetailField","name","required","Field","Root","Label","TextInput","onChange","endAction","type","AssetDetails","asset","formatMessage","formatDate","useIntl","isImage","mime","includes","AssetType","Image","paddingTop","paddingBottom","paddingLeft","paddingRight","tag","getTranslationKey","defaultMessage","wrap","background","createdAt","Date","dateStyle","timeStyle","updatedAt","createdBy","getDisplayName","firstname","lastname","username","email","size","formatBytes","width","height","getFileExtension","ext","_Fragment","caption","alternativeText","DrawerHeader","DocIcon","getAssetIcon","FileError","Drawer","Title","asChild","overflow","ellipsis","Box","marginLeft","CloseButton","onClose","ArrowLineRight","DrawerContent","data","isLoading","error","useGetAssetQuery","refetchOnMountOrArgChange","refetchOnReconnect","refetchOnFocus","padding","Loader","Alert","closeLabel","ScrollableContent","AssetPreview","AssetDetailsDrawer","div","VisuallyHidden","Description","Body","animationDirection"],"mappings":"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"}
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var reactIntl = require('react-intl');
|
|
7
|
+
var styledComponents = require('styled-components');
|
|
8
|
+
var enums = require('../../../../enums.js');
|
|
9
|
+
var files = require('../../../../utils/files.js');
|
|
10
|
+
var getAssetIcon = require('../../../../utils/getAssetIcon.js');
|
|
11
|
+
var translations = require('../../../../utils/translations.js');
|
|
12
|
+
|
|
13
|
+
function _interopNamespaceDefault(e) {
|
|
14
|
+
var n = Object.create(null);
|
|
15
|
+
if (e) {
|
|
16
|
+
Object.keys(e).forEach(function (k) {
|
|
17
|
+
if (k !== 'default') {
|
|
18
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
19
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return e[k]; }
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
n.default = e;
|
|
27
|
+
return Object.freeze(n);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
31
|
+
|
|
32
|
+
/* -------------------------------------------------------------------------------------------------
|
|
33
|
+
* Styled components
|
|
34
|
+
* -----------------------------------------------------------------------------------------------*/ const PreviewContainer = styledComponents.styled(designSystem.Box)`
|
|
35
|
+
position: relative;
|
|
36
|
+
width: 100%;
|
|
37
|
+
aspect-ratio: 16 / 9;
|
|
38
|
+
max-height: 24rem;
|
|
39
|
+
overflow: hidden;
|
|
40
|
+
border-radius: ${({ theme })=>theme.borderRadius};
|
|
41
|
+
padding: ${({ theme })=>theme.spaces[3]};
|
|
42
|
+
background: repeating-conic-gradient(
|
|
43
|
+
${({ theme })=>theme.colors.neutral100} 0% 25%,
|
|
44
|
+
transparent 0% 50%
|
|
45
|
+
)
|
|
46
|
+
50% / 20px 20px;
|
|
47
|
+
`;
|
|
48
|
+
const AssetContainer = styledComponents.styled(designSystem.Flex)`
|
|
49
|
+
justify-content: center;
|
|
50
|
+
position: relative;
|
|
51
|
+
z-index: 2;
|
|
52
|
+
width: 100%;
|
|
53
|
+
height: 100%;
|
|
54
|
+
`;
|
|
55
|
+
const StyledImage = styledComponents.styled.img`
|
|
56
|
+
max-width: 100%;
|
|
57
|
+
max-height: 100%;
|
|
58
|
+
object-fit: contain;
|
|
59
|
+
`;
|
|
60
|
+
const StyledVideo = styledComponents.styled.video`
|
|
61
|
+
max-width: 100%;
|
|
62
|
+
max-height: 100%;
|
|
63
|
+
object-fit: contain;
|
|
64
|
+
`;
|
|
65
|
+
const StyledAudio = styledComponents.styled.audio`
|
|
66
|
+
width: 100%;
|
|
67
|
+
`;
|
|
68
|
+
const StyledPdfIframe = styledComponents.styled.iframe`
|
|
69
|
+
width: 100%;
|
|
70
|
+
height: 100%;
|
|
71
|
+
min-height: 200px;
|
|
72
|
+
border: none;
|
|
73
|
+
`;
|
|
74
|
+
const IconFallback = styledComponents.styled(designSystem.Flex)`
|
|
75
|
+
height: 100%;
|
|
76
|
+
aspect-ratio: 1;
|
|
77
|
+
width: auto;
|
|
78
|
+
max-width: 100%;
|
|
79
|
+
margin: 0 auto;
|
|
80
|
+
color: ${({ theme })=>theme.colors.neutral500};
|
|
81
|
+
background: ${({ theme })=>theme.colors.neutral150};
|
|
82
|
+
`;
|
|
83
|
+
const LoaderOverlay = styledComponents.styled(designSystem.Flex)`
|
|
84
|
+
position: absolute;
|
|
85
|
+
inset: 0;
|
|
86
|
+
z-index: 1;
|
|
87
|
+
`;
|
|
88
|
+
/* -------------------------------------------------------------------------------------------------
|
|
89
|
+
* AssetLoader
|
|
90
|
+
* -----------------------------------------------------------------------------------------------*/ const AssetLoader = ()=>{
|
|
91
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
92
|
+
return /*#__PURE__*/ jsxRuntime.jsx(LoaderOverlay, {
|
|
93
|
+
justifyContent: "center",
|
|
94
|
+
alignItems: "center",
|
|
95
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
|
|
96
|
+
children: formatMessage({
|
|
97
|
+
id: 'app.loading',
|
|
98
|
+
defaultMessage: 'Loading...'
|
|
99
|
+
})
|
|
100
|
+
})
|
|
101
|
+
});
|
|
102
|
+
};
|
|
103
|
+
const AssetPreview = ({ asset })=>{
|
|
104
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
105
|
+
const { alternativeText, ext, mime, url } = asset;
|
|
106
|
+
const mediaUrl = files.prefixFileUrlWithBackendUrl(url);
|
|
107
|
+
const [isMediaLoaded, setIsMediaLoaded] = React__namespace.useState(false);
|
|
108
|
+
React__namespace.useEffect(()=>{
|
|
109
|
+
setIsMediaLoaded(false);
|
|
110
|
+
}, [
|
|
111
|
+
mediaUrl
|
|
112
|
+
]);
|
|
113
|
+
if (mime?.includes(enums.AssetType.Image)) {
|
|
114
|
+
const imageUrl = files.prefixFileUrlWithBackendUrl(url);
|
|
115
|
+
if (imageUrl) {
|
|
116
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PreviewContainer, {
|
|
117
|
+
children: [
|
|
118
|
+
!isMediaLoaded && /*#__PURE__*/ jsxRuntime.jsx(AssetLoader, {}),
|
|
119
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetContainer, {
|
|
120
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledImage, {
|
|
121
|
+
src: imageUrl,
|
|
122
|
+
alt: alternativeText || asset.name || '',
|
|
123
|
+
onLoad: ()=>setIsMediaLoaded(true),
|
|
124
|
+
onError: ()=>setIsMediaLoaded(true)
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (mime?.includes(enums.AssetType.Video) && mediaUrl) {
|
|
132
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PreviewContainer, {
|
|
133
|
+
children: [
|
|
134
|
+
!isMediaLoaded && /*#__PURE__*/ jsxRuntime.jsx(AssetLoader, {}),
|
|
135
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetContainer, {
|
|
136
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledVideo, {
|
|
137
|
+
src: mediaUrl,
|
|
138
|
+
controls: true,
|
|
139
|
+
title: asset.name,
|
|
140
|
+
onLoadedData: ()=>setIsMediaLoaded(true),
|
|
141
|
+
onError: ()=>setIsMediaLoaded(true),
|
|
142
|
+
children: formatMessage({
|
|
143
|
+
id: translations.getTranslationKey('asset-details.videoNotSupported'),
|
|
144
|
+
defaultMessage: 'Your browser does not support the video tag.'
|
|
145
|
+
})
|
|
146
|
+
})
|
|
147
|
+
})
|
|
148
|
+
]
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
if (mime?.includes(enums.AssetType.Audio) && mediaUrl) {
|
|
152
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PreviewContainer, {
|
|
153
|
+
children: [
|
|
154
|
+
!isMediaLoaded && /*#__PURE__*/ jsxRuntime.jsx(AssetLoader, {}),
|
|
155
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetContainer, {
|
|
156
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
|
|
157
|
+
width: "100%",
|
|
158
|
+
padding: 4,
|
|
159
|
+
justifyContent: "center",
|
|
160
|
+
alignItems: "center",
|
|
161
|
+
height: "100%",
|
|
162
|
+
minHeight: "12rem",
|
|
163
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledAudio, {
|
|
164
|
+
src: mediaUrl,
|
|
165
|
+
controls: true,
|
|
166
|
+
onLoadedData: ()=>setIsMediaLoaded(true),
|
|
167
|
+
onError: ()=>setIsMediaLoaded(true)
|
|
168
|
+
})
|
|
169
|
+
})
|
|
170
|
+
})
|
|
171
|
+
]
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const isPdf = ext?.toLowerCase() === 'pdf' || ext?.toLowerCase() === '.pdf' || mime === 'application/pdf';
|
|
175
|
+
if (isPdf && mediaUrl) {
|
|
176
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PreviewContainer, {
|
|
177
|
+
children: [
|
|
178
|
+
!isMediaLoaded && /*#__PURE__*/ jsxRuntime.jsx(AssetLoader, {}),
|
|
179
|
+
/*#__PURE__*/ jsxRuntime.jsx(AssetContainer, {
|
|
180
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(StyledPdfIframe, {
|
|
181
|
+
src: `${mediaUrl}#toolbar=0`,
|
|
182
|
+
title: asset.name,
|
|
183
|
+
onLoad: ()=>setIsMediaLoaded(true)
|
|
184
|
+
})
|
|
185
|
+
})
|
|
186
|
+
]
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
const DocIcon = getAssetIcon.getAssetIcon(mime, ext);
|
|
190
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PreviewContainer, {
|
|
191
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(IconFallback, {
|
|
192
|
+
justifyContent: "center",
|
|
193
|
+
alignItems: "center",
|
|
194
|
+
gap: 1,
|
|
195
|
+
direction: "column",
|
|
196
|
+
hasRadius: true,
|
|
197
|
+
children: [
|
|
198
|
+
/*#__PURE__*/ jsxRuntime.jsx(DocIcon, {
|
|
199
|
+
width: 24,
|
|
200
|
+
height: 24
|
|
201
|
+
}),
|
|
202
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
|
|
203
|
+
variant: "pi",
|
|
204
|
+
children: formatMessage({
|
|
205
|
+
id: translations.getTranslationKey('asset-details.noPreview'),
|
|
206
|
+
defaultMessage: 'No preview available'
|
|
207
|
+
})
|
|
208
|
+
})
|
|
209
|
+
]
|
|
210
|
+
})
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
exports.AssetPreview = AssetPreview;
|
|
215
|
+
//# sourceMappingURL=AssetPreview.js.map
|