@strapi/upload 5.54.0 → 5.55.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/App.js +33 -0
- package/dist/admin/App.js.map +1 -0
- package/dist/admin/App.mjs +31 -0
- package/dist/admin/App.mjs.map +1 -0
- package/dist/admin/components/Drawer.js.map +1 -0
- package/dist/admin/components/Drawer.mjs.map +1 -0
- package/dist/admin/components/TruncatedText.js.map +1 -0
- package/dist/admin/components/TruncatedText.mjs.map +1 -0
- package/dist/admin/components/UploadProgressDialog.js.map +1 -0
- package/dist/admin/components/UploadProgressDialog.mjs.map +1 -0
- package/dist/admin/constants.js +7 -12
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +7 -12
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js +39 -0
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -0
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +37 -0
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -0
- package/dist/admin/hooks/useApiErrorMessage.js.map +1 -0
- package/dist/admin/hooks/useApiErrorMessage.mjs.map +1 -0
- package/dist/admin/hooks/useMediaLibraryPermissions.js +24 -5
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs +24 -5
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +39 -7
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +38 -8
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/index.js +10 -15
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +10 -15
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/legacy/ai/components/AIAssetCard.js +621 -0
- package/dist/admin/legacy/ai/components/AIAssetCard.js.map +1 -0
- package/dist/admin/legacy/ai/components/AIAssetCard.mjs +598 -0
- package/dist/admin/legacy/ai/components/AIAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/ai/components/AIUploadModal.js.map +1 -0
- package/dist/admin/legacy/ai/components/AIUploadModal.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AssetCard.js +67 -0
- package/dist/admin/legacy/components/AssetCard/AssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AssetCard.mjs +65 -0
- package/dist/admin/legacy/components/AssetCard/AssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AudioAssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AudioAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AudioPreview.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/AudioPreview.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/DocAssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/DocAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/ImageAssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/ImageAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js +154 -0
- package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs +132 -0
- package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/VideoAssetCard.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/VideoAssetCard.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -0
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +320 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +318 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PageSize.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/DialogFooter.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/DialogFooter.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -0
- package/dist/admin/legacy/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -0
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -0
- package/dist/admin/legacy/components/AssetGridList/Draggable.js.map +1 -0
- package/dist/admin/legacy/components/AssetGridList/Draggable.mjs.map +1 -0
- package/dist/admin/legacy/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/admin/legacy/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -0
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -0
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -0
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -0
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/ContextInfo/ContextInfo.js.map +1 -0
- package/dist/admin/legacy/components/ContextInfo/ContextInfo.mjs.map +1 -0
- package/dist/admin/legacy/components/CopyLinkButton/CopyLinkButton.js.map +1 -0
- package/dist/admin/legacy/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/DialogHeader.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/DialogHeader.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.js +114 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +89 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js +362 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +337 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -0
- package/dist/admin/legacy/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/EditFolderDialog.js.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -0
- package/dist/admin/legacy/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/EmptyAssets/EmptyAssetGrid.js.map +1 -0
- package/dist/admin/legacy/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -0
- package/dist/admin/legacy/components/EmptyAssets/EmptyAssets.js.map +1 -0
- package/dist/admin/legacy/components/EmptyAssets/EmptyAssets.mjs.map +1 -0
- package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -0
- package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -0
- package/dist/admin/legacy/components/FilterList/FilterTag.js.map +1 -0
- package/dist/admin/legacy/components/FilterList/FilterTag.mjs.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/utils/getFilterList.js.map +1 -0
- package/dist/admin/legacy/components/FilterPopover/utils/getFilterList.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCard/FolderCard.js.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -0
- package/dist/admin/legacy/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderCard/contexts/FolderCard.js.map +1 -0
- package/dist/admin/legacy/components/FolderCard/contexts/FolderCard.mjs.map +1 -0
- package/dist/admin/legacy/components/FolderGridList/FolderGridList.js.map +1 -0
- package/dist/admin/legacy/components/FolderGridList/FolderGridList.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.js +89 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +87 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +111 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +89 -0
- package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
- package/dist/admin/legacy/components/SelectTree/Option.js.map +1 -0
- package/dist/admin/legacy/components/SelectTree/Option.mjs.map +1 -0
- package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -0
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/flattenTree.js.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/flattenTree.mjs.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/getOpenValues.js.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/getOpenValues.mjs.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/getValuesToClose.js.map +1 -0
- package/dist/admin/legacy/components/SelectTree/utils/getValuesToClose.mjs.map +1 -0
- package/dist/admin/legacy/components/SortPicker/SortPicker.js +40 -0
- package/dist/admin/legacy/components/SortPicker/SortPicker.js.map +1 -0
- package/dist/admin/legacy/components/SortPicker/SortPicker.mjs +38 -0
- package/dist/admin/legacy/components/SortPicker/SortPicker.mjs.map +1 -0
- package/dist/admin/legacy/components/TableList/CellContent.js.map +1 -0
- package/dist/admin/legacy/components/TableList/CellContent.mjs.map +1 -0
- package/dist/admin/legacy/components/TableList/PreviewCell.js +116 -0
- package/dist/admin/legacy/components/TableList/PreviewCell.js.map +1 -0
- package/dist/admin/legacy/components/TableList/PreviewCell.mjs +114 -0
- package/dist/admin/legacy/components/TableList/PreviewCell.mjs.map +1 -0
- package/dist/admin/legacy/components/TableList/TableList.js +100 -0
- package/dist/admin/legacy/components/TableList/TableList.js.map +1 -0
- package/dist/admin/legacy/components/TableList/TableList.mjs +98 -0
- package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -0
- package/dist/admin/legacy/components/TableList/TableRows.js +105 -0
- package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -0
- package/dist/admin/legacy/components/TableList/TableRows.mjs +103 -0
- package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +177 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +155 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -0
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -0
- package/dist/admin/legacy/components/UploadProgress/UploadProgress.js.map +1 -0
- package/dist/admin/legacy/components/UploadProgress/UploadProgress.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useAiAvailability.js.map +1 -0
- package/dist/admin/legacy/hooks/useAiAvailability.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useAssets.js +127 -0
- package/dist/admin/legacy/hooks/useAssets.js.map +1 -0
- package/dist/admin/legacy/hooks/useAssets.mjs +105 -0
- package/dist/admin/legacy/hooks/useAssets.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useBulkEdit.js +65 -0
- package/dist/admin/legacy/hooks/useBulkEdit.js.map +1 -0
- package/dist/admin/legacy/hooks/useBulkEdit.mjs +63 -0
- package/dist/admin/legacy/hooks/useBulkEdit.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useBulkMove.js +78 -0
- package/dist/admin/legacy/hooks/useBulkMove.js.map +1 -0
- package/dist/admin/legacy/hooks/useBulkMove.mjs +76 -0
- package/dist/admin/legacy/hooks/useBulkMove.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useBulkRemove.js +83 -0
- package/dist/admin/legacy/hooks/useBulkRemove.js.map +1 -0
- package/dist/admin/legacy/hooks/useBulkRemove.mjs +81 -0
- package/dist/admin/legacy/hooks/useBulkRemove.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useConfig.js +58 -0
- package/dist/admin/legacy/hooks/useConfig.js.map +1 -0
- package/dist/admin/legacy/hooks/useConfig.mjs +56 -0
- package/dist/admin/legacy/hooks/useConfig.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useCropImg.js.map +1 -0
- package/dist/admin/legacy/hooks/useCropImg.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useEditAsset.js +115 -0
- package/dist/admin/legacy/hooks/useEditAsset.js.map +1 -0
- package/dist/admin/legacy/hooks/useEditAsset.mjs +93 -0
- package/dist/admin/legacy/hooks/useEditAsset.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useEditFolder.js +45 -0
- package/dist/admin/legacy/hooks/useEditFolder.js.map +1 -0
- package/dist/admin/legacy/hooks/useEditFolder.mjs +43 -0
- package/dist/admin/legacy/hooks/useEditFolder.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useFolder.js +57 -0
- package/dist/admin/legacy/hooks/useFolder.js.map +1 -0
- package/dist/admin/legacy/hooks/useFolder.mjs +55 -0
- package/dist/admin/legacy/hooks/useFolder.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useFolderStructure.js +52 -0
- package/dist/admin/legacy/hooks/useFolderStructure.js.map +1 -0
- package/dist/admin/legacy/hooks/useFolderStructure.mjs +50 -0
- package/dist/admin/legacy/hooks/useFolderStructure.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useFolders.js +108 -0
- package/dist/admin/legacy/hooks/useFolders.js.map +1 -0
- package/dist/admin/legacy/hooks/useFolders.mjs +86 -0
- package/dist/admin/legacy/hooks/useFolders.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useMediaLibraryPermissions.js +16 -0
- package/dist/admin/legacy/hooks/useMediaLibraryPermissions.js.map +1 -0
- package/dist/admin/legacy/hooks/useMediaLibraryPermissions.mjs +14 -0
- package/dist/admin/legacy/hooks/useMediaLibraryPermissions.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useModalQueryParams.js.map +1 -0
- package/dist/admin/legacy/hooks/useModalQueryParams.mjs.map +1 -0
- package/dist/admin/legacy/hooks/usePersistentState.js.map +1 -0
- package/dist/admin/legacy/hooks/usePersistentState.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useRemoveAsset.js +58 -0
- package/dist/admin/legacy/hooks/useRemoveAsset.js.map +1 -0
- package/dist/admin/legacy/hooks/useRemoveAsset.mjs +56 -0
- package/dist/admin/legacy/hooks/useRemoveAsset.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useSelectionState.js.map +1 -0
- package/dist/admin/legacy/hooks/useSelectionState.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useSettings.js.map +1 -0
- package/dist/admin/legacy/hooks/useSettings.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useTracking.js +25 -0
- package/dist/admin/legacy/hooks/useTracking.js.map +1 -0
- package/dist/admin/legacy/hooks/useTracking.mjs +23 -0
- package/dist/admin/legacy/hooks/useTracking.mjs.map +1 -0
- package/dist/admin/legacy/hooks/useUpload.js +109 -0
- package/dist/admin/legacy/hooks/useUpload.js.map +1 -0
- package/dist/admin/legacy/hooks/useUpload.mjs +87 -0
- package/dist/admin/legacy/hooks/useUpload.mjs.map +1 -0
- package/dist/admin/legacy/hooks/utils/renameKeys.js.map +1 -0
- package/dist/admin/legacy/hooks/utils/renameKeys.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/App.js.map +1 -0
- package/dist/admin/legacy/pages/App/App.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js +145 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs +120 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.js +109 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.mjs +107 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.js +10 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.mjs +7 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actions.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/actions.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/init.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/init.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/reducer.js.map +1 -0
- package/dist/admin/legacy/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/MediaLibrary.js +469 -0
- package/dist/admin/legacy/pages/App/MediaLibrary.js.map +1 -0
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs +447 -0
- package/dist/admin/legacy/pages/App/MediaLibrary.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkDeleteButton.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkDeleteButton.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/EmptyOrNoPermissions.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/Filters.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/Filters.mjs.map +1 -0
- package/dist/admin/legacy/pages/App/components/Header.js.map +1 -0
- package/dist/admin/legacy/pages/App/components/Header.mjs.map +1 -0
- package/dist/admin/legacy/utils/appendSearchParamsToUrl.js.map +1 -0
- package/dist/admin/legacy/utils/appendSearchParamsToUrl.mjs.map +1 -0
- package/dist/admin/legacy/utils/containsAssetFilter.js.map +1 -0
- package/dist/admin/legacy/utils/containsAssetFilter.mjs.map +1 -0
- package/dist/admin/legacy/utils/createAssetUrl.js.map +1 -0
- package/dist/admin/legacy/utils/createAssetUrl.mjs.map +1 -0
- package/dist/admin/legacy/utils/displayedFilters.js.map +1 -0
- package/dist/admin/legacy/utils/displayedFilters.mjs.map +1 -0
- package/dist/admin/legacy/utils/downloadFile.js +13 -0
- package/dist/admin/legacy/utils/downloadFile.js.map +1 -0
- package/dist/admin/legacy/utils/downloadFile.mjs +11 -0
- package/dist/admin/legacy/utils/downloadFile.mjs.map +1 -0
- package/dist/admin/legacy/utils/findRecursiveFolderByValue.js.map +1 -0
- package/dist/admin/legacy/utils/findRecursiveFolderByValue.mjs.map +1 -0
- package/dist/admin/legacy/utils/formatBytes.js.map +1 -0
- package/dist/admin/legacy/utils/formatBytes.mjs.map +1 -0
- package/dist/admin/legacy/utils/formatDuration.js.map +1 -0
- package/dist/admin/legacy/utils/formatDuration.mjs.map +1 -0
- package/dist/admin/legacy/utils/getAPIInnerErrors.js.map +1 -0
- package/dist/admin/legacy/utils/getAPIInnerErrors.mjs.map +1 -0
- package/dist/admin/legacy/utils/getAllowedFiles.js.map +1 -0
- package/dist/admin/legacy/utils/getAllowedFiles.mjs.map +1 -0
- package/dist/admin/legacy/utils/getBreadcrumbDataCM.js.map +1 -0
- package/dist/admin/legacy/utils/getBreadcrumbDataCM.mjs.map +1 -0
- package/dist/admin/legacy/utils/getBreadcrumbDataML.js.map +1 -0
- package/dist/admin/legacy/utils/getBreadcrumbDataML.mjs.map +1 -0
- package/dist/admin/legacy/utils/getFileExtension.js.map +1 -0
- package/dist/admin/legacy/utils/getFileExtension.mjs.map +1 -0
- package/dist/admin/legacy/utils/getFolderParents.js.map +1 -0
- package/dist/admin/legacy/utils/getFolderParents.mjs.map +1 -0
- package/dist/admin/legacy/utils/getFolderURL.js.map +1 -0
- package/dist/admin/legacy/utils/getFolderURL.mjs.map +1 -0
- package/dist/admin/legacy/utils/getTrad.js +8 -0
- package/dist/admin/legacy/utils/getTrad.js.map +1 -0
- package/dist/admin/legacy/utils/getTrad.mjs +6 -0
- package/dist/admin/legacy/utils/getTrad.mjs.map +1 -0
- package/dist/admin/legacy/utils/icons.js +23 -0
- package/dist/admin/legacy/utils/icons.js.map +1 -0
- package/dist/admin/legacy/utils/icons.mjs +19 -0
- package/dist/admin/legacy/utils/icons.mjs.map +1 -0
- package/dist/admin/legacy/utils/moveElement.js.map +1 -0
- package/dist/admin/legacy/utils/moveElement.mjs.map +1 -0
- package/dist/admin/legacy/utils/normalizeAPIError.js.map +1 -0
- package/dist/admin/legacy/utils/normalizeAPIError.mjs.map +1 -0
- package/dist/admin/legacy/utils/prefixFileUrlWithBackendUrl.js.map +1 -0
- package/dist/admin/legacy/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -0
- package/dist/admin/legacy/utils/prefixPluginTranslations.js.map +1 -0
- package/dist/admin/legacy/utils/prefixPluginTranslations.mjs.map +1 -0
- package/dist/admin/legacy/utils/rawFileToAsset.js +23 -0
- package/dist/admin/legacy/utils/rawFileToAsset.js.map +1 -0
- package/dist/admin/legacy/utils/rawFileToAsset.mjs +21 -0
- package/dist/admin/legacy/utils/rawFileToAsset.mjs.map +1 -0
- package/dist/admin/legacy/utils/resolveFileMime.js.map +1 -0
- package/dist/admin/legacy/utils/resolveFileMime.mjs.map +1 -0
- package/dist/admin/legacy/utils/toSingularTypes.js.map +1 -0
- package/dist/admin/legacy/utils/toSingularTypes.mjs.map +1 -0
- package/dist/admin/legacy/utils/urlYupSchema.js.map +1 -0
- package/dist/admin/legacy/utils/urlYupSchema.mjs.map +1 -0
- package/dist/admin/legacy/utils/urlsToAssets.js +42 -0
- package/dist/admin/legacy/utils/urlsToAssets.js.map +1 -0
- package/dist/admin/legacy/utils/urlsToAssets.mjs +40 -0
- package/dist/admin/legacy/utils/urlsToAssets.mjs.map +1 -0
- package/dist/admin/pages/Assets/AssetsPage.js +828 -0
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -0
- package/dist/admin/pages/Assets/AssetsPage.mjs +806 -0
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ActionsMenuContent.js.map +1 -0
- package/dist/admin/pages/Assets/components/ActionsMenuContent.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetActionsMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetActionsMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +1202 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +1175 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.js +261 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.mjs +239 -0
- package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsGrid.js +528 -0
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +526 -0
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.js +431 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +429 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BulkMoveDialog.js.map +1 -0
- package/dist/admin/pages/Assets/components/BulkMoveDialog.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BusyOverlay.js.map +1 -0
- package/dist/admin/pages/Assets/components/BusyOverlay.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -0
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.js.map +1 -0
- package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/buildDragSet.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/computeValidDropTargets.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -0
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -0
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/EmptyState.js.map +1 -0
- package/dist/admin/pages/Assets/components/EmptyState.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -0
- package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FilterMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/FilterMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderActionsMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderActionsMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderFormDialog.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderFormDialog.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ImportFromUrlDialog.js.map +1 -0
- package/dist/admin/pages/Assets/components/ImportFromUrlDialog.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/SortMenu.js.map +1 -0
- package/dist/admin/pages/Assets/components/SortMenu.mjs.map +1 -0
- package/dist/admin/pages/Assets/constants.js.map +1 -0
- package/dist/admin/pages/Assets/constants.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useBusyAssets.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useFolderInfo.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useFolderInfo.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useInfiniteAssets.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListScrollRestoration.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListScrollRestoration.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/buildAssetFilters.js.map +1 -0
- package/dist/admin/pages/Assets/utils/buildAssetFilters.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/listQueryKey.js.map +1 -0
- package/dist/admin/pages/Assets/utils/listQueryKey.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/mergeMixedList.js.map +1 -0
- package/dist/admin/pages/Assets/utils/mergeMixedList.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
- package/dist/admin/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/renderedKeys.js.map +1 -0
- package/dist/admin/pages/Assets/utils/renderedKeys.mjs.map +1 -0
- package/dist/admin/pages/Assets/utils/selection.js.map +1 -0
- package/dist/admin/pages/Assets/utils/selection.mjs.map +1 -0
- package/dist/admin/pages/SettingsPage/SettingsPage.js +23 -28
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +23 -28
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/useAIMetadataJob.js +110 -0
- package/dist/admin/pages/SettingsPage/useAIMetadataJob.js.map +1 -0
- package/dist/admin/pages/SettingsPage/useAIMetadataJob.mjs +88 -0
- package/dist/admin/pages/SettingsPage/useAIMetadataJob.mjs.map +1 -0
- package/dist/admin/services/api.js.map +1 -0
- package/dist/admin/services/api.mjs.map +1 -0
- package/dist/admin/services/assets.js.map +1 -0
- package/dist/admin/services/assets.mjs.map +1 -0
- package/dist/admin/services/folders.js.map +1 -0
- package/dist/admin/services/folders.mjs.map +1 -0
- package/dist/admin/services/settings.js.map +1 -0
- package/dist/admin/services/settings.mjs.map +1 -0
- package/dist/admin/services/uploadFileViaXHR.js.map +1 -0
- package/dist/admin/services/uploadFileViaXHR.mjs.map +1 -0
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +19 -2
- package/dist/admin/src/hooks/useTracking.d.ts +26 -1
- package/dist/admin/src/legacy/ai/components/AIAssetCard.d.ts +13 -0
- package/dist/admin/src/legacy/ai/components/AIUploadModal.d.ts +55 -0
- package/dist/admin/src/legacy/components/AssetCard/AssetCard.d.ts +19 -0
- package/dist/admin/src/legacy/components/AssetCard/UploadingAssetCard.d.ts +17 -0
- package/dist/admin/src/legacy/components/AssetDialog/AssetDialog.d.ts +39 -0
- package/dist/admin/src/legacy/components/AssetDialog/BrowseStep/BrowseStep.d.ts +63 -0
- package/dist/admin/src/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.d.ts +7 -0
- package/dist/admin/src/legacy/components/AssetDialog/SelectedStep/SelectedStep.d.ts +8 -0
- package/dist/admin/src/legacy/components/AssetGridList/AssetGridList.d.ts +13 -0
- package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +15 -0
- package/dist/admin/src/legacy/components/EditAssetDialog/EditAssetContent.d.ts +31 -0
- package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +8 -0
- package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +26 -0
- package/dist/admin/src/legacy/components/EditAssetDialog/RemoveAssetDialog.d.ts +8 -0
- package/dist/admin/src/legacy/components/EditFolderDialog/EditFolderDialog.d.ts +12 -0
- package/dist/admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +10 -0
- package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.d.ts +4 -0
- package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.d.ts +9 -0
- package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.d.ts +23 -0
- package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.d.ts +10 -0
- package/dist/admin/src/legacy/components/SelectTree/Option.d.ts +16 -0
- package/dist/admin/src/legacy/components/SortPicker/SortPicker.d.ts +7 -0
- package/dist/admin/src/legacy/components/TableList/CellContent.d.ts +8 -0
- package/dist/admin/src/legacy/components/TableList/PreviewCell.d.ts +7 -0
- package/dist/admin/src/legacy/components/TableList/TableList.d.ts +31 -0
- package/dist/admin/src/legacy/components/TableList/TableRows.d.ts +22 -0
- package/dist/admin/src/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.d.ts +13 -0
- package/dist/admin/src/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +22 -0
- package/dist/admin/src/legacy/components/UploadAssetDialog/UploadAssetDialog.d.ts +21 -0
- package/dist/admin/src/legacy/components/UploadProgress/UploadProgress.d.ts +7 -0
- package/dist/admin/src/legacy/hooks/useAssets.d.ts +14 -0
- package/dist/admin/src/legacy/hooks/useBulkEdit.d.ts +91 -0
- package/dist/admin/src/legacy/hooks/useBulkMove.d.ts +209 -0
- package/dist/admin/src/legacy/hooks/useBulkRemove.d.ts +241 -0
- package/dist/admin/src/legacy/hooks/useConfig.d.ts +5 -0
- package/dist/admin/src/legacy/hooks/useEditAsset.d.ts +119 -0
- package/dist/admin/src/legacy/hooks/useEditFolder.d.ts +72 -0
- package/dist/admin/src/legacy/hooks/useFolder.d.ts +7 -0
- package/dist/admin/src/legacy/hooks/useFolderStructure.d.ts +18 -0
- package/dist/admin/src/legacy/hooks/useFolders.d.ts +11 -0
- package/dist/admin/src/legacy/hooks/useMediaLibraryPermissions.d.ts +4 -0
- package/dist/admin/src/legacy/hooks/useModalQueryParams.d.ts +20 -0
- package/dist/admin/src/legacy/hooks/useRemoveAsset.d.ts +8 -0
- package/dist/admin/src/legacy/hooks/useTracking.d.ts +4 -0
- package/dist/admin/src/legacy/hooks/useUpload.d.ts +15 -0
- package/dist/admin/src/legacy/pages/App/ConfigureTheView/ConfigureTheView.d.ts +6 -0
- package/dist/admin/src/legacy/pages/App/ConfigureTheView/components/Settings.d.ts +13 -0
- package/dist/admin/src/legacy/pages/App/ConfigureTheView/state/actions.d.ts +12 -0
- package/dist/admin/src/legacy/pages/App/ConfigureTheView/state/init.d.ts +8 -0
- package/dist/admin/src/legacy/pages/App/MediaLibrary.d.ts +1 -0
- package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +15 -0
- package/dist/admin/src/legacy/pages/App/components/BulkDeleteButton.d.ts +7 -0
- package/dist/admin/src/legacy/pages/App/components/BulkMoveButton.d.ts +15 -0
- package/dist/admin/src/legacy/pages/App/components/Header.d.ts +22 -0
- package/dist/admin/src/legacy/utils/containsAssetFilter.d.ts +2 -0
- package/dist/admin/src/legacy/utils/createAssetUrl.d.ts +2 -0
- package/dist/admin/src/legacy/utils/downloadFile.d.ts +1 -0
- package/dist/admin/src/legacy/utils/findRecursiveFolderByValue.d.ts +11 -0
- package/dist/admin/src/legacy/utils/getAllowedFiles.d.ts +14 -0
- package/dist/admin/src/legacy/utils/getBreadcrumbDataCM.d.ts +19 -0
- package/dist/admin/src/legacy/utils/getBreadcrumbDataML.d.ts +18 -0
- package/dist/admin/src/legacy/utils/getFolderParents.d.ts +11 -0
- package/dist/admin/src/legacy/utils/getFolderURL.d.ts +5 -0
- package/dist/admin/src/legacy/utils/icons.d.ts +15 -0
- package/dist/admin/src/legacy/utils/index.d.ts +26 -0
- package/dist/admin/src/legacy/utils/rawFileToAsset.d.ts +14 -0
- package/dist/admin/src/pages/Assets/components/ActionsMenuContent.d.ts +33 -0
- package/dist/admin/src/pages/Assets/components/AssetActionsMenu.d.ts +26 -0
- package/dist/admin/src/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +16 -0
- package/dist/admin/src/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +46 -0
- package/dist/admin/src/pages/Assets/components/AssetDetails/AssetPreview.d.ts +9 -0
- package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +12 -0
- package/dist/admin/src/pages/Assets/components/AssetsTable.d.ts +18 -0
- package/dist/admin/src/pages/Assets/components/BulkActionsBar.d.ts +28 -0
- package/dist/admin/src/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +7 -0
- package/dist/admin/src/pages/Assets/components/FolderActionsMenu.d.ts +21 -0
- package/dist/admin/src/pages/Assets/hooks/useFolderNavigation.d.ts +7 -0
- package/dist/admin/src/pages/Assets/hooks/useInfiniteAssets.d.ts +45 -0
- package/dist/admin/src/pages/Assets/utils/mergeMixedList.d.ts +40 -0
- package/dist/admin/src/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
- package/dist/admin/src/pages/Assets/utils/renderedKeys.d.ts +19 -0
- package/dist/admin/src/pages/SettingsPage/useAIMetadataJob.d.ts +9 -0
- package/dist/admin/src/services/api.d.ts +99 -0
- package/dist/admin/src/services/assets.d.ts +33 -0
- package/dist/admin/src/services/folders.d.ts +37 -0
- package/dist/admin/src/services/settings.d.ts +2 -0
- package/dist/admin/src/services/uploadFileViaXHR.d.ts +23 -0
- package/dist/admin/src/store/uploadProgress.d.ts +201 -0
- package/dist/admin/src/utils/canDropItemOnFolder.d.ts +9 -0
- package/dist/admin/src/utils/downloadFile.d.ts +5 -0
- package/dist/admin/src/utils/flattenFolderStructure.d.ts +18 -0
- package/dist/admin/src/utils/getFolderLabel.d.ts +11 -0
- package/dist/admin/src/utils/itemLocations.d.ts +31 -0
- package/dist/admin/store/hooks.js.map +1 -0
- package/dist/admin/store/hooks.mjs.map +1 -0
- package/dist/admin/store/uploadProgress.js.map +1 -0
- package/dist/admin/store/uploadProgress.mjs.map +1 -0
- package/dist/admin/utils/buildBulkMovePayload.js.map +1 -0
- package/dist/admin/utils/buildBulkMovePayload.mjs.map +1 -0
- package/dist/admin/utils/buildDragSetFromSelection.js.map +1 -0
- package/dist/admin/utils/buildDragSetFromSelection.mjs.map +1 -0
- package/dist/admin/utils/canDropItemOnFolder.js.map +1 -0
- package/dist/admin/utils/canDropItemOnFolder.mjs.map +1 -0
- package/dist/admin/utils/createRafBatcher.js.map +1 -0
- package/dist/admin/utils/createRafBatcher.mjs.map +1 -0
- package/dist/admin/utils/downloadFile.js +13 -7
- package/dist/admin/utils/downloadFile.js.map +1 -1
- package/dist/admin/utils/downloadFile.mjs +13 -7
- package/dist/admin/utils/downloadFile.mjs.map +1 -1
- package/dist/admin/utils/files.js.map +1 -0
- package/dist/admin/utils/files.mjs.map +1 -0
- package/dist/admin/utils/flattenFolderStructure.js.map +1 -0
- package/dist/admin/utils/flattenFolderStructure.mjs.map +1 -0
- package/dist/admin/utils/formatMoveSuccessMessage.js.map +1 -0
- package/dist/admin/utils/formatMoveSuccessMessage.mjs.map +1 -0
- package/dist/admin/utils/getApiErrorMessage.js.map +1 -0
- package/dist/admin/utils/getApiErrorMessage.mjs.map +1 -0
- package/dist/admin/utils/getAssetIcon.js +28 -0
- package/dist/admin/utils/getAssetIcon.js.map +1 -0
- package/dist/admin/utils/getAssetIcon.mjs +26 -0
- package/dist/admin/utils/getAssetIcon.mjs.map +1 -0
- package/dist/admin/utils/getFolderLabel.js.map +1 -0
- package/dist/admin/utils/getFolderLabel.mjs.map +1 -0
- package/dist/admin/utils/getRelationId.js.map +1 -0
- package/dist/admin/utils/getRelationId.mjs.map +1 -0
- package/dist/admin/utils/isEventFromWithin.js.map +1 -0
- package/dist/admin/utils/isEventFromWithin.mjs.map +1 -0
- package/dist/admin/utils/itemLocations.js.map +1 -0
- package/dist/admin/utils/itemLocations.mjs.map +1 -0
- package/dist/admin/utils/itemSource.js.map +1 -0
- package/dist/admin/utils/itemSource.mjs.map +1 -0
- package/dist/admin/utils/searchQueryParam.js.map +1 -0
- package/dist/admin/utils/searchQueryParam.mjs.map +1 -0
- package/dist/admin/utils/translations.js +8 -0
- package/dist/admin/utils/translations.js.map +1 -0
- package/dist/admin/utils/translations.mjs +6 -0
- package/dist/admin/utils/translations.mjs.map +1 -0
- package/dist/server/controllers/admin-settings.js +1 -4
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +1 -4
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.js +147 -0
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.js.map +1 -0
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs +145 -0
- package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs.map +1 -0
- package/dist/server/register.js +3 -0
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +3 -0
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/admin.js +4 -1
- package/dist/server/routes/admin.js.map +1 -1
- package/dist/server/routes/admin.mjs +4 -1
- package/dist/server/routes/admin.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/extensions/index.js +17 -5
- package/dist/server/services/extensions/index.js.map +1 -1
- package/dist/server/services/extensions/index.mjs +16 -4
- package/dist/server/services/extensions/index.mjs.map +1 -1
- package/dist/server/services/extensions/utils.js +318 -19
- package/dist/server/services/extensions/utils.js.map +1 -1
- package/dist/server/services/extensions/utils.mjs +309 -20
- package/dist/server/services/extensions/utils.mjs.map +1 -1
- package/dist/server/services/metrics.js +4 -3
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +4 -3
- package/dist/server/services/metrics.mjs.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/index.d.ts +1 -1
- package/dist/server/src/migrations/unsign-richtext-and-blocks-urls.d.ts +18 -0
- package/dist/server/src/migrations/unsign-richtext-and-blocks-urls.d.ts.map +1 -0
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/admin.d.ts.map +1 -1
- package/dist/server/src/services/extensions/index.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +52 -2
- package/dist/server/src/services/extensions/utils.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/admin/ai/components/AIAssetCard.js +0 -621
- package/dist/admin/ai/components/AIAssetCard.js.map +0 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +0 -598
- package/dist/admin/ai/components/AIAssetCard.mjs.map +0 -1
- package/dist/admin/ai/components/AIUploadModal.js.map +0 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +0 -1
- package/dist/admin/components/AssetCard/AssetCard.js +0 -67
- package/dist/admin/components/AssetCard/AssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +0 -65
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js.map +0 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +0 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/AudioPreview.js.map +0 -1
- package/dist/admin/components/AssetCard/AudioPreview.mjs.map +0 -1
- package/dist/admin/components/AssetCard/DocAssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +0 -154
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +0 -132
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +0 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +0 -1
- package/dist/admin/components/AssetCard/VideoPreview.js.map +0 -1
- package/dist/admin/components/AssetCard/VideoPreview.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +0 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +0 -320
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +0 -318
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +0 -1
- package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/DialogFooter.js.map +0 -1
- package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +0 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +0 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +0 -1
- package/dist/admin/components/AssetGridList/AssetGridList.js.map +0 -1
- package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +0 -1
- package/dist/admin/components/AssetGridList/Draggable.js.map +0 -1
- package/dist/admin/components/AssetGridList/Draggable.mjs.map +0 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +0 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +0 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +0 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +0 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +0 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +0 -1
- package/dist/admin/components/ContextInfo/ContextInfo.js.map +0 -1
- package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +0 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +0 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +0 -114
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +0 -89
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +0 -362
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +0 -337
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +0 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +0 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +0 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +0 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +0 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +0 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +0 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +0 -1
- package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +0 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +0 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +0 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +0 -1
- package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +0 -1
- package/dist/admin/components/FilterList/FilterList.js.map +0 -1
- package/dist/admin/components/FilterList/FilterList.mjs.map +0 -1
- package/dist/admin/components/FilterList/FilterTag.js.map +0 -1
- package/dist/admin/components/FilterList/FilterTag.mjs.map +0 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +0 -1
- package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +0 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.js.map +0 -1
- package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +0 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +0 -1
- package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +0 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +0 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +0 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +0 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +0 -1
- package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +0 -1
- package/dist/admin/components/FolderGridList/FolderGridList.js.map +0 -1
- package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +0 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +0 -89
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +0 -87
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +0 -111
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +0 -89
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +0 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +0 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +0 -1
- package/dist/admin/components/SelectTree/Option.js.map +0 -1
- package/dist/admin/components/SelectTree/Option.mjs.map +0 -1
- package/dist/admin/components/SelectTree/SelectTree.js.map +0 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs.map +0 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +0 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +0 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +0 -1
- package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +0 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +0 -1
- package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +0 -1
- package/dist/admin/components/SortPicker/SortPicker.js +0 -40
- package/dist/admin/components/SortPicker/SortPicker.js.map +0 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +0 -38
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +0 -1
- package/dist/admin/components/TableList/CellContent.js.map +0 -1
- package/dist/admin/components/TableList/CellContent.mjs.map +0 -1
- package/dist/admin/components/TableList/PreviewCell.js +0 -116
- package/dist/admin/components/TableList/PreviewCell.js.map +0 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +0 -114
- package/dist/admin/components/TableList/PreviewCell.mjs.map +0 -1
- package/dist/admin/components/TableList/TableList.js +0 -100
- package/dist/admin/components/TableList/TableList.js.map +0 -1
- package/dist/admin/components/TableList/TableList.mjs +0 -98
- package/dist/admin/components/TableList/TableList.mjs.map +0 -1
- package/dist/admin/components/TableList/TableRows.js +0 -105
- package/dist/admin/components/TableList/TableRows.js.map +0 -1
- package/dist/admin/components/TableList/TableRows.mjs +0 -103
- package/dist/admin/components/TableList/TableRows.mjs.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +0 -177
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +0 -155
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +0 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +0 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +0 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +0 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +0 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +0 -1
- package/dist/admin/components/UploadProgress/UploadProgress.js.map +0 -1
- package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +0 -1
- package/dist/admin/future/App.js +0 -33
- package/dist/admin/future/App.js.map +0 -1
- package/dist/admin/future/App.mjs +0 -31
- package/dist/admin/future/App.mjs.map +0 -1
- package/dist/admin/future/components/Drawer.js.map +0 -1
- package/dist/admin/future/components/Drawer.mjs.map +0 -1
- package/dist/admin/future/components/TruncatedText.js.map +0 -1
- package/dist/admin/future/components/TruncatedText.mjs.map +0 -1
- package/dist/admin/future/components/UploadProgressDialog.js.map +0 -1
- package/dist/admin/future/components/UploadProgressDialog.mjs.map +0 -1
- package/dist/admin/future/hooks/useAIMetadataEnabled.js +0 -39
- package/dist/admin/future/hooks/useAIMetadataEnabled.js.map +0 -1
- package/dist/admin/future/hooks/useAIMetadataEnabled.mjs +0 -37
- package/dist/admin/future/hooks/useAIMetadataEnabled.mjs.map +0 -1
- package/dist/admin/future/hooks/useApiErrorMessage.js.map +0 -1
- package/dist/admin/future/hooks/useApiErrorMessage.mjs.map +0 -1
- package/dist/admin/future/hooks/useMediaLibraryPermissions.js +0 -35
- package/dist/admin/future/hooks/useMediaLibraryPermissions.js.map +0 -1
- package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs +0 -33
- package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs.map +0 -1
- package/dist/admin/future/hooks/useTracking.js +0 -57
- package/dist/admin/future/hooks/useTracking.js.map +0 -1
- package/dist/admin/future/hooks/useTracking.mjs +0 -53
- package/dist/admin/future/hooks/useTracking.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +0 -828
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +0 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +0 -806
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +0 -1202
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +0 -1175
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +0 -261
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +0 -239
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js +0 -534
- package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +0 -532
- package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +0 -431
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +0 -429
- package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/BusyOverlay.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/EmptyState.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/EmptyState.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderFormDialog.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderFormDialog.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/components/SortMenu.js.map +0 -1
- package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/constants.js.map +0 -1
- package/dist/admin/future/pages/Assets/constants.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +0 -1
- package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/listQueryKey.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +0 -1
- package/dist/admin/future/pages/Assets/utils/selection.js.map +0 -1
- package/dist/admin/future/pages/Assets/utils/selection.mjs.map +0 -1
- package/dist/admin/future/services/api.js.map +0 -1
- package/dist/admin/future/services/api.mjs.map +0 -1
- package/dist/admin/future/services/assets.js.map +0 -1
- package/dist/admin/future/services/assets.mjs.map +0 -1
- package/dist/admin/future/services/folders.js.map +0 -1
- package/dist/admin/future/services/folders.mjs.map +0 -1
- package/dist/admin/future/services/settings.js.map +0 -1
- package/dist/admin/future/services/settings.mjs.map +0 -1
- package/dist/admin/future/services/uploadFileViaXHR.js.map +0 -1
- package/dist/admin/future/services/uploadFileViaXHR.mjs.map +0 -1
- package/dist/admin/future/store/hooks.js.map +0 -1
- package/dist/admin/future/store/hooks.mjs.map +0 -1
- package/dist/admin/future/store/uploadProgress.js.map +0 -1
- package/dist/admin/future/store/uploadProgress.mjs.map +0 -1
- package/dist/admin/future/utils/buildBulkMovePayload.js.map +0 -1
- package/dist/admin/future/utils/buildBulkMovePayload.mjs.map +0 -1
- package/dist/admin/future/utils/buildDragSetFromSelection.js.map +0 -1
- package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +0 -1
- package/dist/admin/future/utils/canDropItemOnFolder.js.map +0 -1
- package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +0 -1
- package/dist/admin/future/utils/createRafBatcher.js.map +0 -1
- package/dist/admin/future/utils/createRafBatcher.mjs.map +0 -1
- package/dist/admin/future/utils/downloadFile.js +0 -19
- package/dist/admin/future/utils/downloadFile.js.map +0 -1
- package/dist/admin/future/utils/downloadFile.mjs +0 -17
- package/dist/admin/future/utils/downloadFile.mjs.map +0 -1
- package/dist/admin/future/utils/files.js.map +0 -1
- package/dist/admin/future/utils/files.mjs.map +0 -1
- package/dist/admin/future/utils/flattenFolderStructure.js.map +0 -1
- package/dist/admin/future/utils/flattenFolderStructure.mjs.map +0 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +0 -1
- package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +0 -1
- package/dist/admin/future/utils/getApiErrorMessage.js.map +0 -1
- package/dist/admin/future/utils/getApiErrorMessage.mjs.map +0 -1
- package/dist/admin/future/utils/getAssetIcon.js +0 -28
- package/dist/admin/future/utils/getAssetIcon.js.map +0 -1
- package/dist/admin/future/utils/getAssetIcon.mjs +0 -26
- package/dist/admin/future/utils/getAssetIcon.mjs.map +0 -1
- package/dist/admin/future/utils/getFolderLabel.js.map +0 -1
- package/dist/admin/future/utils/getFolderLabel.mjs.map +0 -1
- package/dist/admin/future/utils/getRelationId.js.map +0 -1
- package/dist/admin/future/utils/getRelationId.mjs.map +0 -1
- package/dist/admin/future/utils/isEventFromWithin.js.map +0 -1
- package/dist/admin/future/utils/isEventFromWithin.mjs.map +0 -1
- package/dist/admin/future/utils/itemLocations.js.map +0 -1
- package/dist/admin/future/utils/itemLocations.mjs.map +0 -1
- package/dist/admin/future/utils/itemSource.js.map +0 -1
- package/dist/admin/future/utils/itemSource.mjs.map +0 -1
- package/dist/admin/future/utils/searchQueryParam.js.map +0 -1
- package/dist/admin/future/utils/searchQueryParam.mjs.map +0 -1
- package/dist/admin/future/utils/translations.js +0 -8
- package/dist/admin/future/utils/translations.js.map +0 -1
- package/dist/admin/future/utils/translations.mjs +0 -6
- package/dist/admin/future/utils/translations.mjs.map +0 -1
- package/dist/admin/hooks/useAIMetadataJob.js +0 -114
- package/dist/admin/hooks/useAIMetadataJob.js.map +0 -1
- package/dist/admin/hooks/useAIMetadataJob.mjs +0 -92
- package/dist/admin/hooks/useAIMetadataJob.mjs.map +0 -1
- package/dist/admin/hooks/useAiAvailability.js.map +0 -1
- package/dist/admin/hooks/useAiAvailability.mjs.map +0 -1
- package/dist/admin/hooks/useAssets.js +0 -127
- package/dist/admin/hooks/useAssets.js.map +0 -1
- package/dist/admin/hooks/useAssets.mjs +0 -105
- package/dist/admin/hooks/useAssets.mjs.map +0 -1
- package/dist/admin/hooks/useBulkEdit.js +0 -65
- package/dist/admin/hooks/useBulkEdit.js.map +0 -1
- package/dist/admin/hooks/useBulkEdit.mjs +0 -63
- package/dist/admin/hooks/useBulkEdit.mjs.map +0 -1
- package/dist/admin/hooks/useBulkMove.js +0 -78
- package/dist/admin/hooks/useBulkMove.js.map +0 -1
- package/dist/admin/hooks/useBulkMove.mjs +0 -76
- package/dist/admin/hooks/useBulkMove.mjs.map +0 -1
- package/dist/admin/hooks/useBulkRemove.js +0 -83
- package/dist/admin/hooks/useBulkRemove.js.map +0 -1
- package/dist/admin/hooks/useBulkRemove.mjs +0 -81
- package/dist/admin/hooks/useBulkRemove.mjs.map +0 -1
- package/dist/admin/hooks/useConfig.js +0 -58
- package/dist/admin/hooks/useConfig.js.map +0 -1
- package/dist/admin/hooks/useConfig.mjs +0 -56
- package/dist/admin/hooks/useConfig.mjs.map +0 -1
- package/dist/admin/hooks/useCropImg.js.map +0 -1
- package/dist/admin/hooks/useCropImg.mjs.map +0 -1
- package/dist/admin/hooks/useEditAsset.js +0 -115
- package/dist/admin/hooks/useEditAsset.js.map +0 -1
- package/dist/admin/hooks/useEditAsset.mjs +0 -93
- package/dist/admin/hooks/useEditAsset.mjs.map +0 -1
- package/dist/admin/hooks/useEditFolder.js +0 -45
- package/dist/admin/hooks/useEditFolder.js.map +0 -1
- package/dist/admin/hooks/useEditFolder.mjs +0 -43
- package/dist/admin/hooks/useEditFolder.mjs.map +0 -1
- package/dist/admin/hooks/useFolder.js +0 -57
- package/dist/admin/hooks/useFolder.js.map +0 -1
- package/dist/admin/hooks/useFolder.mjs +0 -55
- package/dist/admin/hooks/useFolder.mjs.map +0 -1
- package/dist/admin/hooks/useFolderStructure.js +0 -52
- package/dist/admin/hooks/useFolderStructure.js.map +0 -1
- package/dist/admin/hooks/useFolderStructure.mjs +0 -50
- package/dist/admin/hooks/useFolderStructure.mjs.map +0 -1
- package/dist/admin/hooks/useFolders.js +0 -108
- package/dist/admin/hooks/useFolders.js.map +0 -1
- package/dist/admin/hooks/useFolders.mjs +0 -86
- package/dist/admin/hooks/useFolders.mjs.map +0 -1
- package/dist/admin/hooks/useModalQueryParams.js.map +0 -1
- package/dist/admin/hooks/useModalQueryParams.mjs.map +0 -1
- package/dist/admin/hooks/usePersistentState.js.map +0 -1
- package/dist/admin/hooks/usePersistentState.mjs.map +0 -1
- package/dist/admin/hooks/useRemoveAsset.js +0 -58
- package/dist/admin/hooks/useRemoveAsset.js.map +0 -1
- package/dist/admin/hooks/useRemoveAsset.mjs +0 -56
- package/dist/admin/hooks/useRemoveAsset.mjs.map +0 -1
- package/dist/admin/hooks/useSelectionState.js.map +0 -1
- package/dist/admin/hooks/useSelectionState.mjs.map +0 -1
- package/dist/admin/hooks/useSettings.js.map +0 -1
- package/dist/admin/hooks/useSettings.mjs.map +0 -1
- package/dist/admin/hooks/useUpload.js +0 -109
- package/dist/admin/hooks/useUpload.js.map +0 -1
- package/dist/admin/hooks/useUpload.mjs +0 -87
- package/dist/admin/hooks/useUpload.mjs.map +0 -1
- package/dist/admin/hooks/utils/renameKeys.js.map +0 -1
- package/dist/admin/hooks/utils/renameKeys.mjs.map +0 -1
- package/dist/admin/pages/App/App.js.map +0 -1
- package/dist/admin/pages/App/App.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -145
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -120
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +0 -109
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +0 -107
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js +0 -10
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs +0 -7
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +0 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +0 -1
- package/dist/admin/pages/App/MediaLibrary.js +0 -469
- package/dist/admin/pages/App/MediaLibrary.js.map +0 -1
- package/dist/admin/pages/App/MediaLibrary.mjs +0 -447
- package/dist/admin/pages/App/MediaLibrary.mjs.map +0 -1
- package/dist/admin/pages/App/components/BulkActions.js.map +0 -1
- package/dist/admin/pages/App/components/BulkActions.mjs.map +0 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.js.map +0 -1
- package/dist/admin/pages/App/components/BulkDeleteButton.mjs.map +0 -1
- package/dist/admin/pages/App/components/BulkMoveButton.js.map +0 -1
- package/dist/admin/pages/App/components/BulkMoveButton.mjs.map +0 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +0 -1
- package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +0 -1
- package/dist/admin/pages/App/components/Filters.js.map +0 -1
- package/dist/admin/pages/App/components/Filters.mjs.map +0 -1
- package/dist/admin/pages/App/components/Header.js.map +0 -1
- package/dist/admin/pages/App/components/Header.mjs.map +0 -1
- package/dist/admin/src/ai/components/AIAssetCard.d.ts +0 -13
- package/dist/admin/src/ai/components/AIUploadModal.d.ts +0 -55
- package/dist/admin/src/components/AssetCard/AssetCard.d.ts +0 -19
- package/dist/admin/src/components/AssetCard/UploadingAssetCard.d.ts +0 -17
- package/dist/admin/src/components/AssetDialog/AssetDialog.d.ts +0 -39
- package/dist/admin/src/components/AssetDialog/BrowseStep/BrowseStep.d.ts +0 -63
- package/dist/admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.d.ts +0 -7
- package/dist/admin/src/components/AssetDialog/SelectedStep/SelectedStep.d.ts +0 -8
- package/dist/admin/src/components/AssetGridList/AssetGridList.d.ts +0 -13
- package/dist/admin/src/components/BulkMoveDialog/BulkMoveDialog.d.ts +0 -15
- package/dist/admin/src/components/EditAssetDialog/EditAssetContent.d.ts +0 -31
- package/dist/admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +0 -8
- package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +0 -26
- package/dist/admin/src/components/EditAssetDialog/RemoveAssetDialog.d.ts +0 -8
- package/dist/admin/src/components/EditFolderDialog/EditFolderDialog.d.ts +0 -12
- package/dist/admin/src/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +0 -10
- package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.d.ts +0 -4
- package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAssetActions.d.ts +0 -9
- package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.d.ts +0 -23
- package/dist/admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.d.ts +0 -10
- package/dist/admin/src/components/SelectTree/Option.d.ts +0 -16
- package/dist/admin/src/components/SortPicker/SortPicker.d.ts +0 -7
- package/dist/admin/src/components/TableList/CellContent.d.ts +0 -8
- package/dist/admin/src/components/TableList/PreviewCell.d.ts +0 -7
- package/dist/admin/src/components/TableList/TableList.d.ts +0 -31
- package/dist/admin/src/components/TableList/TableRows.d.ts +0 -22
- package/dist/admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.d.ts +0 -13
- package/dist/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +0 -22
- package/dist/admin/src/components/UploadAssetDialog/UploadAssetDialog.d.ts +0 -21
- package/dist/admin/src/components/UploadProgress/UploadProgress.d.ts +0 -7
- package/dist/admin/src/future/App.d.ts +0 -1
- package/dist/admin/src/future/hooks/useMediaLibraryPermissions.d.ts +0 -21
- package/dist/admin/src/future/hooks/useTracking.d.ts +0 -29
- package/dist/admin/src/future/pages/Assets/components/ActionsMenuContent.d.ts +0 -33
- package/dist/admin/src/future/pages/Assets/components/AssetActionsMenu.d.ts +0 -26
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +0 -16
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +0 -46
- package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetPreview.d.ts +0 -9
- package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +0 -12
- package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +0 -18
- package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +0 -28
- package/dist/admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +0 -7
- package/dist/admin/src/future/pages/Assets/components/FolderActionsMenu.d.ts +0 -21
- package/dist/admin/src/future/pages/Assets/hooks/useFolderNavigation.d.ts +0 -7
- package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +0 -45
- package/dist/admin/src/future/pages/Assets/utils/mergeMixedList.d.ts +0 -40
- package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +0 -35
- package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +0 -19
- package/dist/admin/src/future/services/api.d.ts +0 -99
- package/dist/admin/src/future/services/assets.d.ts +0 -33
- package/dist/admin/src/future/services/folders.d.ts +0 -37
- package/dist/admin/src/future/services/settings.d.ts +0 -2
- package/dist/admin/src/future/services/uploadFileViaXHR.d.ts +0 -23
- package/dist/admin/src/future/store/uploadProgress.d.ts +0 -201
- package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +0 -9
- package/dist/admin/src/future/utils/downloadFile.d.ts +0 -6
- package/dist/admin/src/future/utils/flattenFolderStructure.d.ts +0 -18
- package/dist/admin/src/future/utils/getFolderLabel.d.ts +0 -11
- package/dist/admin/src/future/utils/itemLocations.d.ts +0 -31
- package/dist/admin/src/hooks/useAIMetadataJob.d.ts +0 -9
- package/dist/admin/src/hooks/useAssets.d.ts +0 -14
- package/dist/admin/src/hooks/useBulkEdit.d.ts +0 -91
- package/dist/admin/src/hooks/useBulkMove.d.ts +0 -209
- package/dist/admin/src/hooks/useBulkRemove.d.ts +0 -241
- package/dist/admin/src/hooks/useConfig.d.ts +0 -5
- package/dist/admin/src/hooks/useEditAsset.d.ts +0 -119
- package/dist/admin/src/hooks/useEditFolder.d.ts +0 -72
- package/dist/admin/src/hooks/useFolder.d.ts +0 -7
- package/dist/admin/src/hooks/useFolderStructure.d.ts +0 -18
- package/dist/admin/src/hooks/useFolders.d.ts +0 -11
- package/dist/admin/src/hooks/useModalQueryParams.d.ts +0 -20
- package/dist/admin/src/hooks/useRemoveAsset.d.ts +0 -8
- package/dist/admin/src/hooks/useUpload.d.ts +0 -15
- package/dist/admin/src/pages/App/ConfigureTheView/ConfigureTheView.d.ts +0 -6
- package/dist/admin/src/pages/App/ConfigureTheView/components/Settings.d.ts +0 -13
- package/dist/admin/src/pages/App/ConfigureTheView/state/actions.d.ts +0 -12
- package/dist/admin/src/pages/App/ConfigureTheView/state/init.d.ts +0 -8
- package/dist/admin/src/pages/App/components/BulkActions.d.ts +0 -15
- package/dist/admin/src/pages/App/components/BulkDeleteButton.d.ts +0 -7
- package/dist/admin/src/pages/App/components/BulkMoveButton.d.ts +0 -15
- package/dist/admin/src/pages/App/components/Header.d.ts +0 -22
- package/dist/admin/src/utils/containsAssetFilter.d.ts +0 -2
- package/dist/admin/src/utils/createAssetUrl.d.ts +0 -2
- package/dist/admin/src/utils/findRecursiveFolderByValue.d.ts +0 -11
- package/dist/admin/src/utils/getAllowedFiles.d.ts +0 -14
- package/dist/admin/src/utils/getBreadcrumbDataCM.d.ts +0 -19
- package/dist/admin/src/utils/getBreadcrumbDataML.d.ts +0 -18
- package/dist/admin/src/utils/getFolderParents.d.ts +0 -11
- package/dist/admin/src/utils/getFolderURL.d.ts +0 -5
- package/dist/admin/src/utils/icons.d.ts +0 -15
- package/dist/admin/src/utils/index.d.ts +0 -26
- package/dist/admin/src/utils/rawFileToAsset.d.ts +0 -14
- package/dist/admin/utils/appendSearchParamsToUrl.js.map +0 -1
- package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +0 -1
- package/dist/admin/utils/containsAssetFilter.js.map +0 -1
- package/dist/admin/utils/containsAssetFilter.mjs.map +0 -1
- package/dist/admin/utils/createAssetUrl.js.map +0 -1
- package/dist/admin/utils/createAssetUrl.mjs.map +0 -1
- package/dist/admin/utils/displayedFilters.js.map +0 -1
- package/dist/admin/utils/displayedFilters.mjs.map +0 -1
- package/dist/admin/utils/findRecursiveFolderByValue.js.map +0 -1
- package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +0 -1
- package/dist/admin/utils/formatBytes.js.map +0 -1
- package/dist/admin/utils/formatBytes.mjs.map +0 -1
- package/dist/admin/utils/formatDuration.js.map +0 -1
- package/dist/admin/utils/formatDuration.mjs.map +0 -1
- package/dist/admin/utils/getAPIInnerErrors.js.map +0 -1
- package/dist/admin/utils/getAPIInnerErrors.mjs.map +0 -1
- package/dist/admin/utils/getAllowedFiles.js.map +0 -1
- package/dist/admin/utils/getAllowedFiles.mjs.map +0 -1
- package/dist/admin/utils/getBreadcrumbDataCM.js.map +0 -1
- package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +0 -1
- package/dist/admin/utils/getBreadcrumbDataML.js.map +0 -1
- package/dist/admin/utils/getBreadcrumbDataML.mjs.map +0 -1
- package/dist/admin/utils/getFileExtension.js.map +0 -1
- package/dist/admin/utils/getFileExtension.mjs.map +0 -1
- package/dist/admin/utils/getFolderParents.js.map +0 -1
- package/dist/admin/utils/getFolderParents.mjs.map +0 -1
- package/dist/admin/utils/getFolderURL.js.map +0 -1
- package/dist/admin/utils/getFolderURL.mjs.map +0 -1
- package/dist/admin/utils/getTrad.js +0 -8
- package/dist/admin/utils/getTrad.js.map +0 -1
- package/dist/admin/utils/getTrad.mjs +0 -6
- package/dist/admin/utils/getTrad.mjs.map +0 -1
- package/dist/admin/utils/icons.js +0 -23
- package/dist/admin/utils/icons.js.map +0 -1
- package/dist/admin/utils/icons.mjs +0 -19
- package/dist/admin/utils/icons.mjs.map +0 -1
- package/dist/admin/utils/moveElement.js.map +0 -1
- package/dist/admin/utils/moveElement.mjs.map +0 -1
- package/dist/admin/utils/normalizeAPIError.js.map +0 -1
- package/dist/admin/utils/normalizeAPIError.mjs.map +0 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +0 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +0 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +0 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +0 -1
- package/dist/admin/utils/rawFileToAsset.js +0 -23
- package/dist/admin/utils/rawFileToAsset.js.map +0 -1
- package/dist/admin/utils/rawFileToAsset.mjs +0 -21
- package/dist/admin/utils/rawFileToAsset.mjs.map +0 -1
- package/dist/admin/utils/resolveFileMime.js.map +0 -1
- package/dist/admin/utils/resolveFileMime.mjs.map +0 -1
- package/dist/admin/utils/toSingularTypes.js.map +0 -1
- package/dist/admin/utils/toSingularTypes.mjs.map +0 -1
- package/dist/admin/utils/urlYupSchema.js.map +0 -1
- package/dist/admin/utils/urlYupSchema.mjs.map +0 -1
- package/dist/admin/utils/urlsToAssets.js +0 -42
- package/dist/admin/utils/urlsToAssets.js.map +0 -1
- package/dist/admin/utils/urlsToAssets.mjs +0 -40
- package/dist/admin/utils/urlsToAssets.mjs.map +0 -1
- /package/dist/admin/{future/components → components}/Drawer.js +0 -0
- /package/dist/admin/{future/components → components}/Drawer.mjs +0 -0
- /package/dist/admin/{future/components → components}/TruncatedText.js +0 -0
- /package/dist/admin/{future/components → components}/TruncatedText.mjs +0 -0
- /package/dist/admin/{future/components → components}/UploadProgressDialog.js +0 -0
- /package/dist/admin/{future/components → components}/UploadProgressDialog.mjs +0 -0
- /package/dist/admin/{future/hooks → hooks}/useApiErrorMessage.js +0 -0
- /package/dist/admin/{future/hooks → hooks}/useApiErrorMessage.mjs +0 -0
- /package/dist/admin/{ai → legacy/ai}/components/AIUploadModal.js +0 -0
- /package/dist/admin/{ai → legacy/ai}/components/AIUploadModal.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AssetCardBase.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AssetCardBase.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AudioAssetCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AudioAssetCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AudioPreview.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/AudioPreview.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/DocAssetCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/DocAssetCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/ImageAssetCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/ImageAssetCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/VideoAssetCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/VideoAssetCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/VideoPreview.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetCard/VideoPreview.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/AssetDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/AssetDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/Filters.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/Filters.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/DialogFooter.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/DialogFooter.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/SelectedStep/SelectedStep.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetDialog/SelectedStep/SelectedStep.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetGridList/AssetGridList.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetGridList/AssetGridList.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/AssetGridList/Draggable.js +0 -0
- /package/dist/admin/{components → legacy/components}/AssetGridList/Draggable.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/Breadcrumbs/Breadcrumbs.js +0 -0
- /package/dist/admin/{components → legacy/components}/Breadcrumbs/Breadcrumbs.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.js +0 -0
- /package/dist/admin/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/BulkMoveDialog/BulkMoveDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/BulkMoveDialog/BulkMoveDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/ContextInfo/ContextInfo.js +0 -0
- /package/dist/admin/{components → legacy/components}/ContextInfo/ContextInfo.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/CopyLinkButton/CopyLinkButton.js +0 -0
- /package/dist/admin/{components → legacy/components}/CopyLinkButton/CopyLinkButton.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/DialogHeader.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/DialogHeader.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/EditAssetContent.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/EditAssetContent.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/RemoveAssetDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/RemoveAssetDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/EditFolderDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/EditFolderDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.js +0 -0
- /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssets.js +0 -0
- /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssets.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FilterList/FilterList.js +0 -0
- /package/dist/admin/{components → legacy/components}/FilterList/FilterList.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FilterList/FilterTag.js +0 -0
- /package/dist/admin/{components → legacy/components}/FilterList/FilterTag.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/FilterPopover.js +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/FilterPopover.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/FilterValueInput.js +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/FilterValueInput.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/utils/getFilterList.js +0 -0
- /package/dist/admin/{components → legacy/components}/FilterPopover/utils/getFilterList.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCard/FolderCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCard/FolderCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/contexts/FolderCard.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderCard/contexts/FolderCard.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/FolderGridList/FolderGridList.js +0 -0
- /package/dist/admin/{components → legacy/components}/FolderGridList/FolderGridList.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryDialog/MediaLibraryDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryDialog/MediaLibraryDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssetActions.js +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssets.js +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssets.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.js +0 -0
- /package/dist/admin/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/Option.js +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/Option.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/SelectTree.js +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/SelectTree.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/flattenTree.js +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/flattenTree.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/getOpenValues.js +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/getOpenValues.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/getValuesToClose.js +0 -0
- /package/dist/admin/{components → legacy/components}/SelectTree/utils/getValuesToClose.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/TableList/CellContent.js +0 -0
- /package/dist/admin/{components → legacy/components}/TableList/CellContent.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/AddAssetStep.js +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.js +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/UploadAssetDialog.js +0 -0
- /package/dist/admin/{components → legacy/components}/UploadAssetDialog/UploadAssetDialog.mjs +0 -0
- /package/dist/admin/{components → legacy/components}/UploadProgress/UploadProgress.js +0 -0
- /package/dist/admin/{components → legacy/components}/UploadProgress/UploadProgress.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useAiAvailability.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useAiAvailability.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useCropImg.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useCropImg.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useModalQueryParams.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useModalQueryParams.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/usePersistentState.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/usePersistentState.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useSelectionState.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useSelectionState.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useSettings.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/useSettings.mjs +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/utils/renameKeys.js +0 -0
- /package/dist/admin/{hooks → legacy/hooks}/utils/renameKeys.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/App.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/App.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/actions.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/actions.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/init.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/init.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkActions.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkActions.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkDeleteButton.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkDeleteButton.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkMoveButton.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/BulkMoveButton.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/Filters.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/Filters.mjs +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/Header.js +0 -0
- /package/dist/admin/{pages → legacy/pages}/App/components/Header.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/appendSearchParamsToUrl.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/appendSearchParamsToUrl.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/containsAssetFilter.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/containsAssetFilter.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/createAssetUrl.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/createAssetUrl.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/displayedFilters.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/displayedFilters.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/findRecursiveFolderByValue.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/findRecursiveFolderByValue.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/formatBytes.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/formatBytes.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/formatDuration.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/formatDuration.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getAPIInnerErrors.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getAPIInnerErrors.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getAllowedFiles.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getAllowedFiles.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataCM.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataCM.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataML.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataML.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFileExtension.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFileExtension.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFolderParents.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFolderParents.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFolderURL.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/getFolderURL.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/moveElement.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/moveElement.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/normalizeAPIError.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/normalizeAPIError.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/prefixPluginTranslations.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/prefixPluginTranslations.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/resolveFileMime.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/resolveFileMime.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/toSingularTypes.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/toSingularTypes.mjs +0 -0
- /package/dist/admin/{utils → legacy/utils}/urlYupSchema.js +0 -0
- /package/dist/admin/{utils → legacy/utils}/urlYupSchema.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/ActionsMenuContent.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/ActionsMenuContent.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetActionsMenu.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetActionsMenu.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/AssetCropEditor.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/AssetCropEditor.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetsSearchInput.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetsSearchInput.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetsTable.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/AssetsTable.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/BulkMoveDialog.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/BulkMoveDialog.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/BusyOverlay.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/BusyOverlay.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DateRangeCalendar.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DateRangeCalendar.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DeleteItemsDialog.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DeleteItemsDialog.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/buildDragSet.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/buildDragSet.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/computeValidDropTargets.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/computeValidDropTargets.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/dndIds.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/dndIds.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/EmptyState.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/EmptyState.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FilterBadges.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FilterBadges.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FilterMenu.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FilterMenu.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderActionsMenu.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderActionsMenu.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderFormDialog.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderFormDialog.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/FolderTree.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/FolderTree.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/ImportFromUrlDialog.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/ImportFromUrlDialog.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/MainAreaContextMenu.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/MainAreaContextMenu.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/SortMenu.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/components/SortMenu.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/constants.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/constants.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSearch.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSearch.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSelection.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSelection.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useBusyAssets.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useBusyAssets.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderInfo.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderInfo.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderNavigation.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderNavigation.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteAssets.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteAssets.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListFilters.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListFilters.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListScrollRestoration.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListScrollRestoration.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListSort.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/hooks/useListSort.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/buildAssetFilters.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/buildAssetFilters.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/listQueryKey.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/listQueryKey.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/mergeMixedList.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/mergeMixedList.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/mergeUploadedAssets.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/mergeUploadedAssets.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/renderedKeys.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/renderedKeys.mjs +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/selection.js +0 -0
- /package/dist/admin/{future/pages → pages}/Assets/utils/selection.mjs +0 -0
- /package/dist/admin/{future/services → services}/api.js +0 -0
- /package/dist/admin/{future/services → services}/api.mjs +0 -0
- /package/dist/admin/{future/services → services}/assets.js +0 -0
- /package/dist/admin/{future/services → services}/assets.mjs +0 -0
- /package/dist/admin/{future/services → services}/folders.js +0 -0
- /package/dist/admin/{future/services → services}/folders.mjs +0 -0
- /package/dist/admin/{future/services → services}/settings.js +0 -0
- /package/dist/admin/{future/services → services}/settings.mjs +0 -0
- /package/dist/admin/{future/services → services}/uploadFileViaXHR.js +0 -0
- /package/dist/admin/{future/services → services}/uploadFileViaXHR.mjs +0 -0
- /package/dist/admin/src/{pages/App/MediaLibrary.d.ts → App.d.ts} +0 -0
- /package/dist/admin/src/{future/components → components}/Drawer.d.ts +0 -0
- /package/dist/admin/src/{future/components → components}/TruncatedText.d.ts +0 -0
- /package/dist/admin/src/{future/components → components}/UploadProgressDialog.d.ts +0 -0
- /package/dist/admin/src/{future/hooks → hooks}/useAIMetadataEnabled.d.ts +0 -0
- /package/dist/admin/src/{future/hooks → hooks}/useApiErrorMessage.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/AssetCardBase.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/AudioAssetCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/AudioPreview.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/DocAssetCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/ImageAssetCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/VideoAssetCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetCard/VideoPreview.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/Filters.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetDialog/DialogFooter.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/AssetGridList/Draggable.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/ContextInfo/ContextInfo.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/CopyLinkButton/CopyLinkButton.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/DialogHeader.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/EmptyAssets/EmptyAssets.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FilterList/FilterList.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FilterList/FilterTag.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FilterPopover/FilterPopover.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FilterPopover/FilterValueInput.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FilterPopover/utils/getFilterList.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCard/FolderCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderCard/contexts/FolderCard.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/FolderGridList/FolderGridList.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/SelectTree/SelectTree.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/flattenTree.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/getOpenValues.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/getValuesToClose.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromComputerForm.d.ts +0 -0
- /package/dist/admin/src/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/useAiAvailability.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/useCropImg.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/usePersistentState.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/useSelectionState.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/useSettings.d.ts +0 -0
- /package/dist/admin/src/{hooks → legacy/hooks}/utils/renameKeys.d.ts +0 -0
- /package/dist/admin/src/{pages → legacy/pages}/App/App.d.ts +0 -0
- /package/dist/admin/src/{pages → legacy/pages}/App/ConfigureTheView/state/actionTypes.d.ts +0 -0
- /package/dist/admin/src/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.d.ts +0 -0
- /package/dist/admin/src/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.d.ts +0 -0
- /package/dist/admin/src/{pages → legacy/pages}/App/components/Filters.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/appendSearchParamsToUrl.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/displayedFilters.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/formatBytes.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/formatDuration.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/getAPIInnerErrors.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/getFileExtension.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/getTrad.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/moveElement.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/normalizeAPIError.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/prefixPluginTranslations.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/resolveFileMime.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/toSingularTypes.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/urlYupSchema.d.ts +0 -0
- /package/dist/admin/src/{utils → legacy/utils}/urlsToAssets.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/AssetsPage.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/AssetsSearchInput.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/BulkMoveDialog.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/BusyOverlay.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/DateRangeCalendar.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/DeleteItemsDialog.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/buildDragSet.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/dndIds.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/EmptyState.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/FilterBadges.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/FilterMenu.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderFormDialog.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderTree/FolderTree.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/ImportFromUrlDialog.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/MainAreaContextMenu.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/components/SortMenu.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/constants.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useAssetSearch.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useAssetSelection.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useBusyAssets.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useFolderInfo.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListFilters.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListScrollRestoration.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListSort.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/utils/buildAssetFilters.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/utils/listQueryKey.d.ts +0 -0
- /package/dist/admin/src/{future/pages → pages}/Assets/utils/selection.d.ts +0 -0
- /package/dist/admin/src/{future/store → store}/hooks.d.ts +0 -0
- /package/dist/admin/src/{future/types → types}/dnd.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/buildBulkMovePayload.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/buildDragSetFromSelection.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/createRafBatcher.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/files.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/formatMoveSuccessMessage.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/getApiErrorMessage.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/getAssetIcon.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/getRelationId.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/isEventFromWithin.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/itemSource.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/searchQueryParam.d.ts +0 -0
- /package/dist/admin/src/{future/utils → utils}/translations.d.ts +0 -0
- /package/dist/admin/{future/store → store}/hooks.js +0 -0
- /package/dist/admin/{future/store → store}/hooks.mjs +0 -0
- /package/dist/admin/{future/store → store}/uploadProgress.js +0 -0
- /package/dist/admin/{future/store → store}/uploadProgress.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/buildBulkMovePayload.js +0 -0
- /package/dist/admin/{future/utils → utils}/buildBulkMovePayload.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/buildDragSetFromSelection.js +0 -0
- /package/dist/admin/{future/utils → utils}/buildDragSetFromSelection.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/canDropItemOnFolder.js +0 -0
- /package/dist/admin/{future/utils → utils}/canDropItemOnFolder.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/createRafBatcher.js +0 -0
- /package/dist/admin/{future/utils → utils}/createRafBatcher.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/files.js +0 -0
- /package/dist/admin/{future/utils → utils}/files.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/flattenFolderStructure.js +0 -0
- /package/dist/admin/{future/utils → utils}/flattenFolderStructure.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/formatMoveSuccessMessage.js +0 -0
- /package/dist/admin/{future/utils → utils}/formatMoveSuccessMessage.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/getApiErrorMessage.js +0 -0
- /package/dist/admin/{future/utils → utils}/getApiErrorMessage.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/getFolderLabel.js +0 -0
- /package/dist/admin/{future/utils → utils}/getFolderLabel.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/getRelationId.js +0 -0
- /package/dist/admin/{future/utils → utils}/getRelationId.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/isEventFromWithin.js +0 -0
- /package/dist/admin/{future/utils → utils}/isEventFromWithin.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/itemLocations.js +0 -0
- /package/dist/admin/{future/utils → utils}/itemLocations.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/itemSource.js +0 -0
- /package/dist/admin/{future/utils → utils}/itemSource.mjs +0 -0
- /package/dist/admin/{future/utils → utils}/searchQueryParam.js +0 -0
- /package/dist/admin/{future/utils → utils}/searchQueryParam.mjs +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetsPage.mjs","sources":["../../../../admin/src/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, useMemo, useState, useEffect, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, Page, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ChevronDown,\n Files,\n Folder as FolderIcon,\n GridFour as GridIcon,\n Link,\n List,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { useAIMetadataEnabled } from '../../hooks/useAIMetadataEnabled';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useTracking, MEDIA_LIBRARY_LOCATION } from '../../hooks/useTracking';\nimport { useUploadFromUrlsMutation, useUploadFilesMutation } from '../../services/api';\nimport { useGetFolderQuery, useGetFoldersQuery } from '../../services/folders';\nimport { useGetUploadSettingsQuery } from '../../services/settings';\nimport { buildItemLocations, type ItemLocations } from '../../utils/itemLocations';\nimport { getTranslationKey } from '../../utils/translations';\nimport { typeFromMime } from '../../utils/typeFromMime';\n\nimport {\n AssetDetailsDrawer,\n useAssetDetailsParam,\n} from './components/AssetDetails/AssetDetailsDrawer';\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsSearchInput } from './components/AssetsSearchInput';\nimport { AssetsTable } from './components/AssetsTable';\nimport { BulkActionsBar } from './components/BulkActionsBar';\nimport { AssetsDndProvider } from './components/Dnd/AssetsDndProvider';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { EmptyState, FilteredEmptyState } from './components/EmptyState';\nimport { FilterBadges } from './components/FilterBadges';\nimport { FilterMenu } from './components/FilterMenu';\nimport { FolderFormDialog } from './components/FolderFormDialog';\nimport { FolderTree } from './components/FolderTree/FolderTree';\nimport { ImportFromUrlDialog } from './components/ImportFromUrlDialog';\nimport { MainAreaContextMenu } from './components/MainAreaContextMenu';\nimport { SortMenu } from './components/SortMenu';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useAssetSearch } from './hooks/useAssetSearch';\nimport { AssetSelectionProvider, useAssetSelection } from './hooks/useAssetSelection';\nimport { BusyAssetsProvider } from './hooks/useBusyAssets';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\nimport { useInfiniteScrollSentinel } from './hooks/useInfiniteScrollSentinel';\nimport { useListFilters } from './hooks/useListFilters';\nimport { useListScrollRestoration } from './hooks/useListScrollRestoration';\nimport { useListSort, type FoldersPosition } from './hooks/useListSort';\nimport { buildAssetFilters } from './utils/buildAssetFilters';\nimport { getListQueryKey } from './utils/listQueryKey';\nimport { mergeMixedList } from './utils/mergeMixedList';\nimport { buildRenderedKeys } from './utils/renderedKeys';\n\nimport type { File, UploadFileInfo } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\n// The negative bottom margin shrinks the trigger area by a pixel so the 1px\n// sentinel sitting exactly at the fold (when a page's rows happen to fill the\n// viewport) reads as \"not visible\" and doesn't pull an extra page. It still\n// triggers as soon as the sentinel scrolls a hair into view. Tune the bottom\n// value if the list over- or under-fetches near the fold.\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = {\n threshold: 0,\n rootMargin: '0px 0px -1px 0px',\n};\n\n// Module-level so the header sentinel's observer isn't rebuilt every render.\nconst HEADER_SENTINEL_OPTIONS: IntersectionObserverInit = { threshold: 0 };\n\nconst ITEM_COUNT_MESSAGE = {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n};\n\nconst SEARCH_RESULTS_COUNT_MESSAGES = {\n both: {\n id: getTranslationKey('header.search-results.count'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}}',\n },\n folders: {\n id: getTranslationKey('header.search-results.count.folders'),\n defaultMessage: '{numberFolders, plural, one {1 folder} other {# folders}}',\n },\n assets: {\n id: getTranslationKey('header.search-results.count.assets'),\n defaultMessage: '{numberAssets, plural, =0 {0 assets} one {1 asset} other {# assets}}',\n },\n};\n\nconst getSearchResultsCountMessage = (numberFolders: number, numberAssets: number) => {\n if (numberFolders === 0) {\n return SEARCH_RESULTS_COUNT_MESSAGES.assets;\n }\n\n if (numberAssets === 0) {\n return SEARCH_RESULTS_COUNT_MESSAGES.folders;\n }\n\n return SEARCH_RESULTS_COUNT_MESSAGES.both;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folders: Folder[];\n isLoadingFolders: boolean;\n assets: File[];\n isLoadingAssets: boolean;\n isFetchingMore: boolean;\n hasNextPage: boolean;\n fetchNextPage: () => void;\n error: unknown;\n locations: ItemLocations;\n searchQuery: string;\n assetsSort: string;\n foldersPosition: FoldersPosition;\n hasActiveFilters: boolean;\n onClearFilters: () => void;\n onAssetItemClick: (assetId: number) => void;\n onAddAssets: () => void;\n canAddAssets: boolean;\n onClearSearch: () => void;\n}\n\nconst AssetsView = ({\n view,\n folders,\n isLoadingFolders,\n assets,\n isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n locations,\n searchQuery,\n assetsSort,\n foldersPosition,\n hasActiveFilters,\n onClearFilters,\n onAssetItemClick,\n onAddAssets,\n canAddAssets,\n onClearSearch,\n}: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n // \"Folders: Mixed with files\" — interleave the complete folder list into the\n // loaded asset stream client-side, following the active sort. Table view\n // only: the grid always keeps folders in their own band on top.\n const mixedItems = useMemo(\n () =>\n foldersPosition === 'mixed' && !isGridView\n ? mergeMixedList({ folders, assets, sort: assetsSort, hasNextPage })\n : null,\n [foldersPosition, isGridView, folders, assets, assetsSort, hasNextPage]\n );\n\n // Derived once here so the table, the grid and the bulk bar all agree on what\n // is on screen — in mixed mode that is not simply every folder.\n const renderedKeys = buildRenderedKeys({ folders, assets, mixedItems });\n\n const loadMoreRef = useInfiniteScrollSentinel({\n hasNextPage,\n isFetchingMore,\n onLoadMore: fetchNextPage,\n options: INTERSECTION_OPTIONS,\n });\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n // While searching, the search empty state wins (it names the query); a\n // filter-only dead end gets the filtered variant with its Clear action.\n return hasActiveFilters && !searchQuery ? (\n <FilteredEmptyState onClearFilters={onClearFilters} />\n ) : (\n <EmptyState\n onAddAssets={onAddAssets}\n canAddAssets={canAddAssets}\n searchQuery={searchQuery}\n onClearSearch={onClearSearch}\n />\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid\n folders={folders}\n assets={assets}\n renderedKeys={renderedKeys}\n onAssetItemClick={onAssetItemClick}\n />\n ) : (\n <AssetsTable\n assets={assets}\n folders={folders}\n mixedItems={mixedItems}\n renderedKeys={renderedKeys}\n onAssetItemClick={onAssetItemClick}\n />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n {/* Lives here rather than in `AssetsPage` so it can read the loaded\n assets: the AI metadata action needs their mime types to know what\n the provider can handle. `position: fixed` keeps it visually anchored\n regardless of where it sits in the tree. */}\n <BulkActionsBar assets={assets} renderedKeys={renderedKeys} locations={locations} />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ClearSelectionOnChange\n *\n * Selection is list-scoped: it resets when the user is looking at a different list.\n * The list fingerprint is getListQueryKey() — folder, search, sort, filter.\n *\n * Hybrid rule: infinite scroll does not change the key (selection persists), and\n * neither does the table/grid toggle — both views render the same list.\n * Search/sort/filter changes do (selection clears) — same mental model as folder nav.\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ClearSelectionOnChangeProps {\n listQueryKey: string;\n}\n\nconst ClearSelectionOnChange = ({ listQueryKey }: ClearSelectionOnChangeProps) => {\n const { clear } = useAssetSelection();\n\n useEffect(() => {\n clear();\n }, [listQueryKey, clear]);\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Mirrors the design-system Toggle look (grey track, white active segment\n * card) — reproduced locally because the DS component is a labels-only\n * boolean input (no icons) and paints its left segment in danger red. Here\n * both segments use the primary blue when active.\n */\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[1]};\n background: ${({ theme }) => theme.colors.neutral100};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n flex: 1 1 50%;\n align-items: center;\n justify-content: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: 0.6rem ${({ theme }) => theme.spaces[3]};\n border: 1px solid transparent;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: transparent;\n color: ${({ theme }) => theme.colors.neutral600};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n white-space: nowrap;\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.neutral200};\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\n// A single sticky header — same layout scrolled or not, so the toolbar\n// alignment can't reflow the way the shared sticky header did. Once the list\n// scrolls under it, it shrinks (reduced vertical padding + a shadow to lift it\n// off the rows), like the sticky headers elsewhere in the admin. Horizontal\n// padding stays responsive (passed as props); only the vertical rhythm + shadow\n// change here so they can animate.\nconst StickyHeader = styled(Box)<{ $compact: boolean }>`\n position: sticky;\n top: 0;\n z-index: 2;\n /* Transparent at rest (the grey page shows through); an opaque background +\n shadow appear only once it sticks and content scrolls under it. */\n background: transparent;\n /* Horizontal padding matches the list's default spacing (Layouts.Content /\n RESPONSIVE_DEFAULT_SPACING: 4 / 6 / 10) so the header lines up with the rows. */\n padding: ${({ theme }) => `${theme.spaces[6]} ${theme.spaces[4]}`};\n transition:\n padding 0.2s ease,\n background 0.2s ease,\n box-shadow 0.2s ease;\n\n ${({ theme }) => theme.breakpoints.medium} {\n padding-left: ${({ theme }) => theme.spaces[6]};\n padding-right: ${({ theme }) => theme.spaces[6]};\n }\n ${({ theme }) => theme.breakpoints.large} {\n padding-left: ${({ theme }) => theme.spaces[10]};\n padding-right: ${({ theme }) => theme.spaces[10]};\n }\n\n /* Compacting is scoped to medium and up, where the header actually sticks. On\n mobile it scrolls away with the list, so shrinking it mid-scroll animated a\n header the user could no longer see — the transition read as a glitch on the\n way back up rather than as the header settling. */\n ${({ $compact, theme }) =>\n $compact &&\n css`\n ${theme.breakpoints.medium} {\n padding-top: ${theme.spaces[3]};\n padding-bottom: ${theme.spaces[3]};\n padding-left: ${theme.spaces[4]};\n padding-right: ${theme.spaces[4]};\n background: ${theme.colors.neutral0};\n box-shadow: ${theme.shadows.tableShadow};\n }\n ${theme.breakpoints.large} {\n padding-left: ${theme.spaces[6]};\n padding-right: ${theme.spaces[6]};\n }\n `}\n`;\n\n// New button aligns with the title, not the toolbar.\nconst TitleRow = styled(Flex)`\n justify-content: space-between;\n align-items: flex-start;\n gap: ${({ theme }) => theme.spaces[4]};\n\n h1 {\n font-size: 1.8rem;\n }\n`;\n\n// Two groups in source order (Filter, Search / Sort, Toggle). Mobile: stacked —\n// Filter+Search on row 1, Sort+Toggle on row 2. Desktop (large+): one row,\n// Filter+Search on the left, Sort+Toggle pushed right.\nconst Toolbar = styled(Flex)<{ $compact: boolean }>`\n margin-top: ${({ theme }) => theme.spaces[5]};\n flex-direction: column;\n align-items: stretch;\n gap: ${({ theme }) => theme.spaces[3]};\n transition: margin-top 0.2s ease;\n\n /* Tightening the gap to the title belongs to the compact header, so it is\n scoped to the breakpoints that compact. On mobile the header never sticks,\n and this was the last thing still shifting as the page scrolled. */\n ${({ $compact, theme }) =>\n $compact &&\n css`\n ${theme.breakpoints.medium} {\n margin-top: ${theme.spaces[2]};\n }\n `}\n\n ${({ theme }) => theme.breakpoints.large} {\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n }\n`;\n\nconst ToolbarGroup = styled(Flex)`\n align-items: center;\n gap: ${({ theme }) => theme.spaces[3]};\n`;\n\n// Filter + Search. On mobile the group fills the row (search grows into it);\n// on desktop it keeps its intrinsic size and sits at the left edge.\nconst FilterSearchGroup = styled(ToolbarGroup)``;\n\n// Sort + Toggle. Mobile: spread across the row (Sort left, Toggle right).\n// Desktop: sit together at the right edge (space-between on the toolbar leaves\n// the empty space between the search and here).\nconst SortToggleGroup = styled(ToolbarGroup)`\n justify-content: space-between;\n\n ${({ theme }) => theme.breakpoints.large} {\n justify-content: flex-end;\n flex: 0 0 auto;\n }\n`;\n\n// Fills the row on mobile; intrinsic width on desktop.\nconst SearchSlot = styled(Box)`\n flex: 1;\n\n ${({ theme }) => theme.breakpoints.large} {\n flex: 0 1 auto;\n }\n`;\n\n// Toggle labels are hidden below desktop — icons only (buttons keep aria-label).\nconst ToggleLabel = styled.span`\n display: none;\n\n ${({ theme }) => theme.breakpoints.large} {\n display: inline;\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n const { openDetails } = useAssetDetailsParam();\n const { canCreate, canUpdate } = useMediaLibraryPermissions();\n\n const { currentFolderId, navigateToFolderId, navigateToRoot } = useFolderNavigation();\n // Deleted or missing folders (404) need a fetch — handled here, not in\n // `useFolderNavigation` (which only strips malformed ?folder= values).\n const { error: currentFolderError } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n\n useEffect(() => {\n if (currentFolderError?.name === 'NotFoundError') {\n navigateToRoot();\n }\n }, [currentFolderError, navigateToRoot]);\n const { title, itemCount } = useFolderInfo(currentFolderId);\n\n const { searchQuery, isSearching, clearSearch } = useAssetSearch();\n const listSort = useListSort();\n const listFilters = useListFilters();\n\n // Resolve relative presets against \"now\" only when the filters change —\n // keeps the query args (and RTK cache keys) stable between renders.\n const builtFilters = useMemo(\n () => buildAssetFilters(listFilters.filters, new Date()),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- serialized is the value identity of filters\n [listFilters.serialized]\n );\n\n const {\n assets,\n subscribers: assetPageSubscribers,\n pagination,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error: assetsError,\n } = useInfiniteAssets({\n // The real folder is passed even while searching: the service drops the folder\n // filter when `search` is set, so results are still global. List filters\n // compose with both modes.\n folder: currentFolderId,\n search: searchQuery || undefined,\n sort: listSort.assetsSort,\n filters: builtFilters.fileClauses,\n enabled: builtFilters.showFiles,\n });\n\n const { data: fetchedFolders = [], isLoading: isLoadingFolders } = useGetFoldersQuery(\n {\n parentId: currentFolderId,\n search: searchQuery || undefined,\n sort: listSort.foldersSort,\n filters: builtFilters.folderClauses,\n },\n { skip: !builtFilters.showFolders }\n );\n // A type badge can exclude folders structurally (e.g. \"Type is Picture\").\n const folders = useMemo(\n () => (builtFilters.showFolders ? fetchedFolders : []),\n [builtFilters.showFolders, fetchedFolders]\n );\n\n // Both move affordances (drag and the bulk bar) resolve each item's parent\n // from the rows on screen — while searching, results are global and the\n // folder currently open says nothing about where an item lives.\n const itemLocations = useMemo(() => buildItemLocations(assets, folders), [assets, folders]);\n\n const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, { count: itemCount });\n\n const searchResultsTitle = formatMessage(\n {\n id: getTranslationKey('header.search-results'),\n defaultMessage: 'Search results for \"{query}\"',\n },\n { query: searchQuery }\n );\n const numberFolders = folders.length;\n const numberAssets = pagination?.total ?? 0;\n\n const searchResultsCountLabel = formatMessage(\n getSearchResultsCountMessage(numberFolders, numberAssets),\n { numberFolders, numberAssets }\n );\n\n let pageHeaderTitle: string;\n if (isSearching) {\n pageHeaderTitle = `${searchResultsTitle} (${searchResultsCountLabel})`;\n } else if (title) {\n pageHeaderTitle = `${title} (${itemCountLabel})`;\n } else {\n pageHeaderTitle = formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' });\n }\n\n const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Dialog state\n const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Shrink the sticky header once the list scrolls beneath it. A zero-height\n // sentinel sits at the very top of the scroll content; when it leaves the\n // viewport we're scrolled → compact.\n const [isHeaderCompact, setIsHeaderCompact] = useState(false);\n const onHeaderSentinelVisibility = useCallback(\n (isVisible: boolean) => setIsHeaderCompact(!isVisible),\n []\n );\n const headerSentinelRef = useElementOnScreen<HTMLDivElement>(\n onHeaderSentinelVisibility,\n HEADER_SENTINEL_OPTIONS\n );\n\n // Upload handlers\n const [uploadFiles] = useUploadFilesMutation();\n const [uploadFromUrls] = useUploadFromUrlsMutation();\n // `concurrentUploadRequests` echoes the app config. Missing settings (still\n // loading, no permission) fall back to sequential — never faster than the\n // server asked for.\n const { data: settings } = useGetUploadSettingsQuery();\n const concurrency = settings?.data?.concurrentUploadRequests ?? 1;\n // Drives the post-upload AI metadata phase shown per row in the progress\n // dialog. No mime argument: the files are not known until they are picked,\n // and the server filters the batch on the same allowlist anyway.\n const isAiMetadataEnabled = useAIMetadataEnabled();\n const { trackUsage } = useTracking();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n // Mirror the legacy `willAddMediaLibraryAssets` payload: the count of files\n // about to upload, broken down by asset type.\n const assetsCountByType = files.reduce<Record<string, number>>((acc, file) => {\n const type = typeFromMime(file.type);\n acc[type] = (acc[type] ?? 0) + 1;\n return acc;\n }, {});\n trackUsage('willAddMediaLibraryAssets', {\n location: MEDIA_LIBRARY_LOCATION,\n ...assetsCountByType,\n });\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFiles({\n formData,\n totalFiles: files.length,\n concurrency,\n generateAiMetadata: Boolean(isAiMetadataEnabled),\n }).unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n trackUsage('didSelectFile', { source: 'computer', location: MEDIA_LIBRARY_LOCATION });\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n // Defence in depth: the provider is `disabled` without `assets.create`\n // (so onDrop won't fire), but guard here too in case it's ever wired live.\n if (!canCreate) return;\n trackUsage('didSelectFile', { source: 'computer', location: MEDIA_LIBRARY_LOCATION });\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n const handleUrlUpload = async (urls: string[]) => {\n trackUsage('didSelectFile', { source: 'url', location: MEDIA_LIBRARY_LOCATION });\n // Counts-by-type aren't available client-side for the URL flow (the server\n // fetches the files), so this fires the event with location only.\n trackUsage('willAddMediaLibraryAssets', { location: MEDIA_LIBRARY_LOCATION });\n try {\n await uploadFromUrls({\n urls,\n folderId: currentFolderId,\n generateAiMetadata: Boolean(isAiMetadataEnabled),\n }).unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n // The view is deliberately absent: table and grid render the same list, so\n // toggling views keeps the selection.\n const listQueryKey = getListQueryKey({\n folderId: currentFolderId,\n search: searchQuery,\n // Folder position changes the render order too — selection must reset.\n sort: `${listSort.assetsSort};folders=${listSort.foldersPosition}`,\n filter: listFilters.serialized || null,\n });\n\n const scrollAnchorRef = useListScrollRestoration(listQueryKey);\n\n return (\n <>\n <UploadDropZoneProvider onDrop={handleDrop} disabled={!canCreate}>\n <AssetSelectionProvider disabled={!canUpdate}>\n <BusyAssetsProvider>\n <AssetsDndProvider locations={itemLocations}>\n <ClearSelectionOnChange listQueryKey={listQueryKey} />\n <Layouts.Root\n sideNav={\n <FolderTree\n currentFolderId={currentFolderId}\n showActiveFolder={!isSearching}\n onSelectFolder={navigateToFolderId}\n />\n }\n >\n <Page.Main>\n <Box ref={uploadDropZoneRef}>\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n {/* Zero-height marker: leaves the viewport as soon as the list\n scrolls, flipping the header into its compact state. */}\n <Box ref={headerSentinelRef} height={0} aria-hidden />\n <Box ref={scrollAnchorRef} height={0} aria-hidden />\n\n {/* Renders no wrapper: it listens on the scrolling column\n itself, so the header band and the padding below the list\n are both in the hit area. Interactive controls, the table\n header row and the list items are excluded — see\n MainAreaContextMenu. */}\n <MainAreaContextMenu\n disabled={!canCreate}\n onCreateFolder={() => setIsCreateFolderDialogOpen(true)}\n onImportFiles={handleFileSelect}\n onImportFromUrl={() => setIsUrlDialogOpen(true)}\n />\n <StickyHeader $compact={isHeaderCompact}>\n <TitleRow>\n <Typography variant=\"alpha\" tag=\"h1\">\n {pageHeaderTitle}\n </Typography>\n {canCreate && (\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({\n id: getTranslationKey('new'),\n defaultMessage: 'New',\n })}\n >\n <MenuItem\n onSelect={() => setIsCreateFolderDialogOpen(true)}\n startIcon={<FolderIcon />}\n >\n {formatMessage({\n id: getTranslationKey('folder.create.title'),\n defaultMessage: 'New folder',\n })}\n </MenuItem>\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'File upload',\n })}\n </MenuItem>\n <MenuItem\n onSelect={() => setIsUrlDialogOpen(true)}\n startIcon={<Link />}\n >\n {formatMessage({\n id: getTranslationKey('import-from-url'),\n defaultMessage: 'File upload from URL',\n })}\n </MenuItem>\n </SimpleMenu>\n )}\n </TitleRow>\n\n <Toolbar $compact={isHeaderCompact}>\n <FilterSearchGroup>\n <Box>\n <FilterMenu listFilters={listFilters} />\n </Box>\n <SearchSlot>\n <AssetsSearchInput />\n </SearchSlot>\n </FilterSearchGroup>\n <SortToggleGroup>\n <Box>\n <SortMenu sort={listSort} showFoldersGroup={!isGridView} />\n </Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value &&\n setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n <ToggleLabel>\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </ToggleLabel>\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n <ToggleLabel>\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </ToggleLabel>\n </StyledToggleItem>\n </StyledToggleGroup>\n </SortToggleGroup>\n </Toolbar>\n\n <FilterBadges listFilters={listFilters} compact={isHeaderCompact} />\n </StickyHeader>\n\n <Layouts.Content>\n {/* Renders nothing — keeps every loaded page's query subscribed\n so a rename/delete refreshes the whole list. */}\n {assetPageSubscribers}\n <DropZoneWithOverlay>\n <DropFilesMessage\n uploadDropZoneRef={uploadDropZoneRef}\n folderName={title}\n />\n <AssetsView\n view={view}\n folders={folders}\n isLoadingFolders={isLoadingFolders}\n assets={assets}\n isLoadingAssets={isLoadingAssets}\n isFetchingMore={isFetchingMore}\n hasNextPage={hasNextPage}\n fetchNextPage={fetchNextPage}\n error={assetsError}\n locations={itemLocations}\n searchQuery={searchQuery}\n assetsSort={listSort.assetsSort}\n foldersPosition={listSort.foldersPosition}\n hasActiveFilters={listFilters.filters.length > 0}\n onClearFilters={listFilters.clearFilters}\n onAssetItemClick={openDetails}\n onAddAssets={handleFileSelect}\n canAddAssets={canCreate}\n onClearSearch={clearSearch}\n />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Box>\n </Page.Main>\n </Layouts.Root>\n </AssetsDndProvider>\n </BusyAssetsProvider>\n </AssetSelectionProvider>\n </UploadDropZoneProvider>\n <FolderFormDialog\n open={isCreateFolderDialogOpen}\n mode=\"create\"\n parentFolderName={title}\n parentFolderId={currentFolderId}\n onClose={() => setIsCreateFolderDialogOpen(false)}\n />\n <ImportFromUrlDialog\n open={isUrlDialogOpen}\n onClose={() => setIsUrlDialogOpen(false)}\n onUpload={handleUrlUpload}\n />\n <AssetDetailsDrawer />\n </>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","rootMargin","HEADER_SENTINEL_OPTIONS","ITEM_COUNT_MESSAGE","id","getTranslationKey","defaultMessage","SEARCH_RESULTS_COUNT_MESSAGES","both","folders","assets","getSearchResultsCountMessage","numberFolders","numberAssets","AssetsView","view","isLoadingFolders","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","locations","searchQuery","assetsSort","foldersPosition","hasActiveFilters","onClearFilters","onAssetItemClick","onAddAssets","canAddAssets","onClearSearch","formatMessage","useIntl","isGridView","viewOptions","GRID","isLoading","mixedItems","useMemo","mergeMixedList","sort","renderedKeys","buildRenderedKeys","loadMoreRef","useInfiniteScrollSentinel","onLoadMore","options","_jsx","Flex","justifyContent","padding","Loader","Box","Typography","textColor","length","FilteredEmptyState","EmptyState","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","BulkActionsBar","ClearSelectionOnChange","listQueryKey","clear","useAssetSelection","useEffect","StyledToggleGroup","styled","ToggleGroup","Root","theme","spaces","colors","neutral100","neutral200","borderRadius","StyledToggleItem","Item","neutral600","fontSizes","fontWeights","semiBold","neutral700","neutral0","primary600","StickyHeader","breakpoints","medium","large","$compact","css","shadows","tableShadow","TitleRow","Toolbar","ToolbarGroup","FilterSearchGroup","SortToggleGroup","SearchSlot","ToggleLabel","span","AssetsPage","openDetails","useAssetDetailsParam","canCreate","canUpdate","useMediaLibraryPermissions","currentFolderId","navigateToFolderId","navigateToRoot","useFolderNavigation","currentFolderError","useGetFolderQuery","skip","name","title","itemCount","useFolderInfo","isSearching","clearSearch","useAssetSearch","listSort","useListSort","listFilters","useListFilters","builtFilters","buildAssetFilters","filters","Date","serialized","subscribers","assetPageSubscribers","pagination","assetsError","useInfiniteAssets","folder","search","undefined","fileClauses","enabled","showFiles","data","fetchedFolders","useGetFoldersQuery","parentId","foldersSort","folderClauses","showFolders","itemLocations","buildItemLocations","itemCountLabel","count","searchResultsTitle","query","total","searchResultsCountLabel","pageHeaderTitle","isCreateFolderDialogOpen","setIsCreateFolderDialogOpen","useState","setView","usePersistentState","localStorageKeys","isUrlDialogOpen","setIsUrlDialogOpen","fileInputRef","useRef","uploadDropZoneRef","isHeaderCompact","setIsHeaderCompact","onHeaderSentinelVisibility","useCallback","isVisible","headerSentinelRef","useElementOnScreen","uploadFiles","useUploadFilesMutation","uploadFromUrls","useUploadFromUrlsMutation","settings","useGetUploadSettingsQuery","concurrency","concurrentUploadRequests","isAiMetadataEnabled","useAIMetadataEnabled","trackUsage","useTracking","uploadFilesToFolder","files","folderId","assetsCountByType","reduce","acc","file","type","typeFromMime","location","MEDIA_LIBRARY_LOCATION","formData","FormData","fileInfoArray","forEach","append","push","caption","alternativeText","JSON","stringify","totalFiles","generateAiMetadata","Boolean","unwrap","handleFileSelect","current","click","handleFileChange","e","target","source","Array","from","value","handleDrop","handleUrlUpload","urls","getListQueryKey","filter","scrollAnchorRef","useListScrollRestoration","UploadDropZoneProvider","onDrop","disabled","AssetSelectionProvider","BusyAssetsProvider","AssetsDndProvider","Layouts","sideNav","FolderTree","showActiveFolder","onSelectFolder","Page","Main","VisuallyHidden","input","onChange","multiple","aria-hidden","MainAreaContextMenu","onCreateFolder","onImportFiles","onImportFromUrl","variant","tag","SimpleMenu","popoverPlacement","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","FolderIcon","Files","Link","FilterMenu","AssetsSearchInput","SortMenu","showFoldersGroup","onValueChange","TABLE","aria-label","List","GridIcon","FilterBadges","compact","Content","DropZoneWithOverlay","DropFilesMessage","folderName","clearFilters","FolderFormDialog","open","mode","parentFolderName","parentFolderId","onClose","ImportFromUrlDialog","onUpload","AssetDetailsDrawer"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsMenuContent.js","sources":["../../../../../admin/src/pages/Assets/components/ActionsMenuContent.tsx"],"sourcesContent":["import { Menu } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * `Menu.Content` for the row-level \"...\" menus, with the design system's height\n * clamp replaced by a viewport-aware one.\n *\n * The DS caps its menus at a flat `15rem` and hides the scrollbar\n * (`scrollbar-width: none` + `::-webkit-scrollbar { display: none }`). Under a\n * last-row trigger that clamp cut items off with nothing on screen to hint they\n * were there — Delete simply wasn't reachable.\n *\n * Raising the cap to `fit-content` fixed that, but it removes the fallback too:\n * the box then grows to its content and the DS's `overflow: auto` can never\n * fire. At 200% zoom or in a short window the menu ends up taller than the\n * viewport with no way to scroll it — the same items-you-can't-reach bug, moved\n * to a different trigger condition (WCAG 1.4.4 / 1.4.10).\n *\n * So cap to the space Radix measured instead. `--radix-popper-available-height`\n * is set on the content element by `@radix-ui/react-popper`, and the DS mounts\n * this box as the popper content (`asChild`), so it resolves here. The fallback\n * in `min()` covers the first paint, before the property is written. Radix's\n * collision flip still picks the side with more room; this only decides what\n * happens when neither side has enough. The scrollbar is un-hidden so the\n * overflow is visible when it does happen.\n */\nexport const ActionsMenuContent = styled(Menu.Content).attrs({\n maxHeight: 'min(var(--radix-popper-available-height, 100vh), 100vh)',\n})`\n scrollbar-width: thin;\n -ms-overflow-style: auto;\n\n &::-webkit-scrollbar {\n display: block;\n width: 0.4rem;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.colors.neutral300};\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n"],"names":["ActionsMenuContent","styled","Menu","Content","attrs","maxHeight","theme","colors","neutral300","borderRadius"],"mappings":";;;;;AAGA;;;;;;;;;;;;;;;;;;;;;;UAuBaA,kBAAAA,GAAqBC,uBAAAA,CAAOC,kBAAKC,OAAO,CAAA,CAAEC,KAAK,CAAC;IAC3DC,SAAAA,EAAW;AACb,CAAA,CAAE;;;;;;;;;;gBAUc,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;AACtC,mBAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,YAAY,CAAC;;AAEvD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionsMenuContent.mjs","sources":["../../../../../admin/src/pages/Assets/components/ActionsMenuContent.tsx"],"sourcesContent":["import { Menu } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\n/**\n * `Menu.Content` for the row-level \"...\" menus, with the design system's height\n * clamp replaced by a viewport-aware one.\n *\n * The DS caps its menus at a flat `15rem` and hides the scrollbar\n * (`scrollbar-width: none` + `::-webkit-scrollbar { display: none }`). Under a\n * last-row trigger that clamp cut items off with nothing on screen to hint they\n * were there — Delete simply wasn't reachable.\n *\n * Raising the cap to `fit-content` fixed that, but it removes the fallback too:\n * the box then grows to its content and the DS's `overflow: auto` can never\n * fire. At 200% zoom or in a short window the menu ends up taller than the\n * viewport with no way to scroll it — the same items-you-can't-reach bug, moved\n * to a different trigger condition (WCAG 1.4.4 / 1.4.10).\n *\n * So cap to the space Radix measured instead. `--radix-popper-available-height`\n * is set on the content element by `@radix-ui/react-popper`, and the DS mounts\n * this box as the popper content (`asChild`), so it resolves here. The fallback\n * in `min()` covers the first paint, before the property is written. Radix's\n * collision flip still picks the side with more room; this only decides what\n * happens when neither side has enough. The scrollbar is un-hidden so the\n * overflow is visible when it does happen.\n */\nexport const ActionsMenuContent = styled(Menu.Content).attrs({\n maxHeight: 'min(var(--radix-popper-available-height, 100vh), 100vh)',\n})`\n scrollbar-width: thin;\n -ms-overflow-style: auto;\n\n &::-webkit-scrollbar {\n display: block;\n width: 0.4rem;\n }\n\n &::-webkit-scrollbar-thumb {\n background: ${({ theme }) => theme.colors.neutral300};\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n"],"names":["ActionsMenuContent","styled","Menu","Content","attrs","maxHeight","theme","colors","neutral300","borderRadius"],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;;;;;;UAuBaA,kBAAAA,GAAqBC,MAAAA,CAAOC,KAAKC,OAAO,CAAA,CAAEC,KAAK,CAAC;IAC3DC,SAAAA,EAAW;AACb,CAAA,CAAE;;;;;;;;;;gBAUc,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAACC,UAAU,CAAC;AACtC,mBAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,YAAY,CAAC;;AAEvD;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetActionsMenu.js","sources":["../../../../../admin/src/pages/Assets/components/AssetActionsMenu.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport { useClipboard, useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n IconButton,\n Menu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ArrowRight, ArrowsCounterClockwise, Download, Link, More, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useAIMetadataEnabled } from '../../../hooks/useAIMetadataEnabled';\nimport { useApiErrorMessage } from '../../../hooks/useApiErrorMessage';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { useReplaceAssetMutation } from '../../../services/assets';\nimport { downloadFile } from '../../../utils/downloadFile';\nimport { prefixFileUrlWithBackendUrl } from '../../../utils/files';\nimport { getTranslationKey } from '../../../utils/translations';\nimport { useAssetSelection } from '../hooks/useAssetSelection';\nimport { useBusyAssetsOptional } from '../hooks/useBusyAssets';\nimport { assetKey } from '../utils/selection';\n\nimport { ActionsMenuContent } from './ActionsMenuContent';\nimport { BulkMoveDialog } from './BulkMoveDialog';\nimport { DeleteItemsDialog } from './DeleteItemsDialog';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { DragFileData } from '../../../types/dnd';\n\ninterface AssetActionsMenuProps {\n asset: File;\n /** Drag data for this asset, so the move dialog validates against its real folder. */\n dragData: DragFileData;\n}\n\n/**\n * The \"...\" menu on an asset row/card. Always acts on that one asset, whatever\n * the current multi-selection is (the bulk actions bar is the selection-scoped\n * affordance) — the file mirror of `FolderActionsMenu`.\n *\n * Replace / copy link / download duplicate what the details drawer offers as\n * icon buttons, so the same action is one click away without opening the asset\n * first. They are re-implemented rather than lifted out of the drawer: the\n * drawer versions render as `IconButton`s and report through its in-drawer toast\n * slot, neither of which fits a menu item on a row.\n *\n * A successful move or delete deselects this one asset and leaves the rest of\n * the selection intact: the mutations only invalidate RTK tags, so without it an\n * `asset:<id>` key for a file that has been deleted — or has moved out of this\n * list — would linger. The other selected rows are untouched, which is the whole\n * point of the menu being a single-item affordance.\n */\nexport const AssetActionsMenu = ({ asset, dragData }: AssetActionsMenuProps) => {\n const { formatMessage } = useIntl();\n const getErrorMessage = useApiErrorMessage();\n const { copy } = useClipboard();\n const { toggleNotification } = useNotification();\n const { deselect } = useAssetSelection();\n // Absent in the asset picker and in unit tests: the replace still runs, it\n // just renders no row-level overlay.\n const markBusy = useBusyAssetsOptional()?.markBusy ?? (() => () => {});\n const {\n canUpdate,\n canDownload,\n canCopyLink,\n isLoading: isLoadingPermissions,\n } = useMediaLibraryPermissions();\n const [replaceAsset, { isLoading: isReplacing }] = useReplaceAssetMutation();\n const aiEnabled = useAIMetadataEnabled({ mime: asset.mime });\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isReplaceOpen, setIsReplaceOpen] = useState(false);\n const [isMoveOpen, setIsMoveOpen] = useState(false);\n const [isDeleteOpen, setIsDeleteOpen] = useState(false);\n const [isDownloading, setIsDownloading] = useState(false);\n\n // Stable identity: the move dialog memoizes its destination walk on it.\n const moveItems = useMemo(() => [dragData], [dragData]);\n\n // Confirm first, then open the native picker, so the user only commits to\n // replacing after acknowledging the warning (same order as the drawer).\n const handleReplaceContinue = () => {\n setIsReplaceOpen(false);\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n // Reset the native input so the same file can be picked again later.\n event.target.value = '';\n\n if (!file) {\n return;\n }\n\n // The menu has closed by the time the picker returns, so `isReplacing` has\n // nothing left to disable and the row would otherwise sit inert for the\n // whole upload. Marking the asset busy puts the same overlay the drawer\n // uses on the row/card, cleared when the mutation settles either way.\n const releaseBusy = markBusy(\n asset.id,\n formatMessage({\n id: getTranslationKey('asset-details.replace.loading'),\n defaultMessage: 'Replacing the file…',\n })\n );\n\n let res;\n try {\n res = await replaceAsset({ id: asset.id, file, fileInfo: { name: asset.name } });\n } finally {\n releaseBusy();\n }\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: getErrorMessage(\n res.error,\n formatMessage({\n id: getTranslationKey('asset-details.replace.error'),\n defaultMessage: 'Failed to replace the file.',\n })\n ),\n });\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslationKey('asset-details.replace.success'),\n defaultMessage: 'File replaced.',\n }),\n });\n };\n\n const handleCopyLink = async () => {\n const url = prefixFileUrlWithBackendUrl(asset.url);\n\n if (!url) {\n return;\n }\n\n const didCopy = await copy(url);\n\n toggleNotification({\n type: didCopy ? 'success' : 'danger',\n message: formatMessage(\n didCopy\n ? {\n id: getTranslationKey('asset-details.copy-link.success'),\n defaultMessage: 'Link copied.',\n }\n : {\n id: getTranslationKey('asset-details.copy-link.error'),\n defaultMessage: 'Failed to copy the link.',\n }\n ),\n });\n };\n\n const handleDownload = async () => {\n const url = prefixFileUrlWithBackendUrl(asset.url);\n\n if (!url) {\n return;\n }\n\n setIsDownloading(true);\n\n try {\n await downloadFile(url, asset.name);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslationKey('asset-details.download.error'),\n defaultMessage: 'Failed to download the file.',\n }),\n });\n } finally {\n setIsDownloading(false);\n }\n };\n\n // Two permission-gated groups: replace/copy-link/download above, move/delete\n // below. The separator earns its place only when both survive the gate —\n // `canUpdate` alone puts Replace in the top group, which is not enough.\n const hasTopGroup = canUpdate || canCopyLink || canDownload;\n const hasBottomGroup = canUpdate;\n const showSeparator = (canCopyLink || canDownload) && hasBottomGroup;\n\n // A role can read the library while holding none of these, and an empty\n // popup is worse than no trigger at all. Every flag is `false` until the\n // RBAC check settles, so wait for it — otherwise the trigger unmounts and\n // remounts on first paint for everyone.\n if (!isLoadingPermissions && !hasTopGroup && !hasBottomGroup) {\n return null;\n }\n\n return (\n <>\n <VisuallyHidden>\n <input\n ref={fileInputRef}\n type=\"file\"\n // Replacing swaps the bytes of an existing asset, so the picker offers\n // only its own type. Without this the picker accepted anything and a\n // JPG could come back as PNG bytes still served under a `.jpg` url,\n // since replace preserves hash and ext by design.\n accept={asset.mime ?? ''}\n multiple={false}\n onChange={handleFileChange}\n aria-hidden\n tabIndex={-1}\n />\n </VisuallyHidden>\n {/* Non-modal: Radix's default `modal` marks the rest of the document\n `aria-hidden` and blocks pointer events while the menu is open, so\n clicking a sibling row's trigger only dismissed this one — leaving\n every menu you touched to be closed one click at a time. Non-modal\n dismissal treats that click as both \"close this\" and \"open that\". */}\n <Menu.Root modal={false}>\n <Menu.Trigger\n tag={IconButton}\n icon={<More />}\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslationKey('control-card.more-actions'),\n defaultMessage: 'More actions',\n })}\n />\n {/* `ActionsMenuContent` replaces the design system's flat 15rem clamp\n with the height Radix actually measured, and un-hides the scrollbar\n it would otherwise overflow into. See that file for why. */}\n <ActionsMenuContent popoverPlacement=\"bottom-end\" zIndex={2} minWidth=\"22rem\">\n {canUpdate && (\n <Menu.Item\n startIcon={<ArrowsCounterClockwise />}\n disabled={isReplacing}\n onSelect={() => setIsReplaceOpen(true)}\n >\n {formatMessage({\n id: getTranslationKey('list.assets.actions.replace'),\n defaultMessage: 'Replace media',\n })}\n </Menu.Item>\n )}\n {canCopyLink && (\n <Menu.Item startIcon={<Link />} onSelect={handleCopyLink}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.copy-link'),\n defaultMessage: 'Copy link to media',\n })}\n </Menu.Item>\n )}\n {canDownload && (\n <Menu.Item startIcon={<Download />} disabled={isDownloading} onSelect={handleDownload}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.download'),\n defaultMessage: 'Download media',\n })}\n </Menu.Item>\n )}\n {showSeparator && <Menu.Separator />}\n {canUpdate && (\n <>\n <Menu.Item startIcon={<ArrowRight />} onSelect={() => setIsMoveOpen(true)}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.move'),\n defaultMessage: 'Move to folder',\n })}\n </Menu.Item>\n <Menu.Item\n startIcon={<Trash />}\n variant=\"danger\"\n onSelect={() => setIsDeleteOpen(true)}\n >\n {formatMessage({\n id: getTranslationKey('list.assets.actions.delete'),\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\n </>\n )}\n </ActionsMenuContent>\n </Menu.Root>\n <Dialog.Root open={isReplaceOpen} onOpenChange={setIsReplaceOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: getTranslationKey('asset-details.replace.title'),\n defaultMessage: 'Replace this media file?',\n })}\n </Dialog.Header>\n <Dialog.Body textAlign=\"center\">\n <Flex direction=\"column\" textAlign=\"center\">\n <Typography variant=\"omega\">\n {formatMessage({\n id: getTranslationKey('asset-details.replace.description'),\n defaultMessage: 'Current content will be permanently replaced.',\n })}\n </Typography>\n {aiEnabled ? (\n <Typography variant=\"omega\">\n {formatMessage({\n id: getTranslationKey('asset-details.replace.description.ai'),\n defaultMessage: 'AI will generate new metadata after upload.',\n })}\n </Typography>\n ) : null}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Dialog.Cancel>\n <Dialog.Action>\n <Button variant=\"secondary\" onClick={handleReplaceContinue} fullWidth>\n {formatMessage({\n id: getTranslationKey('asset-details.replace.continue'),\n defaultMessage: 'Continue',\n })}\n </Button>\n </Dialog.Action>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n {isMoveOpen && (\n <BulkMoveDialog\n open\n onClose={() => setIsMoveOpen(false)}\n items={moveItems}\n onSuccess={() => deselect(assetKey(asset.id))}\n />\n )}\n {/* Both dialogs live inside the row, so a background refetch that drops the\n row would take an open dialog with it. Nothing invalidates until the\n mutation resolves, and the dialog closes in the same tick, so the\n flows themselves can't trigger it. */}\n {isDeleteOpen && (\n <DeleteItemsDialog\n open\n onClose={() => setIsDeleteOpen(false)}\n target={{ fileIds: [asset.id], folderIds: [] }}\n onSuccess={() => deselect(assetKey(asset.id))}\n />\n )}\n </>\n );\n};\n"],"names":["AssetActionsMenu","asset","dragData","formatMessage","useIntl","getErrorMessage","useApiErrorMessage","copy","useClipboard","toggleNotification","useNotification","deselect","useAssetSelection","markBusy","useBusyAssetsOptional","canUpdate","canDownload","canCopyLink","isLoading","isLoadingPermissions","useMediaLibraryPermissions","replaceAsset","isReplacing","useReplaceAssetMutation","aiEnabled","useAIMetadataEnabled","mime","fileInputRef","useRef","isReplaceOpen","setIsReplaceOpen","useState","isMoveOpen","setIsMoveOpen","isDeleteOpen","setIsDeleteOpen","isDownloading","setIsDownloading","moveItems","useMemo","handleReplaceContinue","current","click","handleFileChange","event","file","target","files","value","releaseBusy","id","getTranslationKey","defaultMessage","res","fileInfo","name","type","message","error","handleCopyLink","url","prefixFileUrlWithBackendUrl","didCopy","handleDownload","downloadFile","hasTopGroup","hasBottomGroup","showSeparator","_jsxs","_Fragment","_jsx","VisuallyHidden","input","ref","accept","multiple","onChange","aria-hidden","tabIndex","Menu","Root","modal","Trigger","tag","IconButton","icon","More","variant","label","ActionsMenuContent","popoverPlacement","zIndex","minWidth","Item","startIcon","ArrowsCounterClockwise","disabled","onSelect","Link","Download","Separator","ArrowRight","Trash","Dialog","open","onOpenChange","Content","Header","Body","textAlign","Flex","direction","Typography","Footer","Cancel","Button","fullWidth","Action","onClick","BulkMoveDialog","onClose","items","onSuccess","assetKey","DeleteItemsDialog","fileIds","folderIds"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetActionsMenu.mjs","sources":["../../../../../admin/src/pages/Assets/components/AssetActionsMenu.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\n\nimport { useClipboard, useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Dialog,\n Flex,\n IconButton,\n Menu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ArrowRight, ArrowsCounterClockwise, Download, Link, More, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { useAIMetadataEnabled } from '../../../hooks/useAIMetadataEnabled';\nimport { useApiErrorMessage } from '../../../hooks/useApiErrorMessage';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { useReplaceAssetMutation } from '../../../services/assets';\nimport { downloadFile } from '../../../utils/downloadFile';\nimport { prefixFileUrlWithBackendUrl } from '../../../utils/files';\nimport { getTranslationKey } from '../../../utils/translations';\nimport { useAssetSelection } from '../hooks/useAssetSelection';\nimport { useBusyAssetsOptional } from '../hooks/useBusyAssets';\nimport { assetKey } from '../utils/selection';\n\nimport { ActionsMenuContent } from './ActionsMenuContent';\nimport { BulkMoveDialog } from './BulkMoveDialog';\nimport { DeleteItemsDialog } from './DeleteItemsDialog';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { DragFileData } from '../../../types/dnd';\n\ninterface AssetActionsMenuProps {\n asset: File;\n /** Drag data for this asset, so the move dialog validates against its real folder. */\n dragData: DragFileData;\n}\n\n/**\n * The \"...\" menu on an asset row/card. Always acts on that one asset, whatever\n * the current multi-selection is (the bulk actions bar is the selection-scoped\n * affordance) — the file mirror of `FolderActionsMenu`.\n *\n * Replace / copy link / download duplicate what the details drawer offers as\n * icon buttons, so the same action is one click away without opening the asset\n * first. They are re-implemented rather than lifted out of the drawer: the\n * drawer versions render as `IconButton`s and report through its in-drawer toast\n * slot, neither of which fits a menu item on a row.\n *\n * A successful move or delete deselects this one asset and leaves the rest of\n * the selection intact: the mutations only invalidate RTK tags, so without it an\n * `asset:<id>` key for a file that has been deleted — or has moved out of this\n * list — would linger. The other selected rows are untouched, which is the whole\n * point of the menu being a single-item affordance.\n */\nexport const AssetActionsMenu = ({ asset, dragData }: AssetActionsMenuProps) => {\n const { formatMessage } = useIntl();\n const getErrorMessage = useApiErrorMessage();\n const { copy } = useClipboard();\n const { toggleNotification } = useNotification();\n const { deselect } = useAssetSelection();\n // Absent in the asset picker and in unit tests: the replace still runs, it\n // just renders no row-level overlay.\n const markBusy = useBusyAssetsOptional()?.markBusy ?? (() => () => {});\n const {\n canUpdate,\n canDownload,\n canCopyLink,\n isLoading: isLoadingPermissions,\n } = useMediaLibraryPermissions();\n const [replaceAsset, { isLoading: isReplacing }] = useReplaceAssetMutation();\n const aiEnabled = useAIMetadataEnabled({ mime: asset.mime });\n\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isReplaceOpen, setIsReplaceOpen] = useState(false);\n const [isMoveOpen, setIsMoveOpen] = useState(false);\n const [isDeleteOpen, setIsDeleteOpen] = useState(false);\n const [isDownloading, setIsDownloading] = useState(false);\n\n // Stable identity: the move dialog memoizes its destination walk on it.\n const moveItems = useMemo(() => [dragData], [dragData]);\n\n // Confirm first, then open the native picker, so the user only commits to\n // replacing after acknowledging the warning (same order as the drawer).\n const handleReplaceContinue = () => {\n setIsReplaceOpen(false);\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n // Reset the native input so the same file can be picked again later.\n event.target.value = '';\n\n if (!file) {\n return;\n }\n\n // The menu has closed by the time the picker returns, so `isReplacing` has\n // nothing left to disable and the row would otherwise sit inert for the\n // whole upload. Marking the asset busy puts the same overlay the drawer\n // uses on the row/card, cleared when the mutation settles either way.\n const releaseBusy = markBusy(\n asset.id,\n formatMessage({\n id: getTranslationKey('asset-details.replace.loading'),\n defaultMessage: 'Replacing the file…',\n })\n );\n\n let res;\n try {\n res = await replaceAsset({ id: asset.id, file, fileInfo: { name: asset.name } });\n } finally {\n releaseBusy();\n }\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: getErrorMessage(\n res.error,\n formatMessage({\n id: getTranslationKey('asset-details.replace.error'),\n defaultMessage: 'Failed to replace the file.',\n })\n ),\n });\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTranslationKey('asset-details.replace.success'),\n defaultMessage: 'File replaced.',\n }),\n });\n };\n\n const handleCopyLink = async () => {\n const url = prefixFileUrlWithBackendUrl(asset.url);\n\n if (!url) {\n return;\n }\n\n const didCopy = await copy(url);\n\n toggleNotification({\n type: didCopy ? 'success' : 'danger',\n message: formatMessage(\n didCopy\n ? {\n id: getTranslationKey('asset-details.copy-link.success'),\n defaultMessage: 'Link copied.',\n }\n : {\n id: getTranslationKey('asset-details.copy-link.error'),\n defaultMessage: 'Failed to copy the link.',\n }\n ),\n });\n };\n\n const handleDownload = async () => {\n const url = prefixFileUrlWithBackendUrl(asset.url);\n\n if (!url) {\n return;\n }\n\n setIsDownloading(true);\n\n try {\n await downloadFile(url, asset.name);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslationKey('asset-details.download.error'),\n defaultMessage: 'Failed to download the file.',\n }),\n });\n } finally {\n setIsDownloading(false);\n }\n };\n\n // Two permission-gated groups: replace/copy-link/download above, move/delete\n // below. The separator earns its place only when both survive the gate —\n // `canUpdate` alone puts Replace in the top group, which is not enough.\n const hasTopGroup = canUpdate || canCopyLink || canDownload;\n const hasBottomGroup = canUpdate;\n const showSeparator = (canCopyLink || canDownload) && hasBottomGroup;\n\n // A role can read the library while holding none of these, and an empty\n // popup is worse than no trigger at all. Every flag is `false` until the\n // RBAC check settles, so wait for it — otherwise the trigger unmounts and\n // remounts on first paint for everyone.\n if (!isLoadingPermissions && !hasTopGroup && !hasBottomGroup) {\n return null;\n }\n\n return (\n <>\n <VisuallyHidden>\n <input\n ref={fileInputRef}\n type=\"file\"\n // Replacing swaps the bytes of an existing asset, so the picker offers\n // only its own type. Without this the picker accepted anything and a\n // JPG could come back as PNG bytes still served under a `.jpg` url,\n // since replace preserves hash and ext by design.\n accept={asset.mime ?? ''}\n multiple={false}\n onChange={handleFileChange}\n aria-hidden\n tabIndex={-1}\n />\n </VisuallyHidden>\n {/* Non-modal: Radix's default `modal` marks the rest of the document\n `aria-hidden` and blocks pointer events while the menu is open, so\n clicking a sibling row's trigger only dismissed this one — leaving\n every menu you touched to be closed one click at a time. Non-modal\n dismissal treats that click as both \"close this\" and \"open that\". */}\n <Menu.Root modal={false}>\n <Menu.Trigger\n tag={IconButton}\n icon={<More />}\n variant=\"ghost\"\n label={formatMessage({\n id: getTranslationKey('control-card.more-actions'),\n defaultMessage: 'More actions',\n })}\n />\n {/* `ActionsMenuContent` replaces the design system's flat 15rem clamp\n with the height Radix actually measured, and un-hides the scrollbar\n it would otherwise overflow into. See that file for why. */}\n <ActionsMenuContent popoverPlacement=\"bottom-end\" zIndex={2} minWidth=\"22rem\">\n {canUpdate && (\n <Menu.Item\n startIcon={<ArrowsCounterClockwise />}\n disabled={isReplacing}\n onSelect={() => setIsReplaceOpen(true)}\n >\n {formatMessage({\n id: getTranslationKey('list.assets.actions.replace'),\n defaultMessage: 'Replace media',\n })}\n </Menu.Item>\n )}\n {canCopyLink && (\n <Menu.Item startIcon={<Link />} onSelect={handleCopyLink}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.copy-link'),\n defaultMessage: 'Copy link to media',\n })}\n </Menu.Item>\n )}\n {canDownload && (\n <Menu.Item startIcon={<Download />} disabled={isDownloading} onSelect={handleDownload}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.download'),\n defaultMessage: 'Download media',\n })}\n </Menu.Item>\n )}\n {showSeparator && <Menu.Separator />}\n {canUpdate && (\n <>\n <Menu.Item startIcon={<ArrowRight />} onSelect={() => setIsMoveOpen(true)}>\n {formatMessage({\n id: getTranslationKey('list.assets.actions.move'),\n defaultMessage: 'Move to folder',\n })}\n </Menu.Item>\n <Menu.Item\n startIcon={<Trash />}\n variant=\"danger\"\n onSelect={() => setIsDeleteOpen(true)}\n >\n {formatMessage({\n id: getTranslationKey('list.assets.actions.delete'),\n defaultMessage: 'Delete',\n })}\n </Menu.Item>\n </>\n )}\n </ActionsMenuContent>\n </Menu.Root>\n <Dialog.Root open={isReplaceOpen} onOpenChange={setIsReplaceOpen}>\n <Dialog.Content>\n <Dialog.Header>\n {formatMessage({\n id: getTranslationKey('asset-details.replace.title'),\n defaultMessage: 'Replace this media file?',\n })}\n </Dialog.Header>\n <Dialog.Body textAlign=\"center\">\n <Flex direction=\"column\" textAlign=\"center\">\n <Typography variant=\"omega\">\n {formatMessage({\n id: getTranslationKey('asset-details.replace.description'),\n defaultMessage: 'Current content will be permanently replaced.',\n })}\n </Typography>\n {aiEnabled ? (\n <Typography variant=\"omega\">\n {formatMessage({\n id: getTranslationKey('asset-details.replace.description.ai'),\n defaultMessage: 'AI will generate new metadata after upload.',\n })}\n </Typography>\n ) : null}\n </Flex>\n </Dialog.Body>\n <Dialog.Footer>\n <Dialog.Cancel>\n <Button variant=\"tertiary\" fullWidth>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Dialog.Cancel>\n <Dialog.Action>\n <Button variant=\"secondary\" onClick={handleReplaceContinue} fullWidth>\n {formatMessage({\n id: getTranslationKey('asset-details.replace.continue'),\n defaultMessage: 'Continue',\n })}\n </Button>\n </Dialog.Action>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog.Root>\n {isMoveOpen && (\n <BulkMoveDialog\n open\n onClose={() => setIsMoveOpen(false)}\n items={moveItems}\n onSuccess={() => deselect(assetKey(asset.id))}\n />\n )}\n {/* Both dialogs live inside the row, so a background refetch that drops the\n row would take an open dialog with it. Nothing invalidates until the\n mutation resolves, and the dialog closes in the same tick, so the\n flows themselves can't trigger it. */}\n {isDeleteOpen && (\n <DeleteItemsDialog\n open\n onClose={() => setIsDeleteOpen(false)}\n target={{ fileIds: [asset.id], folderIds: [] }}\n onSuccess={() => deselect(assetKey(asset.id))}\n />\n )}\n </>\n );\n};\n"],"names":["AssetActionsMenu","asset","dragData","formatMessage","useIntl","getErrorMessage","useApiErrorMessage","copy","useClipboard","toggleNotification","useNotification","deselect","useAssetSelection","markBusy","useBusyAssetsOptional","canUpdate","canDownload","canCopyLink","isLoading","isLoadingPermissions","useMediaLibraryPermissions","replaceAsset","isReplacing","useReplaceAssetMutation","aiEnabled","useAIMetadataEnabled","mime","fileInputRef","useRef","isReplaceOpen","setIsReplaceOpen","useState","isMoveOpen","setIsMoveOpen","isDeleteOpen","setIsDeleteOpen","isDownloading","setIsDownloading","moveItems","useMemo","handleReplaceContinue","current","click","handleFileChange","event","file","target","files","value","releaseBusy","id","getTranslationKey","defaultMessage","res","fileInfo","name","type","message","error","handleCopyLink","url","prefixFileUrlWithBackendUrl","didCopy","handleDownload","downloadFile","hasTopGroup","hasBottomGroup","showSeparator","_jsxs","_Fragment","_jsx","VisuallyHidden","input","ref","accept","multiple","onChange","aria-hidden","tabIndex","Menu","Root","modal","Trigger","tag","IconButton","icon","More","variant","label","ActionsMenuContent","popoverPlacement","zIndex","minWidth","Item","startIcon","ArrowsCounterClockwise","disabled","onSelect","Link","Download","Separator","ArrowRight","Trash","Dialog","open","onOpenChange","Content","Header","Body","textAlign","Flex","direction","Typography","Footer","Cancel","Button","fullWidth","Action","onClick","BulkMoveDialog","onClose","items","onSuccess","assetKey","DeleteItemsDialog","fileIds","folderIds"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetCropEditor.js","sources":["../../../../../../admin/src/pages/Assets/components/AssetDetails/AssetCropEditor.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Field,\n Flex,\n FocusTrap,\n IconButton,\n NumberInput,\n Portal,\n Typography,\n} from '@strapi/design-system';\nimport { ArrowsHorizontal, ArrowsVertical, Crop, Link } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../utils/files';\nimport { getTranslationKey } from '../../../../utils/translations';\n\nimport { resolveCornerResize, useCropImg } from './useCropImg';\n\nimport type {\n AssetWithPopulatedCreatedBy,\n FocalPoint,\n} from '../../../../../../shared/contracts/files';\n\nconst FOCAL_DIAMETER_REM = 5.6;\nconst HANDLE_PX = 12;\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\n// Full-viewport takeover with a small inset so the editor reads as a card.\nconst Overlay = styled(Flex)`\n position: fixed;\n z-index: 1200;\n flex-direction: column;\n top: ${({ theme }) => theme.spaces[1]};\n left: ${({ theme }) => theme.spaces[1]};\n right: ${({ theme }) => theme.spaces[1]};\n bottom: ${({ theme }) => theme.spaces[1]};\n border-radius: ${({ theme }) => theme.borderRadius};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n /* Focused programmatically on open (tabIndex -1) — no visible ring needed. */\n outline: none;\n`;\n\nconst HeaderBar = styled(Flex)`\n width: 100%;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[5]}`};\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n`;\n\n// Fills the remaining space between header/footer; checkerboard pattern.\n// The horizontal padding keeps the image off the viewport edges — the corner\n// handles overhang the image by half their size, and on narrow (mobile)\n// screens an edge-to-edge image leaves nothing to grab.\nconst Body = styled(Box)`\n width: 100%;\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n padding: 0 ${({ theme }) => theme.spaces[4]};\n background: repeating-conic-gradient(\n ${({ theme }) => theme.colors.neutral100} 0% 25%,\n ${({ theme }) => theme.colors.neutral0} 0% 50%\n )\n 50% / 20px 20px;\n`;\n\n// Wrapper sized to the image's natural aspect ratio so the <img> inside fills\n// it without letterboxing. Percentage-based positioning of the crop overlay\n// then maps directly to natural-px coordinates.\nconst CropArea = styled.div<{ $aspect?: number }>`\n position: relative;\n max-width: 100%;\n max-height: 100%;\n ${({ $aspect }) => ($aspect ? `aspect-ratio: ${$aspect};` : '')}\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n user-select: none;\n -webkit-user-drag: none;\n }\n`;\n\n// Crop selection rectangle, positioned by % of CropArea. Inverts the dim\n// outside via box-shadow so the focused area shows full color.\nconst CropOverlay = styled.div`\n position: absolute;\n border: 1px dashed ${({ theme }) => theme.colors.primary600};\n box-shadow: 0 0 0 9999px rgba(33, 33, 52, 0.5);\n cursor: move;\n /* Without this, touch browsers claim the gesture for scrolling and fire\n pointercancel mid-drag — the crop drag dies while the finger is down. */\n touch-action: none;\n`;\n\nconst ResizeHandle = styled.button<{ $cursor: string }>`\n position: absolute;\n width: ${HANDLE_PX}px;\n height: ${HANDLE_PX}px;\n margin: -${HANDLE_PX / 2}px;\n padding: 0;\n border: 1px solid ${({ theme }) => theme.colors.primary600};\n border-radius: 2px;\n background: ${({ theme }) => theme.colors.neutral0};\n cursor: ${({ $cursor }) => $cursor};\n touch-action: none;\n`;\n\nconst FocalPointHandle = styled.button`\n position: absolute;\n width: ${FOCAL_DIAMETER_REM}rem;\n height: ${FOCAL_DIAMETER_REM}rem;\n margin: ${-FOCAL_DIAMETER_REM / 2}rem 0 0 ${-FOCAL_DIAMETER_REM / 2}rem;\n border-radius: 50%;\n border: 1px solid ${({ theme }) => theme.colors.neutral800};\n background: transparent;\n cursor: grab;\n padding: 0;\n touch-action: none;\n\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.16);\n transform: translate(-50%, -50%);\n }\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: ${({ theme }) => theme.colors.neutral800};\n transform: translate(-50%, -50%);\n }\n\n &:active {\n cursor: grabbing;\n }\n`;\n\n// Hidden on mobile — the panel (title/hint + numeric crop & focal inputs) is\n// too large for a phone; touch users set the crop by dragging the rectangle and\n// focal handle directly on the image. Shown from tablet up.\nconst InfoBox = styled(Box)`\n display: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n display: block;\n position: absolute;\n right: ${({ theme }) => theme.spaces[1]};\n bottom: ${({ theme }) => theme.spaces[1]};\n width: 100%;\n max-width: 32rem;\n padding: ${({ theme }) => theme.spaces[3]};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) =>\n theme.colorScheme === 'dark' ? theme.colors.neutral150 : theme.colors.neutral900};\n z-index: 20;\n }\n`;\n\nconst FooterBar = styled(Flex)`\n width: 100%;\n justify-content: space-between;\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[5]}`};\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n`;\n\nconst FieldRow = styled(Field.Root)`\n flex-direction: row;\n align-items: center;\n`;\n\nconst FieldNumberInput = styled(NumberInput)`\n width: 8.4rem;\n`;\n\nconst LabelIcon = styled(Field.Label)`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.6rem;\n height: 1.6rem;\n`;\n\nconst BackgroundPreserveRatioContainer = styled(Box)`\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n\n svg {\n display: block;\n }\n`;\n\nconst BackgroundPreserveRatio = () => (\n <BackgroundPreserveRatioContainer>\n <svg width=\"17\" height=\"49\" viewBox=\"0 0 17 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0.5 0.5H8.5C12.9183 0.5 16.5 4.08172 16.5 8.5M0.5 48.5H8.5C12.9183 48.5 16.5 44.9183 16.5 40.5\"\n stroke=\"#666687\"\n strokeLinecap=\"round\"\n />\n </svg>\n </BackgroundPreserveRatioContainer>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCropEditor\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetCropEditorProps {\n asset: AssetWithPopulatedCreatedBy;\n isBusy?: boolean;\n onClose: () => void;\n onApply: (file: globalThis.File, focalPoint: FocalPoint) => void;\n onSaveAsCopy: (file: globalThis.File, focalPoint: FocalPoint) => void;\n /**\n * \"Save as copy\" creates a new asset (`assets.create`), a different permission\n * from cropping in place (`assets.update`). Hidden when the user lacks it, so\n * an update-only role can't trigger a 403.\n */\n canSaveAsCopy: boolean;\n}\n\ntype Corner = 'tl' | 'tr' | 'bl' | 'br';\n\nexport const AssetCropEditor = ({\n asset,\n isBusy = false,\n onClose,\n onApply,\n onSaveAsCopy,\n canSaveAsCopy,\n}: AssetCropEditorProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n // The InfoBox is a fixed dark surface in both themes, so its text can't use a\n // single neutral token (those invert with the scheme). Pick the scheme's white\n // and a muted grey explicitly.\n const theme = useTheme();\n const isDark = theme.colorScheme === 'dark';\n const infoTextColor = isDark ? 'neutral1000' : 'neutral0';\n const infoMutedColor = isDark ? 'neutral600' : 'neutral200';\n const imgRef = React.useRef<HTMLImageElement>(null);\n const cropAreaRef = React.useRef<HTMLDivElement>(null);\n const overlayRef = React.useRef<HTMLDivElement>(null);\n\n // FocusTrap's auto-focus lands on the first focusable element — the crop\n // width NumberInput — which pops the keyboard on mobile the moment the\n // editor opens. Focus the (tabIndex -1) overlay instead: keyboard users are\n // one Tab away from the first control, Escape still reaches the trap.\n React.useEffect(() => {\n overlayRef.current?.focus();\n }, []);\n\n const {\n init,\n crop,\n naturalSize,\n aspectRatio,\n setCropSize,\n setCropPosition,\n setAspectRatio,\n produceFile,\n width,\n height,\n } = useCropImg();\n\n const [aspectLocked, setAspectLocked] = React.useState(false);\n // Focal point as a percentage of the crop area (matches the {x,y} contract).\n const [focal, setFocal] = React.useState<FocalPoint>(asset.focalPoint ?? { x: 50, y: 50 });\n\n // The crop editor reads pixels from a canvas (useCropImg -> toBlob), so its\n // <img> must be CORS-clean and always sets crossOrigin=\"anonymous\" (see the\n // img below) — even for unsigned URLs, which AssetPreview leaves unset because\n // it only displays. That difference is why the crop URL is kept DISTINCT from\n // the thumbnail's: identical URL + different crossOrigin collide in the HTTP\n // cache (#26581), and the crop's anonymous request could otherwise reuse the\n // thumbnail's non-CORS cached response and taint the canvas. So the buster\n // uses `updatedAt` where AssetPreview uses `v`, giving each its own entry\n // (mirrors the legacy PreviewBox fix).\n // Signed URLs get no param at all — a presigned S3 URL breaks if you add one,\n // and on the signed side AssetPreview also loads anonymous, so the identical\n // URL there shares one CORS-consistent entry, which is fine.\n const rawImageUrl = prefixFileUrlWithBackendUrl(asset.url) as string;\n const cacheKey =\n asset.updatedAt && !asset.isUrlSigned ? new Date(asset.updatedAt).getTime() : undefined;\n const imageUrl =\n cacheKey !== undefined\n ? `${rawImageUrl}${rawImageUrl.includes('?') ? '&' : '?'}updatedAt=${cacheKey}`\n : rawImageUrl;\n\n const handleImageLoad = () => {\n if (imgRef.current) {\n init(imgRef.current);\n }\n };\n\n // Map a pointer event to natural-px coordinates inside the image.\n const pointerToNatural = (event: PointerEvent | React.PointerEvent) => {\n const rect = cropAreaRef.current?.getBoundingClientRect();\n if (!rect || !naturalSize.width || !naturalSize.height) return null;\n const ratioX = naturalSize.width / rect.width;\n const ratioY = naturalSize.height / rect.height;\n return {\n x: (event.clientX - rect.left) * ratioX,\n y: (event.clientY - rect.top) * ratioY,\n };\n };\n\n // Teardown for the drag currently in flight, so it can be run both on pointer\n // release AND on unmount. Without the unmount path, closing the editor mid-drag\n // (Escape, drawer close, a re-render dropping the overlay) would never fire a\n // pointer event, leaking the window listeners and letting a stale `onMove`\n // call `setCropPosition` on an unmounted component.\n const activeDragCleanupRef = React.useRef<(() => void) | null>(null);\n\n React.useEffect(() => {\n return () => {\n activeDragCleanupRef.current?.();\n };\n }, []);\n\n // Track a pointer drag until the pointer is released or the browser cancels\n // it. The pointer is captured so the drag follows the finger even once it\n // leaves the (12px) handle it started on, and pointercancel is treated as\n // release so an interrupted touch never leaves stale window listeners.\n const trackPointerDrag = (event: React.PointerEvent, onMove: (e: PointerEvent) => void) => {\n event.preventDefault();\n event.stopPropagation();\n const { pointerId } = event;\n try {\n event.currentTarget.setPointerCapture(pointerId);\n } catch {\n // Unsupported environment (jsdom) — window listeners still track the drag.\n }\n const move = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n onMove(e);\n };\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n activeDragCleanupRef.current = null;\n };\n const end = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n cleanup();\n };\n // Only one drag is ever live at a time; tear down any previous one first.\n activeDragCleanupRef.current?.();\n activeDragCleanupRef.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end);\n window.addEventListener('pointercancel', end);\n };\n\n // Drag the entire crop rectangle.\n const handleMovePointerDown = (event: React.PointerEvent) => {\n const start = pointerToNatural(event);\n if (!start) return;\n const startCrop = { ...crop };\n trackPointerDrag(event, (e) => {\n const next = pointerToNatural(e);\n if (!next) return;\n setCropPosition({\n x: startCrop.x + (next.x - start.x),\n y: startCrop.y + (next.y - start.y),\n });\n });\n };\n\n // Resize from a corner; the opposite corner stays anchored.\n const handleResizePointerDown = (corner: Corner) => (event: React.PointerEvent) => {\n const startCrop = { ...crop };\n const anchorX =\n corner === 'tl' || corner === 'bl' ? startCrop.x + startCrop.width : startCrop.x;\n const anchorY =\n corner === 'tl' || corner === 'tr' ? startCrop.y + startCrop.height : startCrop.y;\n trackPointerDrag(event, (e) => {\n const point = pointerToNatural(e);\n if (!point) return;\n const {\n x,\n y,\n width: w,\n height: h,\n } = resolveCornerResize({\n anchorX,\n anchorY,\n point,\n aspectRatio: aspectLocked ? aspectRatio : null,\n });\n setCropPosition({ x, y });\n setCropSize({ width: w, height: h });\n });\n };\n\n const toggleAspectLock = () => {\n setAspectLocked((locked) => {\n const next = !locked;\n setAspectRatio(next && height ? width / height : null);\n return next;\n });\n };\n\n // Drag the focal handle within the crop rectangle, clamped 0–100.\n const handleFocalPointerDown = (event: React.PointerEvent) => {\n trackPointerDrag(event, (e) => {\n const point = pointerToNatural(e);\n if (!point) return;\n // Convert pointer to a percentage of the current crop area.\n const px = ((point.x - crop.x) / crop.width) * 100;\n const py = ((point.y - crop.y) / crop.height) * 100;\n setFocal({\n x: Math.round(Math.min(100, Math.max(0, px))),\n y: Math.round(Math.min(100, Math.max(0, py))),\n });\n });\n };\n\n const focalPxX = Math.round((focal.x / 100) * width);\n const focalPxY = Math.round((focal.y / 100) * height);\n\n const setFocalPx = (axis: 'x' | 'y', value: number) => {\n const dim = axis === 'x' ? width : height;\n if (!dim) return;\n const pct = Math.min(100, Math.max(0, (value / dim) * 100));\n setFocal((prev) => ({ ...prev, [axis]: Math.round(pct) }));\n };\n\n /**\n * Forces a focal field to redisplay the state on blur.\n *\n * One key per axis: a shared key remounted both fields, so tabbing out of X\n * destroyed Y before it could take focus and it was unreachable by keyboard.\n */\n const [focalXKey, setFocalXKey] = React.useState(0);\n const [focalYKey, setFocalYKey] = React.useState(0);\n const syncFocalX = () => setFocalXKey((key) => key + 1);\n const syncFocalY = () => setFocalYKey((key) => key + 1);\n\n const cropPercents =\n naturalSize.width && naturalSize.height\n ? {\n left: (crop.x / naturalSize.width) * 100,\n top: (crop.y / naturalSize.height) * 100,\n width: (crop.width / naturalSize.width) * 100,\n height: (crop.height / naturalSize.height) * 100,\n }\n : null;\n\n // The crop is only usable once the image has loaded and `init()` has seeded\n // the natural size. Until then the produce/export path would reject.\n const isReady = cropPercents !== null;\n\n const handleAction = async (action: 'apply' | 'copy') => {\n if (!isReady) return;\n\n let file: globalThis.File;\n try {\n file = await produceFile(asset.name, asset.mime ?? 'image/png', asset.updatedAt);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslationKey('asset-details.crop.export-error'),\n defaultMessage: 'Could not process the cropped image.',\n }),\n });\n return;\n }\n\n const roundedFocal = { x: Math.round(focal.x), y: Math.round(focal.y) };\n if (action === 'apply') {\n onApply(file, roundedFocal);\n } else {\n onSaveAsCopy(file, roundedFocal);\n }\n };\n\n return (\n <Portal>\n <FocusTrap onEscape={onClose} skipAutoFocus>\n <Overlay ref={overlayRef} tabIndex={-1}>\n <HeaderBar alignItems=\"center\">\n <Crop aria-hidden />\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('asset-details.crop.title'),\n defaultMessage: 'Crop & Focus area',\n })}\n </Typography>\n </HeaderBar>\n\n <Body>\n <CropArea\n ref={cropAreaRef}\n $aspect={\n naturalSize.width && naturalSize.height\n ? naturalSize.width / naturalSize.height\n : undefined\n }\n >\n <img\n ref={imgRef}\n src={imageUrl}\n alt={asset.name}\n // Always anonymous, unlike AssetPreview/AssetsGrid which gate it:\n // the editor reads pixels via canvas (useCropImg -> toBlob), which\n // taints on a cross-origin image loaded without CORS, so every\n // remote image must be fetched CORS-clean.\n crossOrigin=\"anonymous\"\n onLoad={handleImageLoad}\n draggable={false}\n />\n\n {cropPercents ? (\n <CropOverlay\n style={{\n left: `${cropPercents.left}%`,\n top: `${cropPercents.top}%`,\n width: `${cropPercents.width}%`,\n height: `${cropPercents.height}%`,\n }}\n onPointerDown={handleMovePointerDown}\n >\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.top-left'),\n defaultMessage: 'Resize top-left',\n })}\n $cursor=\"nwse-resize\"\n style={{ left: 0, top: 0 }}\n onPointerDown={handleResizePointerDown('tl')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.top-right'),\n defaultMessage: 'Resize top-right',\n })}\n $cursor=\"nesw-resize\"\n style={{ right: 0, top: 0 }}\n onPointerDown={handleResizePointerDown('tr')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.bottom-left'),\n defaultMessage: 'Resize bottom-left',\n })}\n $cursor=\"nesw-resize\"\n style={{ left: 0, bottom: 0 }}\n onPointerDown={handleResizePointerDown('bl')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.bottom-right'),\n defaultMessage: 'Resize bottom-right',\n })}\n $cursor=\"nwse-resize\"\n style={{ right: 0, bottom: 0 }}\n onPointerDown={handleResizePointerDown('br')}\n />\n\n <FocalPointHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-point'),\n defaultMessage: 'Focal point',\n })}\n style={{ left: `${focal.x}%`, top: `${focal.y}%` }}\n onPointerDown={handleFocalPointerDown}\n />\n </CropOverlay>\n ) : null}\n </CropArea>\n\n <InfoBox>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1} paddingBottom={3}>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.title'),\n defaultMessage: 'Crop & Focus area',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor={infoMutedColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.hint'),\n defaultMessage:\n 'Set the crop area with the rectangle. Pin the always-visible area with the circle.',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={6} alignItems=\"center\">\n <Flex alignItems=\"center\" gap={2}>\n <Flex direction=\"column\" gap={2}>\n <FieldRow name=\"crop-width\" gap={2}>\n <LabelIcon textColor={infoTextColor}>\n <ArrowsHorizontal />\n </LabelIcon>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.width'),\n defaultMessage: 'Width (px)',\n })}\n value={width}\n min={1}\n max={naturalSize.width || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setCropSize({ width: next });\n }}\n />\n </FieldRow>\n <FieldRow name=\"crop-height\" gap={2}>\n <LabelIcon textColor={infoTextColor}>\n <ArrowsVertical />\n </LabelIcon>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.height'),\n defaultMessage: 'Height (px)',\n })}\n value={height}\n min={1}\n max={naturalSize.height || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setCropSize({ height: next });\n }}\n />\n </FieldRow>\n </Flex>\n\n <Flex position=\"relative\">\n <IconButton\n label={formatMessage({\n id: getTranslationKey('asset-details.crop.aspect-lock'),\n defaultMessage: 'Lock aspect ratio',\n })}\n variant={aspectLocked ? 'secondary' : 'ghost'}\n onClick={toggleAspectLock}\n >\n <Link />\n </IconButton>\n <BackgroundPreserveRatio />\n </Flex>\n </Flex>\n\n <Flex direction=\"column\" gap={2} marginLeft={'auto'}>\n <FieldRow name=\"focal-x\" gap={2}>\n <Field.Label textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.focal-x-axis'),\n defaultMessage: 'X',\n })}\n </Field.Label>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-x'),\n defaultMessage: 'Focal point X (px)',\n })}\n key={`focal-x-${focalXKey}`}\n value={focalPxX}\n min={0}\n max={width || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setFocalPx('x', next);\n }}\n onBlur={syncFocalX}\n />\n </FieldRow>\n <FieldRow name=\"focal-y\" gap={2}>\n <Field.Label textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.focal-y-axis'),\n defaultMessage: 'Y',\n })}\n </Field.Label>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-y'),\n defaultMessage: 'Focal point Y (px)',\n })}\n key={`focal-y-${focalYKey}`}\n value={focalPxY}\n min={0}\n max={height || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setFocalPx('y', next);\n }}\n onBlur={syncFocalY}\n />\n </FieldRow>\n </Flex>\n </Flex>\n </InfoBox>\n </Body>\n\n <FooterBar alignItems=\"center\">\n <Button variant=\"tertiary\" onClick={onClose} disabled={isBusy}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {canSaveAsCopy && (\n <Button\n variant=\"secondary\"\n onClick={() => handleAction('copy')}\n loading={isBusy}\n disabled={!isReady}\n >\n {formatMessage({\n id: getTranslationKey('asset-details.crop.save-as-copy'),\n defaultMessage: 'Save as copy',\n })}\n </Button>\n )}\n <Button\n variant=\"default\"\n onClick={() => handleAction('apply')}\n loading={isBusy}\n disabled={!isReady}\n >\n {formatMessage({\n id: getTranslationKey('asset-details.crop.apply'),\n defaultMessage: 'Apply',\n })}\n </Button>\n </Flex>\n </FooterBar>\n </Overlay>\n </FocusTrap>\n </Portal>\n );\n};\n"],"names":["FOCAL_DIAMETER_REM","HANDLE_PX","Overlay","styled","Flex","theme","spaces","borderRadius","colors","neutral150","neutral0","HeaderBar","Body","Box","neutral100","CropArea","div","$aspect","CropOverlay","primary600","ResizeHandle","button","$cursor","FocalPointHandle","neutral800","InfoBox","breakpoints","medium","colorScheme","neutral900","FooterBar","FieldRow","Field","Root","FieldNumberInput","NumberInput","LabelIcon","Label","BackgroundPreserveRatioContainer","BackgroundPreserveRatio","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","stroke","strokeLinecap","AssetCropEditor","asset","isBusy","onClose","onApply","onSaveAsCopy","canSaveAsCopy","formatMessage","useIntl","toggleNotification","useNotification","useTheme","isDark","infoTextColor","infoMutedColor","imgRef","React","useRef","cropAreaRef","overlayRef","useEffect","current","focus","init","crop","naturalSize","aspectRatio","setCropSize","setCropPosition","setAspectRatio","produceFile","useCropImg","aspectLocked","setAspectLocked","useState","focal","setFocal","focalPoint","x","y","rawImageUrl","prefixFileUrlWithBackendUrl","url","cacheKey","updatedAt","isUrlSigned","Date","getTime","undefined","imageUrl","includes","handleImageLoad","pointerToNatural","event","rect","getBoundingClientRect","ratioX","ratioY","clientX","left","clientY","top","activeDragCleanupRef","trackPointerDrag","onMove","preventDefault","stopPropagation","pointerId","currentTarget","setPointerCapture","move","e","cleanup","window","removeEventListener","end","addEventListener","handleMovePointerDown","start","startCrop","next","handleResizePointerDown","corner","anchorX","anchorY","point","w","h","resolveCornerResize","toggleAspectLock","locked","handleFocalPointerDown","px","py","Math","round","min","max","focalPxX","focalPxY","setFocalPx","axis","value","dim","pct","prev","focalXKey","setFocalXKey","focalYKey","setFocalYKey","syncFocalX","key","syncFocalY","cropPercents","isReady","handleAction","action","file","name","mime","type","message","id","getTranslationKey","defaultMessage","roundedFocal","Portal","FocusTrap","onEscape","skipAutoFocus","_jsxs","ref","tabIndex","alignItems","Crop","aria-hidden","Typography","variant","fontWeight","img","src","alt","crossOrigin","onLoad","draggable","style","onPointerDown","aria-label","right","bottom","direction","gap","paddingBottom","textColor","ArrowsHorizontal","onValueChange","ArrowsVertical","position","IconButton","label","onClick","Link","marginLeft","onBlur","Button","disabled","loading"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,MAAMA,kBAAAA,GAAqB,GAAA;AAC3B,MAAMC,SAAAA,GAAY,EAAA;AAElB;;AAEkG;AAGlG,MAAMC,OAAAA,GAAUC,uBAAAA,CAAOC,iBAAAA,CAAK;;;;OAIrB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;QAChC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;SAChC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;UAChC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AAC1B,iBAAA,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,YAAY,CAAC;oBACjC,EAAE,CAAC,EAAEF,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACC,UAAU,CAAC;cAC/C,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,QAAQ,CAAC;;;AAGrD,CAAC;AAED,MAAMC,SAAAA,GAAYR,uBAAAA,CAAOC,iBAAAA,CAAK;;OAEvB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AAC7B,WAAA,EAAE,CAAC,EAAED,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC,EAAED,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,EAAE,CAAC;2BACzC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACC,UAAU,CAAC;cACtD,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,QAAQ,CAAC;AACrD,CAAC;AAED;AACA;AACA;AACA;AACA,MAAME,IAAAA,GAAOT,uBAAAA,CAAOU,gBAAAA,CAAI;;;;;;;;;aASX,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;MAExC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACM,UAAU,CAAC;MACzC,EAAE,CAAC,EAAET,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,QAAQ,CAAC;;;AAG7C,CAAC;AAED;AACA;AACA;AACA,MAAMK,QAAAA,GAAWZ,uBAAAA,CAAOa,GAAyB;;;;AAI/C,EAAA,EAAE,CAAC,EAAEC,OAAO,EAAE,GAAMA,OAAAA,GAAU,CAAC,cAAc,EAAEA,OAAAA,CAAQ,CAAC,CAAC,GAAG,EAAA;;;;;;;;;AAS9D,CAAC;AAED;AACA;AACA,MAAMC,WAAAA,GAAcf,uBAAAA,CAAOa,GAAG;;qBAET,EAAE,CAAC,EAAEX,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACW,UAAU,CAAC;;;;;;AAM9D,CAAC;AAED,MAAMC,YAAAA,GAAejB,uBAAAA,CAAOkB,MAA2B;;AAE9C,SAAA,EAAEpB,SAAAA,CAAU;AACX,UAAA,EAAEA,SAAAA,CAAU;AACX,WAAA,EAAEA,YAAY,CAAA,CAAE;;oBAEP,EAAE,CAAC,EAAEI,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACW,UAAU,CAAC;;cAE/C,EAAE,CAAC,EAAEd,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,QAAQ,CAAC;AAC3C,UAAA,EAAE,CAAC,EAAEY,OAAO,EAAE,GAAKA,OAAAA,CAAQ;;AAErC,CAAC;AAED,MAAMC,gBAAAA,GAAmBpB,uBAAAA,CAAOkB,MAAM;;AAE7B,SAAA,EAAErB,kBAAAA,CAAmB;AACpB,UAAA,EAAEA,kBAAAA,CAAmB;AACrB,UAAA,EAAE,CAACA,kBAAAA,GAAqB,CAAA,CAAE,QAAQ,EAAE,CAACA,qBAAqB,CAAA,CAAE;;oBAElD,EAAE,CAAC,EAAEK,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACgB,UAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;gBAyB7C,EAAE,CAAC,EAAEnB,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACgB,UAAU,CAAC;;;;;;;AAOzD,CAAC;AAED;AACA;AACA;AACA,MAAMC,OAAAA,GAAUtB,uBAAAA,CAAOU,gBAAAA,CAAI;;;EAGzB,EAAE,CAAC,EAAER,KAAK,EAAE,GAAKA,KAAAA,CAAMqB,WAAW,CAACC,MAAM,CAAC;;;WAGjC,EAAE,CAAC,EAAEtB,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;YAChC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;;;aAGhC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,CAAC;AAC3B,mBAAA,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAME,YAAY,CAAC;AACvC,gBAAA,EAAE,CAAC,EAAEF,KAAK,EAAE,GACtBA,KAAAA,CAAMuB,WAAW,KAAK,MAAA,GAASvB,KAAAA,CAAMG,MAAM,CAACC,UAAU,GAAGJ,MAAMG,MAAM,CAACqB,UAAU,CAAC;;;AAGvF,CAAC;AAED,MAAMC,SAAAA,GAAY3B,uBAAAA,CAAOC,iBAAAA,CAAK;;;AAGnB,WAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAK,CAAA,EAAGA,MAAMC,MAAM,CAAC,CAAA,CAAE,CAAC,CAAC,EAAED,KAAAA,CAAMC,MAAM,CAAC,CAAA,CAAE,EAAE,CAAC;wBAC5C,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACC,UAAU,CAAC;cACnD,EAAE,CAAC,EAAEJ,KAAK,EAAE,GAAKA,KAAAA,CAAMG,MAAM,CAACE,QAAQ,CAAC;AACrD,CAAC;AAED,MAAMqB,QAAAA,GAAW5B,uBAAAA,CAAO6B,kBAAAA,CAAMC,IAAI,CAAC;;;AAGnC,CAAC;AAED,MAAMC,gBAAAA,GAAmB/B,uBAAAA,CAAOgC,wBAAAA,CAAY;;AAE5C,CAAC;AAED,MAAMC,SAAAA,GAAYjC,uBAAAA,CAAO6B,kBAAAA,CAAMK,KAAK,CAAC;;;;;;AAMrC,CAAC;AAED,MAAMC,gCAAAA,GAAmCnC,uBAAAA,CAAOU,gBAAAA,CAAI;;;;;;;;;AASpD,CAAC;AAED,MAAM0B,uBAAAA,GAA0B,kBAC9BC,cAAA,CAACF,gCAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAE,cAAA,CAACC,KAAAA,EAAAA;YAAIC,KAAAA,EAAM,IAAA;YAAKC,MAAAA,EAAO,IAAA;YAAKC,OAAAA,EAAQ,WAAA;YAAYC,IAAAA,EAAK,MAAA;YAAOC,KAAAA,EAAM,4BAAA;AAChE,YAAA,QAAA,gBAAAN,cAAA,CAACO,MAAAA,EAAAA;gBACCC,CAAAA,EAAE,iGAAA;gBACFC,MAAAA,EAAO,SAAA;gBACPC,aAAAA,EAAc;;;;MA0BTC,eAAAA,GAAkB,CAAC,EAC9BC,KAAK,EACLC,MAAAA,GAAS,KAAK,EACdC,OAAO,EACPC,OAAO,EACPC,YAAY,EACZC,aAAa,EACQ,GAAA;IACrB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;;;;AAI/B,IAAA,MAAMxD,KAAAA,GAAQyD,yBAAAA,EAAAA;IACd,MAAMC,MAAAA,GAAS1D,KAAAA,CAAMuB,WAAW,KAAK,MAAA;IACrC,MAAMoC,aAAAA,GAAgBD,SAAS,aAAA,GAAgB,UAAA;IAC/C,MAAME,cAAAA,GAAiBF,SAAS,YAAA,GAAe,YAAA;IAC/C,MAAMG,MAAAA,GAASC,gBAAAA,CAAMC,MAAM,CAAmB,IAAA,CAAA;IAC9C,MAAMC,WAAAA,GAAcF,gBAAAA,CAAMC,MAAM,CAAiB,IAAA,CAAA;IACjD,MAAME,UAAAA,GAAaH,gBAAAA,CAAMC,MAAM,CAAiB,IAAA,CAAA;;;;;AAMhDD,IAAAA,gBAAAA,CAAMI,SAAS,CAAC,IAAA;AACdD,QAAAA,UAAAA,CAAWE,OAAO,EAAEC,KAAAA,EAAAA;AACtB,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,MAAM,EACJC,IAAI,EACJC,IAAI,EACJC,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,WAAW,EACXvC,KAAK,EACLC,MAAM,EACP,GAAGuC,qBAAAA,EAAAA;AAEJ,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGjB,gBAAAA,CAAMkB,QAAQ,CAAC,KAAA,CAAA;;IAEvD,MAAM,CAACC,OAAOC,QAAAA,CAAS,GAAGpB,iBAAMkB,QAAQ,CAAajC,KAAAA,CAAMoC,UAAU,IAAI;QAAEC,CAAAA,EAAG,EAAA;QAAIC,CAAAA,EAAG;AAAG,KAAA,CAAA;;;;;;;;;;;;;IAcxF,MAAMC,WAAAA,GAAcC,iCAAAA,CAA4BxC,KAAAA,CAAMyC,GAAG,CAAA;AACzD,IAAA,MAAMC,QAAAA,GACJ1C,KAAAA,CAAM2C,SAAS,IAAI,CAAC3C,KAAAA,CAAM4C,WAAW,GAAG,IAAIC,IAAAA,CAAK7C,KAAAA,CAAM2C,SAAS,CAAA,CAAEG,OAAO,EAAA,GAAKC,SAAAA;AAChF,IAAA,MAAMC,QAAAA,GACJN,QAAAA,KAAaK,SAAAA,GACT,CAAA,EAAGR,cAAcA,WAAAA,CAAYU,QAAQ,CAAC,GAAA,CAAA,GAAO,GAAA,GAAM,GAAA,CAAI,UAAU,EAAEP,UAAU,GAC7EH,WAAAA;AAEN,IAAA,MAAMW,eAAAA,GAAkB,IAAA;QACtB,IAAIpC,MAAAA,CAAOM,OAAO,EAAE;AAClBE,YAAAA,IAAAA,CAAKR,OAAOM,OAAO,CAAA;AACrB,QAAA;AACF,IAAA,CAAA;;AAGA,IAAA,MAAM+B,mBAAmB,CAACC,KAAAA,GAAAA;QACxB,MAAMC,IAAAA,GAAOpC,WAAAA,CAAYG,OAAO,EAAEkC,qBAAAA,EAAAA;QAClC,IAAI,CAACD,IAAAA,IAAQ,CAAC7B,WAAAA,CAAYlC,KAAK,IAAI,CAACkC,WAAAA,CAAYjC,MAAM,EAAE,OAAO,IAAA;AAC/D,QAAA,MAAMgE,MAAAA,GAAS/B,WAAAA,CAAYlC,KAAK,GAAG+D,KAAK/D,KAAK;AAC7C,QAAA,MAAMkE,MAAAA,GAAShC,WAAAA,CAAYjC,MAAM,GAAG8D,KAAK9D,MAAM;QAC/C,OAAO;YACL8C,CAAAA,EAAIe,CAAAA,KAAAA,CAAMK,OAAO,GAAGJ,IAAAA,CAAKK,IAAI,IAAIH,MAAAA;YACjCjB,CAAAA,EAAIc,CAAAA,KAAAA,CAAMO,OAAO,GAAGN,IAAAA,CAAKO,GAAG,IAAIJ;AAClC,SAAA;AACF,IAAA,CAAA;;;;;;IAOA,MAAMK,oBAAAA,GAAuB9C,gBAAAA,CAAMC,MAAM,CAAsB,IAAA,CAAA;AAE/DD,IAAAA,gBAAAA,CAAMI,SAAS,CAAC,IAAA;QACd,OAAO,IAAA;AACL0C,YAAAA,oBAAAA,CAAqBzC,OAAO,IAAA;AAC9B,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;;;;;IAML,MAAM0C,gBAAAA,GAAmB,CAACV,KAAAA,EAA2BW,MAAAA,GAAAA;AACnDX,QAAAA,KAAAA,CAAMY,cAAc,EAAA;AACpBZ,QAAAA,KAAAA,CAAMa,eAAe,EAAA;QACrB,MAAM,EAAEC,SAAS,EAAE,GAAGd,KAAAA;QACtB,IAAI;YACFA,KAAAA,CAAMe,aAAa,CAACC,iBAAiB,CAACF,SAAAA,CAAAA;AACxC,QAAA,CAAA,CAAE,OAAM;;AAER,QAAA;AACA,QAAA,MAAMG,OAAO,CAACC,CAAAA,GAAAA;YACZ,IAAIA,CAAAA,CAAEJ,SAAS,KAAKA,SAAAA,EAAW;YAC/BH,MAAAA,CAAOO,CAAAA,CAAAA;AACT,QAAA,CAAA;AACA,QAAA,MAAMC,OAAAA,GAAU,IAAA;YACdC,MAAAA,CAAOC,mBAAmB,CAAC,aAAA,EAAeJ,IAAAA,CAAAA;YAC1CG,MAAAA,CAAOC,mBAAmB,CAAC,WAAA,EAAaC,GAAAA,CAAAA;YACxCF,MAAAA,CAAOC,mBAAmB,CAAC,eAAA,EAAiBC,GAAAA,CAAAA;AAC5Cb,YAAAA,oBAAAA,CAAqBzC,OAAO,GAAG,IAAA;AACjC,QAAA,CAAA;AACA,QAAA,MAAMsD,MAAM,CAACJ,CAAAA,GAAAA;YACX,IAAIA,CAAAA,CAAEJ,SAAS,KAAKA,SAAAA,EAAW;AAC/BK,YAAAA,OAAAA,EAAAA;AACF,QAAA,CAAA;;AAEAV,QAAAA,oBAAAA,CAAqBzC,OAAO,IAAA;AAC5ByC,QAAAA,oBAAAA,CAAqBzC,OAAO,GAAGmD,OAAAA;QAC/BC,MAAAA,CAAOG,gBAAgB,CAAC,aAAA,EAAeN,IAAAA,CAAAA;QACvCG,MAAAA,CAAOG,gBAAgB,CAAC,WAAA,EAAaD,GAAAA,CAAAA;QACrCF,MAAAA,CAAOG,gBAAgB,CAAC,eAAA,EAAiBD,GAAAA,CAAAA;AAC3C,IAAA,CAAA;;AAGA,IAAA,MAAME,wBAAwB,CAACxB,KAAAA,GAAAA;AAC7B,QAAA,MAAMyB,QAAQ1B,gBAAAA,CAAiBC,KAAAA,CAAAA;AAC/B,QAAA,IAAI,CAACyB,KAAAA,EAAO;AACZ,QAAA,MAAMC,SAAAA,GAAY;AAAE,YAAA,GAAGvD;AAAK,SAAA;AAC5BuC,QAAAA,gBAAAA,CAAiBV,OAAO,CAACkB,CAAAA,GAAAA;AACvB,YAAA,MAAMS,OAAO5B,gBAAAA,CAAiBmB,CAAAA,CAAAA;AAC9B,YAAA,IAAI,CAACS,IAAAA,EAAM;YACXpD,eAAAA,CAAgB;gBACdU,CAAAA,EAAGyC,SAAAA,CAAUzC,CAAC,IAAI0C,KAAK1C,CAAC,GAAGwC,KAAAA,CAAMxC,CAAC,CAADA;gBACjCC,CAAAA,EAAGwC,SAAAA,CAAUxC,CAAC,IAAIyC,KAAKzC,CAAC,GAAGuC,KAAAA,CAAMvC,CAAC;AACpC,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;;IAGA,MAAM0C,uBAAAA,GAA0B,CAACC,MAAAA,GAAmB,CAAC7B,KAAAA,GAAAA;AACnD,YAAA,MAAM0B,SAAAA,GAAY;AAAE,gBAAA,GAAGvD;AAAK,aAAA;AAC5B,YAAA,MAAM2D,OAAAA,GACJD,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAW,IAAA,GAAOH,SAAAA,CAAUzC,CAAC,GAAGyC,SAAAA,CAAUxF,KAAK,GAAGwF,SAAAA,CAAUzC,CAAC;AAClF,YAAA,MAAM8C,OAAAA,GACJF,MAAAA,KAAW,IAAA,IAAQA,MAAAA,KAAW,IAAA,GAAOH,SAAAA,CAAUxC,CAAC,GAAGwC,SAAAA,CAAUvF,MAAM,GAAGuF,SAAAA,CAAUxC,CAAC;AACnFwB,YAAAA,gBAAAA,CAAiBV,OAAO,CAACkB,CAAAA,GAAAA;AACvB,gBAAA,MAAMc,QAAQjC,gBAAAA,CAAiBmB,CAAAA,CAAAA;AAC/B,gBAAA,IAAI,CAACc,KAAAA,EAAO;AACZ,gBAAA,MAAM,EACJ/C,CAAC,EACDC,CAAC,EACDhD,KAAAA,EAAO+F,CAAC,EACR9F,MAAAA,EAAQ+F,CAAC,EACV,GAAGC,8BAAAA,CAAoB;AACtBL,oBAAAA,OAAAA;AACAC,oBAAAA,OAAAA;AACAC,oBAAAA,KAAAA;AACA3D,oBAAAA,WAAAA,EAAaM,eAAeN,WAAAA,GAAc;AAC5C,iBAAA,CAAA;gBACAE,eAAAA,CAAgB;AAAEU,oBAAAA,CAAAA;AAAGC,oBAAAA;AAAE,iBAAA,CAAA;gBACvBZ,WAAAA,CAAY;oBAAEpC,KAAAA,EAAO+F,CAAAA;oBAAG9F,MAAAA,EAAQ+F;AAAE,iBAAA,CAAA;AACpC,YAAA,CAAA,CAAA;AACF,QAAA,CAAA;AAEA,IAAA,MAAME,gBAAAA,GAAmB,IAAA;AACvBxD,QAAAA,eAAAA,CAAgB,CAACyD,MAAAA,GAAAA;AACf,YAAA,MAAMV,OAAO,CAACU,MAAAA;YACd7D,cAAAA,CAAemD,IAAAA,IAAQxF,MAAAA,GAASD,KAAAA,GAAQC,MAAAA,GAAS,IAAA,CAAA;YACjD,OAAOwF,IAAAA;AACT,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;;AAGA,IAAA,MAAMW,yBAAyB,CAACtC,KAAAA,GAAAA;AAC9BU,QAAAA,gBAAAA,CAAiBV,OAAO,CAACkB,CAAAA,GAAAA;AACvB,YAAA,MAAMc,QAAQjC,gBAAAA,CAAiBmB,CAAAA,CAAAA;AAC/B,YAAA,IAAI,CAACc,KAAAA,EAAO;;AAEZ,YAAA,MAAMO,EAAAA,GAAOP,CAAAA,KAAAA,CAAM/C,CAAC,GAAGd,IAAAA,CAAKc,CAAC,IAAId,IAAAA,CAAKjC,KAAK,GAAI,GAAA;AAC/C,YAAA,MAAMsG,EAAAA,GAAOR,CAAAA,KAAAA,CAAM9C,CAAC,GAAGf,IAAAA,CAAKe,CAAC,IAAIf,IAAAA,CAAKhC,MAAM,GAAI,GAAA;YAChD4C,QAAAA,CAAS;gBACPE,CAAAA,EAAGwD,IAAAA,CAAKC,KAAK,CAACD,IAAAA,CAAKE,GAAG,CAAC,GAAA,EAAKF,IAAAA,CAAKG,GAAG,CAAC,CAAA,EAAGL,EAAAA,CAAAA,CAAAA,CAAAA;gBACxCrD,CAAAA,EAAGuD,IAAAA,CAAKC,KAAK,CAACD,IAAAA,CAAKE,GAAG,CAAC,GAAA,EAAKF,IAAAA,CAAKG,GAAG,CAAC,CAAA,EAAGJ,EAAAA,CAAAA,CAAAA;AAC1C,aAAA,CAAA;AACF,QAAA,CAAA,CAAA;AACF,IAAA,CAAA;IAEA,MAAMK,QAAAA,GAAWJ,KAAKC,KAAK,CAAC,KAAC5D,CAAMG,CAAC,GAAG,GAAA,GAAO/C,KAAAA,CAAAA;IAC9C,MAAM4G,QAAAA,GAAWL,KAAKC,KAAK,CAAC,KAAC5D,CAAMI,CAAC,GAAG,GAAA,GAAO/C,MAAAA,CAAAA;IAE9C,MAAM4G,UAAAA,GAAa,CAACC,IAAAA,EAAiBC,KAAAA,GAAAA;QACnC,MAAMC,GAAAA,GAAMF,IAAAA,KAAS,GAAA,GAAM9G,KAAAA,GAAQC,MAAAA;AACnC,QAAA,IAAI,CAAC+G,GAAAA,EAAK;QACV,MAAMC,GAAAA,GAAMV,IAAAA,CAAKE,GAAG,CAAC,GAAA,EAAKF,IAAAA,CAAKG,GAAG,CAAC,CAAA,EAAG,KAACK,GAAQC,GAAAA,GAAO,GAAA,CAAA,CAAA;QACtDnE,QAAAA,CAAS,CAACqE,QAAU;AAAE,gBAAA,GAAGA,IAAI;AAAE,gBAAA,CAACJ,IAAAA,GAAOP,IAAAA,CAAKC,KAAK,CAACS,GAAAA;aAAK,CAAA,CAAA;AACzD,IAAA,CAAA;AAEA;;;;;AAKC,MACD,MAAM,CAACE,SAAAA,EAAWC,aAAa,GAAG3F,gBAAAA,CAAMkB,QAAQ,CAAC,CAAA,CAAA;AACjD,IAAA,MAAM,CAAC0E,SAAAA,EAAWC,YAAAA,CAAa,GAAG7F,gBAAAA,CAAMkB,QAAQ,CAAC,CAAA,CAAA;AACjD,IAAA,MAAM4E,UAAAA,GAAa,IAAMH,YAAAA,CAAa,CAACI,MAAQA,GAAAA,GAAM,CAAA,CAAA;AACrD,IAAA,MAAMC,UAAAA,GAAa,IAAMH,YAAAA,CAAa,CAACE,MAAQA,GAAAA,GAAM,CAAA,CAAA;AAErD,IAAA,MAAME,eACJxF,WAAAA,CAAYlC,KAAK,IAAIkC,WAAAA,CAAYjC,MAAM,GACnC;AACEmE,QAAAA,IAAAA,EAAM,IAACnC,CAAKc,CAAC,GAAGb,WAAAA,CAAYlC,KAAK,GAAI,GAAA;AACrCsE,QAAAA,GAAAA,EAAK,IAACrC,CAAKe,CAAC,GAAGd,WAAAA,CAAYjC,MAAM,GAAI,GAAA;AACrCD,QAAAA,KAAAA,EAAO,IAACiC,CAAKjC,KAAK,GAAGkC,WAAAA,CAAYlC,KAAK,GAAI,GAAA;AAC1CC,QAAAA,MAAAA,EAAQ,IAACgC,CAAKhC,MAAM,GAAGiC,WAAAA,CAAYjC,MAAM,GAAI;KAC/C,GACA,IAAA;;;AAIN,IAAA,MAAM0H,UAAUD,YAAAA,KAAiB,IAAA;AAEjC,IAAA,MAAME,eAAe,OAAOC,MAAAA,GAAAA;AAC1B,QAAA,IAAI,CAACF,OAAAA,EAAS;QAEd,IAAIG,IAAAA;QACJ,IAAI;YACFA,IAAAA,GAAO,MAAMvF,WAAAA,CAAY7B,KAAAA,CAAMqH,IAAI,EAAErH,MAAMsH,IAAI,IAAI,WAAA,EAAatH,KAAAA,CAAM2C,SAAS,CAAA;AACjF,QAAA,CAAA,CAAE,OAAM;YACNnC,kBAAAA,CAAmB;gBACjB+G,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASlH,aAAAA,CAAc;AACrBmH,oBAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,iCAAA,CAAA;oBACtBC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;AACA,YAAA;AACF,QAAA;AAEA,QAAA,MAAMC,YAAAA,GAAe;AAAEvF,YAAAA,CAAAA,EAAGwD,IAAAA,CAAKC,KAAK,CAAC5D,KAAAA,CAAMG,CAAC,CAAA;AAAGC,YAAAA,CAAAA,EAAGuD,IAAAA,CAAKC,KAAK,CAAC5D,KAAAA,CAAMI,CAAC;AAAE,SAAA;AACtE,QAAA,IAAI6E,WAAW,OAAA,EAAS;AACtBhH,YAAAA,OAAAA,CAAQiH,IAAAA,EAAMQ,YAAAA,CAAAA;QAChB,CAAA,MAAO;AACLxH,YAAAA,YAAAA,CAAagH,IAAAA,EAAMQ,YAAAA,CAAAA;AACrB,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,qBACExI,cAAA,CAACyI,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAAzI,cAAA,CAAC0I,sBAAAA,EAAAA;YAAUC,QAAAA,EAAU7H,OAAAA;YAAS8H,aAAa,EAAA,IAAA;AACzC,YAAA,QAAA,gBAAAC,eAAA,CAACnL,OAAAA,EAAAA;gBAAQoL,GAAAA,EAAKhH,UAAAA;AAAYiH,gBAAAA,QAAAA,EAAU,EAAC;;kCACnCF,eAAA,CAAC1K,SAAAA,EAAAA;wBAAU6K,UAAAA,EAAW,QAAA;;0CACpBhJ,cAAA,CAACiJ,UAAAA,EAAAA;gCAAKC,aAAW,EAAA;;0CACjBlJ,cAAA,CAACmJ,uBAAAA,EAAAA;gCAAWC,OAAAA,EAAQ,OAAA;gCAAQC,UAAAA,EAAW,MAAA;0CACpCnI,aAAAA,CAAc;AACbmH,oCAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,0BAAA,CAAA;oCACtBC,cAAAA,EAAgB;AAClB,iCAAA;;;;kCAIJM,eAAA,CAACzK,IAAAA,EAAAA;;0CACCyK,eAAA,CAACtK,QAAAA,EAAAA;gCACCuK,GAAAA,EAAKjH,WAAAA;gCACLpD,OAAAA,EACE2D,WAAAA,CAAYlC,KAAK,IAAIkC,WAAAA,CAAYjC,MAAM,GACnCiC,WAAAA,CAAYlC,KAAK,GAAGkC,WAAAA,CAAYjC,MAAM,GACtCwD,SAAAA;;kDAGN3D,cAAA,CAACsJ,KAAAA,EAAAA;wCACCR,GAAAA,EAAKpH,MAAAA;wCACL6H,GAAAA,EAAK3F,QAAAA;AACL4F,wCAAAA,GAAAA,EAAK5I,MAAMqH,IAAI;;;;;wCAKfwB,WAAAA,EAAY,WAAA;wCACZC,MAAAA,EAAQ5F,eAAAA;wCACR6F,SAAAA,EAAW;;AAGZ/B,oCAAAA,YAAAA,iBACCiB,eAAA,CAACnK,WAAAA,EAAAA;wCACCkL,KAAAA,EAAO;AACLtF,4CAAAA,IAAAA,EAAM,CAAA,EAAGsD,YAAAA,CAAatD,IAAI,CAAC,CAAC,CAAC;AAC7BE,4CAAAA,GAAAA,EAAK,CAAA,EAAGoD,YAAAA,CAAapD,GAAG,CAAC,CAAC,CAAC;AAC3BtE,4CAAAA,KAAAA,EAAO,CAAA,EAAG0H,YAAAA,CAAa1H,KAAK,CAAC,CAAC,CAAC;AAC/BC,4CAAAA,MAAAA,EAAQ,CAAA,EAAGyH,YAAAA,CAAazH,MAAM,CAAC,CAAC;AAClC,yCAAA;wCACA0J,aAAAA,EAAerE,qBAAAA;;0DAEfxF,cAAA,CAACpB,YAAAA,EAAAA;gDACCuJ,IAAAA,EAAK,QAAA;AACL2B,gDAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,oCAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAzJ,OAAAA,EAAQ,aAAA;gDACR8K,KAAAA,EAAO;oDAAEtF,IAAAA,EAAM,CAAA;oDAAGE,GAAAA,EAAK;AAAE,iDAAA;AACzBqF,gDAAAA,aAAAA,EAAejE,uBAAAA,CAAwB,IAAA;;0DAEzC5F,cAAA,CAACpB,YAAAA,EAAAA;gDACCuJ,IAAAA,EAAK,QAAA;AACL2B,gDAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,qCAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAzJ,OAAAA,EAAQ,aAAA;gDACR8K,KAAAA,EAAO;oDAAEG,KAAAA,EAAO,CAAA;oDAAGvF,GAAAA,EAAK;AAAE,iDAAA;AAC1BqF,gDAAAA,aAAAA,EAAejE,uBAAAA,CAAwB,IAAA;;0DAEzC5F,cAAA,CAACpB,YAAAA,EAAAA;gDACCuJ,IAAAA,EAAK,QAAA;AACL2B,gDAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,uCAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAzJ,OAAAA,EAAQ,aAAA;gDACR8K,KAAAA,EAAO;oDAAEtF,IAAAA,EAAM,CAAA;oDAAG0F,MAAAA,EAAQ;AAAE,iDAAA;AAC5BH,gDAAAA,aAAAA,EAAejE,uBAAAA,CAAwB,IAAA;;0DAEzC5F,cAAA,CAACpB,YAAAA,EAAAA;gDACCuJ,IAAAA,EAAK,QAAA;AACL2B,gDAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,wCAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAzJ,OAAAA,EAAQ,aAAA;gDACR8K,KAAAA,EAAO;oDAAEG,KAAAA,EAAO,CAAA;oDAAGC,MAAAA,EAAQ;AAAE,iDAAA;AAC7BH,gDAAAA,aAAAA,EAAejE,uBAAAA,CAAwB,IAAA;;0DAGzC5F,cAAA,CAACjB,gBAAAA,EAAAA;gDACCoJ,IAAAA,EAAK,QAAA;AACL2B,gDAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,gCAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA,CAAA;gDACAqB,KAAAA,EAAO;AAAEtF,oDAAAA,IAAAA,EAAM,CAAA,EAAGxB,KAAAA,CAAMG,CAAC,CAAC,CAAC,CAAC;AAAEuB,oDAAAA,GAAAA,EAAK,CAAA,EAAG1B,KAAAA,CAAMI,CAAC,CAAC,CAAC;AAAE,iDAAA;gDACjD2G,aAAAA,EAAevD;;;AAGjB,qCAAA,CAAA,GAAA;;;0CAGNuC,eAAA,CAAC5J,OAAAA,EAAAA;;kDACC4J,eAAA,CAACjL,iBAAAA,EAAAA;wCAAKqM,SAAAA,EAAU,QAAA;wCAASjB,UAAAA,EAAW,SAAA;wCAAUkB,GAAAA,EAAK,CAAA;wCAAGC,aAAAA,EAAe,CAAA;;0DACnEnK,cAAA,CAACmJ,uBAAAA,EAAAA;gDAAWC,OAAAA,EAAQ,OAAA;gDAAQC,UAAAA,EAAW,MAAA;gDAAOe,SAAAA,EAAW5I,aAAAA;0DACtDN,aAAAA,CAAc;AACbmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,0BAAA,CAAA;oDACtBC,cAAAA,EAAgB;AAClB,iDAAA;;0DAEFvI,cAAA,CAACmJ,uBAAAA,EAAAA;gDAAWC,OAAAA,EAAQ,IAAA;gDAAKgB,SAAAA,EAAW3I,cAAAA;0DACjCP,aAAAA,CAAc;AACbmH,oDAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,yBAAA,CAAA;oDACtBC,cAAAA,EACE;AACJ,iDAAA;;;;kDAIJM,eAAA,CAACjL,iBAAAA,EAAAA;wCAAKsM,GAAAA,EAAK,CAAA;wCAAGlB,UAAAA,EAAW,QAAA;;0DACvBH,eAAA,CAACjL,iBAAAA,EAAAA;gDAAKoL,UAAAA,EAAW,QAAA;gDAASkB,GAAAA,EAAK,CAAA;;kEAC7BrB,eAAA,CAACjL,iBAAAA,EAAAA;wDAAKqM,SAAAA,EAAU,QAAA;wDAASC,GAAAA,EAAK,CAAA;;0EAC5BrB,eAAA,CAACtJ,QAAAA,EAAAA;gEAAS0I,IAAAA,EAAK,YAAA;gEAAaiC,GAAAA,EAAK,CAAA;;kFAC/BlK,cAAA,CAACJ,SAAAA,EAAAA;wEAAUwK,SAAAA,EAAW5I,aAAAA;AACpB,wEAAA,QAAA,gBAAAxB,cAAA,CAACqK,sBAAAA,EAAAA,EAAAA;;kFAEHrK,cAAA,CAACN,gBAAAA,EAAAA;AACCoK,wEAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,4EAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,0BAAA,CAAA;4EACtBC,cAAAA,EAAgB;AAClB,yEAAA,CAAA;wEACAtB,KAAAA,EAAO/G,KAAAA;wEACPyG,GAAAA,EAAK,CAAA;wEACLC,GAAAA,EAAKxE,WAAAA,CAAYlC,KAAK,IAAIyD,SAAAA;AAC1B2G,wEAAAA,aAAAA,EAAe,CAAC3E,IAAAA,GAAAA;4EACd,IAAIA,IAAAA,KAAShC,WAAWrB,WAAAA,CAAY;gFAAEpC,KAAAA,EAAOyF;AAAK,6EAAA,CAAA;AACpD,wEAAA;;;;0EAGJkD,eAAA,CAACtJ,QAAAA,EAAAA;gEAAS0I,IAAAA,EAAK,aAAA;gEAAciC,GAAAA,EAAK,CAAA;;kFAChClK,cAAA,CAACJ,SAAAA,EAAAA;wEAAUwK,SAAAA,EAAW5I,aAAAA;AACpB,wEAAA,QAAA,gBAAAxB,cAAA,CAACuK,oBAAAA,EAAAA,EAAAA;;kFAEHvK,cAAA,CAACN,gBAAAA,EAAAA;AACCoK,wEAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,4EAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,2BAAA,CAAA;4EACtBC,cAAAA,EAAgB;AAClB,yEAAA,CAAA;wEACAtB,KAAAA,EAAO9G,MAAAA;wEACPwG,GAAAA,EAAK,CAAA;wEACLC,GAAAA,EAAKxE,WAAAA,CAAYjC,MAAM,IAAIwD,SAAAA;AAC3B2G,wEAAAA,aAAAA,EAAe,CAAC3E,IAAAA,GAAAA;4EACd,IAAIA,IAAAA,KAAShC,WAAWrB,WAAAA,CAAY;gFAAEnC,MAAAA,EAAQwF;AAAK,6EAAA,CAAA;AACrD,wEAAA;;;;;;kEAKNkD,eAAA,CAACjL,iBAAAA,EAAAA;wDAAK4M,QAAAA,EAAS,UAAA;;0EACbxK,cAAA,CAACyK,uBAAAA,EAAAA;AACCC,gEAAAA,KAAAA,EAAOxJ,aAAAA,CAAc;AACnBmH,oEAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,gCAAA,CAAA;oEACtBC,cAAAA,EAAgB;AAClB,iEAAA,CAAA;AACAa,gEAAAA,OAAAA,EAASzG,eAAe,WAAA,GAAc,OAAA;gEACtCgI,OAAAA,EAASvE,gBAAAA;AAET,gEAAA,QAAA,gBAAApG,cAAA,CAAC4K,UAAAA,EAAAA,EAAAA;;0EAEH5K,cAAA,CAACD,uBAAAA,EAAAA,EAAAA;;;;;0DAIL8I,eAAA,CAACjL,iBAAAA,EAAAA;gDAAKqM,SAAAA,EAAU,QAAA;gDAASC,GAAAA,EAAK,CAAA;gDAAGW,UAAAA,EAAY,MAAA;;kEAC3ChC,eAAA,CAACtJ,QAAAA,EAAAA;wDAAS0I,IAAAA,EAAK,SAAA;wDAAUiC,GAAAA,EAAK,CAAA;;AAC5B,0EAAAlK,cAAA,CAACR,mBAAMK,KAAK,EAAA;gEAACuK,SAAAA,EAAW5I,aAAAA;0EACrBN,aAAAA,CAAc;AACbmH,oEAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,iCAAA,CAAA;oEACtBC,cAAAA,EAAgB;AAClB,iEAAA;;0EAEFvI,cAAA,CAACN,gBAAAA,EAAAA;AACCoK,gEAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oEAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,4BAAA,CAAA;oEACtBC,cAAAA,EAAgB;AAClB,iEAAA,CAAA;gEAEAtB,KAAAA,EAAOJ,QAAAA;gEACPF,GAAAA,EAAK,CAAA;AACLC,gEAAAA,GAAAA,EAAK1G,KAAAA,IAASyD,SAAAA;AACd2G,gEAAAA,aAAAA,EAAe,CAAC3E,IAAAA,GAAAA;oEACd,IAAIA,IAAAA,KAAShC,SAAAA,EAAWoD,UAAAA,CAAW,GAAA,EAAKpB,IAAAA,CAAAA;AAC1C,gEAAA,CAAA;gEACAmF,MAAAA,EAAQrD;+DAPH,CAAC,QAAQ,EAAEJ,SAAAA,CAAAA,CAAW;;;kEAU/BwB,eAAA,CAACtJ,QAAAA,EAAAA;wDAAS0I,IAAAA,EAAK,SAAA;wDAAUiC,GAAAA,EAAK,CAAA;;AAC5B,0EAAAlK,cAAA,CAACR,mBAAMK,KAAK,EAAA;gEAACuK,SAAAA,EAAW5I,aAAAA;0EACrBN,aAAAA,CAAc;AACbmH,oEAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,iCAAA,CAAA;oEACtBC,cAAAA,EAAgB;AAClB,iEAAA;;0EAEFvI,cAAA,CAACN,gBAAAA,EAAAA;AACCoK,gEAAAA,YAAAA,EAAY5I,aAAAA,CAAc;AACxBmH,oEAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,4BAAA,CAAA;oEACtBC,cAAAA,EAAgB;AAClB,iEAAA,CAAA;gEAEAtB,KAAAA,EAAOH,QAAAA;gEACPH,GAAAA,EAAK,CAAA;AACLC,gEAAAA,GAAAA,EAAKzG,MAAAA,IAAUwD,SAAAA;AACf2G,gEAAAA,aAAAA,EAAe,CAAC3E,IAAAA,GAAAA;oEACd,IAAIA,IAAAA,KAAShC,SAAAA,EAAWoD,UAAAA,CAAW,GAAA,EAAKpB,IAAAA,CAAAA;AAC1C,gEAAA,CAAA;gEACAmF,MAAAA,EAAQnD;+DAPH,CAAC,QAAQ,EAAEJ,SAAAA,CAAAA,CAAW;;;;;;;;;;;kCAevCsB,eAAA,CAACvJ,SAAAA,EAAAA;wBAAU0J,UAAAA,EAAW,QAAA;;0CACpBhJ,cAAA,CAAC+K,mBAAAA,EAAAA;gCAAO3B,OAAAA,EAAQ,UAAA;gCAAWuB,OAAAA,EAAS7J,OAAAA;gCAASkK,QAAAA,EAAUnK,MAAAA;0CACpDK,aAAAA,CAAc;oCAAEmH,EAAAA,EAAI,8BAAA;oCAAgCE,cAAAA,EAAgB;AAAS,iCAAA;;0CAEhFM,eAAA,CAACjL,iBAAAA,EAAAA;gCAAKsM,GAAAA,EAAK,CAAA;;AACRjJ,oCAAAA,aAAAA,kBACCjB,cAAA,CAAC+K,mBAAAA,EAAAA;wCACC3B,OAAAA,EAAQ,WAAA;AACRuB,wCAAAA,OAAAA,EAAS,IAAM7C,YAAAA,CAAa,MAAA,CAAA;wCAC5BmD,OAAAA,EAASpK,MAAAA;AACTmK,wCAAAA,QAAAA,EAAU,CAACnD,OAAAA;kDAEV3G,aAAAA,CAAc;AACbmH,4CAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,iCAAA,CAAA;4CACtBC,cAAAA,EAAgB;AAClB,yCAAA;;kDAGJvI,cAAA,CAAC+K,mBAAAA,EAAAA;wCACC3B,OAAAA,EAAQ,SAAA;AACRuB,wCAAAA,OAAAA,EAAS,IAAM7C,YAAAA,CAAa,OAAA,CAAA;wCAC5BmD,OAAAA,EAASpK,MAAAA;AACTmK,wCAAAA,QAAAA,EAAU,CAACnD,OAAAA;kDAEV3G,aAAAA,CAAc;AACbmH,4CAAAA,EAAAA,EAAIC,8BAAAA,CAAkB,0BAAA,CAAA;4CACtBC,cAAAA,EAAgB;AAClB,yCAAA;;;;;;;;;;AAQhB;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetCropEditor.mjs","sources":["../../../../../../admin/src/pages/Assets/components/AssetDetails/AssetCropEditor.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Button,\n Field,\n Flex,\n FocusTrap,\n IconButton,\n NumberInput,\n Portal,\n Typography,\n} from '@strapi/design-system';\nimport { ArrowsHorizontal, ArrowsVertical, Crop, Link } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { prefixFileUrlWithBackendUrl } from '../../../../utils/files';\nimport { getTranslationKey } from '../../../../utils/translations';\n\nimport { resolveCornerResize, useCropImg } from './useCropImg';\n\nimport type {\n AssetWithPopulatedCreatedBy,\n FocalPoint,\n} from '../../../../../../shared/contracts/files';\n\nconst FOCAL_DIAMETER_REM = 5.6;\nconst HANDLE_PX = 12;\n\n/* -------------------------------------------------------------------------------------------------\n * Styled\n * -----------------------------------------------------------------------------------------------*/\n\n// Full-viewport takeover with a small inset so the editor reads as a card.\nconst Overlay = styled(Flex)`\n position: fixed;\n z-index: 1200;\n flex-direction: column;\n top: ${({ theme }) => theme.spaces[1]};\n left: ${({ theme }) => theme.spaces[1]};\n right: ${({ theme }) => theme.spaces[1]};\n bottom: ${({ theme }) => theme.spaces[1]};\n border-radius: ${({ theme }) => theme.borderRadius};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n /* Focused programmatically on open (tabIndex -1) — no visible ring needed. */\n outline: none;\n`;\n\nconst HeaderBar = styled(Flex)`\n width: 100%;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[5]}`};\n border-bottom: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n`;\n\n// Fills the remaining space between header/footer; checkerboard pattern.\n// The horizontal padding keeps the image off the viewport edges — the corner\n// handles overhang the image by half their size, and on narrow (mobile)\n// screens an edge-to-edge image leaves nothing to grab.\nconst Body = styled(Box)`\n width: 100%;\n position: relative;\n flex: 1;\n min-height: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n padding: 0 ${({ theme }) => theme.spaces[4]};\n background: repeating-conic-gradient(\n ${({ theme }) => theme.colors.neutral100} 0% 25%,\n ${({ theme }) => theme.colors.neutral0} 0% 50%\n )\n 50% / 20px 20px;\n`;\n\n// Wrapper sized to the image's natural aspect ratio so the <img> inside fills\n// it without letterboxing. Percentage-based positioning of the crop overlay\n// then maps directly to natural-px coordinates.\nconst CropArea = styled.div<{ $aspect?: number }>`\n position: relative;\n max-width: 100%;\n max-height: 100%;\n ${({ $aspect }) => ($aspect ? `aspect-ratio: ${$aspect};` : '')}\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n user-select: none;\n -webkit-user-drag: none;\n }\n`;\n\n// Crop selection rectangle, positioned by % of CropArea. Inverts the dim\n// outside via box-shadow so the focused area shows full color.\nconst CropOverlay = styled.div`\n position: absolute;\n border: 1px dashed ${({ theme }) => theme.colors.primary600};\n box-shadow: 0 0 0 9999px rgba(33, 33, 52, 0.5);\n cursor: move;\n /* Without this, touch browsers claim the gesture for scrolling and fire\n pointercancel mid-drag — the crop drag dies while the finger is down. */\n touch-action: none;\n`;\n\nconst ResizeHandle = styled.button<{ $cursor: string }>`\n position: absolute;\n width: ${HANDLE_PX}px;\n height: ${HANDLE_PX}px;\n margin: -${HANDLE_PX / 2}px;\n padding: 0;\n border: 1px solid ${({ theme }) => theme.colors.primary600};\n border-radius: 2px;\n background: ${({ theme }) => theme.colors.neutral0};\n cursor: ${({ $cursor }) => $cursor};\n touch-action: none;\n`;\n\nconst FocalPointHandle = styled.button`\n position: absolute;\n width: ${FOCAL_DIAMETER_REM}rem;\n height: ${FOCAL_DIAMETER_REM}rem;\n margin: ${-FOCAL_DIAMETER_REM / 2}rem 0 0 ${-FOCAL_DIAMETER_REM / 2}rem;\n border-radius: 50%;\n border: 1px solid ${({ theme }) => theme.colors.neutral800};\n background: transparent;\n cursor: grab;\n padding: 0;\n touch-action: none;\n\n &::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.16);\n transform: translate(-50%, -50%);\n }\n &::after {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: ${({ theme }) => theme.colors.neutral800};\n transform: translate(-50%, -50%);\n }\n\n &:active {\n cursor: grabbing;\n }\n`;\n\n// Hidden on mobile — the panel (title/hint + numeric crop & focal inputs) is\n// too large for a phone; touch users set the crop by dragging the rectangle and\n// focal handle directly on the image. Shown from tablet up.\nconst InfoBox = styled(Box)`\n display: none;\n\n ${({ theme }) => theme.breakpoints.medium} {\n display: block;\n position: absolute;\n right: ${({ theme }) => theme.spaces[1]};\n bottom: ${({ theme }) => theme.spaces[1]};\n width: 100%;\n max-width: 32rem;\n padding: ${({ theme }) => theme.spaces[3]};\n border-radius: ${({ theme }) => theme.borderRadius};\n background: ${({ theme }) =>\n theme.colorScheme === 'dark' ? theme.colors.neutral150 : theme.colors.neutral900};\n z-index: 20;\n }\n`;\n\nconst FooterBar = styled(Flex)`\n width: 100%;\n justify-content: space-between;\n padding: ${({ theme }) => `${theme.spaces[3]} ${theme.spaces[5]}`};\n border-top: 1px solid ${({ theme }) => theme.colors.neutral150};\n background: ${({ theme }) => theme.colors.neutral0};\n`;\n\nconst FieldRow = styled(Field.Root)`\n flex-direction: row;\n align-items: center;\n`;\n\nconst FieldNumberInput = styled(NumberInput)`\n width: 8.4rem;\n`;\n\nconst LabelIcon = styled(Field.Label)`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 1.6rem;\n height: 1.6rem;\n`;\n\nconst BackgroundPreserveRatioContainer = styled(Box)`\n position: absolute;\n top: 50%;\n left: 0;\n transform: translateY(-50%);\n\n svg {\n display: block;\n }\n`;\n\nconst BackgroundPreserveRatio = () => (\n <BackgroundPreserveRatioContainer>\n <svg width=\"17\" height=\"49\" viewBox=\"0 0 17 49\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M0.5 0.5H8.5C12.9183 0.5 16.5 4.08172 16.5 8.5M0.5 48.5H8.5C12.9183 48.5 16.5 44.9183 16.5 40.5\"\n stroke=\"#666687\"\n strokeLinecap=\"round\"\n />\n </svg>\n </BackgroundPreserveRatioContainer>\n);\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCropEditor\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetCropEditorProps {\n asset: AssetWithPopulatedCreatedBy;\n isBusy?: boolean;\n onClose: () => void;\n onApply: (file: globalThis.File, focalPoint: FocalPoint) => void;\n onSaveAsCopy: (file: globalThis.File, focalPoint: FocalPoint) => void;\n /**\n * \"Save as copy\" creates a new asset (`assets.create`), a different permission\n * from cropping in place (`assets.update`). Hidden when the user lacks it, so\n * an update-only role can't trigger a 403.\n */\n canSaveAsCopy: boolean;\n}\n\ntype Corner = 'tl' | 'tr' | 'bl' | 'br';\n\nexport const AssetCropEditor = ({\n asset,\n isBusy = false,\n onClose,\n onApply,\n onSaveAsCopy,\n canSaveAsCopy,\n}: AssetCropEditorProps) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n // The InfoBox is a fixed dark surface in both themes, so its text can't use a\n // single neutral token (those invert with the scheme). Pick the scheme's white\n // and a muted grey explicitly.\n const theme = useTheme();\n const isDark = theme.colorScheme === 'dark';\n const infoTextColor = isDark ? 'neutral1000' : 'neutral0';\n const infoMutedColor = isDark ? 'neutral600' : 'neutral200';\n const imgRef = React.useRef<HTMLImageElement>(null);\n const cropAreaRef = React.useRef<HTMLDivElement>(null);\n const overlayRef = React.useRef<HTMLDivElement>(null);\n\n // FocusTrap's auto-focus lands on the first focusable element — the crop\n // width NumberInput — which pops the keyboard on mobile the moment the\n // editor opens. Focus the (tabIndex -1) overlay instead: keyboard users are\n // one Tab away from the first control, Escape still reaches the trap.\n React.useEffect(() => {\n overlayRef.current?.focus();\n }, []);\n\n const {\n init,\n crop,\n naturalSize,\n aspectRatio,\n setCropSize,\n setCropPosition,\n setAspectRatio,\n produceFile,\n width,\n height,\n } = useCropImg();\n\n const [aspectLocked, setAspectLocked] = React.useState(false);\n // Focal point as a percentage of the crop area (matches the {x,y} contract).\n const [focal, setFocal] = React.useState<FocalPoint>(asset.focalPoint ?? { x: 50, y: 50 });\n\n // The crop editor reads pixels from a canvas (useCropImg -> toBlob), so its\n // <img> must be CORS-clean and always sets crossOrigin=\"anonymous\" (see the\n // img below) — even for unsigned URLs, which AssetPreview leaves unset because\n // it only displays. That difference is why the crop URL is kept DISTINCT from\n // the thumbnail's: identical URL + different crossOrigin collide in the HTTP\n // cache (#26581), and the crop's anonymous request could otherwise reuse the\n // thumbnail's non-CORS cached response and taint the canvas. So the buster\n // uses `updatedAt` where AssetPreview uses `v`, giving each its own entry\n // (mirrors the legacy PreviewBox fix).\n // Signed URLs get no param at all — a presigned S3 URL breaks if you add one,\n // and on the signed side AssetPreview also loads anonymous, so the identical\n // URL there shares one CORS-consistent entry, which is fine.\n const rawImageUrl = prefixFileUrlWithBackendUrl(asset.url) as string;\n const cacheKey =\n asset.updatedAt && !asset.isUrlSigned ? new Date(asset.updatedAt).getTime() : undefined;\n const imageUrl =\n cacheKey !== undefined\n ? `${rawImageUrl}${rawImageUrl.includes('?') ? '&' : '?'}updatedAt=${cacheKey}`\n : rawImageUrl;\n\n const handleImageLoad = () => {\n if (imgRef.current) {\n init(imgRef.current);\n }\n };\n\n // Map a pointer event to natural-px coordinates inside the image.\n const pointerToNatural = (event: PointerEvent | React.PointerEvent) => {\n const rect = cropAreaRef.current?.getBoundingClientRect();\n if (!rect || !naturalSize.width || !naturalSize.height) return null;\n const ratioX = naturalSize.width / rect.width;\n const ratioY = naturalSize.height / rect.height;\n return {\n x: (event.clientX - rect.left) * ratioX,\n y: (event.clientY - rect.top) * ratioY,\n };\n };\n\n // Teardown for the drag currently in flight, so it can be run both on pointer\n // release AND on unmount. Without the unmount path, closing the editor mid-drag\n // (Escape, drawer close, a re-render dropping the overlay) would never fire a\n // pointer event, leaking the window listeners and letting a stale `onMove`\n // call `setCropPosition` on an unmounted component.\n const activeDragCleanupRef = React.useRef<(() => void) | null>(null);\n\n React.useEffect(() => {\n return () => {\n activeDragCleanupRef.current?.();\n };\n }, []);\n\n // Track a pointer drag until the pointer is released or the browser cancels\n // it. The pointer is captured so the drag follows the finger even once it\n // leaves the (12px) handle it started on, and pointercancel is treated as\n // release so an interrupted touch never leaves stale window listeners.\n const trackPointerDrag = (event: React.PointerEvent, onMove: (e: PointerEvent) => void) => {\n event.preventDefault();\n event.stopPropagation();\n const { pointerId } = event;\n try {\n event.currentTarget.setPointerCapture(pointerId);\n } catch {\n // Unsupported environment (jsdom) — window listeners still track the drag.\n }\n const move = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n onMove(e);\n };\n const cleanup = () => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', end);\n window.removeEventListener('pointercancel', end);\n activeDragCleanupRef.current = null;\n };\n const end = (e: PointerEvent) => {\n if (e.pointerId !== pointerId) return;\n cleanup();\n };\n // Only one drag is ever live at a time; tear down any previous one first.\n activeDragCleanupRef.current?.();\n activeDragCleanupRef.current = cleanup;\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', end);\n window.addEventListener('pointercancel', end);\n };\n\n // Drag the entire crop rectangle.\n const handleMovePointerDown = (event: React.PointerEvent) => {\n const start = pointerToNatural(event);\n if (!start) return;\n const startCrop = { ...crop };\n trackPointerDrag(event, (e) => {\n const next = pointerToNatural(e);\n if (!next) return;\n setCropPosition({\n x: startCrop.x + (next.x - start.x),\n y: startCrop.y + (next.y - start.y),\n });\n });\n };\n\n // Resize from a corner; the opposite corner stays anchored.\n const handleResizePointerDown = (corner: Corner) => (event: React.PointerEvent) => {\n const startCrop = { ...crop };\n const anchorX =\n corner === 'tl' || corner === 'bl' ? startCrop.x + startCrop.width : startCrop.x;\n const anchorY =\n corner === 'tl' || corner === 'tr' ? startCrop.y + startCrop.height : startCrop.y;\n trackPointerDrag(event, (e) => {\n const point = pointerToNatural(e);\n if (!point) return;\n const {\n x,\n y,\n width: w,\n height: h,\n } = resolveCornerResize({\n anchorX,\n anchorY,\n point,\n aspectRatio: aspectLocked ? aspectRatio : null,\n });\n setCropPosition({ x, y });\n setCropSize({ width: w, height: h });\n });\n };\n\n const toggleAspectLock = () => {\n setAspectLocked((locked) => {\n const next = !locked;\n setAspectRatio(next && height ? width / height : null);\n return next;\n });\n };\n\n // Drag the focal handle within the crop rectangle, clamped 0–100.\n const handleFocalPointerDown = (event: React.PointerEvent) => {\n trackPointerDrag(event, (e) => {\n const point = pointerToNatural(e);\n if (!point) return;\n // Convert pointer to a percentage of the current crop area.\n const px = ((point.x - crop.x) / crop.width) * 100;\n const py = ((point.y - crop.y) / crop.height) * 100;\n setFocal({\n x: Math.round(Math.min(100, Math.max(0, px))),\n y: Math.round(Math.min(100, Math.max(0, py))),\n });\n });\n };\n\n const focalPxX = Math.round((focal.x / 100) * width);\n const focalPxY = Math.round((focal.y / 100) * height);\n\n const setFocalPx = (axis: 'x' | 'y', value: number) => {\n const dim = axis === 'x' ? width : height;\n if (!dim) return;\n const pct = Math.min(100, Math.max(0, (value / dim) * 100));\n setFocal((prev) => ({ ...prev, [axis]: Math.round(pct) }));\n };\n\n /**\n * Forces a focal field to redisplay the state on blur.\n *\n * One key per axis: a shared key remounted both fields, so tabbing out of X\n * destroyed Y before it could take focus and it was unreachable by keyboard.\n */\n const [focalXKey, setFocalXKey] = React.useState(0);\n const [focalYKey, setFocalYKey] = React.useState(0);\n const syncFocalX = () => setFocalXKey((key) => key + 1);\n const syncFocalY = () => setFocalYKey((key) => key + 1);\n\n const cropPercents =\n naturalSize.width && naturalSize.height\n ? {\n left: (crop.x / naturalSize.width) * 100,\n top: (crop.y / naturalSize.height) * 100,\n width: (crop.width / naturalSize.width) * 100,\n height: (crop.height / naturalSize.height) * 100,\n }\n : null;\n\n // The crop is only usable once the image has loaded and `init()` has seeded\n // the natural size. Until then the produce/export path would reject.\n const isReady = cropPercents !== null;\n\n const handleAction = async (action: 'apply' | 'copy') => {\n if (!isReady) return;\n\n let file: globalThis.File;\n try {\n file = await produceFile(asset.name, asset.mime ?? 'image/png', asset.updatedAt);\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTranslationKey('asset-details.crop.export-error'),\n defaultMessage: 'Could not process the cropped image.',\n }),\n });\n return;\n }\n\n const roundedFocal = { x: Math.round(focal.x), y: Math.round(focal.y) };\n if (action === 'apply') {\n onApply(file, roundedFocal);\n } else {\n onSaveAsCopy(file, roundedFocal);\n }\n };\n\n return (\n <Portal>\n <FocusTrap onEscape={onClose} skipAutoFocus>\n <Overlay ref={overlayRef} tabIndex={-1}>\n <HeaderBar alignItems=\"center\">\n <Crop aria-hidden />\n <Typography variant=\"omega\" fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('asset-details.crop.title'),\n defaultMessage: 'Crop & Focus area',\n })}\n </Typography>\n </HeaderBar>\n\n <Body>\n <CropArea\n ref={cropAreaRef}\n $aspect={\n naturalSize.width && naturalSize.height\n ? naturalSize.width / naturalSize.height\n : undefined\n }\n >\n <img\n ref={imgRef}\n src={imageUrl}\n alt={asset.name}\n // Always anonymous, unlike AssetPreview/AssetsGrid which gate it:\n // the editor reads pixels via canvas (useCropImg -> toBlob), which\n // taints on a cross-origin image loaded without CORS, so every\n // remote image must be fetched CORS-clean.\n crossOrigin=\"anonymous\"\n onLoad={handleImageLoad}\n draggable={false}\n />\n\n {cropPercents ? (\n <CropOverlay\n style={{\n left: `${cropPercents.left}%`,\n top: `${cropPercents.top}%`,\n width: `${cropPercents.width}%`,\n height: `${cropPercents.height}%`,\n }}\n onPointerDown={handleMovePointerDown}\n >\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.top-left'),\n defaultMessage: 'Resize top-left',\n })}\n $cursor=\"nwse-resize\"\n style={{ left: 0, top: 0 }}\n onPointerDown={handleResizePointerDown('tl')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.top-right'),\n defaultMessage: 'Resize top-right',\n })}\n $cursor=\"nesw-resize\"\n style={{ right: 0, top: 0 }}\n onPointerDown={handleResizePointerDown('tr')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.bottom-left'),\n defaultMessage: 'Resize bottom-left',\n })}\n $cursor=\"nesw-resize\"\n style={{ left: 0, bottom: 0 }}\n onPointerDown={handleResizePointerDown('bl')}\n />\n <ResizeHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.resize.bottom-right'),\n defaultMessage: 'Resize bottom-right',\n })}\n $cursor=\"nwse-resize\"\n style={{ right: 0, bottom: 0 }}\n onPointerDown={handleResizePointerDown('br')}\n />\n\n <FocalPointHandle\n type=\"button\"\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-point'),\n defaultMessage: 'Focal point',\n })}\n style={{ left: `${focal.x}%`, top: `${focal.y}%` }}\n onPointerDown={handleFocalPointerDown}\n />\n </CropOverlay>\n ) : null}\n </CropArea>\n\n <InfoBox>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1} paddingBottom={3}>\n <Typography variant=\"omega\" fontWeight=\"bold\" textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.title'),\n defaultMessage: 'Crop & Focus area',\n })}\n </Typography>\n <Typography variant=\"pi\" textColor={infoMutedColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.hint'),\n defaultMessage:\n 'Set the crop area with the rectangle. Pin the always-visible area with the circle.',\n })}\n </Typography>\n </Flex>\n\n <Flex gap={6} alignItems=\"center\">\n <Flex alignItems=\"center\" gap={2}>\n <Flex direction=\"column\" gap={2}>\n <FieldRow name=\"crop-width\" gap={2}>\n <LabelIcon textColor={infoTextColor}>\n <ArrowsHorizontal />\n </LabelIcon>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.width'),\n defaultMessage: 'Width (px)',\n })}\n value={width}\n min={1}\n max={naturalSize.width || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setCropSize({ width: next });\n }}\n />\n </FieldRow>\n <FieldRow name=\"crop-height\" gap={2}>\n <LabelIcon textColor={infoTextColor}>\n <ArrowsVertical />\n </LabelIcon>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.height'),\n defaultMessage: 'Height (px)',\n })}\n value={height}\n min={1}\n max={naturalSize.height || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setCropSize({ height: next });\n }}\n />\n </FieldRow>\n </Flex>\n\n <Flex position=\"relative\">\n <IconButton\n label={formatMessage({\n id: getTranslationKey('asset-details.crop.aspect-lock'),\n defaultMessage: 'Lock aspect ratio',\n })}\n variant={aspectLocked ? 'secondary' : 'ghost'}\n onClick={toggleAspectLock}\n >\n <Link />\n </IconButton>\n <BackgroundPreserveRatio />\n </Flex>\n </Flex>\n\n <Flex direction=\"column\" gap={2} marginLeft={'auto'}>\n <FieldRow name=\"focal-x\" gap={2}>\n <Field.Label textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.focal-x-axis'),\n defaultMessage: 'X',\n })}\n </Field.Label>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-x'),\n defaultMessage: 'Focal point X (px)',\n })}\n key={`focal-x-${focalXKey}`}\n value={focalPxX}\n min={0}\n max={width || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setFocalPx('x', next);\n }}\n onBlur={syncFocalX}\n />\n </FieldRow>\n <FieldRow name=\"focal-y\" gap={2}>\n <Field.Label textColor={infoTextColor}>\n {formatMessage({\n id: getTranslationKey('asset-details.crop.focal-y-axis'),\n defaultMessage: 'Y',\n })}\n </Field.Label>\n <FieldNumberInput\n aria-label={formatMessage({\n id: getTranslationKey('asset-details.crop.focal-y'),\n defaultMessage: 'Focal point Y (px)',\n })}\n key={`focal-y-${focalYKey}`}\n value={focalPxY}\n min={0}\n max={height || undefined}\n onValueChange={(next) => {\n if (next !== undefined) setFocalPx('y', next);\n }}\n onBlur={syncFocalY}\n />\n </FieldRow>\n </Flex>\n </Flex>\n </InfoBox>\n </Body>\n\n <FooterBar alignItems=\"center\">\n <Button variant=\"tertiary\" onClick={onClose} disabled={isBusy}>\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {canSaveAsCopy && (\n <Button\n variant=\"secondary\"\n onClick={() => handleAction('copy')}\n loading={isBusy}\n disabled={!isReady}\n >\n {formatMessage({\n id: getTranslationKey('asset-details.crop.save-as-copy'),\n defaultMessage: 'Save as copy',\n })}\n </Button>\n )}\n <Button\n variant=\"default\"\n onClick={() => handleAction('apply')}\n loading={isBusy}\n disabled={!isReady}\n >\n {formatMessage({\n id: getTranslationKey('asset-details.crop.apply'),\n defaultMessage: 'Apply',\n })}\n </Button>\n </Flex>\n </FooterBar>\n </Overlay>\n </FocusTrap>\n </Portal>\n );\n};\n"],"names":["FOCAL_DIAMETER_REM","HANDLE_PX","Overlay","styled","Flex","theme","spaces","borderRadius","colors","neutral150","neutral0","HeaderBar","Body","Box","neutral100","CropArea","div","$aspect","CropOverlay","primary600","ResizeHandle","button","$cursor","FocalPointHandle","neutral800","InfoBox","breakpoints","medium","colorScheme","neutral900","FooterBar","FieldRow","Field","Root","FieldNumberInput","NumberInput","LabelIcon","Label","BackgroundPreserveRatioContainer","BackgroundPreserveRatio","_jsx","svg","width","height","viewBox","fill","xmlns","path","d","stroke","strokeLinecap","AssetCropEditor","asset","isBusy","onClose","onApply","onSaveAsCopy","canSaveAsCopy","formatMessage","useIntl","toggleNotification","useNotification","useTheme","isDark","infoTextColor","infoMutedColor","imgRef","React","useRef","cropAreaRef","overlayRef","useEffect","current","focus","init","crop","naturalSize","aspectRatio","setCropSize","setCropPosition","setAspectRatio","produceFile","useCropImg","aspectLocked","setAspectLocked","useState","focal","setFocal","focalPoint","x","y","rawImageUrl","prefixFileUrlWithBackendUrl","url","cacheKey","updatedAt","isUrlSigned","Date","getTime","undefined","imageUrl","includes","handleImageLoad","pointerToNatural","event","rect","getBoundingClientRect","ratioX","ratioY","clientX","left","clientY","top","activeDragCleanupRef","trackPointerDrag","onMove","preventDefault","stopPropagation","pointerId","currentTarget","setPointerCapture","move","e","cleanup","window","removeEventListener","end","addEventListener","handleMovePointerDown","start","startCrop","next","handleResizePointerDown","corner","anchorX","anchorY","point","w","h","resolveCornerResize","toggleAspectLock","locked","handleFocalPointerDown","px","py","Math","round","min","max","focalPxX","focalPxY","setFocalPx","axis","value","dim","pct","prev","focalXKey","setFocalXKey","focalYKey","setFocalYKey","syncFocalX","key","syncFocalY","cropPercents","isReady","handleAction","action","file","name","mime","type","message","id","getTranslationKey","defaultMessage","roundedFocal","Portal","FocusTrap","onEscape","skipAutoFocus","_jsxs","ref","tabIndex","alignItems","Crop","aria-hidden","Typography","variant","fontWeight","img","src","alt","crossOrigin","onLoad","draggable","style","onPointerDown","aria-label","right","bottom","direction","gap","paddingBottom","textColor","ArrowsHorizontal","onValueChange","ArrowsVertical","position","IconButton","label","onClick","Link","marginLeft","onBlur","Button","disabled","loading"],"mappings":"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"}
|