@strapi/upload 5.37.1 → 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
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { useRef, useCallback } from 'react';
|
|
1
|
+
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useState, useRef, useCallback } from 'react';
|
|
3
3
|
import * as ToggleGroup from '@radix-ui/react-toggle-group';
|
|
4
4
|
import { usePersistentState, Layouts, useElementOnScreen } from '@strapi/admin/strapi-admin';
|
|
5
|
-
import { Box, VisuallyHidden, SimpleMenu, MenuItem,
|
|
6
|
-
import {
|
|
5
|
+
import { Box, VisuallyHidden, Flex, SimpleMenu, MenuItem, Loader, Typography } from '@strapi/design-system';
|
|
6
|
+
import { List, GridFour, Folder, Files, Link, ChevronDown } from '@strapi/icons';
|
|
7
7
|
import { useIntl } from 'react-intl';
|
|
8
8
|
import { styled } from 'styled-components';
|
|
9
|
-
import { useUploadFilesStreamMutation } from '../../services/api.mjs';
|
|
9
|
+
import { useUploadFilesStreamMutation, useUploadFromUrlsMutation } from '../../services/api.mjs';
|
|
10
10
|
import { useGetFoldersQuery } from '../../services/folders.mjs';
|
|
11
11
|
import { getTranslationKey } from '../../utils/translations.mjs';
|
|
12
|
+
import { useAssetDetailsParam, AssetDetailsDrawer } from './components/AssetDetails/AssetDetailsDrawer.mjs';
|
|
12
13
|
import { AssetsGrid } from './components/AssetsGrid.mjs';
|
|
13
14
|
import { AssetsTable } from './components/AssetsTable.mjs';
|
|
15
|
+
import { CreateFolderDialog } from './components/CreateFolderDialog.mjs';
|
|
14
16
|
import { DropZoneWithOverlay, DropFilesMessage } from './components/DropZone/UploadDropZone.mjs';
|
|
15
17
|
import { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext.mjs';
|
|
18
|
+
import { ImportFromUrlDialog } from './components/ImportFromUrlDialog.mjs';
|
|
16
19
|
import { localStorageKeys, viewOptions } from './constants.mjs';
|
|
17
20
|
import { useFolderInfo } from './hooks/useFolderInfo.mjs';
|
|
18
21
|
import { useFolderNavigation } from './hooks/useFolderNavigation.mjs';
|
|
@@ -21,7 +24,7 @@ import { useInfiniteAssets } from './hooks/useInfiniteAssets.mjs';
|
|
|
21
24
|
const INTERSECTION_OPTIONS = {
|
|
22
25
|
threshold: 0.1
|
|
23
26
|
};
|
|
24
|
-
const AssetsView = ({ view, folderId })=>{
|
|
27
|
+
const AssetsView = ({ view, folderId, onAssetItemClick })=>{
|
|
25
28
|
const { formatMessage } = useIntl();
|
|
26
29
|
const { assets, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error } = useInfiniteAssets({
|
|
27
30
|
folder: folderId
|
|
@@ -80,10 +83,12 @@ const AssetsView = ({ view, folderId })=>{
|
|
|
80
83
|
children: [
|
|
81
84
|
isGridView ? /*#__PURE__*/ jsx(AssetsGrid, {
|
|
82
85
|
folders: folders,
|
|
83
|
-
assets: assets
|
|
86
|
+
assets: assets,
|
|
87
|
+
onAssetItemClick: onAssetItemClick
|
|
84
88
|
}) : /*#__PURE__*/ jsx(AssetsTable, {
|
|
85
89
|
assets: assets,
|
|
86
|
-
folders: folders
|
|
90
|
+
folders: folders,
|
|
91
|
+
onAssetItemClick: onAssetItemClick
|
|
87
92
|
}),
|
|
88
93
|
/*#__PURE__*/ jsx("div", {
|
|
89
94
|
ref: loadMoreRef,
|
|
@@ -137,7 +142,7 @@ const StyledToggleItem = styled(ToggleGroup.Item)`
|
|
|
137
142
|
height: 1.6rem;
|
|
138
143
|
}
|
|
139
144
|
`;
|
|
140
|
-
const HeaderWrapper = styled
|
|
145
|
+
const HeaderWrapper = styled(Box)`
|
|
141
146
|
[data-strapi-header] {
|
|
142
147
|
background: ${({ theme })=>theme.colors.neutral0};
|
|
143
148
|
|
|
@@ -148,6 +153,7 @@ const HeaderWrapper = styled.div`
|
|
|
148
153
|
`;
|
|
149
154
|
const AssetsPage = ()=>{
|
|
150
155
|
const { formatMessage } = useIntl();
|
|
156
|
+
const { openDetails } = useAssetDetailsParam();
|
|
151
157
|
const { currentFolderId } = useFolderNavigation();
|
|
152
158
|
const { title, itemCount } = useFolderInfo(currentFolderId);
|
|
153
159
|
const itemCountLabel = formatMessage({
|
|
@@ -156,14 +162,18 @@ const AssetsPage = ()=>{
|
|
|
156
162
|
}, {
|
|
157
163
|
count: itemCount
|
|
158
164
|
});
|
|
165
|
+
const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);
|
|
159
166
|
// View state
|
|
160
167
|
const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);
|
|
161
168
|
const isGridView = view === viewOptions.GRID;
|
|
169
|
+
// Dialog state
|
|
170
|
+
const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);
|
|
162
171
|
// Refs
|
|
163
172
|
const fileInputRef = useRef(null);
|
|
164
173
|
const uploadDropZoneRef = useRef(null);
|
|
165
174
|
// Upload handlers
|
|
166
175
|
const [uploadFilesStream] = useUploadFilesStreamMutation();
|
|
176
|
+
const [uploadFromUrls] = useUploadFromUrlsMutation();
|
|
167
177
|
const uploadFilesToFolder = async (files, folderId)=>{
|
|
168
178
|
if (files.length === 0) return;
|
|
169
179
|
const formData = new FormData();
|
|
@@ -200,94 +210,126 @@ const AssetsPage = ()=>{
|
|
|
200
210
|
const handleDrop = async (files)=>{
|
|
201
211
|
await uploadFilesToFolder(files, currentFolderId);
|
|
202
212
|
};
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
/*#__PURE__*/
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
}),
|
|
230
|
-
children: /*#__PURE__*/ jsx(MenuItem, {
|
|
231
|
-
onSelect: handleFileSelect,
|
|
232
|
-
startIcon: /*#__PURE__*/ jsx(Files, {}),
|
|
233
|
-
children: formatMessage({
|
|
234
|
-
id: getTranslationKey('import-files'),
|
|
235
|
-
defaultMessage: 'Import files'
|
|
236
|
-
})
|
|
213
|
+
const handleUrlUpload = async (urls)=>{
|
|
214
|
+
try {
|
|
215
|
+
await uploadFromUrls({
|
|
216
|
+
urls,
|
|
217
|
+
folderId: currentFolderId
|
|
218
|
+
}).unwrap();
|
|
219
|
+
} catch (error) {
|
|
220
|
+
// Error is already dispatched to store from the API queryFn
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
return /*#__PURE__*/ jsxs(Fragment, {
|
|
224
|
+
children: [
|
|
225
|
+
/*#__PURE__*/ jsx(UploadDropZoneProvider, {
|
|
226
|
+
onDrop: handleDrop,
|
|
227
|
+
children: /*#__PURE__*/ jsx(Box, {
|
|
228
|
+
ref: uploadDropZoneRef,
|
|
229
|
+
children: /*#__PURE__*/ jsxs(Layouts.Root, {
|
|
230
|
+
minHeight: "100vh",
|
|
231
|
+
background: "neutral0",
|
|
232
|
+
children: [
|
|
233
|
+
/*#__PURE__*/ jsx(VisuallyHidden, {
|
|
234
|
+
children: /*#__PURE__*/ jsx("input", {
|
|
235
|
+
type: "file",
|
|
236
|
+
ref: fileInputRef,
|
|
237
|
+
onChange: handleFileChange,
|
|
238
|
+
multiple: true
|
|
237
239
|
})
|
|
238
240
|
}),
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
241
|
+
/*#__PURE__*/ jsx(HeaderWrapper, {
|
|
242
|
+
children: /*#__PURE__*/ jsx(Layouts.Header, {
|
|
243
|
+
title: `${title} (${itemCountLabel})`,
|
|
244
|
+
primaryAction: /*#__PURE__*/ jsxs(SimpleMenu, {
|
|
245
|
+
popoverPlacement: "bottom-end",
|
|
246
|
+
variant: "default",
|
|
247
|
+
endIcon: /*#__PURE__*/ jsx(ChevronDown, {}),
|
|
248
|
+
label: formatMessage({
|
|
249
|
+
id: getTranslationKey('new'),
|
|
250
|
+
defaultMessage: 'New'
|
|
251
|
+
}),
|
|
252
|
+
children: [
|
|
253
|
+
/*#__PURE__*/ jsx(MenuItem, {
|
|
254
|
+
onSelect: ()=>setIsCreateFolderDialogOpen(true),
|
|
255
|
+
startIcon: /*#__PURE__*/ jsx(Folder, {}),
|
|
256
|
+
children: formatMessage({
|
|
257
|
+
id: getTranslationKey('folder.create.title'),
|
|
258
|
+
defaultMessage: 'New folder'
|
|
259
|
+
})
|
|
260
|
+
}),
|
|
261
|
+
/*#__PURE__*/ jsx(MenuItem, {
|
|
262
|
+
onSelect: handleFileSelect,
|
|
263
|
+
startIcon: /*#__PURE__*/ jsx(Files, {}),
|
|
264
|
+
children: formatMessage({
|
|
265
|
+
id: getTranslationKey('import-files'),
|
|
266
|
+
defaultMessage: 'Import files'
|
|
267
|
+
})
|
|
268
|
+
}),
|
|
269
|
+
/*#__PURE__*/ jsx(MenuItem, {
|
|
270
|
+
onSelect: ()=>setIsUrlDialogOpen(true),
|
|
271
|
+
startIcon: /*#__PURE__*/ jsx(Link, {}),
|
|
272
|
+
children: formatMessage({
|
|
273
|
+
id: getTranslationKey('import-from-url'),
|
|
274
|
+
defaultMessage: 'Import from URL'
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
]
|
|
249
278
|
}),
|
|
250
|
-
/*#__PURE__*/ jsxs(Flex, {
|
|
251
|
-
|
|
279
|
+
subtitle: /*#__PURE__*/ jsxs(Flex, {
|
|
280
|
+
justifyContent: "space-between",
|
|
252
281
|
alignItems: "center",
|
|
282
|
+
gap: 4,
|
|
283
|
+
width: "100%",
|
|
253
284
|
children: [
|
|
254
|
-
/*#__PURE__*/ jsx(
|
|
255
|
-
|
|
285
|
+
/*#__PURE__*/ jsx(Flex, {
|
|
286
|
+
gap: 4,
|
|
287
|
+
alignItems: "center",
|
|
288
|
+
children: "TODO: Filters and search"
|
|
256
289
|
}),
|
|
257
|
-
/*#__PURE__*/ jsxs(
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
onValueChange: (value)=>value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE),
|
|
261
|
-
"aria-label": formatMessage({
|
|
262
|
-
id: getTranslationKey('view.switch.label'),
|
|
263
|
-
defaultMessage: 'View options'
|
|
264
|
-
}),
|
|
290
|
+
/*#__PURE__*/ jsxs(Flex, {
|
|
291
|
+
gap: 4,
|
|
292
|
+
alignItems: "center",
|
|
265
293
|
children: [
|
|
266
|
-
/*#__PURE__*/
|
|
267
|
-
|
|
268
|
-
"aria-label": formatMessage({
|
|
269
|
-
id: getTranslationKey('view.table'),
|
|
270
|
-
defaultMessage: 'Table view'
|
|
271
|
-
}),
|
|
272
|
-
children: [
|
|
273
|
-
/*#__PURE__*/ jsx(List, {}),
|
|
274
|
-
formatMessage({
|
|
275
|
-
id: getTranslationKey('view.table'),
|
|
276
|
-
defaultMessage: 'Table view'
|
|
277
|
-
})
|
|
278
|
-
]
|
|
294
|
+
/*#__PURE__*/ jsx(Box, {
|
|
295
|
+
children: "TODO: Sort"
|
|
279
296
|
}),
|
|
280
|
-
/*#__PURE__*/ jsxs(
|
|
281
|
-
|
|
297
|
+
/*#__PURE__*/ jsxs(StyledToggleGroup, {
|
|
298
|
+
type: "single",
|
|
299
|
+
value: isGridView ? 'grid' : 'table',
|
|
300
|
+
onValueChange: (value)=>value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE),
|
|
282
301
|
"aria-label": formatMessage({
|
|
283
|
-
id: getTranslationKey('view.
|
|
284
|
-
defaultMessage: '
|
|
302
|
+
id: getTranslationKey('view.switch.label'),
|
|
303
|
+
defaultMessage: 'View options'
|
|
285
304
|
}),
|
|
286
305
|
children: [
|
|
287
|
-
/*#__PURE__*/
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
306
|
+
/*#__PURE__*/ jsxs(StyledToggleItem, {
|
|
307
|
+
value: "table",
|
|
308
|
+
"aria-label": formatMessage({
|
|
309
|
+
id: getTranslationKey('view.table'),
|
|
310
|
+
defaultMessage: 'Table view'
|
|
311
|
+
}),
|
|
312
|
+
children: [
|
|
313
|
+
/*#__PURE__*/ jsx(List, {}),
|
|
314
|
+
formatMessage({
|
|
315
|
+
id: getTranslationKey('view.table'),
|
|
316
|
+
defaultMessage: 'Table view'
|
|
317
|
+
})
|
|
318
|
+
]
|
|
319
|
+
}),
|
|
320
|
+
/*#__PURE__*/ jsxs(StyledToggleItem, {
|
|
321
|
+
value: "grid",
|
|
322
|
+
"aria-label": formatMessage({
|
|
323
|
+
id: getTranslationKey('view.grid'),
|
|
324
|
+
defaultMessage: 'Grid view'
|
|
325
|
+
}),
|
|
326
|
+
children: [
|
|
327
|
+
/*#__PURE__*/ jsx(GridFour, {}),
|
|
328
|
+
formatMessage({
|
|
329
|
+
id: getTranslationKey('view.grid'),
|
|
330
|
+
defaultMessage: 'Grid view'
|
|
331
|
+
})
|
|
332
|
+
]
|
|
291
333
|
})
|
|
292
334
|
]
|
|
293
335
|
})
|
|
@@ -295,27 +337,40 @@ const AssetsPage = ()=>{
|
|
|
295
337
|
})
|
|
296
338
|
]
|
|
297
339
|
})
|
|
298
|
-
]
|
|
299
|
-
})
|
|
300
|
-
})
|
|
301
|
-
}),
|
|
302
|
-
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
303
|
-
children: /*#__PURE__*/ jsxs(DropZoneWithOverlay, {
|
|
304
|
-
children: [
|
|
305
|
-
/*#__PURE__*/ jsx(DropFilesMessage, {
|
|
306
|
-
uploadDropZoneRef: uploadDropZoneRef,
|
|
307
|
-
folderName: title
|
|
308
|
-
}),
|
|
309
|
-
/*#__PURE__*/ jsx(AssetsView, {
|
|
310
|
-
view: view,
|
|
311
|
-
folderId: currentFolderId
|
|
312
340
|
})
|
|
313
|
-
|
|
314
|
-
|
|
341
|
+
}),
|
|
342
|
+
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
343
|
+
children: /*#__PURE__*/ jsxs(DropZoneWithOverlay, {
|
|
344
|
+
children: [
|
|
345
|
+
/*#__PURE__*/ jsx(DropFilesMessage, {
|
|
346
|
+
uploadDropZoneRef: uploadDropZoneRef,
|
|
347
|
+
folderName: title
|
|
348
|
+
}),
|
|
349
|
+
/*#__PURE__*/ jsx(AssetsView, {
|
|
350
|
+
view: view,
|
|
351
|
+
folderId: currentFolderId,
|
|
352
|
+
onAssetItemClick: openDetails
|
|
353
|
+
})
|
|
354
|
+
]
|
|
355
|
+
})
|
|
356
|
+
})
|
|
357
|
+
]
|
|
315
358
|
})
|
|
316
|
-
|
|
317
|
-
})
|
|
318
|
-
|
|
359
|
+
})
|
|
360
|
+
}),
|
|
361
|
+
/*#__PURE__*/ jsx(CreateFolderDialog, {
|
|
362
|
+
open: isCreateFolderDialogOpen,
|
|
363
|
+
folderName: title,
|
|
364
|
+
parentFolderId: currentFolderId,
|
|
365
|
+
onClose: ()=>setIsCreateFolderDialogOpen(false)
|
|
366
|
+
}),
|
|
367
|
+
/*#__PURE__*/ jsx(ImportFromUrlDialog, {
|
|
368
|
+
open: isUrlDialogOpen,
|
|
369
|
+
onClose: ()=>setIsUrlDialogOpen(false),
|
|
370
|
+
onUpload: handleUrlUpload
|
|
371
|
+
}),
|
|
372
|
+
/*#__PURE__*/ jsx(AssetDetailsDrawer, {})
|
|
373
|
+
]
|
|
319
374
|
});
|
|
320
375
|
};
|
|
321
376
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetsPage.mjs","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ChevronDown, Files, GridFour as GridIcon, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUploadFilesStreamMutation } from '../../services/api';\nimport { useGetFoldersQuery } from '../../services/folders';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsTable } from './components/AssetsTable';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\n\nimport type { UploadFileInfo } from '../../../../../shared/contracts/files';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folderId: number | null;\n}\n\nconst AssetsView = ({ view, folderId }: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n const {\n assets,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n } = useInfiniteAssets({ folder: folderId });\n const { data: folders = [], isLoading: isLoadingFolders } = useGetFoldersQuery({\n parentId: folderId,\n });\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\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) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n return (\n <Box padding={8}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n </Typography>\n </Box>\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} />\n ) : (\n <AssetsTable assets={assets} folders={folders} />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border: none;\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral150};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled.div`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n\n const { currentFolderId } = useFolderNavigation();\n const { title, itemCount } = useFolderInfo(currentFolderId);\n const itemCountLabel = formatMessage(\n {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n },\n { count: itemCount }\n );\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFilesStream] = useUploadFilesStreamMutation();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFilesStream({ formData, totalFiles: files.length }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n return (\n <UploadDropZoneProvider onDrop={handleDrop}>\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root minHeight=\"100vh\" background=\"neutral0\">\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={`${title} (${itemCountLabel})`}\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n subtitle={\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={4} width=\"100%\">\n <Flex gap={4} alignItems=\"center\">\n TODO: Filters and search\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <Box>TODO: Sort</Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView view={view} folderId={currentFolderId} />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </UploadDropZoneProvider>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","AssetsView","view","folderId","formatMessage","useIntl","assets","isLoading","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","useInfiniteAssets","folder","data","folders","isLoadingFolders","useGetFoldersQuery","parentId","isGridView","viewOptions","GRID","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","id","defaultMessage","Box","Typography","textColor","getTranslationKey","length","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","StyledToggleGroup","styled","ToggleGroup","Root","theme","colors","neutral200","borderRadius","StyledToggleItem","Item","spaces","neutral0","neutral800","fontSizes","fontWeights","semiBold","primary100","neutral150","HeaderWrapper","AssetsPage","currentFolderId","useFolderNavigation","title","itemCount","useFolderInfo","itemCountLabel","count","setView","usePersistentState","localStorageKeys","fileInputRef","useRef","uploadDropZoneRef","uploadFilesStream","useUploadFilesStreamMutation","uploadFilesToFolder","files","formData","FormData","fileInfoArray","forEach","file","append","push","name","caption","alternativeText","JSON","stringify","totalFiles","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","UploadDropZoneProvider","onDrop","Layouts","minHeight","background","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Files","subtitle","alignItems","gap","width","onValueChange","TABLE","aria-label","List","GridIcon","Content","DropZoneWithOverlay","DropFilesMessage","folderName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssetsPage.mjs","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, useState, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ChevronDown, Files, Folder, GridFour as GridIcon, Link, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUploadFilesStreamMutation, useUploadFromUrlsMutation } from '../../services/api';\nimport { useGetFoldersQuery } from '../../services/folders';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport {\n AssetDetailsDrawer,\n useAssetDetailsParam,\n} from './components/AssetDetails/AssetDetailsDrawer';\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsTable } from './components/AssetsTable';\nimport { CreateFolderDialog } from './components/CreateFolderDialog';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { ImportFromUrlDialog } from './components/ImportFromUrlDialog';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\n\nimport type { UploadFileInfo } from '../../../../../shared/contracts/files';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folderId: number | null;\n onAssetItemClick: (assetId: number) => void;\n}\n\nconst AssetsView = ({ view, folderId, onAssetItemClick }: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n const {\n assets,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n } = useInfiniteAssets({ folder: folderId });\n const { data: folders = [], isLoading: isLoadingFolders } = useGetFoldersQuery({\n parentId: folderId,\n });\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\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) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n return (\n <Box padding={8}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n </Typography>\n </Box>\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} onAssetItemClick={onAssetItemClick} />\n ) : (\n <AssetsTable assets={assets} folders={folders} onAssetItemClick={onAssetItemClick} />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border: none;\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral150};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled(Box)`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n const { openDetails } = useAssetDetailsParam();\n\n const { currentFolderId } = useFolderNavigation();\n const { title, itemCount } = useFolderInfo(currentFolderId);\n const itemCountLabel = formatMessage(\n {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n },\n { count: itemCount }\n );\n\n const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Dialog state\n const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFilesStream] = useUploadFilesStreamMutation();\n const [uploadFromUrls] = useUploadFromUrlsMutation();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFilesStream({ formData, totalFiles: files.length }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n const handleUrlUpload = async (urls: string[]) => {\n try {\n await uploadFromUrls({ urls, folderId: currentFolderId }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n return (\n <>\n <UploadDropZoneProvider onDrop={handleDrop}>\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root minHeight=\"100vh\" background=\"neutral0\">\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={`${title} (${itemCountLabel})`}\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem\n onSelect={() => setIsCreateFolderDialogOpen(true)}\n startIcon={<Folder />}\n >\n {formatMessage({\n id: getTranslationKey('folder.create.title'),\n defaultMessage: 'New folder',\n })}\n </MenuItem>\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n <MenuItem onSelect={() => setIsUrlDialogOpen(true)} startIcon={<Link />}>\n {formatMessage({\n id: getTranslationKey('import-from-url'),\n defaultMessage: 'Import from URL',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n subtitle={\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={4} width=\"100%\">\n <Flex gap={4} alignItems=\"center\">\n TODO: Filters and search\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <Box>TODO: Sort</Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView view={view} folderId={currentFolderId} onAssetItemClick={openDetails} />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </UploadDropZoneProvider>\n <CreateFolderDialog\n open={isCreateFolderDialogOpen}\n folderName={title}\n parentFolderId={currentFolderId}\n onClose={() => setIsCreateFolderDialogOpen(false)}\n />\n <ImportFromUrlDialog\n open={isUrlDialogOpen}\n onClose={() => setIsUrlDialogOpen(false)}\n onUpload={handleUrlUpload}\n />\n <AssetDetailsDrawer />\n </>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","AssetsView","view","folderId","onAssetItemClick","formatMessage","useIntl","assets","isLoading","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","useInfiniteAssets","folder","data","folders","isLoadingFolders","useGetFoldersQuery","parentId","isGridView","viewOptions","GRID","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","id","defaultMessage","Box","Typography","textColor","getTranslationKey","length","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","StyledToggleGroup","styled","ToggleGroup","Root","theme","colors","neutral200","borderRadius","StyledToggleItem","Item","spaces","neutral0","neutral800","fontSizes","fontWeights","semiBold","primary100","neutral150","HeaderWrapper","AssetsPage","openDetails","useAssetDetailsParam","currentFolderId","useFolderNavigation","title","itemCount","useFolderInfo","itemCountLabel","count","isCreateFolderDialogOpen","setIsCreateFolderDialogOpen","useState","setView","usePersistentState","localStorageKeys","isUrlDialogOpen","setIsUrlDialogOpen","fileInputRef","useRef","uploadDropZoneRef","uploadFilesStream","useUploadFilesStreamMutation","uploadFromUrls","useUploadFromUrlsMutation","uploadFilesToFolder","files","formData","FormData","fileInfoArray","forEach","file","append","push","name","caption","alternativeText","JSON","stringify","totalFiles","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","handleUrlUpload","urls","UploadDropZoneProvider","onDrop","Layouts","minHeight","background","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Folder","Files","Link","subtitle","alignItems","gap","width","onValueChange","TABLE","aria-label","List","GridIcon","Content","DropZoneWithOverlay","DropFilesMessage","folderName","CreateFolderDialog","open","parentFolderId","onClose","ImportFromUrlDialog","onUpload","AssetDetailsDrawer"],"mappings":"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"}
|