@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../../admin/src/future/pages/Assets/constants.ts"],"sourcesContent":["import { getTranslationKey } from '../../utils/translations';\n\nexport const localStorageKeys = {\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n TABLE: 1,\n};\n\ninterface TableHeader {\n name: string;\n label: { id: string; defaultMessage: string };\n isVisuallyHidden?: boolean;\n}\n\nexport const TABLE_HEADERS: TableHeader[] = [\n {\n name: 'name',\n label: { id: getTranslationKey('list.table.header.name'), defaultMessage: 'name' },\n },\n {\n name: 'createdAt',\n label: {\n id: getTranslationKey('list.table.header.creationDate'),\n defaultMessage: 'creation date',\n },\n },\n {\n name: 'updatedAt',\n label: {\n id: getTranslationKey('list.table.header.lastModified'),\n defaultMessage: 'last modified',\n },\n },\n {\n name: 'size',\n label: { id: getTranslationKey('list.table.header.size'), defaultMessage: 'size' },\n },\n {\n name: 'actions',\n label: { id: getTranslationKey('list.table.header.actions'), defaultMessage: 'actions' },\n isVisuallyHidden: true,\n },\n];\n"],"names":["localStorageKeys","view","viewOptions","GRID","TABLE","TABLE_HEADERS","name","label","id","getTranslationKey","defaultMessage","isVisuallyHidden"],"mappings":";;;;MAEaA,
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../../admin/src/future/pages/Assets/constants.ts"],"sourcesContent":["import { getTranslationKey } from '../../utils/translations';\n\nexport const localStorageKeys = {\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n TABLE: 1,\n};\n\ninterface TableHeader {\n name: string;\n label: { id: string; defaultMessage: string };\n isVisuallyHidden?: boolean;\n}\n\nexport const TABLE_HEADERS: TableHeader[] = [\n {\n name: 'name',\n label: { id: getTranslationKey('list.table.header.name'), defaultMessage: 'name' },\n },\n {\n name: 'createdAt',\n label: {\n id: getTranslationKey('list.table.header.creationDate'),\n defaultMessage: 'creation date',\n },\n },\n {\n name: 'updatedAt',\n label: {\n id: getTranslationKey('list.table.header.lastModified'),\n defaultMessage: 'last modified',\n },\n },\n {\n name: 'size',\n label: { id: getTranslationKey('list.table.header.size'), defaultMessage: 'size' },\n },\n {\n name: 'actions',\n label: { id: getTranslationKey('list.table.header.actions'), defaultMessage: 'actions' },\n isVisuallyHidden: true,\n },\n];\n"],"names":["localStorageKeys","view","viewOptions","GRID","TABLE","TABLE_HEADERS","name","label","id","getTranslationKey","defaultMessage","isVisuallyHidden"],"mappings":";;;;MAEaA,gBAAAA,GAAmB;IAC9BC,IAAAA,EAAM,CAAC,0BAA0B;AACnC;MAEaC,WAAAA,GAAc;IACzBC,IAAAA,EAAM,CAAA;IACNC,KAAAA,EAAO;AACT;MAQaC,aAAAA,GAA+B;AAC1C,IAAA;QACEC,IAAAA,EAAM,MAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,wBAAA,CAAA;YAA2BC,cAAAA,EAAgB;AAAO;AACnF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,WAAA;QACNC,KAAAA,EAAO;AACLC,YAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,gCAAA,CAAA;YACtBC,cAAAA,EAAgB;AAClB;AACF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,WAAA;QACNC,KAAAA,EAAO;AACLC,YAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,gCAAA,CAAA;YACtBC,cAAAA,EAAgB;AAClB;AACF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,MAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,wBAAA,CAAA;YAA2BC,cAAAA,EAAgB;AAAO;AACnF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,SAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,2BAAA,CAAA;YAA8BC,cAAAA,EAAgB;AAAU,SAAA;QACvFC,gBAAAA,EAAkB;AACpB;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.mjs","sources":["../../../../../admin/src/future/pages/Assets/constants.ts"],"sourcesContent":["import { getTranslationKey } from '../../utils/translations';\n\nexport const localStorageKeys = {\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n TABLE: 1,\n};\n\ninterface TableHeader {\n name: string;\n label: { id: string; defaultMessage: string };\n isVisuallyHidden?: boolean;\n}\n\nexport const TABLE_HEADERS: TableHeader[] = [\n {\n name: 'name',\n label: { id: getTranslationKey('list.table.header.name'), defaultMessage: 'name' },\n },\n {\n name: 'createdAt',\n label: {\n id: getTranslationKey('list.table.header.creationDate'),\n defaultMessage: 'creation date',\n },\n },\n {\n name: 'updatedAt',\n label: {\n id: getTranslationKey('list.table.header.lastModified'),\n defaultMessage: 'last modified',\n },\n },\n {\n name: 'size',\n label: { id: getTranslationKey('list.table.header.size'), defaultMessage: 'size' },\n },\n {\n name: 'actions',\n label: { id: getTranslationKey('list.table.header.actions'), defaultMessage: 'actions' },\n isVisuallyHidden: true,\n },\n];\n"],"names":["localStorageKeys","view","viewOptions","GRID","TABLE","TABLE_HEADERS","name","label","id","getTranslationKey","defaultMessage","isVisuallyHidden"],"mappings":";;MAEaA,
|
|
1
|
+
{"version":3,"file":"constants.mjs","sources":["../../../../../admin/src/future/pages/Assets/constants.ts"],"sourcesContent":["import { getTranslationKey } from '../../utils/translations';\n\nexport const localStorageKeys = {\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n TABLE: 1,\n};\n\ninterface TableHeader {\n name: string;\n label: { id: string; defaultMessage: string };\n isVisuallyHidden?: boolean;\n}\n\nexport const TABLE_HEADERS: TableHeader[] = [\n {\n name: 'name',\n label: { id: getTranslationKey('list.table.header.name'), defaultMessage: 'name' },\n },\n {\n name: 'createdAt',\n label: {\n id: getTranslationKey('list.table.header.creationDate'),\n defaultMessage: 'creation date',\n },\n },\n {\n name: 'updatedAt',\n label: {\n id: getTranslationKey('list.table.header.lastModified'),\n defaultMessage: 'last modified',\n },\n },\n {\n name: 'size',\n label: { id: getTranslationKey('list.table.header.size'), defaultMessage: 'size' },\n },\n {\n name: 'actions',\n label: { id: getTranslationKey('list.table.header.actions'), defaultMessage: 'actions' },\n isVisuallyHidden: true,\n },\n];\n"],"names":["localStorageKeys","view","viewOptions","GRID","TABLE","TABLE_HEADERS","name","label","id","getTranslationKey","defaultMessage","isVisuallyHidden"],"mappings":";;MAEaA,gBAAAA,GAAmB;IAC9BC,IAAAA,EAAM,CAAC,0BAA0B;AACnC;MAEaC,WAAAA,GAAc;IACzBC,IAAAA,EAAM,CAAA;IACNC,KAAAA,EAAO;AACT;MAQaC,aAAAA,GAA+B;AAC1C,IAAA;QACEC,IAAAA,EAAM,MAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,wBAAA,CAAA;YAA2BC,cAAAA,EAAgB;AAAO;AACnF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,WAAA;QACNC,KAAAA,EAAO;AACLC,YAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,gCAAA,CAAA;YACtBC,cAAAA,EAAgB;AAClB;AACF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,WAAA;QACNC,KAAAA,EAAO;AACLC,YAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,gCAAA,CAAA;YACtBC,cAAAA,EAAgB;AAClB;AACF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,MAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,wBAAA,CAAA;YAA2BC,cAAAA,EAAgB;AAAO;AACnF,KAAA;AACA,IAAA;QACEJ,IAAAA,EAAM,SAAA;QACNC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIC,iBAAAA,CAAkB,2BAAA,CAAA;YAA8BC,cAAAA,EAAgB;AAAU,SAAA;QACvFC,gBAAAA,EAAkB;AACpB;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderInfo.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderInfo.ts"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\nimport { useGetFolderQuery } from '../../../services/folders';\nimport { getTranslationKey } from '../../../utils/translations';\n\nexport interface FolderInfo {\n title: string;\n itemCount: number;\n}\n\nexport const useFolderInfo = (currentFolderId: number | null): FolderInfo => {\n const { formatMessage } = useIntl();\n const { data: currentFolder, isLoading } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n const { data: rootAssetsData, isLoading: isRootAssetsLoading } = useGetAssetsQuery(\n { folder: null, pageSize: 1 },\n { skip: currentFolderId !== null }\n );\n\n const homeLabel = formatMessage({\n id: getTranslationKey('plugin.home'),\n defaultMessage: 'Home',\n });\n\n if (currentFolderId === null) {\n if (isRootAssetsLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return { title: homeLabel, itemCount: rootAssetsData?.pagination?.total ?? 0 };\n }\n\n if (isLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return {\n title: currentFolder?.name ?? homeLabel,\n itemCount: currentFolder?.files?.count ?? 0,\n };\n};\n"],"names":["useFolderInfo","currentFolderId","formatMessage","useIntl","data","currentFolder","isLoading","useGetFolderQuery","id","skip","rootAssetsData","isRootAssetsLoading","useGetAssetsQuery","folder","pageSize","homeLabel","getTranslationKey","defaultMessage","title","itemCount","pagination","total","name","files","count"],"mappings":";;;;;;;AAWO,MAAMA,gBAAgB,CAACC,eAAAA,GAAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"useFolderInfo.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderInfo.ts"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\nimport { useGetFolderQuery } from '../../../services/folders';\nimport { getTranslationKey } from '../../../utils/translations';\n\nexport interface FolderInfo {\n title: string;\n itemCount: number;\n}\n\nexport const useFolderInfo = (currentFolderId: number | null): FolderInfo => {\n const { formatMessage } = useIntl();\n const { data: currentFolder, isLoading } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n const { data: rootAssetsData, isLoading: isRootAssetsLoading } = useGetAssetsQuery(\n { folder: null, pageSize: 1 },\n { skip: currentFolderId !== null }\n );\n\n const homeLabel = formatMessage({\n id: getTranslationKey('plugin.home'),\n defaultMessage: 'Home',\n });\n\n if (currentFolderId === null) {\n if (isRootAssetsLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return { title: homeLabel, itemCount: rootAssetsData?.pagination?.total ?? 0 };\n }\n\n if (isLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return {\n title: currentFolder?.name ?? homeLabel,\n itemCount: currentFolder?.files?.count ?? 0,\n };\n};\n"],"names":["useFolderInfo","currentFolderId","formatMessage","useIntl","data","currentFolder","isLoading","useGetFolderQuery","id","skip","rootAssetsData","isRootAssetsLoading","useGetAssetsQuery","folder","pageSize","homeLabel","getTranslationKey","defaultMessage","title","itemCount","pagination","total","name","files","count"],"mappings":";;;;;;;AAWO,MAAMA,gBAAgB,CAACC,eAAAA,GAAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,IAAAA,EAAMC,aAAa,EAAEC,SAAS,EAAE,GAAGC,yBAAAA,CACzC;QAAEC,EAAAA,EAAIP;KAAiB,EACvB;AAAEQ,QAAAA,IAAAA,EAAMR,eAAAA,KAAoB;AAAK,KAAA,CAAA;IAEnC,MAAM,EAAEG,MAAMM,cAAc,EAAEJ,WAAWK,mBAAmB,EAAE,GAAGC,wBAAAA,CAC/D;QAAEC,MAAAA,EAAQ,IAAA;QAAMC,QAAAA,EAAU;KAAE,EAC5B;AAAEL,QAAAA,IAAAA,EAAMR,eAAAA,KAAoB;AAAK,KAAA,CAAA;AAGnC,IAAA,MAAMc,YAAYb,aAAAA,CAAc;AAC9BM,QAAAA,EAAAA,EAAIQ,8BAAAA,CAAkB,aAAA,CAAA;QACtBC,cAAAA,EAAgB;AAClB,KAAA,CAAA;AAEA,IAAA,IAAIhB,oBAAoB,IAAA,EAAM;AAC5B,QAAA,IAAIU,mBAAAA,EAAqB;YACvB,OAAO;gBAAEO,KAAAA,EAAOH,SAAAA;gBAAWI,SAAAA,EAAW;AAAE,aAAA;AAC1C,QAAA;QAEA,OAAO;YAAED,KAAAA,EAAOH,SAAAA;YAAWI,SAAAA,EAAWT,cAAAA,EAAgBU,YAAYC,KAAAA,IAAS;AAAE,SAAA;AAC/E,IAAA;AAEA,IAAA,IAAIf,SAAAA,EAAW;QACb,OAAO;YAAEY,KAAAA,EAAOH,SAAAA;YAAWI,SAAAA,EAAW;AAAE,SAAA;AAC1C,IAAA;IAEA,OAAO;AACLD,QAAAA,KAAAA,EAAOb,eAAeiB,IAAAA,IAAQP,SAAAA;QAC9BI,SAAAA,EAAWd,aAAAA,EAAekB,OAAOC,KAAAA,IAAS;AAC5C,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderInfo.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderInfo.ts"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\nimport { useGetFolderQuery } from '../../../services/folders';\nimport { getTranslationKey } from '../../../utils/translations';\n\nexport interface FolderInfo {\n title: string;\n itemCount: number;\n}\n\nexport const useFolderInfo = (currentFolderId: number | null): FolderInfo => {\n const { formatMessage } = useIntl();\n const { data: currentFolder, isLoading } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n const { data: rootAssetsData, isLoading: isRootAssetsLoading } = useGetAssetsQuery(\n { folder: null, pageSize: 1 },\n { skip: currentFolderId !== null }\n );\n\n const homeLabel = formatMessage({\n id: getTranslationKey('plugin.home'),\n defaultMessage: 'Home',\n });\n\n if (currentFolderId === null) {\n if (isRootAssetsLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return { title: homeLabel, itemCount: rootAssetsData?.pagination?.total ?? 0 };\n }\n\n if (isLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return {\n title: currentFolder?.name ?? homeLabel,\n itemCount: currentFolder?.files?.count ?? 0,\n };\n};\n"],"names":["useFolderInfo","currentFolderId","formatMessage","useIntl","data","currentFolder","isLoading","useGetFolderQuery","id","skip","rootAssetsData","isRootAssetsLoading","useGetAssetsQuery","folder","pageSize","homeLabel","getTranslationKey","defaultMessage","title","itemCount","pagination","total","name","files","count"],"mappings":";;;;;AAWO,MAAMA,gBAAgB,CAACC,eAAAA,GAAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,
|
|
1
|
+
{"version":3,"file":"useFolderInfo.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderInfo.ts"],"sourcesContent":["import { useIntl } from 'react-intl';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\nimport { useGetFolderQuery } from '../../../services/folders';\nimport { getTranslationKey } from '../../../utils/translations';\n\nexport interface FolderInfo {\n title: string;\n itemCount: number;\n}\n\nexport const useFolderInfo = (currentFolderId: number | null): FolderInfo => {\n const { formatMessage } = useIntl();\n const { data: currentFolder, isLoading } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n const { data: rootAssetsData, isLoading: isRootAssetsLoading } = useGetAssetsQuery(\n { folder: null, pageSize: 1 },\n { skip: currentFolderId !== null }\n );\n\n const homeLabel = formatMessage({\n id: getTranslationKey('plugin.home'),\n defaultMessage: 'Home',\n });\n\n if (currentFolderId === null) {\n if (isRootAssetsLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return { title: homeLabel, itemCount: rootAssetsData?.pagination?.total ?? 0 };\n }\n\n if (isLoading) {\n return { title: homeLabel, itemCount: 0 };\n }\n\n return {\n title: currentFolder?.name ?? homeLabel,\n itemCount: currentFolder?.files?.count ?? 0,\n };\n};\n"],"names":["useFolderInfo","currentFolderId","formatMessage","useIntl","data","currentFolder","isLoading","useGetFolderQuery","id","skip","rootAssetsData","isRootAssetsLoading","useGetAssetsQuery","folder","pageSize","homeLabel","getTranslationKey","defaultMessage","title","itemCount","pagination","total","name","files","count"],"mappings":";;;;;AAWO,MAAMA,gBAAgB,CAACC,eAAAA,GAAAA;IAC5B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,EAAEC,IAAAA,EAAMC,aAAa,EAAEC,SAAS,EAAE,GAAGC,iBAAAA,CACzC;QAAEC,EAAAA,EAAIP;KAAiB,EACvB;AAAEQ,QAAAA,IAAAA,EAAMR,eAAAA,KAAoB;AAAK,KAAA,CAAA;IAEnC,MAAM,EAAEG,MAAMM,cAAc,EAAEJ,WAAWK,mBAAmB,EAAE,GAAGC,iBAAAA,CAC/D;QAAEC,MAAAA,EAAQ,IAAA;QAAMC,QAAAA,EAAU;KAAE,EAC5B;AAAEL,QAAAA,IAAAA,EAAMR,eAAAA,KAAoB;AAAK,KAAA,CAAA;AAGnC,IAAA,MAAMc,YAAYb,aAAAA,CAAc;AAC9BM,QAAAA,EAAAA,EAAIQ,iBAAAA,CAAkB,aAAA,CAAA;QACtBC,cAAAA,EAAgB;AAClB,KAAA,CAAA;AAEA,IAAA,IAAIhB,oBAAoB,IAAA,EAAM;AAC5B,QAAA,IAAIU,mBAAAA,EAAqB;YACvB,OAAO;gBAAEO,KAAAA,EAAOH,SAAAA;gBAAWI,SAAAA,EAAW;AAAE,aAAA;AAC1C,QAAA;QAEA,OAAO;YAAED,KAAAA,EAAOH,SAAAA;YAAWI,SAAAA,EAAWT,cAAAA,EAAgBU,YAAYC,KAAAA,IAAS;AAAE,SAAA;AAC/E,IAAA;AAEA,IAAA,IAAIf,SAAAA,EAAW;QACb,OAAO;YAAEY,KAAAA,EAAOH,SAAAA;YAAWI,SAAAA,EAAW;AAAE,SAAA;AAC1C,IAAA;IAEA,OAAO;AACLD,QAAAA,KAAAA,EAAOb,eAAeiB,IAAAA,IAAQP,SAAAA;QAC9BI,SAAAA,EAAWd,aAAAA,EAAekB,OAAOC,KAAAA,IAAS;AAC5C,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderNavigation.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderNavigation.ts"],"sourcesContent":["import { useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\n\nexport const useFolderNavigation = () => {\n const [{ query }, setQuery] = useQueryParams<{ folder?: string }>();\n\n const currentFolderId = query?.folder ? Number(query.folder) : null;\n\n const navigateToFolder = (folder: Folder) => {\n setQuery({ folder: String(folder.id) });\n };\n\n return {\n currentFolderId,\n navigateToFolder,\n };\n};\n"],"names":["useFolderNavigation","query","setQuery","useQueryParams","currentFolderId","folder","Number","navigateToFolder","String","id"],"mappings":";;;;MAIaA,
|
|
1
|
+
{"version":3,"file":"useFolderNavigation.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderNavigation.ts"],"sourcesContent":["import { useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\n\nexport const useFolderNavigation = () => {\n const [{ query }, setQuery] = useQueryParams<{ folder?: string }>();\n\n const currentFolderId = query?.folder ? Number(query.folder) : null;\n\n const navigateToFolder = (folder: Folder) => {\n setQuery({ folder: String(folder.id) });\n };\n\n return {\n currentFolderId,\n navigateToFolder,\n };\n};\n"],"names":["useFolderNavigation","query","setQuery","useQueryParams","currentFolderId","folder","Number","navigateToFolder","String","id"],"mappings":";;;;MAIaA,mBAAAA,GAAsB,IAAA;AACjC,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAE9B,IAAA,MAAMC,kBAAkBH,KAAAA,EAAOI,MAAAA,GAASC,MAAAA,CAAOL,KAAAA,CAAMI,MAAM,CAAA,GAAI,IAAA;AAE/D,IAAA,MAAME,mBAAmB,CAACF,MAAAA,GAAAA;QACxBH,QAAAA,CAAS;YAAEG,MAAAA,EAAQG,MAAAA,CAAOH,OAAOI,EAAE;AAAE,SAAA,CAAA;AACvC,IAAA,CAAA;IAEA,OAAO;AACLL,QAAAA,eAAAA;AACAG,QAAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFolderNavigation.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderNavigation.ts"],"sourcesContent":["import { useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\n\nexport const useFolderNavigation = () => {\n const [{ query }, setQuery] = useQueryParams<{ folder?: string }>();\n\n const currentFolderId = query?.folder ? Number(query.folder) : null;\n\n const navigateToFolder = (folder: Folder) => {\n setQuery({ folder: String(folder.id) });\n };\n\n return {\n currentFolderId,\n navigateToFolder,\n };\n};\n"],"names":["useFolderNavigation","query","setQuery","useQueryParams","currentFolderId","folder","Number","navigateToFolder","String","id"],"mappings":";;MAIaA,
|
|
1
|
+
{"version":3,"file":"useFolderNavigation.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderNavigation.ts"],"sourcesContent":["import { useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\n\nexport const useFolderNavigation = () => {\n const [{ query }, setQuery] = useQueryParams<{ folder?: string }>();\n\n const currentFolderId = query?.folder ? Number(query.folder) : null;\n\n const navigateToFolder = (folder: Folder) => {\n setQuery({ folder: String(folder.id) });\n };\n\n return {\n currentFolderId,\n navigateToFolder,\n };\n};\n"],"names":["useFolderNavigation","query","setQuery","useQueryParams","currentFolderId","folder","Number","navigateToFolder","String","id"],"mappings":";;MAIaA,mBAAAA,GAAsB,IAAA;AACjC,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;AAE9B,IAAA,MAAMC,kBAAkBH,KAAAA,EAAOI,MAAAA,GAASC,MAAAA,CAAOL,KAAAA,CAAMI,MAAM,CAAA,GAAI,IAAA;AAE/D,IAAA,MAAME,mBAAmB,CAACF,MAAAA,GAAAA;QACxBH,QAAAA,CAAS;YAAEG,MAAAA,EAAQG,MAAAA,CAAOH,OAAOI,EAAE;AAAE,SAAA,CAAA;AACvC,IAAA,CAAA;IAEA,OAAO;AACLL,QAAAA,eAAAA;AACAG,QAAAA;AACF,KAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteAssets.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useInfiniteAssets.ts"],"sourcesContent":["import { useState, useCallback, useMemo, useEffect, useRef } from 'react';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\n\nimport type { File } from '../../../../../../shared/contracts/files';\n\nconst PAGE_SIZE = 20;\n\ninterface UseInfiniteAssetsOptions {\n folder?: number | null;\n sort?: string;\n}\n\nconst useInfiniteAssets = ({ folder = null, sort }: UseInfiniteAssetsOptions = {}) => {\n const [page, setPage] = useState(1);\n const lastResultsRef = useRef<File[]>([]);\n const isMountRef = useRef(true);\n\n const {\n currentData: data,\n isLoading,\n isFetching,\n error,\n } = useGetAssetsQuery({\n folder,\n page,\n pageSize: PAGE_SIZE,\n sort,\n });\n\n const pagination = data?.pagination;\n\n // Accumulate pages. When cache is invalidated the current page is refetched\n // detect this and reset to avoid a gap in the results.\n const assets = useMemo(() => {\n if (!data) {\n return lastResultsRef.current;\n }\n\n const currentPageResults = data.results;\n\n if (page === 1) {\n lastResultsRef.current = currentPageResults;\n } else {\n // If accumulated length doesn't match expectation, cache was cleared\n const expectedPrior = (page - 1) * PAGE_SIZE;\n if (lastResultsRef.current.length < expectedPrior - PAGE_SIZE) {\n return lastResultsRef.current;\n }\n\n // Only append if these aren't already accumulated\n if (lastResultsRef.current.length < page * PAGE_SIZE) {\n lastResultsRef.current = [...lastResultsRef.current, ...currentPageResults];\n }\n }\n\n return lastResultsRef.current;\n }, [data, page]);\n\n // Reset on filter/sort change — skip the initial mount since the memo\n // already handles page 1 correctly\n useEffect(() => {\n if (isMountRef.current) {\n isMountRef.current = false;\n\n return;\n }\n setPage(1);\n lastResultsRef.current = [];\n }, [folder, sort]);\n\n const hasNextPage = pagination ? page < pagination.pageCount : false;\n const isFetchingMore = isFetching && page > 1;\n\n const fetchNextPage = useCallback(() => {\n setPage((prev) => prev + 1);\n }, []);\n\n return { assets, pagination, isLoading, isFetchingMore, hasNextPage, fetchNextPage, error };\n};\n\nexport { useInfiniteAssets };\nexport { PAGE_SIZE };\n"],"names":["PAGE_SIZE","useInfiniteAssets","folder","sort","page","setPage","useState","lastResultsRef","useRef","isMountRef","currentData","data","isLoading","isFetching","error","useGetAssetsQuery","pageSize","pagination","assets","useMemo","current","currentPageResults","results","expectedPrior","length","useEffect","hasNextPage","pageCount","isFetchingMore","fetchNextPage","useCallback","prev"],"mappings":";;;;;AAMA,MAAMA,
|
|
1
|
+
{"version":3,"file":"useInfiniteAssets.js","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useInfiniteAssets.ts"],"sourcesContent":["import { useState, useCallback, useMemo, useEffect, useRef } from 'react';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\n\nimport type { File } from '../../../../../../shared/contracts/files';\n\nconst PAGE_SIZE = 20;\n\ninterface UseInfiniteAssetsOptions {\n folder?: number | null;\n sort?: string;\n}\n\nconst useInfiniteAssets = ({ folder = null, sort }: UseInfiniteAssetsOptions = {}) => {\n const [page, setPage] = useState(1);\n const lastResultsRef = useRef<File[]>([]);\n const isMountRef = useRef(true);\n\n const {\n currentData: data,\n isLoading,\n isFetching,\n error,\n } = useGetAssetsQuery({\n folder,\n page,\n pageSize: PAGE_SIZE,\n sort,\n });\n\n const pagination = data?.pagination;\n\n // Accumulate pages. When cache is invalidated the current page is refetched\n // detect this and reset to avoid a gap in the results.\n const assets = useMemo(() => {\n if (!data) {\n return lastResultsRef.current;\n }\n\n const currentPageResults = data.results;\n\n if (page === 1) {\n lastResultsRef.current = currentPageResults;\n } else {\n // If accumulated length doesn't match expectation, cache was cleared\n const expectedPrior = (page - 1) * PAGE_SIZE;\n if (lastResultsRef.current.length < expectedPrior - PAGE_SIZE) {\n return lastResultsRef.current;\n }\n\n // Only append if these aren't already accumulated\n if (lastResultsRef.current.length < page * PAGE_SIZE) {\n lastResultsRef.current = [...lastResultsRef.current, ...currentPageResults];\n }\n }\n\n return lastResultsRef.current;\n }, [data, page]);\n\n // Reset on filter/sort change — skip the initial mount since the memo\n // already handles page 1 correctly\n useEffect(() => {\n if (isMountRef.current) {\n isMountRef.current = false;\n\n return;\n }\n setPage(1);\n lastResultsRef.current = [];\n }, [folder, sort]);\n\n const hasNextPage = pagination ? page < pagination.pageCount : false;\n const isFetchingMore = isFetching && page > 1;\n\n const fetchNextPage = useCallback(() => {\n setPage((prev) => prev + 1);\n }, []);\n\n return { assets, pagination, isLoading, isFetchingMore, hasNextPage, fetchNextPage, error };\n};\n\nexport { useInfiniteAssets };\nexport { PAGE_SIZE };\n"],"names":["PAGE_SIZE","useInfiniteAssets","folder","sort","page","setPage","useState","lastResultsRef","useRef","isMountRef","currentData","data","isLoading","isFetching","error","useGetAssetsQuery","pageSize","pagination","assets","useMemo","current","currentPageResults","results","expectedPrior","length","useEffect","hasNextPage","pageCount","isFetchingMore","fetchNextPage","useCallback","prev"],"mappings":";;;;;AAMA,MAAMA,SAAAA,GAAY;AAOlB,MAAMC,iBAAAA,GAAoB,CAAC,EAAEC,MAAAA,GAAS,IAAI,EAAEC,IAAI,EAA4B,GAAG,EAAE,GAAA;AAC/E,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,cAAAA,CAAS,CAAA,CAAA;IACjC,MAAMC,cAAAA,GAAiBC,aAAe,EAAE,CAAA;AACxC,IAAA,MAAMC,aAAaD,YAAAA,CAAO,IAAA,CAAA;IAE1B,MAAM,EACJE,WAAAA,EAAaC,IAAI,EACjBC,SAAS,EACTC,UAAU,EACVC,KAAK,EACN,GAAGC,wBAAAA,CAAkB;AACpBb,QAAAA,MAAAA;AACAE,QAAAA,IAAAA;QACAY,QAAAA,EAAUhB,SAAAA;AACVG,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMc,aAAaN,IAAAA,EAAMM,UAAAA;;;AAIzB,IAAA,MAAMC,WAASC,aAAAA,CAAQ,IAAA;AACrB,QAAA,IAAI,CAACR,IAAAA,EAAM;AACT,YAAA,OAAOJ,eAAea,OAAO;AAC/B,QAAA;QAEA,MAAMC,kBAAAA,GAAqBV,KAAKW,OAAO;AAEvC,QAAA,IAAIlB,SAAS,CAAA,EAAG;AACdG,YAAAA,cAAAA,CAAea,OAAO,GAAGC,kBAAAA;QAC3B,CAAA,MAAO;;AAEL,YAAA,MAAME,aAAAA,GAAiBnB,CAAAA,IAAAA,GAAO,CAAA,IAAKJ,SAAAA;AACnC,YAAA,IAAIO,eAAea,OAAO,CAACI,MAAM,GAAGD,gBAAgBvB,SAAAA,EAAW;AAC7D,gBAAA,OAAOO,eAAea,OAAO;AAC/B,YAAA;;AAGA,YAAA,IAAIb,eAAea,OAAO,CAACI,MAAM,GAAGpB,OAAOJ,SAAAA,EAAW;AACpDO,gBAAAA,cAAAA,CAAea,OAAO,GAAG;AAAIb,oBAAAA,GAAAA,cAAAA,CAAea,OAAO;AAAKC,oBAAAA,GAAAA;AAAmB,iBAAA;AAC7E,YAAA;AACF,QAAA;AAEA,QAAA,OAAOd,eAAea,OAAO;IAC/B,CAAA,EAAG;AAACT,QAAAA,IAAAA;AAAMP,QAAAA;AAAK,KAAA,CAAA;;;IAIfqB,eAAAA,CAAU,IAAA;QACR,IAAIhB,UAAAA,CAAWW,OAAO,EAAE;AACtBX,YAAAA,UAAAA,CAAWW,OAAO,GAAG,KAAA;AAErB,YAAA;AACF,QAAA;QACAf,OAAAA,CAAQ,CAAA,CAAA;QACRE,cAAAA,CAAea,OAAO,GAAG,EAAE;IAC7B,CAAA,EAAG;AAAClB,QAAAA,MAAAA;AAAQC,QAAAA;AAAK,KAAA,CAAA;AAEjB,IAAA,MAAMuB,WAAAA,GAAcT,UAAAA,GAAab,IAAAA,GAAOa,UAAAA,CAAWU,SAAS,GAAG,KAAA;IAC/D,MAAMC,cAAAA,GAAiBf,cAAcT,IAAAA,GAAO,CAAA;AAE5C,IAAA,MAAMyB,gBAAgBC,iBAAAA,CAAY,IAAA;QAChCzB,OAAAA,CAAQ,CAAC0B,OAASA,IAAAA,GAAO,CAAA,CAAA;AAC3B,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,OAAO;AAAEb,gBAAAA,QAAAA;AAAQD,QAAAA,UAAAA;AAAYL,QAAAA,SAAAA;AAAWgB,QAAAA,cAAAA;AAAgBF,QAAAA,WAAAA;AAAaG,QAAAA,aAAAA;AAAef,QAAAA;AAAM,KAAA;AAC5F;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteAssets.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useInfiniteAssets.ts"],"sourcesContent":["import { useState, useCallback, useMemo, useEffect, useRef } from 'react';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\n\nimport type { File } from '../../../../../../shared/contracts/files';\n\nconst PAGE_SIZE = 20;\n\ninterface UseInfiniteAssetsOptions {\n folder?: number | null;\n sort?: string;\n}\n\nconst useInfiniteAssets = ({ folder = null, sort }: UseInfiniteAssetsOptions = {}) => {\n const [page, setPage] = useState(1);\n const lastResultsRef = useRef<File[]>([]);\n const isMountRef = useRef(true);\n\n const {\n currentData: data,\n isLoading,\n isFetching,\n error,\n } = useGetAssetsQuery({\n folder,\n page,\n pageSize: PAGE_SIZE,\n sort,\n });\n\n const pagination = data?.pagination;\n\n // Accumulate pages. When cache is invalidated the current page is refetched\n // detect this and reset to avoid a gap in the results.\n const assets = useMemo(() => {\n if (!data) {\n return lastResultsRef.current;\n }\n\n const currentPageResults = data.results;\n\n if (page === 1) {\n lastResultsRef.current = currentPageResults;\n } else {\n // If accumulated length doesn't match expectation, cache was cleared\n const expectedPrior = (page - 1) * PAGE_SIZE;\n if (lastResultsRef.current.length < expectedPrior - PAGE_SIZE) {\n return lastResultsRef.current;\n }\n\n // Only append if these aren't already accumulated\n if (lastResultsRef.current.length < page * PAGE_SIZE) {\n lastResultsRef.current = [...lastResultsRef.current, ...currentPageResults];\n }\n }\n\n return lastResultsRef.current;\n }, [data, page]);\n\n // Reset on filter/sort change — skip the initial mount since the memo\n // already handles page 1 correctly\n useEffect(() => {\n if (isMountRef.current) {\n isMountRef.current = false;\n\n return;\n }\n setPage(1);\n lastResultsRef.current = [];\n }, [folder, sort]);\n\n const hasNextPage = pagination ? page < pagination.pageCount : false;\n const isFetchingMore = isFetching && page > 1;\n\n const fetchNextPage = useCallback(() => {\n setPage((prev) => prev + 1);\n }, []);\n\n return { assets, pagination, isLoading, isFetchingMore, hasNextPage, fetchNextPage, error };\n};\n\nexport { useInfiniteAssets };\nexport { PAGE_SIZE };\n"],"names":["PAGE_SIZE","useInfiniteAssets","folder","sort","page","setPage","useState","lastResultsRef","useRef","isMountRef","currentData","data","isLoading","isFetching","error","useGetAssetsQuery","pageSize","pagination","assets","useMemo","current","currentPageResults","results","expectedPrior","length","useEffect","hasNextPage","pageCount","isFetchingMore","fetchNextPage","useCallback","prev"],"mappings":";;;AAMA,MAAMA,
|
|
1
|
+
{"version":3,"file":"useInfiniteAssets.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useInfiniteAssets.ts"],"sourcesContent":["import { useState, useCallback, useMemo, useEffect, useRef } from 'react';\n\nimport { useGetAssetsQuery } from '../../../services/assets';\n\nimport type { File } from '../../../../../../shared/contracts/files';\n\nconst PAGE_SIZE = 20;\n\ninterface UseInfiniteAssetsOptions {\n folder?: number | null;\n sort?: string;\n}\n\nconst useInfiniteAssets = ({ folder = null, sort }: UseInfiniteAssetsOptions = {}) => {\n const [page, setPage] = useState(1);\n const lastResultsRef = useRef<File[]>([]);\n const isMountRef = useRef(true);\n\n const {\n currentData: data,\n isLoading,\n isFetching,\n error,\n } = useGetAssetsQuery({\n folder,\n page,\n pageSize: PAGE_SIZE,\n sort,\n });\n\n const pagination = data?.pagination;\n\n // Accumulate pages. When cache is invalidated the current page is refetched\n // detect this and reset to avoid a gap in the results.\n const assets = useMemo(() => {\n if (!data) {\n return lastResultsRef.current;\n }\n\n const currentPageResults = data.results;\n\n if (page === 1) {\n lastResultsRef.current = currentPageResults;\n } else {\n // If accumulated length doesn't match expectation, cache was cleared\n const expectedPrior = (page - 1) * PAGE_SIZE;\n if (lastResultsRef.current.length < expectedPrior - PAGE_SIZE) {\n return lastResultsRef.current;\n }\n\n // Only append if these aren't already accumulated\n if (lastResultsRef.current.length < page * PAGE_SIZE) {\n lastResultsRef.current = [...lastResultsRef.current, ...currentPageResults];\n }\n }\n\n return lastResultsRef.current;\n }, [data, page]);\n\n // Reset on filter/sort change — skip the initial mount since the memo\n // already handles page 1 correctly\n useEffect(() => {\n if (isMountRef.current) {\n isMountRef.current = false;\n\n return;\n }\n setPage(1);\n lastResultsRef.current = [];\n }, [folder, sort]);\n\n const hasNextPage = pagination ? page < pagination.pageCount : false;\n const isFetchingMore = isFetching && page > 1;\n\n const fetchNextPage = useCallback(() => {\n setPage((prev) => prev + 1);\n }, []);\n\n return { assets, pagination, isLoading, isFetchingMore, hasNextPage, fetchNextPage, error };\n};\n\nexport { useInfiniteAssets };\nexport { PAGE_SIZE };\n"],"names":["PAGE_SIZE","useInfiniteAssets","folder","sort","page","setPage","useState","lastResultsRef","useRef","isMountRef","currentData","data","isLoading","isFetching","error","useGetAssetsQuery","pageSize","pagination","assets","useMemo","current","currentPageResults","results","expectedPrior","length","useEffect","hasNextPage","pageCount","isFetchingMore","fetchNextPage","useCallback","prev"],"mappings":";;;AAMA,MAAMA,SAAAA,GAAY;AAOlB,MAAMC,iBAAAA,GAAoB,CAAC,EAAEC,MAAAA,GAAS,IAAI,EAAEC,IAAI,EAA4B,GAAG,EAAE,GAAA;AAC/E,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,QAAAA,CAAS,CAAA,CAAA;IACjC,MAAMC,cAAAA,GAAiBC,OAAe,EAAE,CAAA;AACxC,IAAA,MAAMC,aAAaD,MAAAA,CAAO,IAAA,CAAA;IAE1B,MAAM,EACJE,WAAAA,EAAaC,IAAI,EACjBC,SAAS,EACTC,UAAU,EACVC,KAAK,EACN,GAAGC,iBAAAA,CAAkB;AACpBb,QAAAA,MAAAA;AACAE,QAAAA,IAAAA;QACAY,QAAAA,EAAUhB,SAAAA;AACVG,QAAAA;AACF,KAAA,CAAA;AAEA,IAAA,MAAMc,aAAaN,IAAAA,EAAMM,UAAAA;;;AAIzB,IAAA,MAAMC,SAASC,OAAAA,CAAQ,IAAA;AACrB,QAAA,IAAI,CAACR,IAAAA,EAAM;AACT,YAAA,OAAOJ,eAAea,OAAO;AAC/B,QAAA;QAEA,MAAMC,kBAAAA,GAAqBV,KAAKW,OAAO;AAEvC,QAAA,IAAIlB,SAAS,CAAA,EAAG;AACdG,YAAAA,cAAAA,CAAea,OAAO,GAAGC,kBAAAA;QAC3B,CAAA,MAAO;;AAEL,YAAA,MAAME,aAAAA,GAAiBnB,CAAAA,IAAAA,GAAO,CAAA,IAAKJ,SAAAA;AACnC,YAAA,IAAIO,eAAea,OAAO,CAACI,MAAM,GAAGD,gBAAgBvB,SAAAA,EAAW;AAC7D,gBAAA,OAAOO,eAAea,OAAO;AAC/B,YAAA;;AAGA,YAAA,IAAIb,eAAea,OAAO,CAACI,MAAM,GAAGpB,OAAOJ,SAAAA,EAAW;AACpDO,gBAAAA,cAAAA,CAAea,OAAO,GAAG;AAAIb,oBAAAA,GAAAA,cAAAA,CAAea,OAAO;AAAKC,oBAAAA,GAAAA;AAAmB,iBAAA;AAC7E,YAAA;AACF,QAAA;AAEA,QAAA,OAAOd,eAAea,OAAO;IAC/B,CAAA,EAAG;AAACT,QAAAA,IAAAA;AAAMP,QAAAA;AAAK,KAAA,CAAA;;;IAIfqB,SAAAA,CAAU,IAAA;QACR,IAAIhB,UAAAA,CAAWW,OAAO,EAAE;AACtBX,YAAAA,UAAAA,CAAWW,OAAO,GAAG,KAAA;AAErB,YAAA;AACF,QAAA;QACAf,OAAAA,CAAQ,CAAA,CAAA;QACRE,cAAAA,CAAea,OAAO,GAAG,EAAE;IAC7B,CAAA,EAAG;AAAClB,QAAAA,MAAAA;AAAQC,QAAAA;AAAK,KAAA,CAAA;AAEjB,IAAA,MAAMuB,WAAAA,GAAcT,UAAAA,GAAab,IAAAA,GAAOa,UAAAA,CAAWU,SAAS,GAAG,KAAA;IAC/D,MAAMC,cAAAA,GAAiBf,cAAcT,IAAAA,GAAO,CAAA;AAE5C,IAAA,MAAMyB,gBAAgBC,WAAAA,CAAY,IAAA;QAChCzB,OAAAA,CAAQ,CAAC0B,OAASA,IAAAA,GAAO,CAAA,CAAA;AAC3B,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,OAAO;AAAEb,QAAAA,MAAAA;AAAQD,QAAAA,UAAAA;AAAYL,QAAAA,SAAAA;AAAWgB,QAAAA,cAAAA;AAAgBF,QAAAA,WAAAA;AAAaG,QAAAA,aAAAA;AAAef,QAAAA;AAAM,KAAA;AAC5F;;;;"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
var strapiAdmin = require('@strapi/admin/strapi-admin');
|
|
4
4
|
var uploadProgress = require('../store/uploadProgress.js');
|
|
5
|
+
var files = require('../utils/files.js');
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Stores original File objects for retry functionality.
|
|
@@ -104,6 +105,27 @@ var uploadProgress = require('../store/uploadProgress.js');
|
|
|
104
105
|
signal
|
|
105
106
|
});
|
|
106
107
|
};
|
|
108
|
+
/**
|
|
109
|
+
* Makes a streaming upload-from-URLs request to the server.
|
|
110
|
+
* Sends URLs as JSON body instead of FormData.
|
|
111
|
+
*/ const fetchUrlUploadStream = async ({ token, urls, folderId, signal })=>{
|
|
112
|
+
const backendURL = window.strapi.backendURL;
|
|
113
|
+
const headers = {
|
|
114
|
+
'Content-Type': 'application/json'
|
|
115
|
+
};
|
|
116
|
+
if (token) {
|
|
117
|
+
headers.Authorization = `Bearer ${token}`;
|
|
118
|
+
}
|
|
119
|
+
return fetch(`${backendURL}/upload/unstable/stream-from-urls`, {
|
|
120
|
+
method: 'POST',
|
|
121
|
+
headers,
|
|
122
|
+
body: JSON.stringify({
|
|
123
|
+
urls,
|
|
124
|
+
folderId
|
|
125
|
+
}),
|
|
126
|
+
signal
|
|
127
|
+
});
|
|
128
|
+
};
|
|
107
129
|
/**
|
|
108
130
|
* Processes an SSE stream from the upload endpoint.
|
|
109
131
|
* Dispatches Redux actions for each file event and returns the final result.
|
|
@@ -138,6 +160,17 @@ var uploadProgress = require('../store/uploadProgress.js');
|
|
|
138
160
|
const parsed = JSON.parse(data);
|
|
139
161
|
const mappedIndex = indexMapper(parsed.index);
|
|
140
162
|
switch(event){
|
|
163
|
+
case 'file:fetching':
|
|
164
|
+
{
|
|
165
|
+
// URL is being fetched server-side - mark as uploading (processing)
|
|
166
|
+
dispatch(uploadProgress.setFileUploading({
|
|
167
|
+
name: parsed.url,
|
|
168
|
+
index: mappedIndex,
|
|
169
|
+
total: parsed.total,
|
|
170
|
+
size: 0
|
|
171
|
+
}));
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
141
174
|
case 'file:uploading':
|
|
142
175
|
{
|
|
143
176
|
const payload = parsed;
|
|
@@ -184,6 +217,80 @@ var uploadProgress = require('../store/uploadProgress.js');
|
|
|
184
217
|
}
|
|
185
218
|
return streamResult;
|
|
186
219
|
};
|
|
220
|
+
/**
|
|
221
|
+
* Performs the actual streaming upload to the server.
|
|
222
|
+
* Shared by uploadFilesStream, retryCancelledFilesStream, and uploadFromUrls.
|
|
223
|
+
*
|
|
224
|
+
* @param options - Upload configuration
|
|
225
|
+
* @returns The upload result or error
|
|
226
|
+
*/ const performStreamUpload = async ({ token, formData, abortController, uploadId, dispatch, indexMapper = (i)=>i, onUploadFailed = (message)=>dispatch(uploadProgress.setUploadFailed({
|
|
227
|
+
message
|
|
228
|
+
})) })=>{
|
|
229
|
+
try {
|
|
230
|
+
const response = await fetchUploadStream({
|
|
231
|
+
token,
|
|
232
|
+
formData,
|
|
233
|
+
signal: abortController.signal
|
|
234
|
+
});
|
|
235
|
+
if (!response.ok || !response.body) {
|
|
236
|
+
unregisterAbortController(uploadId);
|
|
237
|
+
let errorMessage = 'Upload request failed';
|
|
238
|
+
try {
|
|
239
|
+
const errorData = await response.json();
|
|
240
|
+
if (errorData.error?.message) {
|
|
241
|
+
errorMessage = errorData.error.message;
|
|
242
|
+
} else if (errorData.message) {
|
|
243
|
+
errorMessage = errorData.message;
|
|
244
|
+
}
|
|
245
|
+
} catch {
|
|
246
|
+
errorMessage = `Upload failed with status ${response.status}`;
|
|
247
|
+
}
|
|
248
|
+
onUploadFailed(errorMessage);
|
|
249
|
+
return {
|
|
250
|
+
error: {
|
|
251
|
+
name: 'UnknownError',
|
|
252
|
+
message: errorMessage,
|
|
253
|
+
status: response.status
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
const streamResult = await processSSEStream({
|
|
258
|
+
response,
|
|
259
|
+
dispatch,
|
|
260
|
+
indexMapper
|
|
261
|
+
});
|
|
262
|
+
unregisterAbortController(uploadId);
|
|
263
|
+
if (streamResult && streamResult.data.length > 0) {
|
|
264
|
+
return {
|
|
265
|
+
data: streamResult
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
return {
|
|
269
|
+
data: {
|
|
270
|
+
data: [],
|
|
271
|
+
errors: []
|
|
272
|
+
}
|
|
273
|
+
};
|
|
274
|
+
} catch (err) {
|
|
275
|
+
unregisterAbortController(uploadId);
|
|
276
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
277
|
+
return {
|
|
278
|
+
error: {
|
|
279
|
+
name: 'UnknownError',
|
|
280
|
+
message: 'Upload cancelled'
|
|
281
|
+
}
|
|
282
|
+
};
|
|
283
|
+
}
|
|
284
|
+
const errorMessage = err instanceof Error ? err.message : 'Network error occurred';
|
|
285
|
+
onUploadFailed(errorMessage);
|
|
286
|
+
return {
|
|
287
|
+
error: {
|
|
288
|
+
name: 'UnknownError',
|
|
289
|
+
message: errorMessage
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
};
|
|
187
294
|
const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
188
295
|
addTagTypes: [
|
|
189
296
|
'Asset',
|
|
@@ -203,7 +310,7 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
203
310
|
const fileInfo = JSON.parse(fileInfoJson);
|
|
204
311
|
const fileNames = fileInfo.map((info)=>info.name);
|
|
205
312
|
const fileSizes = files.map((file)=>file.size);
|
|
206
|
-
// Open the progress dialog
|
|
313
|
+
// Open the progress dialog
|
|
207
314
|
dispatch(uploadProgress.openUploadProgress({
|
|
208
315
|
totalFiles,
|
|
209
316
|
fileNames,
|
|
@@ -217,83 +324,13 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
217
324
|
// Create abort controller for this upload
|
|
218
325
|
const abortController = new AbortController();
|
|
219
326
|
registerAbortController(uploadId, abortController);
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
unregisterAbortController(uploadId);
|
|
228
|
-
// Try to parse error message from response
|
|
229
|
-
let errorMessage = 'Upload request failed';
|
|
230
|
-
try {
|
|
231
|
-
const errorData = await response.json();
|
|
232
|
-
if (errorData.error?.message) {
|
|
233
|
-
errorMessage = errorData.error.message;
|
|
234
|
-
} else if (errorData.message) {
|
|
235
|
-
errorMessage = errorData.message;
|
|
236
|
-
}
|
|
237
|
-
} catch {
|
|
238
|
-
// If we can't parse the error, use a generic message with status code
|
|
239
|
-
errorMessage = `Upload failed with status ${response.status}`;
|
|
240
|
-
}
|
|
241
|
-
// Mark all files as failed in the UI
|
|
242
|
-
dispatch(uploadProgress.setUploadFailed({
|
|
243
|
-
message: errorMessage
|
|
244
|
-
}));
|
|
245
|
-
return {
|
|
246
|
-
error: {
|
|
247
|
-
name: 'UnknownError',
|
|
248
|
-
message: errorMessage,
|
|
249
|
-
status: response.status
|
|
250
|
-
}
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
const streamResult = await processSSEStream({
|
|
254
|
-
response,
|
|
255
|
-
dispatch
|
|
256
|
-
});
|
|
257
|
-
unregisterAbortController(uploadId);
|
|
258
|
-
if (streamResult && streamResult.data.length > 0) {
|
|
259
|
-
return {
|
|
260
|
-
data: streamResult
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
// If stream ended without completing any files, mark all as failed
|
|
264
|
-
const errorMessage = 'No files were uploaded successfully';
|
|
265
|
-
dispatch(uploadProgress.setUploadFailed({
|
|
266
|
-
message: errorMessage
|
|
267
|
-
}));
|
|
268
|
-
return {
|
|
269
|
-
error: {
|
|
270
|
-
name: 'UnknownError',
|
|
271
|
-
message: errorMessage
|
|
272
|
-
}
|
|
273
|
-
};
|
|
274
|
-
} catch (err) {
|
|
275
|
-
unregisterAbortController(uploadId);
|
|
276
|
-
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
277
|
-
// Don't mark as failed for user-initiated cancellations
|
|
278
|
-
return {
|
|
279
|
-
error: {
|
|
280
|
-
name: 'UnknownError',
|
|
281
|
-
message: 'Upload cancelled'
|
|
282
|
-
}
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
// For network errors or other exceptions, mark all files as failed
|
|
286
|
-
const errorMessage = err instanceof Error ? err.message : 'Network error occurred';
|
|
287
|
-
dispatch(uploadProgress.setUploadFailed({
|
|
288
|
-
message: errorMessage
|
|
289
|
-
}));
|
|
290
|
-
return {
|
|
291
|
-
error: {
|
|
292
|
-
name: 'UnknownError',
|
|
293
|
-
message: errorMessage
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
|
-
}
|
|
327
|
+
return performStreamUpload({
|
|
328
|
+
token,
|
|
329
|
+
formData,
|
|
330
|
+
abortController,
|
|
331
|
+
uploadId,
|
|
332
|
+
dispatch
|
|
333
|
+
});
|
|
297
334
|
},
|
|
298
335
|
invalidatesTags: [
|
|
299
336
|
{
|
|
@@ -349,15 +386,63 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
349
386
|
// Create abort controller for this retry
|
|
350
387
|
const abortController = new AbortController();
|
|
351
388
|
registerAbortController(uploadId, abortController);
|
|
389
|
+
// Custom error handler: mark individual retried files as failed
|
|
390
|
+
const onUploadFailed = (message)=>{
|
|
391
|
+
for (const originalIndex of indexMapping){
|
|
392
|
+
dispatch(uploadProgress.setFileError({
|
|
393
|
+
index: originalIndex,
|
|
394
|
+
name: stateFiles[originalIndex].name,
|
|
395
|
+
message
|
|
396
|
+
}));
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
return performStreamUpload({
|
|
400
|
+
token,
|
|
401
|
+
formData,
|
|
402
|
+
abortController,
|
|
403
|
+
uploadId,
|
|
404
|
+
dispatch,
|
|
405
|
+
indexMapper: (serverIndex)=>indexMapping[serverIndex],
|
|
406
|
+
onUploadFailed
|
|
407
|
+
});
|
|
408
|
+
},
|
|
409
|
+
invalidatesTags: [
|
|
410
|
+
{
|
|
411
|
+
type: 'Asset',
|
|
412
|
+
id: 'LIST'
|
|
413
|
+
}
|
|
414
|
+
]
|
|
415
|
+
}),
|
|
416
|
+
/**
|
|
417
|
+
* Upload files from URLs.
|
|
418
|
+
* Sends URLs to the server which fetches and uploads them.
|
|
419
|
+
*/ uploadFromUrls: builder.mutation({
|
|
420
|
+
queryFn: async ({ urls, folderId }, { dispatch, getState })=>{
|
|
421
|
+
const token = getState().admin_app?.token;
|
|
422
|
+
// Extract filenames from URLs for the progress dialog
|
|
423
|
+
const fileNames = urls.map((url)=>files.getFilenameFromUrl(url));
|
|
424
|
+
// Open progress dialog with all URLs as pending files
|
|
425
|
+
dispatch(uploadProgress.openUploadProgress({
|
|
426
|
+
totalFiles: urls.length,
|
|
427
|
+
fileNames
|
|
428
|
+
}));
|
|
429
|
+
dispatch(uploadProgress.updateProgress(0));
|
|
430
|
+
// Get the uploadId from state after dispatching
|
|
431
|
+
const uploadId = getState().uploadProgress.uploadId;
|
|
432
|
+
// Create abort controller for this upload
|
|
433
|
+
const abortController = new AbortController();
|
|
434
|
+
registerAbortController(uploadId, abortController);
|
|
352
435
|
try {
|
|
353
|
-
|
|
436
|
+
// Send URLs to server for fetching and uploading
|
|
437
|
+
const response = await fetchUrlUploadStream({
|
|
354
438
|
token,
|
|
355
|
-
|
|
439
|
+
urls,
|
|
440
|
+
folderId,
|
|
356
441
|
signal: abortController.signal
|
|
357
442
|
});
|
|
358
443
|
if (!response.ok || !response.body) {
|
|
359
444
|
unregisterAbortController(uploadId);
|
|
360
|
-
let errorMessage = '
|
|
445
|
+
let errorMessage = 'Upload request failed';
|
|
361
446
|
try {
|
|
362
447
|
const errorData = await response.json();
|
|
363
448
|
if (errorData.error?.message) {
|
|
@@ -366,16 +451,11 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
366
451
|
errorMessage = errorData.message;
|
|
367
452
|
}
|
|
368
453
|
} catch {
|
|
369
|
-
errorMessage = `
|
|
370
|
-
}
|
|
371
|
-
// Mark retried files as failed
|
|
372
|
-
for (const originalIndex of indexMapping){
|
|
373
|
-
dispatch(uploadProgress.setFileError({
|
|
374
|
-
index: originalIndex,
|
|
375
|
-
name: stateFiles[originalIndex].name,
|
|
376
|
-
message: errorMessage
|
|
377
|
-
}));
|
|
454
|
+
errorMessage = `Upload failed with status ${response.status}`;
|
|
378
455
|
}
|
|
456
|
+
dispatch(uploadProgress.setUploadFailed({
|
|
457
|
+
message: errorMessage
|
|
458
|
+
}));
|
|
379
459
|
return {
|
|
380
460
|
error: {
|
|
381
461
|
name: 'UnknownError',
|
|
@@ -384,10 +464,10 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
384
464
|
}
|
|
385
465
|
};
|
|
386
466
|
}
|
|
467
|
+
// Process SSE stream from server
|
|
387
468
|
const streamResult = await processSSEStream({
|
|
388
469
|
response,
|
|
389
|
-
dispatch
|
|
390
|
-
indexMapper: (serverIndex)=>indexMapping[serverIndex]
|
|
470
|
+
dispatch
|
|
391
471
|
});
|
|
392
472
|
unregisterAbortController(uploadId);
|
|
393
473
|
if (streamResult && streamResult.data.length > 0) {
|
|
@@ -396,9 +476,9 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
396
476
|
};
|
|
397
477
|
}
|
|
398
478
|
return {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
479
|
+
data: {
|
|
480
|
+
data: [],
|
|
481
|
+
errors: []
|
|
402
482
|
}
|
|
403
483
|
};
|
|
404
484
|
} catch (err) {
|
|
@@ -407,11 +487,14 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
407
487
|
return {
|
|
408
488
|
error: {
|
|
409
489
|
name: 'UnknownError',
|
|
410
|
-
message: '
|
|
490
|
+
message: 'Upload cancelled'
|
|
411
491
|
}
|
|
412
492
|
};
|
|
413
493
|
}
|
|
414
494
|
const errorMessage = err instanceof Error ? err.message : 'Network error occurred';
|
|
495
|
+
dispatch(uploadProgress.setUploadFailed({
|
|
496
|
+
message: errorMessage
|
|
497
|
+
}));
|
|
415
498
|
return {
|
|
416
499
|
error: {
|
|
417
500
|
name: 'UnknownError',
|
|
@@ -429,10 +512,11 @@ const uploadApi = strapiAdmin.adminApi.enhanceEndpoints({
|
|
|
429
512
|
})
|
|
430
513
|
})
|
|
431
514
|
});
|
|
432
|
-
const { useUploadFilesStreamMutation, useRetryCancelledFilesStreamMutation } = uploadApi;
|
|
515
|
+
const { useUploadFilesStreamMutation, useRetryCancelledFilesStreamMutation, useUploadFromUrlsMutation } = uploadApi;
|
|
433
516
|
|
|
434
517
|
exports.abortUpload = abortUpload;
|
|
435
518
|
exports.uploadApi = uploadApi;
|
|
436
519
|
exports.useRetryCancelledFilesStreamMutation = useRetryCancelledFilesStreamMutation;
|
|
437
520
|
exports.useUploadFilesStreamMutation = useUploadFilesStreamMutation;
|
|
521
|
+
exports.useUploadFromUrlsMutation = useUploadFromUrlsMutation;
|
|
438
522
|
//# sourceMappingURL=api.js.map
|