@strapi/upload 5.49.0 → 5.50.1
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 +10 -10
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +11 -11
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js +0 -1
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +0 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.js +3 -4
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +4 -5
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +0 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +0 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +0 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +0 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +3 -4
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +4 -5
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +0 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +0 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js +0 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs +0 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +0 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +0 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +0 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +0 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +0 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +0 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +0 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +0 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +0 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +0 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +3 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +4 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +2 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +3 -4
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +0 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +0 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +0 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +0 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +0 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +0 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +3 -4
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +4 -5
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +2 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +1 -2
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +2 -3
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +2 -2
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -2
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +0 -1
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +0 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +0 -1
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +0 -1
- package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +3 -4
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +4 -5
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +0 -1
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +0 -1
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +0 -1
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +0 -1
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +2 -3
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +3 -4
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +0 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +0 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/constants.js +4 -7
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +4 -7
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/enums.js +14 -16
- package/dist/admin/enums.js.map +1 -1
- package/dist/admin/enums.mjs +13 -15
- package/dist/admin/enums.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +125 -122
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +125 -122
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +700 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +678 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +134 -17
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +137 -20
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +27 -5
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +27 -5
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js +211 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs +188 -0
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +50 -5
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +51 -6
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js +43 -4
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +44 -5
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +195 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +192 -0
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js +37 -0
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs +35 -0
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js +18 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs +13 -0
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +97 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +94 -0
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js +13 -4
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs +13 -4
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +6 -3
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +6 -3
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/future/services/api.js +37 -1
- package/dist/admin/future/services/api.js.map +1 -1
- package/dist/admin/future/services/api.mjs +37 -2
- package/dist/admin/future/services/api.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +36 -5
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +36 -6
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/utils/buildBulkMovePayload.js +20 -0
- package/dist/admin/future/utils/buildBulkMovePayload.js.map +1 -0
- package/dist/admin/future/utils/buildBulkMovePayload.mjs +18 -0
- package/dist/admin/future/utils/buildBulkMovePayload.mjs.map +1 -0
- package/dist/admin/future/utils/canDropItemOnFolder.js +64 -0
- package/dist/admin/future/utils/canDropItemOnFolder.js.map +1 -0
- package/dist/admin/future/utils/canDropItemOnFolder.mjs +61 -0
- package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +1 -0
- package/dist/admin/future/utils/getAssetIcon.js +4 -4
- 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/getBulkMoveErrorMessage.js +23 -0
- package/dist/admin/future/utils/getBulkMoveErrorMessage.js.map +1 -0
- package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs +21 -0
- package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs.map +1 -0
- package/dist/admin/hooks/useAIMetadataJob.js +0 -1
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs +0 -1
- package/dist/admin/hooks/useAIMetadataJob.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 +0 -1
- package/dist/admin/hooks/useBulkEdit.js.map +1 -1
- package/dist/admin/hooks/useBulkEdit.mjs +0 -1
- package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
- package/dist/admin/hooks/useBulkMove.js +0 -1
- package/dist/admin/hooks/useBulkMove.js.map +1 -1
- package/dist/admin/hooks/useBulkMove.mjs +0 -1
- package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
- package/dist/admin/hooks/useBulkRemove.js +0 -1
- package/dist/admin/hooks/useBulkRemove.js.map +1 -1
- package/dist/admin/hooks/useBulkRemove.mjs +0 -1
- package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
- package/dist/admin/hooks/useEditAsset.js +0 -1
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.mjs +0 -1
- package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
- package/dist/admin/hooks/useEditFolder.js +4 -3
- package/dist/admin/hooks/useEditFolder.js.map +1 -1
- package/dist/admin/hooks/useEditFolder.mjs +4 -3
- package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolder.js +0 -1
- package/dist/admin/hooks/useFolder.js.map +1 -1
- package/dist/admin/hooks/useFolder.mjs +0 -1
- package/dist/admin/hooks/useFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolderStructure.js +0 -1
- package/dist/admin/hooks/useFolderStructure.js.map +1 -1
- package/dist/admin/hooks/useFolderStructure.mjs +0 -1
- package/dist/admin/hooks/useFolderStructure.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/index.js +0 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +0 -1
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/pages/App/App.js +0 -1
- package/dist/admin/pages/App/App.js.map +1 -1
- package/dist/admin/pages/App/App.mjs +0 -1
- package/dist/admin/pages/App/App.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +0 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +0 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +0 -1
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +0 -1
- package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.js +0 -1
- package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/pages/App/components/BulkActions.mjs +0 -1
- package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +0 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +0 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +0 -1
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.mjs +0 -1
- package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
- package/dist/admin/pages/App/components/Header.js +0 -1
- package/dist/admin/pages/App/components/Header.js.map +1 -1
- package/dist/admin/pages/App/components/Header.mjs +0 -1
- package/dist/admin/pages/App/components/Header.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -2
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +11 -12
- package/dist/admin/src/components/EmptyAssets/EmptyAssets.d.ts +0 -1
- package/dist/admin/src/components/FolderCard/contexts/FolderCard.d.ts +2 -3
- package/dist/admin/src/constants.d.ts +5 -4
- package/dist/admin/src/enums.d.ts +14 -12
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +10 -0
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/useCropImg.d.ts +48 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +12 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/DragOverlayChip.d.ts +6 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/dndIds.d.ts +4 -0
- package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +51 -0
- package/dist/admin/src/future/services/api.d.ts +24 -6
- package/dist/admin/src/future/services/assets.d.ts +1 -1
- package/dist/admin/src/future/services/folders.d.ts +12 -2
- package/dist/admin/src/future/services/settings.d.ts +1 -1
- package/dist/admin/src/future/store/uploadProgress.d.ts +1 -1
- package/dist/admin/src/future/types/dnd.d.ts +22 -0
- package/dist/admin/src/future/utils/buildBulkMovePayload.d.ts +2 -0
- package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +9 -0
- package/dist/admin/src/future/utils/getBulkMoveErrorMessage.d.ts +1 -0
- package/dist/admin/src/hooks/useAIMetadataJob.d.ts +1 -1
- package/dist/admin/src/hooks/useBulkEdit.d.ts +14 -14
- package/dist/admin/src/hooks/useBulkMove.d.ts +146 -15
- package/dist/admin/src/hooks/useBulkRemove.d.ts +186 -15
- package/dist/admin/src/hooks/useCropImg.d.ts +2 -2
- package/dist/admin/src/hooks/useEditFolder.d.ts +7 -6
- package/dist/admin/src/hooks/useModalQueryParams.d.ts +5 -5
- package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
- package/dist/admin/src/hooks/useSettings.d.ts +5 -5
- package/dist/admin/src/hooks/useTracking.d.ts +1 -1
- package/dist/admin/src/pages/App/ConfigureTheView/state/actions.d.ts +1 -1
- package/dist/admin/src/pages/App/ConfigureTheView/state/init.d.ts +1 -1
- package/dist/admin/src/utils/getBreadcrumbDataML.d.ts +1 -1
- package/dist/admin/src/utils/getFolderParents.d.ts +3 -3
- package/dist/admin/src/utils/icons.d.ts +2 -1
- package/dist/admin/src/utils/rawFileToAsset.d.ts +1 -1
- package/dist/admin/src/utils/urlsToAssets.d.ts +2 -10
- package/dist/admin/translations/en.json.js +28 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +28 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/ja.json.js +175 -0
- package/dist/admin/translations/ja.json.js.map +1 -1
- package/dist/admin/translations/ja.json.mjs +175 -0
- package/dist/admin/translations/ja.json.mjs.map +1 -1
- package/dist/admin/translations/pl.json.js +54 -29
- package/dist/admin/translations/pl.json.js.map +1 -1
- package/dist/admin/translations/pl.json.mjs +54 -29
- package/dist/admin/translations/pl.json.mjs.map +1 -1
- package/dist/admin/utils/icons.js +5 -5
- package/dist/admin/utils/icons.js.map +1 -1
- package/dist/admin/utils/icons.mjs +6 -6
- package/dist/admin/utils/icons.mjs.map +1 -1
- package/dist/admin/utils/typeFromMime.js +9 -9
- package/dist/admin/utils/typeFromMime.js.map +1 -1
- package/dist/admin/utils/typeFromMime.mjs +10 -10
- package/dist/admin/utils/typeFromMime.mjs.map +1 -1
- package/dist/admin/utils/urlsToAssets.js +1 -2
- package/dist/admin/utils/urlsToAssets.js.map +1 -1
- package/dist/admin/utils/urlsToAssets.mjs +1 -2
- package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
- package/dist/server/controllers/admin-upload.js +3 -2
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/admin-upload.mjs +3 -2
- package/dist/server/controllers/admin-upload.mjs.map +1 -1
- package/dist/server/controllers/content-api.js +6 -5
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs +6 -5
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/src/controllers/admin-file.d.ts +4 -12
- package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-folder.d.ts +2 -2
- package/dist/server/src/controllers/admin-settings.d.ts +2 -2
- package/dist/server/src/controllers/admin-upload.d.ts +3 -3
- package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
- package/dist/server/src/controllers/content-api.d.ts +2 -2
- package/dist/server/src/controllers/content-api.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +14 -23
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/find-entity-and-check-permissions.d.ts.map +1 -1
- package/dist/server/src/controllers/utils/folders.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/configureView.d.ts +1 -1
- package/dist/server/src/controllers/validation/admin/folder-file.d.ts +1 -1
- package/dist/server/src/controllers/validation/admin/folder-file.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/folder.d.ts +2 -2
- package/dist/server/src/controllers/validation/admin/folder.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/settings.d.ts +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/utils.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/view-configuration.d.ts +1 -1
- package/dist/server/src/graphql.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +36 -53
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/upload.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata-jobs.d.ts +1 -1
- package/dist/server/src/services/ai-metadata-jobs.d.ts.map +1 -1
- package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts.map +1 -1
- package/dist/server/src/services/file.d.ts +2 -2
- package/dist/server/src/services/file.d.ts.map +1 -1
- package/dist/server/src/services/folder.d.ts +1 -1
- package/dist/server/src/services/folder.d.ts.map +1 -1
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +22 -30
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/server/src/services/provider.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +1 -1
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
- package/dist/server/src/types.d.ts +4 -3
- package/dist/server/src/types.d.ts.map +1 -1
- package/dist/server/src/utils/cron.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
- package/dist/server/utils/mime-validation.js +3 -1
- package/dist/server/utils/mime-validation.js.map +1 -1
- package/dist/server/utils/mime-validation.mjs +3 -1
- package/dist/server/utils/mime-validation.mjs.map +1 -1
- package/package.json +11 -10
- package/dist/admin/future/enums.js +0 -12
- package/dist/admin/future/enums.js.map +0 -1
- package/dist/admin/future/enums.mjs +0 -10
- package/dist/admin/future/enums.mjs.map +0 -1
- package/dist/admin/src/future/enums.d.ts +0 -6
|
@@ -10,7 +10,6 @@ require('byte-size');
|
|
|
10
10
|
require('date-fns');
|
|
11
11
|
var getTrad = require('../../../utils/getTrad.js');
|
|
12
12
|
require('qs');
|
|
13
|
-
require('../../../utils/typeFromMime.js');
|
|
14
13
|
require('../../../utils/urlYupSchema.js');
|
|
15
14
|
|
|
16
15
|
const getContentIntlMessage = ({ isFiltering, canCreate, canRead })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyOrNoPermissions.js","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EmptyOrNoPermissions.js","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,cAAA,CAACC,uBAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,wBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,cAAA,CAACM,mBAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,cAAA,CAACS,UAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,eAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,eAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
|
|
@@ -8,7 +8,6 @@ import 'byte-size';
|
|
|
8
8
|
import 'date-fns';
|
|
9
9
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
10
10
|
import 'qs';
|
|
11
|
-
import '../../../utils/typeFromMime.mjs';
|
|
12
11
|
import '../../../utils/urlYupSchema.mjs';
|
|
13
12
|
|
|
14
13
|
const getContentIntlMessage = ({ isFiltering, canCreate, canRead })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyOrNoPermissions.mjs","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":"
|
|
1
|
+
{"version":3,"file":"EmptyOrNoPermissions.mjs","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,GAAA,CAACC,WAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,gBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,GAAA,CAACM,MAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,GAAA,CAACS,IAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,OAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,OAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
|
|
@@ -13,7 +13,6 @@ var displayedFilters = require('../../../utils/displayedFilters.js');
|
|
|
13
13
|
require('byte-size');
|
|
14
14
|
require('date-fns');
|
|
15
15
|
require('qs');
|
|
16
|
-
require('../../../utils/typeFromMime.js');
|
|
17
16
|
require('../../../utils/urlYupSchema.js');
|
|
18
17
|
|
|
19
18
|
function _interopNamespace(e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;QAC7DL,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAME;AAAY,aAAA;YAAGC,IAAAA,EAAM;AAAE,SAAA,CAAA;AACrD,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACL,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1CW,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACT,OAAO,CAACA,OAAAA,CAAQU,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;QACAZ,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAMD;AAAQ,aAAA;YAAGI,IAAAA,EAAM;AAAE,SAAA,CAAA;AACjD,IAAA,CAAA;IAEA,qBACEO,eAAA,CAACC,qBAAQC,IAAI,EAAA;QAACxB,IAAAA,EAAMA,IAAAA;QAAMyB,YAAAA,EAAcxB,OAAAA;;AACtC,0BAAAyB,cAAA,CAACH,qBAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,cAAA,CAACE,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,cAAA,CAACK,YAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD5B,aAAAA,CAAc;wBAAE6B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,cAAA,CAACS,2BAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,iCAAAA;gBAClBzB,OAAAA,EAASA,OAAAA;gBACT0B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUrC;;0BAEZyB,cAAA,CAACa,qBAAAA,EAAAA;gBACCC,cAAAA,EAAgB7B,OAAAA;gBAChB8B,aAAAA,EAAeL,iCAAAA;gBACfM,cAAAA,EAAgB7B;;;;AAIxB;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;MAgBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;QAC7DL,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAME;AAAY,aAAA;YAAGC,IAAAA,EAAM;AAAE,SAAA,CAAA;AACrD,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACL,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1CW,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACT,OAAO,CAACA,OAAAA,CAAQU,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;QACAZ,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAMD;AAAQ,aAAA;YAAGI,IAAAA,EAAM;AAAE,SAAA,CAAA;AACjD,IAAA,CAAA;IAEA,qBACEO,IAAA,CAACC,QAAQC,IAAI,EAAA;QAACxB,IAAAA,EAAMA,IAAAA;QAAMyB,YAAAA,EAAcxB,OAAAA;;AACtC,0BAAAyB,GAAA,CAACH,QAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,GAAA,CAACE,MAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,GAAA,CAACK,MAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD5B,aAAAA,CAAc;wBAAE6B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,GAAA,CAACS,aAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,gBAAAA;gBAClBzB,OAAAA,EAASA,OAAAA;gBACT0B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUrC;;0BAEZyB,GAAA,CAACa,UAAAA,EAAAA;gBACCC,cAAAA,EAAgB7B,OAAAA;gBAChB8B,aAAAA,EAAeL,gBAAAA;gBACfM,cAAAA,EAAgB7B;;;;AAIxB;;;;"}
|
|
@@ -11,7 +11,6 @@ var Breadcrumbs = require('../../../components/Breadcrumbs/Breadcrumbs.js');
|
|
|
11
11
|
require('byte-size');
|
|
12
12
|
require('date-fns');
|
|
13
13
|
var getTrad = require('../../../utils/getTrad.js');
|
|
14
|
-
require('../../../utils/typeFromMime.js');
|
|
15
14
|
require('../../../utils/urlYupSchema.js');
|
|
16
15
|
|
|
17
16
|
const Header = ({ breadcrumbs = null, canCreate, folder = null, onToggleEditFolderDialog, onToggleUploadAssetDialog })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":";;;;;;;;;;;;;;;AA+BO,MAAMA,MAAAA,GAAS,CAAC,EACrBC,cAAc,IAAI,EAClBC,SAAS,EACTC,SAAS,IAAI,EACbC,wBAAwB,EACxBC,yBAAyB,EACb,GAAA;IACZ,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,QAAQ,EAAE,GAAGC,0BAAAA,EAAAA;AACrB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AACpB,IAAA,MAAMC,SAAAA,GAAY;AAChB,QAAA,GAAGF,KAAK;AACRP,QAAAA,MAAAA,EACEA,QAAQU,MAAAA,IAAU,OAAOV,MAAAA,CAAOU,MAAM,KAAK,QAAA,IAAYV,MAAAA,CAAOU,MAAM,CAACC,EAAE,GACnEX,MAAAA,CAAOU,MAAM,CAACC,EAAE,GAChBC,SAAAA;AACNC,QAAAA,UAAAA,EACEb,QAAQU,MAAAA,IAAU,OAAOV,MAAAA,CAAOU,MAAM,KAAK,QAAA,IAAYV,MAAAA,CAAOU,MAAM,CAACI,IAAI,GACrEd,MAAAA,CAAOU,MAAM,CAACI,IAAI,GAClBF;AACR,KAAA;IAEA,qBACEG,cAAA,CAACC,oBAAQnB,MAAM,EAAA;AACboB,QAAAA,KAAAA,EAAOd,aAAAA,CAAc;AACnBQ,YAAAA,EAAAA,EAAIO,eAAAA,CAAQ,aAAA,CAAA;YACZC,cAAAA,EAAgB,CAAC,aAAa;AAChC,SAAA,CAAA;AACAC,QAAAA,QAAAA,EACEtB,WAAAA,IACA,OAAOA,WAAAA,KAAgB,SAAA,IACvBE,wBACEe,cAAA,CAACM,uBAAAA,EAAAA;AACCC,YAAAA,KAAAA,EAAOnB,aAAAA,CAAc;AACnBQ,gBAAAA,EAAAA,EAAIO,eAAAA,CAAQ,8BAAA,CAAA;gBACZC,cAAAA,EAAgB;AAClB,aAAA,CAAA;YACArB,WAAAA,EAAaA,WAAAA;AACbyB,YAAAA,eAAAA,EAAiBvB,MAAAA,EAAQW;;AAI/Ba,QAAAA,gBAAAA,EACExB,wBACEe,cAAA,CAACU,iBAAAA,EAAAA;YACCC,GAAAA,EAAKC,sBAAAA;AACLC,YAAAA,SAAAA,gBAAWb,cAAA,CAACc,eAAAA,EAAAA,EAAAA,CAAAA;AACZC,YAAAA,EAAAA,EAAI,CAAA,EAAGzB,QAAAA,CAAS,CAAC,EAAE0B,aAAUtB,SAAAA,EAAW;gBAAEuB,MAAAA,EAAQ;aAAM,CAAA,CAAA,CAAI;sBAE3D7B,aAAAA,CAAc;AACbQ,gBAAAA,EAAAA,EAAIO,eAAAA,CAAQ,gCAAA,CAAA;gBACZC,cAAAA,EAAgB;AAClB,aAAA;;AAINc,QAAAA,aAAAA,EACElC,2BACEmC,eAAA,CAACC,iBAAAA,EAAAA;YAAKC,GAAAA,EAAK,CAAA;YAAGC,KAAAA,EAAM,MAAA;;8BAClBtB,cAAA,CAACuB,mBAAAA,EAAAA;AACCV,oBAAAA,SAAAA,gBAAWb,cAAA,CAACwB,UAAAA,EAAAA,EAAAA,CAAAA;oBACZC,OAAAA,EAAQ,WAAA;oBACRC,OAAAA,EAASxC,wBAAAA;oBACTyC,SAAS,EAAA,IAAA;8BAERvC,aAAAA,CAAc;AACbQ,wBAAAA,EAAAA,EAAIO,eAAAA,CAAQ,2BAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA;;8BAGFJ,cAAA,CAACuB,mBAAAA,EAAAA;AAAOV,oBAAAA,SAAAA,gBAAWb,cAAA,CAACwB,UAAAA,EAAAA,EAAAA,CAAAA;oBAASE,OAAAA,EAASvC,yBAAAA;oBAA2BwC,SAAS,EAAA,IAAA;8BACvEvC,aAAAA,CAAc;AACbQ,wBAAAA,EAAAA,EAAIO,eAAAA,CAAQ,2BAAA,CAAA;wBACZC,cAAAA,EAAgB;AAClB,qBAAA;;;;;AAOd;;;;"}
|
|
@@ -9,7 +9,6 @@ import { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs.mjs';
|
|
|
9
9
|
import 'byte-size';
|
|
10
10
|
import 'date-fns';
|
|
11
11
|
import { getTrad } from '../../../utils/getTrad.mjs';
|
|
12
|
-
import '../../../utils/typeFromMime.mjs';
|
|
13
12
|
import '../../../utils/urlYupSchema.mjs';
|
|
14
13
|
|
|
15
14
|
const Header = ({ breadcrumbs = null, canCreate, folder = null, onToggleEditFolderDialog, onToggleUploadAssetDialog })=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"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"}
|
|
@@ -17,7 +17,6 @@ require('byte-size');
|
|
|
17
17
|
require('date-fns');
|
|
18
18
|
var getTrad = require('../../utils/getTrad.js');
|
|
19
19
|
require('qs');
|
|
20
|
-
require('../../utils/typeFromMime.js');
|
|
21
20
|
require('../../utils/urlYupSchema.js');
|
|
22
21
|
var init = require('./init.js');
|
|
23
22
|
var reducer = require('./reducer.js');
|
|
@@ -191,7 +190,7 @@ const MetadataAction = ({ job, imagesWithoutMetadataCount, isConfirmDialogOpen,
|
|
|
191
190
|
onError (err) {
|
|
192
191
|
toggleNotification({
|
|
193
192
|
type: 'danger',
|
|
194
|
-
message: err
|
|
193
|
+
message: err?.message ?? formatMessage({
|
|
195
194
|
id: 'notification.error'
|
|
196
195
|
})
|
|
197
196
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.js","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n useNotification,\n useFetchClient,\n Layouts,\n ConfirmDialog,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n Box,\n Button,\n Dialog,\n Flex,\n Grid,\n Toggle,\n Typography,\n Field,\n Status,\n Divider,\n StatusProps,\n TextButton,\n} from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { AIMetadataJob } from '../../../../shared/contracts/ai-metadata-jobs';\nimport { GetAIMetadataCount, GenerateAIMetadata } from '../../../../shared/contracts/files';\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useAIMetadataJob } from '../../hooks/useAIMetadataJob';\nimport { useSettings } from '../../hooks/useSettings';\nimport { useTracking } from '../../hooks/useTracking';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\n/* -------------------------------------------------------------------------------------------------\n * MetadataAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst BetaStatus = (props: Omit<StatusProps, 'children'>) => {\n const { formatMessage } = useIntl();\n\n return (\n <Status\n size=\"S\"\n variant=\"secondary\"\n style={{ textTransform: 'uppercase', display: 'flex' }}\n {...props}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Status.beta',\n defaultMessage: 'Beta',\n })}\n </Typography>\n </Status>\n );\n};\n\ninterface MetadataActionProps {\n job: AIMetadataJob | null;\n imagesWithoutMetadataCount: number;\n isConfirmDialogOpen: boolean;\n onConfirmDialogChange: (open: boolean) => void;\n onGenerate: () => Promise<void>;\n}\n\nconst MetadataAction = ({\n job,\n imagesWithoutMetadataCount,\n isConfirmDialogOpen,\n onConfirmDialogChange,\n onGenerate,\n}: MetadataActionProps) => {\n const { formatMessage } = useIntl();\n\n // If there's an active job processing\n if (job?.status === 'processing') {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generatingMetadata'),\n defaultMessage: 'AI is generating your metadata',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // Only show completed state when all images have metadata\n if (imagesWithoutMetadataCount === 0) {\n return (\n <Typography variant=\"pi\" textColor=\"primary600\">\n <Flex gap={2} alignItems=\"center\">\n <Check width=\"16px\" height=\"16px\" />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.metadataGenerated'),\n defaultMessage: 'Your metadata has been generated',\n })}\n </Flex>\n </Typography>\n );\n }\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={onConfirmDialogChange}>\n <Dialog.Trigger>\n <TextButton disabled={imagesWithoutMetadataCount === 0}>\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generateButton'),\n defaultMessage: 'Generate metadata',\n })}\n </TextButton>\n </Dialog.Trigger>\n <ConfirmDialog\n variant=\"success-light\"\n onConfirm={onGenerate}\n title={\n <Flex gap={2}>\n <BetaStatus />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.confirmDialog.title'),\n defaultMessage: 'Generate AI Metadata',\n })}\n </Flex>\n }\n >\n {formatMessage(\n {\n id: getTrad('settings.form.aiMetadata.confirmDialog.message'),\n defaultMessage:\n 'This will start a process in the background to generate captions and alternative text for {count, plural, one {# image} other {# images}}. AI can make mistakes, be sure to review the generated content.',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put, post, get } = useFetchClient();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const { trackUsage } = useTracking();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n const { data: imageCountResponse, isLoading: isLoadingImagesWithoutMetadataCount } = useQuery<\n GetAIMetadataCount.Response['data'],\n GetAIMetadataCount.Response['error']\n >(\n ['ai-metadata-count'],\n async () => {\n const { data } = await get('/upload/actions/generate-ai-metadata/count');\n return data;\n },\n {\n enabled: isAIAvailable && !!data?.aiMetadata,\n retry: false,\n }\n );\n\n const imagesWithoutMetadataCount = imageCountResponse?.imagesWithoutMetadataCount ?? 0;\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err: any) {\n toggleNotification({\n type: 'danger',\n message: err.message || formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n // Poll for latest active job - notifications are handled inside the hook\n const { data: aiMetadataJob, refetch: refetchAiMetadataJob } = useAIMetadataJob({\n enabled: isAIAvailable,\n });\n\n const { mutateAsync: startGenerateAIMetadata } = useMutation<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Response['error'],\n void\n >(\n async () => {\n const { data } = await post('/upload/actions/generate-ai-metadata', {});\n return data;\n },\n {\n onSuccess() {\n setIsConfirmDialogOpen(false);\n // Refetch job status to start polling the new job\n refetchAiMetadataJob();\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: (err as Error)?.message || formatMessage({ id: 'notification.error' }),\n });\n setIsConfirmDialogOpen(false);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {/* AI features section when ai is available */}\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n xs={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n {/* Retroactive metadata generation when aiMetadata is enabled */}\n {initialData?.aiMetadata &&\n !isLoadingImagesWithoutMetadataCount &&\n Boolean(imageCountResponse?.totalImages) && (\n <>\n <Divider marginTop={4} marginBottom={4} />\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={2}>\n <Flex gap={2}>\n <BetaStatus size=\"XS\" />\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {imagesWithoutMetadataCount === 0\n ? formatMessage({\n id: getTrad('settings.form.aiMetadata.allAssetsHaveMetadata'),\n defaultMessage: 'All assets have caption and alt text',\n })\n : formatMessage(\n {\n id: getTrad(\n 'settings.form.aiMetadata.imagesWithoutMetadata'\n ),\n defaultMessage:\n '{count, plural, one {# image lacks captions or alternative text} other {# images lack captions or alternative text}}',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </Typography>\n </Flex>\n <MetadataAction\n job={aiMetadataJob ?? null}\n imagesWithoutMetadataCount={imagesWithoutMetadataCount}\n isConfirmDialogOpen={isConfirmDialogOpen}\n onConfirmDialogChange={setIsConfirmDialogOpen}\n onGenerate={async () => {\n await startGenerateAIMetadata();\n trackUsage('didGenerateMetadataRetroactively');\n }}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["BetaStatus","props","formatMessage","useIntl","_jsx","Status","size","variant","style","textTransform","display","Typography","tag","fontWeight","id","defaultMessage","MetadataAction","job","imagesWithoutMetadataCount","isConfirmDialogOpen","onConfirmDialogChange","onGenerate","status","Flex","gap","alignItems","textColor","getTrad","_jsxs","Check","width","height","Dialog","Root","open","onOpenChange","Trigger","TextButton","disabled","ConfirmDialog","onConfirm","title","count","SettingsPage","toggleNotification","useNotification","put","post","get","useFetchClient","setIsConfirmDialogOpen","React","useState","trackUsage","useTracking","initialData","modifiedData","dispatch","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","imageCountResponse","isLoadingImagesWithoutMetadataCount","useQuery","enabled","aiMetadata","retry","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","onError","err","aiMetadataJob","refetchAiMetadataJob","useAIMetadataJob","startGenerateAIMetadata","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","Page","Loading","Main","tabIndex","Title","form","onSubmit","Layouts","Header","primaryAction","Button","loading","startIcon","fullWidth","subtitle","Content","direction","Box","background","padding","shadow","hasRadius","Grid","Item","col","xs","color","Sparkle","paddingTop","justifyContent","Field","minWidth","Toggle","checked","offLabel","onLabel","onChange","Boolean","totalImages","_Fragment","Divider","marginTop","marginBottom","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SettingsPage.js","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n useNotification,\n useFetchClient,\n Layouts,\n ConfirmDialog,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n Box,\n Button,\n Dialog,\n Flex,\n Grid,\n Toggle,\n Typography,\n Field,\n Status,\n Divider,\n StatusProps,\n TextButton,\n} from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { AIMetadataJob } from '../../../../shared/contracts/ai-metadata-jobs';\nimport { GetAIMetadataCount, GenerateAIMetadata } from '../../../../shared/contracts/files';\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useAIMetadataJob } from '../../hooks/useAIMetadataJob';\nimport { useSettings } from '../../hooks/useSettings';\nimport { useTracking } from '../../hooks/useTracking';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\n/* -------------------------------------------------------------------------------------------------\n * MetadataAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst BetaStatus = (props: Omit<StatusProps, 'children'>) => {\n const { formatMessage } = useIntl();\n\n return (\n <Status\n size=\"S\"\n variant=\"secondary\"\n style={{ textTransform: 'uppercase', display: 'flex' }}\n {...props}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Status.beta',\n defaultMessage: 'Beta',\n })}\n </Typography>\n </Status>\n );\n};\n\ninterface MetadataActionProps {\n job: AIMetadataJob | null;\n imagesWithoutMetadataCount: number;\n isConfirmDialogOpen: boolean;\n onConfirmDialogChange: (open: boolean) => void;\n onGenerate: () => Promise<void>;\n}\n\nconst MetadataAction = ({\n job,\n imagesWithoutMetadataCount,\n isConfirmDialogOpen,\n onConfirmDialogChange,\n onGenerate,\n}: MetadataActionProps) => {\n const { formatMessage } = useIntl();\n\n // If there's an active job processing\n if (job?.status === 'processing') {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generatingMetadata'),\n defaultMessage: 'AI is generating your metadata',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // Only show completed state when all images have metadata\n if (imagesWithoutMetadataCount === 0) {\n return (\n <Typography variant=\"pi\" textColor=\"primary600\">\n <Flex gap={2} alignItems=\"center\">\n <Check width=\"16px\" height=\"16px\" />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.metadataGenerated'),\n defaultMessage: 'Your metadata has been generated',\n })}\n </Flex>\n </Typography>\n );\n }\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={onConfirmDialogChange}>\n <Dialog.Trigger>\n <TextButton disabled={imagesWithoutMetadataCount === 0}>\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generateButton'),\n defaultMessage: 'Generate metadata',\n })}\n </TextButton>\n </Dialog.Trigger>\n <ConfirmDialog\n variant=\"success-light\"\n onConfirm={onGenerate}\n title={\n <Flex gap={2}>\n <BetaStatus />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.confirmDialog.title'),\n defaultMessage: 'Generate AI Metadata',\n })}\n </Flex>\n }\n >\n {formatMessage(\n {\n id: getTrad('settings.form.aiMetadata.confirmDialog.message'),\n defaultMessage:\n 'This will start a process in the background to generate captions and alternative text for {count, plural, one {# image} other {# images}}. AI can make mistakes, be sure to review the generated content.',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put, post, get } = useFetchClient();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const { trackUsage } = useTracking();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n const { data: imageCountResponse, isLoading: isLoadingImagesWithoutMetadataCount } = useQuery<\n GetAIMetadataCount.Response['data'],\n GetAIMetadataCount.Response['error']\n >(\n ['ai-metadata-count'],\n async () => {\n const { data } = await get<GetAIMetadataCount.Response['data']>(\n '/upload/actions/generate-ai-metadata/count'\n );\n return data;\n },\n {\n enabled: isAIAvailable && !!data?.aiMetadata,\n retry: false,\n }\n );\n\n const imagesWithoutMetadataCount = imageCountResponse?.imagesWithoutMetadataCount ?? 0;\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put<UpdateSettings.Response['data'], UpdateSettings.Request['body']>(\n '/upload/settings',\n body\n );\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: err?.message ?? formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n // Poll for latest active job - notifications are handled inside the hook\n const { data: aiMetadataJob, refetch: refetchAiMetadataJob } = useAIMetadataJob({\n enabled: isAIAvailable,\n });\n\n const { mutateAsync: startGenerateAIMetadata } = useMutation<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Response['error'],\n void\n >(\n async () => {\n const { data } = await post<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Request['body']\n >('/upload/actions/generate-ai-metadata', {});\n return data;\n },\n {\n onSuccess() {\n setIsConfirmDialogOpen(false);\n // Refetch job status to start polling the new job\n refetchAiMetadataJob();\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: (err as Error)?.message || formatMessage({ id: 'notification.error' }),\n });\n setIsConfirmDialogOpen(false);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {/* AI features section when ai is available */}\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n xs={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n {/* Retroactive metadata generation when aiMetadata is enabled */}\n {initialData?.aiMetadata &&\n !isLoadingImagesWithoutMetadataCount &&\n Boolean(imageCountResponse?.totalImages) && (\n <>\n <Divider marginTop={4} marginBottom={4} />\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={2}>\n <Flex gap={2}>\n <BetaStatus size=\"XS\" />\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {imagesWithoutMetadataCount === 0\n ? formatMessage({\n id: getTrad('settings.form.aiMetadata.allAssetsHaveMetadata'),\n defaultMessage: 'All assets have caption and alt text',\n })\n : formatMessage(\n {\n id: getTrad(\n 'settings.form.aiMetadata.imagesWithoutMetadata'\n ),\n defaultMessage:\n '{count, plural, one {# image lacks captions or alternative text} other {# images lack captions or alternative text}}',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </Typography>\n </Flex>\n <MetadataAction\n job={aiMetadataJob ?? null}\n imagesWithoutMetadataCount={imagesWithoutMetadataCount}\n isConfirmDialogOpen={isConfirmDialogOpen}\n onConfirmDialogChange={setIsConfirmDialogOpen}\n onGenerate={async () => {\n await startGenerateAIMetadata();\n trackUsage('didGenerateMetadataRetroactively');\n }}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["BetaStatus","props","formatMessage","useIntl","_jsx","Status","size","variant","style","textTransform","display","Typography","tag","fontWeight","id","defaultMessage","MetadataAction","job","imagesWithoutMetadataCount","isConfirmDialogOpen","onConfirmDialogChange","onGenerate","status","Flex","gap","alignItems","textColor","getTrad","_jsxs","Check","width","height","Dialog","Root","open","onOpenChange","Trigger","TextButton","disabled","ConfirmDialog","onConfirm","title","count","SettingsPage","toggleNotification","useNotification","put","post","get","useFetchClient","setIsConfirmDialogOpen","React","useState","trackUsage","useTracking","initialData","modifiedData","dispatch","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","imageCountResponse","isLoadingImagesWithoutMetadataCount","useQuery","enabled","aiMetadata","retry","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","onError","err","aiMetadataJob","refetchAiMetadataJob","useAIMetadataJob","startGenerateAIMetadata","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","Page","Loading","Main","tabIndex","Title","form","onSubmit","Layouts","Header","primaryAction","Button","loading","startIcon","fullWidth","subtitle","Content","direction","Box","background","padding","shadow","hasRadius","Grid","Item","col","xs","color","Sparkle","paddingTop","justifyContent","Field","minWidth","Toggle","checked","offLabel","onLabel","onChange","Boolean","totalImages","_Fragment","Divider","marginTop","marginBottom","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
|
|
@@ -15,7 +15,6 @@ import 'byte-size';
|
|
|
15
15
|
import 'date-fns';
|
|
16
16
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
17
17
|
import 'qs';
|
|
18
|
-
import '../../utils/typeFromMime.mjs';
|
|
19
18
|
import '../../utils/urlYupSchema.mjs';
|
|
20
19
|
import { init } from './init.mjs';
|
|
21
20
|
import { reducer, initialState } from './reducer.mjs';
|
|
@@ -166,7 +165,7 @@ const MetadataAction = ({ job, imagesWithoutMetadataCount, isConfirmDialogOpen,
|
|
|
166
165
|
onError (err) {
|
|
167
166
|
toggleNotification({
|
|
168
167
|
type: 'danger',
|
|
169
|
-
message: err
|
|
168
|
+
message: err?.message ?? formatMessage({
|
|
170
169
|
id: 'notification.error'
|
|
171
170
|
})
|
|
172
171
|
});
|