@strapi/upload 5.58.0 → 5.60.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js +434 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs +432 -0
- package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js +91 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs +89 -0
- package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js +178 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs +175 -0
- package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js +143 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs +141 -0
- package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js +49 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.js.map +1 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs +41 -0
- package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +142 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +140 -0
- package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.js +240 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs +237 -0
- package/dist/admin/components/MediaLibraryInput/AssetCard.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js +161 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs +159 -0
- package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +156 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +154 -0
- package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js +109 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs +106 -0
- package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js +211 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +208 -0
- package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.js +32 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs +29 -0
- package/dist/admin/components/MediaLibraryInput/FieldControls.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +439 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +433 -0
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js +42 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs +40 -0
- package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js +122 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.js.map +1 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs +120 -0
- package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs.map +1 -0
- package/dist/admin/components/UploadProgressDialog.js +2 -1
- package/dist/admin/components/UploadProgressDialog.js.map +1 -1
- package/dist/admin/components/UploadProgressDialog.mjs +2 -1
- package/dist/admin/components/UploadProgressDialog.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataAvailability.js +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs +5 -1
- package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -1
- package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.js +16 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs +16 -2
- package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +5 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +5 -1
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/index.js +7 -2
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +7 -2
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs +2 -1
- package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +3 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -1
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs +7 -6
- package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +2 -1
- package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -1
- package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs +3 -1
- package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs +2 -1
- package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs +4 -2
- package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -1
- package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs +3 -1
- package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.js +3 -1
- package/dist/admin/legacy/components/TableList/TableList.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.js +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs +3 -1
- package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs +3 -1
- package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs +2 -1
- package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.js +13 -302
- package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/pages/Assets/AssetsPage.mjs +11 -280
- package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.js +143 -31
- package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs +146 -34
- package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js +43 -2
- package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs +45 -4
- package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.js +60 -35
- package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsTable.mjs +62 -37
- package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/AssetsView.js +145 -0
- package/dist/admin/pages/Assets/components/AssetsView.js.map +1 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs +143 -0
- package/dist/admin/pages/Assets/components/AssetsView.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/BulkActionsBar.js +3 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -1
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +4 -2
- package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/BusyOverlay.mjs +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -1
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs +10 -7
- package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs +1 -1
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js +40 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs +38 -0
- package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js +29 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.js.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs +24 -0
- package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js +5 -0
- package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs +5 -1
- package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs +41 -13
- package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js +4 -2
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +5 -3
- package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.js +32 -3
- package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -1
- package/dist/admin/pages/Assets/components/FilterBadges.mjs +35 -6
- package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FilterMenu.mjs +2 -2
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +274 -55
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +277 -59
- package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js +32 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js.map +1 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs +29 -0
- package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js +126 -0
- package/dist/admin/pages/Assets/components/ViewToggle.js.map +1 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs +104 -0
- package/dist/admin/pages/Assets/components/ViewToggle.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs +2 -2
- package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js +19 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +20 -3
- package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useAssetsList.js +87 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs +85 -0
- package/dist/admin/pages/Assets/hooks/useAssetsList.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js +2 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js +80 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs +77 -0
- package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js +32 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.js.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs +29 -0
- package/dist/admin/pages/Assets/hooks/useListSettings.mjs.map +1 -0
- package/dist/admin/pages/Assets/hooks/useListSort.js +2 -1
- package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -1
- package/dist/admin/pages/Assets/hooks/useListSort.mjs +3 -2
- package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -1
- package/dist/admin/services/api.js +106 -11
- package/dist/admin/services/api.js.map +1 -1
- package/dist/admin/services/api.mjs +105 -13
- package/dist/admin/services/api.mjs.map +1 -1
- package/dist/admin/src/components/AssetPickerDialog/AssetPickerDialog.d.ts +19 -0
- package/dist/admin/src/components/AssetPickerDialog/FolderBreadcrumbs.d.ts +10 -0
- package/dist/admin/src/components/AssetPickerDialog/PickerSelectionProvider.d.ts +28 -0
- package/dist/admin/src/components/AssetPickerDialog/SortableSelection.d.ts +12 -0
- package/dist/admin/src/components/AssetPickerDialog/pickerSelection.d.ts +26 -0
- package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCard.d.ts +25 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetCarousel.d.ts +16 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +21 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetPreview.d.ts +17 -0
- package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +25 -0
- package/dist/admin/src/components/MediaLibraryInput/FieldControls.d.ts +19 -0
- package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +28 -0
- package/dist/admin/src/components/MediaLibraryInput/UploadProgressBar.d.ts +7 -0
- package/dist/admin/src/components/MediaLibraryInput/useFieldUploads.d.ts +31 -0
- package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +3 -0
- package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +1 -1
- package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +1 -1
- package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +3 -1
- package/dist/admin/src/pages/Assets/components/AssetsSearchInput.d.ts +11 -1
- package/dist/admin/src/pages/Assets/components/AssetsView.d.ts +29 -0
- package/dist/admin/src/pages/Assets/components/Dnd/ReorderHandle.d.ts +12 -0
- package/dist/admin/src/pages/Assets/components/Dnd/assetSortable.d.ts +37 -0
- package/dist/admin/src/pages/Assets/components/Dnd/dndIds.d.ts +5 -0
- package/dist/admin/src/pages/Assets/components/Dnd/useAssetDnd.d.ts +23 -2
- package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +1 -0
- package/dist/admin/src/pages/Assets/components/FolderTree/collapsedBranch.d.ts +21 -0
- package/dist/admin/src/pages/Assets/components/ViewToggle.d.ts +8 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +26 -0
- package/dist/admin/src/pages/Assets/hooks/useAssetsList.d.ts +30 -0
- package/dist/admin/src/pages/Assets/hooks/useListQueryParams.d.ts +27 -0
- package/dist/admin/src/pages/Assets/hooks/useListSettings.d.ts +29 -0
- package/dist/admin/src/services/api.d.ts +30 -1
- package/dist/admin/src/store/uploadProgress.d.ts +14 -1
- package/dist/admin/src/utils/allowedMediaTypes.d.ts +16 -0
- package/dist/admin/src/utils/findFolderPath.d.ts +6 -0
- package/dist/admin/src/utils/isAllowedAssetType.d.ts +14 -0
- package/dist/admin/store/uploadProgress.js +30 -3
- package/dist/admin/store/uploadProgress.js.map +1 -1
- package/dist/admin/store/uploadProgress.mjs +29 -4
- package/dist/admin/store/uploadProgress.mjs.map +1 -1
- package/dist/admin/translations/ca.json.js +3 -3
- package/dist/admin/translations/ca.json.mjs +3 -3
- package/dist/admin/translations/da.json.js +1 -1
- package/dist/admin/translations/da.json.mjs +1 -1
- package/dist/admin/translations/de.json.js +1 -1
- package/dist/admin/translations/de.json.mjs +1 -1
- package/dist/admin/translations/en.json.js +29 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +29 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/translations/es.json.js +1 -1
- package/dist/admin/translations/es.json.mjs +1 -1
- package/dist/admin/translations/sk.json.js +2 -2
- package/dist/admin/translations/sk.json.mjs +2 -2
- package/dist/admin/translations/tr.json.js +2 -2
- package/dist/admin/translations/tr.json.mjs +2 -2
- package/dist/admin/translations/zh-Hans.json.js +1 -1
- package/dist/admin/translations/zh-Hans.json.mjs +1 -1
- package/dist/admin/translations/zh.json.js +2 -2
- package/dist/admin/translations/zh.json.mjs +2 -2
- package/dist/admin/utils/allowedMediaTypes.js +42 -0
- package/dist/admin/utils/allowedMediaTypes.js.map +1 -0
- package/dist/admin/utils/allowedMediaTypes.mjs +39 -0
- package/dist/admin/utils/allowedMediaTypes.mjs.map +1 -0
- package/dist/admin/utils/findFolderPath.js +26 -0
- package/dist/admin/utils/findFolderPath.js.map +1 -0
- package/dist/admin/utils/findFolderPath.mjs +24 -0
- package/dist/admin/utils/findFolderPath.mjs.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.js +33 -0
- package/dist/admin/utils/isAllowedAssetType.js.map +1 -0
- package/dist/admin/utils/isAllowedAssetType.mjs +31 -0
- package/dist/admin/utils/isAllowedAssetType.mjs.map +1 -0
- package/dist/server/config.js +6 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +6 -0
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/controllers/admin-settings.js +5 -1
- package/dist/server/controllers/admin-settings.js.map +1 -1
- package/dist/server/controllers/admin-settings.mjs +5 -1
- package/dist/server/controllers/admin-settings.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/upload.js.map +1 -1
- package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
- package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
- package/dist/server/mcp/ambient-instance.js +7 -5
- package/dist/server/mcp/ambient-instance.js.map +1 -1
- package/dist/server/mcp/ambient-instance.mjs +7 -5
- package/dist/server/mcp/ambient-instance.mjs.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.js +4 -16
- package/dist/server/mcp/handlers/folder-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/folder-handlers.mjs +5 -17
- package/dist/server/mcp/handlers/folder-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.js +6 -14
- package/dist/server/mcp/handlers/read-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/read-handlers.mjs +7 -15
- package/dist/server/mcp/handlers/read-handlers.mjs.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.js +3 -13
- package/dist/server/mcp/handlers/write-handlers.js.map +1 -1
- package/dist/server/mcp/handlers/write-handlers.mjs +3 -13
- package/dist/server/mcp/handlers/write-handlers.mjs.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.js +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.js.map +1 -1
- package/dist/server/mcp/register-upload-mcp-tools.mjs +215 -195
- package/dist/server/mcp/register-upload-mcp-tools.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js +35 -16
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs +35 -16
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/config.d.ts +3 -0
- package/dist/server/src/config.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +4 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/mcp/ambient-instance.d.ts +7 -5
- package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/folder-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/read-handlers.d.ts +3 -2
- package/dist/server/src/mcp/handlers/read-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/handlers/write-handlers.d.ts.map +1 -1
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts +9 -14
- package/dist/server/src/mcp/register-upload-mcp-tools.d.ts.map +1 -1
- package/dist/server/src/services/extensions/utils.d.ts +11 -11
- package/dist/server/src/services/image-manipulation.d.ts +1 -1
- package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +1 -1
- package/dist/server/src/types.d.ts +64 -12
- package/dist/server/src/types.d.ts.map +1 -1
- package/package.json +8 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkMoveDialog.js","sources":["../../../../../admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BulkMoveDialog.js","sources":["../../../../../admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst EMPTY_SELECTED: NonNullable<BulkMoveDialogProps['selected']> = [];\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({\n onClose,\n selected = EMPTY_SELECTED,\n currentFolder,\n}: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["EMPTY_SELECTED","BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ import 'qs';
|
|
|
14
14
|
import '../../utils/urlYupSchema.mjs';
|
|
15
15
|
import { SelectTree } from '../SelectTree/SelectTree.mjs';
|
|
16
16
|
|
|
17
|
-
const
|
|
17
|
+
const EMPTY_SELECTED = [];
|
|
18
|
+
const BulkMoveDialog = ({ onClose, selected = EMPTY_SELECTED, currentFolder })=>{
|
|
18
19
|
const { formatMessage } = useIntl();
|
|
19
20
|
const { data: folderStructure, isLoading } = useFolderStructure();
|
|
20
21
|
const { move } = useBulkMove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkMoveDialog.mjs","sources":["../../../../../admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({ onClose, selected = [], currentFolder }: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BulkMoveDialog.mjs","sources":["../../../../../admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.tsx"],"sourcesContent":["import { Button, Flex, Grid, Field, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\n\nimport { File } from '../../../../../shared/contracts/files';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad, normalizeAPIError } from '../../utils';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { OptionSelectTree } from '../SelectTree/SelectTree';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst EMPTY_SELECTED: NonNullable<BulkMoveDialogProps['selected']> = [];\n\ntype InitialFormData = {\n destination:\n | {\n value: string | number;\n label: string;\n }\n | string;\n};\n\ninterface FolderWithType extends Folder {\n type: string;\n}\n\ninterface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkMoveDialogProps {\n onClose: () => void;\n selected?: Array<FolderWithType | FileWithType>;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkMoveDialog = ({\n onClose,\n selected = EMPTY_SELECTED,\n currentFolder,\n}: BulkMoveDialogProps) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (\n values: InitialFormData,\n { setErrors }: { setErrors: (errors: FormikErrors<InitialFormData>) => void }\n ) => {\n try {\n if (typeof values.destination !== 'string') {\n const destinationValue = values.destination.value;\n await move(destinationValue, selected);\n onClose();\n }\n } catch (error) {\n const normalizedError = normalizeAPIError(error as FetchError)!;\n\n if (normalizedError && 'errors' in normalizedError) {\n const formikErrors = normalizedError.errors?.reduce<Record<string, string>>(\n (acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n }\n };\n\n if (isLoading) {\n return (\n <Modal.Content>\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </Modal.Content>\n );\n }\n\n const initialFormData: InitialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <Modal.Content>\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-destination\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure as OptionSelectTree[]}\n onChange={(value: Record<string, string | number>) => {\n setFieldValue('destination', value);\n }}\n defaultValue={\n typeof values.destination !== 'string' ? values.destination : undefined\n }\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography variant=\"pi\" tag=\"p\" textColor=\"danger600\">\n {errors.destination}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n\n <Modal.Footer>\n <Modal.Close>\n <Button variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Close>\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n </Modal.Content>\n );\n};\n"],"names":["EMPTY_SELECTED","BulkMoveDialog","onClose","selected","currentFolder","formatMessage","useIntl","data","folderStructure","isLoading","useFolderStructure","move","useBulkMove","handleSubmit","values","setErrors","destination","destinationValue","value","error","normalizedError","normalizeAPIError","formikErrors","errors","reduce","acc","path","length","defaultMessage","isEmpty","_jsx","Modal","Content","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","id","getTrad","initialFormData","label","name","Formik","validateOnChange","onSubmit","initialValues","setFieldValue","_jsxs","Form","noValidate","Header","Title","Grid","Root","gap","Item","xs","direction","alignItems","Field","Label","SelectTree","options","onChange","defaultValue","undefined","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Close","Button","type","loading"],"mappings":"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"}
|
|
@@ -49,6 +49,8 @@ var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
|
49
49
|
var isEqual__default = /*#__PURE__*/_interopDefault(isEqual);
|
|
50
50
|
var yup__namespace = /*#__PURE__*/_interopNamespace(yup);
|
|
51
51
|
|
|
52
|
+
const EMPTY_OMIT_FIELDS = [];
|
|
53
|
+
const EMPTY_OMIT_ACTIONS = [];
|
|
52
54
|
const LoadingBody = styledComponents.styled(designSystem.Flex)`
|
|
53
55
|
/* 80px are coming from the Tabs component that is not included in the ModalBody */
|
|
54
56
|
min-height: ${()=>`calc(60dvh + 8rem)`};
|
|
@@ -74,7 +76,7 @@ const toFolderId = (value)=>{
|
|
|
74
76
|
const parsed = Number(value);
|
|
75
77
|
return Number.isFinite(parsed) ? parsed : undefined;
|
|
76
78
|
};
|
|
77
|
-
const EditAssetContent = ({ onClose, asset, initialFolderId = null, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields =
|
|
79
|
+
const EditAssetContent = ({ onClose, asset, initialFolderId = null, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = EMPTY_OMIT_FIELDS, omitActions = EMPTY_OMIT_ACTIONS })=>{
|
|
78
80
|
const { formatMessage, formatDate } = reactIntl.useIntl();
|
|
79
81
|
const { trackUsage } = useTracking.useTracking();
|
|
80
82
|
const submitButtonRef = React__namespace.useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditAssetContent.js","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditAssetContent.js","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst EMPTY_OMIT_FIELDS: NonNullable<EditAssetContentProps['omitFields']> = [];\nconst EMPTY_OMIT_ACTIONS: NonNullable<EditAssetContentProps['omitActions']> = [];\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = EMPTY_OMIT_FIELDS,\n omitActions = EMPTY_OMIT_ACTIONS,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["EMPTY_OMIT_FIELDS","EMPTY_OMIT_ACTIONS","LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
@@ -23,6 +23,8 @@ import { DialogHeader } from './DialogHeader.mjs';
|
|
|
23
23
|
import { PreviewBox } from './PreviewBox/PreviewBox.mjs';
|
|
24
24
|
import { ReplaceMediaButton } from './ReplaceMediaButton.mjs';
|
|
25
25
|
|
|
26
|
+
const EMPTY_OMIT_FIELDS = [];
|
|
27
|
+
const EMPTY_OMIT_ACTIONS = [];
|
|
26
28
|
const LoadingBody = styled(Flex)`
|
|
27
29
|
/* 80px are coming from the Tabs component that is not included in the ModalBody */
|
|
28
30
|
min-height: ${()=>`calc(60dvh + 8rem)`};
|
|
@@ -48,7 +50,7 @@ const toFolderId = (value)=>{
|
|
|
48
50
|
const parsed = Number(value);
|
|
49
51
|
return Number.isFinite(parsed) ? parsed : undefined;
|
|
50
52
|
};
|
|
51
|
-
const EditAssetContent = ({ onClose, asset, initialFolderId = null, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields =
|
|
53
|
+
const EditAssetContent = ({ onClose, asset, initialFolderId = null, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = EMPTY_OMIT_FIELDS, omitActions = EMPTY_OMIT_ACTIONS })=>{
|
|
52
54
|
const { formatMessage, formatDate } = useIntl();
|
|
53
55
|
const { trackUsage } = useTracking();
|
|
54
56
|
const submitButtonRef = React.useRef(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditAssetContent.mjs","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditAssetContent.mjs","sources":["../../../../../admin/src/legacy/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../shared/contracts/files';\n\nconst EMPTY_OMIT_FIELDS: NonNullable<EditAssetContentProps['omitFields']> = [];\nconst EMPTY_OMIT_ACTIONS: NonNullable<EditAssetContentProps['omitActions']> = [];\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n initialFolderId?: string | number | null;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nconst toFolderId = (value: string | number | null | undefined): number | undefined => {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (typeof value === 'number') {\n return Number.isFinite(value) ? value : undefined;\n }\n\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n};\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n initialFolderId = null,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = EMPTY_OMIT_FIELDS,\n omitActions = EMPTY_OMIT_ACTIONS,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id ?? toFolderId(initialFolderId);\n const initialFormData: FormInitialData = !folderStructureIsLoading\n ? {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n }\n : {};\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["EMPTY_OMIT_FIELDS","EMPTY_OMIT_ACTIONS","LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","toFolderId","value","undefined","Number","isFinite","parsed","EditAssetContent","onClose","asset","initialFolderId","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n
|
|
1
|
+
{"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n
|
|
1
|
+
{"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":";;;AAAA;AAuBA,kFACA,MAAMA,WAAAA,GAAc,CAACC,GAAAA,GAAAA;AACnB,IAAA,IAAIC,KAAAA,CAAMC,OAAO,CAACF,GAAAA,CAAAA,EAAM,OAAOA,GAAAA;IAC/B,IAAIA,GAAAA,IAAO,OAAOA,GAAAA,KAAQ,QAAA,EAAU;QAClC,MAAMG,MAAAA,GAASC,MAAAA,CAAOD,MAAM,CAACH,GAAAA,CAAAA;AAC7B,QAAA,IAAIG,MAAAA,CAAOE,MAAM,GAAG,CAAA,IAAKF,MAAAA,CAAOG,KAAK,CAAC,CAACC,CAAAA,GAAM,OAAOA,CAAAA,KAAM,QAAA,CAAA,EAAW,OAAOJ,MAAAA;AAC9E,IAAA;IACA,OAAOK,SAAAA;AACT,CAAA;AAwBO,MAAMC,aAAa,CAAC,EAAEC,cAAc,EAAEC,aAAa,EAAEC,cAAc,EAAmB,GAAA;AAC3F,IAAA,MAAMC,cAAc,CAACC,MAAAA,GAAAA;AACnB,QAAA,MAAM,CAACC,IAAAA,CAAK,GAAGX,MAAAA,CAAOY,IAAI,CAACF,MAAAA,CAAAA;QAC3B,MAAMG,SAAAA,GAAYH,MAAM,CAACC,IAAAA,CAAK;AAC9B,QAAA,MAAM,CAACG,UAAAA,CAAW,GAAGd,MAAAA,CAAOY,IAAI,CAACC,SAAAA,CAAAA;QACjC,MAAME,WAAAA,GAAcF,SAAU,CAACC,UAAAA,CAAW;AAE1C,QAAA,MAAME,WAAAA,GAAcV,cAAAA,CAAeI,MAAM,CAAC,CAACO,UAAAA,GAAAA;YACzC,IAAI,OAAOF,gBAAgB,QAAA,EAAU;AACnC,gBAAA,OAAOE,UAAU,CAACN,IAAAA,CAAK,GAAGG,WAAW,KAAKC,WAAAA;AAC5C,YAAA;AACA,YAAA,IAAI,OAAOA,WAAAA,KAAgB,QAAA,IAAYA,WAAAA,KAAgB,IAAA,EAAM;AAC3D,gBAAA,OAAOG,IAAAA,CAAKC,SAAS,CAACF,UAAU,CAACN,IAAAA,CAAK,GAAGG,UAAAA,CAAW,CAAA,KAAMI,IAAAA,CAAKC,SAAS,CAACJ,WAAAA,CAAAA;AAC3E,YAAA;YACA,OAAO,IAAA;AACT,QAAA,CAAA,CAAA;QAEAP,cAAAA,CAAeQ,WAAAA,CAAAA;AACjB,IAAA,CAAA;AAEA,IAAA,OAAOV,cAAAA,CAAec,GAAG,CAAC,CAACV,MAAAA,EAAQW,CAAAA,GAAAA;AACjC,QAAA,MAAMC,gBAAgBtB,MAAAA,CAAOY,IAAI,CAACF,MAAAA,CAAO,CAAC,CAAA,CAAE;QAC5C,MAAMa,SAAAA,GAAYhB,cAAciB,IAAI,CAAC,CAAC,EAAEb,IAAI,EAAE,GAAKA,IAAAA,KAASW,aAAAA,CAAAA;QAE5D,IAAI,CAACC,WAAW,OAAO,IAAA;QAEvB,MAAMV,SAAAA,GAAYH,MAAM,CAACY,aAAAA,CAAc;AACvC,QAAA,MAAMG,WAAWzB,MAAAA,CAAOY,IAAI,CAACC,SAAAA,CAAW,CAAC,CAAA,CAAE;QAC3C,MAAMa,QAAAA,GAAWb,SAAU,CAACY,QAAAA,CAAS;QAErC,IAAIE,KAAAA;QACJ,IAAI9B,KAAAA,CAAMC,OAAO,CAAC4B,QAAAA,CAAAA,EAAW;YAC3BC,KAAAA,GAAQD,QAAAA,CAASE,IAAI,CAAC,IAAA,CAAA;AACxB,QAAA,CAAA,MAAO,IAAI,OAAOF,QAAAA,KAAa,QAAA,IAAYA,aAAa,IAAA,EAAM;YAC5D,MAAMG,KAAAA,GAAQ,QAACH,CAAqCI,SAAS;YAC7D,MAAMC,GAAAA,GAAMpC,YAAYkC,KAAAA,IAASH,QAAAA,CAAAA;YACjCC,KAAAA,GAAQI,GAAAA,GAAMA,GAAAA,CAAIH,IAAI,CAAC,IAAA,CAAA,GAAQ5B,OAAOD,MAAM,CAAC2B,QAAAA,CAAAA,CAAUE,IAAI,CAAC,IAAA,CAAA;QAC9D,CAAA,MAAO;YACLD,KAAAA,GAAQD,QAAAA;AACV,QAAA;AAEA,QAAA,IAAIM,iBAAAA,GAAoBP,QAAAA;QACxB,IAAIF,SAAAA,CAAUZ,IAAI,KAAK,MAAA,EAAQ;YAC7B,MAAMsB,SAAAA,GAAYpC,MAAMC,OAAO,CAAC4B,YAC5BA,QAAAA,GACA/B,WAAAA,CAAY,QAAC+B,EAAsCI,SAAAA,IAAaJ,QAAAA,CAAAA;AAEpE,YAAA,IAAIO,WAAWC,QAAAA,CAAS,OAAA,CAAA,IAAYD,SAAAA,CAAUC,QAAQ,CAAC,OAAA,CAAA,EAAU;gBAC/DP,KAAAA,GAAQ,MAAA;gBACRK,iBAAAA,GAAoBP,QAAAA,KAAa,SAAS,KAAA,GAAQ,KAAA;YACpD,CAAA,MAAO;gBACLO,iBAAAA,GAAoBP,QAAAA,KAAa,cAAc,KAAA,GAAQ,KAAA;AACzD,YAAA;AACF,QAAA;AAEA,QAAA,qBACEU,GAAA,CAACC,SAAAA,EAAAA;YAGCb,SAAAA,EAAWA,SAAAA;YACXb,MAAAA,EAAQA,MAAAA;YACR2B,OAAAA,EAAS5B,WAAAA;YACTgB,QAAAA,EAAUO,iBAAAA;YACVL,KAAAA,EAAOA;WALF,CAAA,EAAGL,aAAAA,CAAc,CAAC,EAAED,CAAAA,CAAAA,CAAG,CAAA;AAQlC,IAAA,CAAA,CAAA;AACF;;;;"}
|