@strapi/upload 5.30.0 → 5.30.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ai/components/AIAssetCard.js +27 -7
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIAssetCard.mjs +21 -1
- package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js +1 -1
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs +1 -1
- package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.js +5 -4
- package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs +2 -1
- package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.js +1 -1
- package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.js +3 -7
- package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/DocAssetCard.mjs +3 -7
- package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -1
- package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +5 -4
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +2 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +2 -0
- package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -1
- package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +1 -1
- package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +15 -34
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +15 -34
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +3 -2
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +2 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -1
- package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
- package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterList.js.map +1 -1
- package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
- package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +8 -10
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +5 -7
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +1 -0
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
- package/dist/admin/components/SelectTree/Option.js.map +1 -1
- package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
- package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.js +1 -0
- package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
- package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
- package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +1 -1
- package/dist/admin/components/TableList/CellContent.mjs +1 -1
- package/dist/admin/components/TableList/PreviewCell.js +5 -4
- package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
- package/dist/admin/components/TableList/PreviewCell.mjs +2 -1
- package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
- package/dist/admin/components/TableList/TableList.js +1 -0
- package/dist/admin/components/TableList/TableList.js.map +1 -1
- package/dist/admin/components/TableList/TableList.mjs +1 -0
- package/dist/admin/components/TableList/TableList.mjs.map +1 -1
- package/dist/admin/components/TableList/TableRows.js +1 -0
- package/dist/admin/components/TableList/TableRows.js.map +1 -1
- package/dist/admin/components/TableList/TableRows.mjs +1 -0
- package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +1 -0
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
- package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
- package/dist/admin/constants.js +5 -10
- package/dist/admin/constants.js.map +1 -1
- package/dist/admin/constants.mjs +5 -11
- package/dist/admin/constants.mjs.map +1 -1
- package/dist/admin/enums.js +20 -0
- package/dist/admin/enums.js.map +1 -0
- package/dist/admin/enums.mjs +17 -0
- package/dist/admin/enums.mjs.map +1 -0
- package/dist/admin/hooks/useBulkEdit.js +1 -1
- package/dist/admin/hooks/useBulkEdit.mjs +1 -1
- package/dist/admin/hooks/useBulkMove.js +1 -1
- package/dist/admin/hooks/useBulkMove.mjs +1 -1
- package/dist/admin/hooks/useBulkRemove.js +1 -1
- package/dist/admin/hooks/useBulkRemove.mjs +1 -1
- package/dist/admin/hooks/useEditAsset.js +1 -1
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.mjs +1 -1
- package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
- package/dist/admin/hooks/useEditFolder.js.map +1 -1
- package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolder.js +1 -1
- package/dist/admin/hooks/useFolder.js.map +1 -1
- package/dist/admin/hooks/useFolder.mjs +1 -1
- package/dist/admin/hooks/useFolder.mjs.map +1 -1
- package/dist/admin/hooks/useFolderStructure.js +1 -1
- package/dist/admin/hooks/useFolderStructure.mjs +1 -1
- package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
- package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
- package/dist/admin/hooks/useTracking.js +4 -1
- package/dist/admin/hooks/useTracking.js.map +1 -1
- package/dist/admin/hooks/useTracking.mjs +5 -2
- package/dist/admin/hooks/useTracking.mjs.map +1 -1
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/hooks/useUpload.mjs.map +1 -1
- package/dist/admin/index.js +1 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -0
- package/dist/admin/index.mjs.map +1 -1
- package/dist/admin/package.json.js +5 -5
- package/dist/admin/package.json.mjs +5 -5
- package/dist/admin/pages/App/App.js +1 -1
- package/dist/admin/pages/App/App.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
- package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +1 -0
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +1 -0
- package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Filters.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.js +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.mjs +1 -1
- package/dist/admin/pages/App/MediaLibrary/components/Header.mjs.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -0
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -0
- package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
- package/dist/admin/src/components/AssetCard/UploadingAssetCard.d.ts +1 -1
- package/dist/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +1 -1
- package/dist/admin/src/constants.d.ts +0 -6
- package/dist/admin/src/enums.d.ts +12 -0
- package/dist/admin/src/utils/icons.d.ts +14 -0
- package/dist/admin/src/utils/rawFileToAsset.d.ts +1 -1
- package/dist/admin/src/utils/typeFromMime.d.ts +2 -2
- package/dist/admin/src/utils/urlsToAssets.d.ts +1 -1
- package/dist/admin/translations/pt-BR.json.js +75 -7
- package/dist/admin/translations/pt-BR.json.js.map +1 -1
- package/dist/admin/translations/pt-BR.json.mjs +75 -7
- package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/formatBytes.mjs.map +1 -1
- package/dist/admin/utils/formatDuration.js.map +1 -1
- package/dist/admin/utils/formatDuration.mjs.map +1 -1
- package/dist/admin/utils/getFolderURL.js.map +1 -1
- package/dist/admin/utils/getFolderURL.mjs.map +1 -1
- package/dist/admin/utils/getTrad.js.map +1 -1
- package/dist/admin/utils/getTrad.mjs.map +1 -1
- package/dist/admin/utils/icons.js +23 -0
- package/dist/admin/utils/icons.js.map +1 -0
- package/dist/admin/utils/icons.mjs +19 -0
- package/dist/admin/utils/icons.mjs.map +1 -0
- package/dist/admin/utils/normalizeAPIError.js.map +1 -1
- package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
- package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
- package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
- package/dist/admin/utils/typeFromMime.js +15 -11
- package/dist/admin/utils/typeFromMime.js.map +1 -1
- package/dist/admin/utils/typeFromMime.mjs +15 -11
- package/dist/admin/utils/typeFromMime.mjs.map +1 -1
- package/dist/server/controllers/admin-folder-file.js.map +1 -1
- package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
- package/dist/server/controllers/utils/folders.js.map +1 -1
- package/dist/server/controllers/utils/folders.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
- package/dist/server/controllers/validation/admin/folder.js +1 -1
- package/dist/server/controllers/validation/admin/folder.js.map +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs +1 -1
- package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/services/ai-metadata.js.map +1 -1
- package/dist/server/services/ai-metadata.mjs.map +1 -1
- package/dist/server/services/api-upload-folder.js.map +1 -1
- package/dist/server/services/api-upload-folder.mjs.map +1 -1
- package/dist/server/services/folder.js.map +1 -1
- package/dist/server/services/folder.mjs.map +1 -1
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/image-manipulation.mjs.map +1 -1
- package/dist/server/services/metrics.js +4 -1
- package/dist/server/services/metrics.js.map +1 -1
- package/dist/server/services/metrics.mjs +4 -1
- package/dist/server/services/metrics.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/services/metrics.d.ts.map +1 -1
- package/dist/server/utils/cron.js.map +1 -1
- package/dist/server/utils/cron.mjs.map +1 -1
- package/package.json +5 -5
|
@@ -10,7 +10,7 @@ var styledComponents = require('styled-components');
|
|
|
10
10
|
var AudioPreview = require('../../components/AssetCard/AudioPreview.js');
|
|
11
11
|
var VideoPreview = require('../../components/AssetCard/VideoPreview.js');
|
|
12
12
|
var EditAssetContent = require('../../components/EditAssetDialog/EditAssetContent.js');
|
|
13
|
-
var
|
|
13
|
+
var enums = require('../../enums.js');
|
|
14
14
|
var useMediaLibraryPermissions = require('../../hooks/useMediaLibraryPermissions.js');
|
|
15
15
|
var useRemoveAsset = require('../../hooks/useRemoveAsset.js');
|
|
16
16
|
var prefixFileUrlWithBackendUrl = require('../../utils/prefixFileUrlWithBackendUrl.js');
|
|
@@ -201,13 +201,13 @@ const Asset = ({ assetType, thumbnailUrl, assetUrl, asset })=>{
|
|
|
201
201
|
const [duration, setDuration] = React__namespace.useState();
|
|
202
202
|
const formattedDuration = duration ? formatDuration.formatDuration(duration) : undefined;
|
|
203
203
|
switch(assetType){
|
|
204
|
-
case
|
|
204
|
+
case enums.AssetType.Image:
|
|
205
205
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardAsset, {
|
|
206
206
|
src: thumbnailUrl,
|
|
207
207
|
size: "S",
|
|
208
208
|
alt: asset.alternativeText || asset.name
|
|
209
209
|
});
|
|
210
|
-
case
|
|
210
|
+
case enums.AssetType.Video:
|
|
211
211
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardAsset, {
|
|
212
212
|
size: "S",
|
|
213
213
|
children: /*#__PURE__*/ jsxRuntime.jsxs(VideoPreviewWrapper, {
|
|
@@ -224,7 +224,7 @@ const Asset = ({ assetType, thumbnailUrl, assetUrl, asset })=>{
|
|
|
224
224
|
]
|
|
225
225
|
})
|
|
226
226
|
});
|
|
227
|
-
case
|
|
227
|
+
case enums.AssetType.Audio:
|
|
228
228
|
return /*#__PURE__*/ jsxRuntime.jsx(designSystem.CardAsset, {
|
|
229
229
|
size: "S",
|
|
230
230
|
children: /*#__PURE__*/ jsxRuntime.jsx(AudioPreviewWrapper, {
|
|
@@ -258,21 +258,41 @@ const StyledCard = styledComponents.styled(designSystem.Card)`
|
|
|
258
258
|
`;
|
|
259
259
|
const getAssetBadgeLabel = (assetType)=>{
|
|
260
260
|
switch(assetType){
|
|
261
|
-
case
|
|
261
|
+
case enums.AssetType.Image:
|
|
262
262
|
return {
|
|
263
263
|
id: getTrad.getTrad('settings.section.image.label'),
|
|
264
264
|
defaultMessage: 'IMAGE'
|
|
265
265
|
};
|
|
266
|
-
case
|
|
266
|
+
case enums.AssetType.Video:
|
|
267
267
|
return {
|
|
268
268
|
id: getTrad.getTrad('settings.section.video.label'),
|
|
269
269
|
defaultMessage: 'VIDEO'
|
|
270
270
|
};
|
|
271
|
-
case
|
|
271
|
+
case enums.AssetType.Audio:
|
|
272
272
|
return {
|
|
273
273
|
id: getTrad.getTrad('settings.section.audio.label'),
|
|
274
274
|
defaultMessage: 'AUDIO'
|
|
275
275
|
};
|
|
276
|
+
case enums.DocType.Pdf:
|
|
277
|
+
return {
|
|
278
|
+
id: getTrad.getTrad('settings.section.pdf.label'),
|
|
279
|
+
defaultMessage: 'PDF'
|
|
280
|
+
};
|
|
281
|
+
case enums.DocType.Csv:
|
|
282
|
+
return {
|
|
283
|
+
id: getTrad.getTrad('settings.section.csv.label'),
|
|
284
|
+
defaultMessage: 'CSV'
|
|
285
|
+
};
|
|
286
|
+
case enums.DocType.Xls:
|
|
287
|
+
return {
|
|
288
|
+
id: getTrad.getTrad('settings.section.xls.label'),
|
|
289
|
+
defaultMessage: 'XLS'
|
|
290
|
+
};
|
|
291
|
+
case enums.DocType.Zip:
|
|
292
|
+
return {
|
|
293
|
+
id: getTrad.getTrad('settings.section.zip.label'),
|
|
294
|
+
defaultMessage: 'ZIP'
|
|
295
|
+
};
|
|
276
296
|
default:
|
|
277
297
|
return {
|
|
278
298
|
id: getTrad.getTrad('settings.section.doc.label'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssetCard.js","sources":["../../../../admin/src/ai/components/AIAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Card,\n CardAction,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CardTimer,\n Field,\n Flex,\n Grid,\n TextInput,\n Typography,\n IconButton,\n Dialog,\n Modal,\n} from '@strapi/design-system';\nimport { Pencil, Sparkle, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AudioPreview } from '../../components/AssetCard/AudioPreview';\nimport { VideoPreview } from '../../components/AssetCard/VideoPreview';\nimport { type Asset, EditAssetContent } from '../../components/EditAssetDialog/EditAssetContent';\nimport { AssetType } from '../../constants';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useRemoveAsset } from '../../hooks/useRemoveAsset';\nimport {\n formatBytes,\n formatDuration,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { typeFromMime } from '../../utils/typeFromMime';\n\nimport { useAIUploadModalContext } from './AIUploadModal';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst CardActionsContainer = styled(CardAction)`\n opacity: 0;\n z-index: 1;\n\n &:focus-within {\n opacity: 1;\n }\n`;\n\nconst CardContainer = styled(Box)`\n background: ${({ theme }) => theme.colors.neutral0};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n\n &:hover {\n ${CardActionsContainer} {\n opacity: 1;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardActions\n * -----------------------------------------------------------------------------------------------*/\n\nconst AssetCardActions = ({ asset }: { asset: File }) => {\n const { formatMessage } = useIntl();\n const dispatch = useAIUploadModalContext('AssetCardActions', (s) => s.dispatch);\n const state = useAIUploadModalContext('AssetCardActions', (s) => s.state);\n const onClose = useAIUploadModalContext('AssetCardActions', (s) => s.onClose);\n const { canUpdate, canCopyLink, canDownload } = useMediaLibraryPermissions();\n\n const [isEditModalOpen, setIsEditModalOpen] = React.useState(false);\n\n const { removeAsset } = useRemoveAsset(() => {});\n\n const handleConfirmRemove = async (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event?.preventDefault();\n await removeAsset(asset.id);\n dispatch({\n type: 'remove_uploaded_asset',\n payload: { id: asset.id },\n });\n\n // Close modal if this was the last asset\n if (state.uploadedAssets.length === 1) {\n onClose();\n }\n };\n\n const handlePropagationClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n const handleEditAsset = (editedAsset?: File | null) => {\n if (editedAsset) {\n dispatch({\n type: 'edit_uploaded_asset',\n payload: { editedAsset },\n });\n\n setIsEditModalOpen(false);\n }\n };\n\n return (\n <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n <Dialog.Root>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.remove-selection'),\n defaultMessage: 'Remove from selection',\n })}\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n\n <Modal.Root open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>\n <Modal.Trigger>\n <IconButton\n label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n >\n <Pencil />\n </IconButton>\n </Modal.Trigger>\n <Modal.Content>\n <EditAssetContent\n // Is Local must be set to false to trigger the correct branch of logic in the EditAssetContent on submit\n asset={\n {\n ...asset,\n isLocal: false,\n folder: typeof asset.folder === 'number' ? { id: asset.folder } : asset.folder,\n } as Asset\n }\n onClose={(arg) => handleEditAsset(arg as File)}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n omitFields={['caption', 'alternativeText']}\n omitActions={['replace']}\n />\n </Modal.Content>\n </Modal.Root>\n </CardActionsContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Asset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetProps {\n assetType: AssetType;\n thumbnailUrl: string;\n assetUrl: string;\n asset: File;\n}\n\ninterface AssetCardProps {\n asset: File;\n onCaptionChange: (caption: string) => void;\n onAltTextChange: (altText: string) => void;\n wasCaptionChanged: boolean;\n wasAltTextChanged: boolean;\n}\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n position: relative;\n height: 100%;\n overflow: hidden;\n\n canvas,\n video {\n display: block;\n pointer-events: none;\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n\nconst VideoTimerOverlay = styled(CardTimer)`\n position: absolute;\n bottom: 0.5rem;\n right: 0.5rem;\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n canvas,\n audio {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n`;\n\nconst Asset = ({ assetType, thumbnailUrl, assetUrl, asset }: AssetProps) => {\n const [duration, setDuration] = React.useState<number>();\n const formattedDuration = duration ? formatDuration(duration) : undefined;\n\n switch (assetType) {\n case AssetType.Image:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n case AssetType.Video:\n return (\n <CardAsset size=\"S\">\n <VideoPreviewWrapper>\n <VideoPreview\n url={assetUrl}\n mime={asset.mime || 'video/mp4'}\n onLoadDuration={setDuration}\n alt={asset.alternativeText || asset.name}\n />\n {formattedDuration && <VideoTimerOverlay>{formattedDuration}</VideoTimerOverlay>}\n </VideoPreviewWrapper>\n </CardAsset>\n );\n case AssetType.Audio:\n return (\n <CardAsset size=\"S\">\n <AudioPreviewWrapper>\n <AudioPreview url={assetUrl} alt={asset.alternativeText || asset.name} />\n </AudioPreviewWrapper>\n </CardAsset>\n );\n default:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst StyledCard = styled(Card)`\n width: 100%;\n height: 100%;\n border: none;\n box-shadow: none;\n border-radius: 0;\n padding: 0;\n`;\n\nconst getAssetBadgeLabel = (assetType: AssetType) => {\n switch (assetType) {\n case AssetType.Image:\n return { id: getTrad('settings.section.image.label'), defaultMessage: 'IMAGE' };\n case AssetType.Video:\n return { id: getTrad('settings.section.video.label'), defaultMessage: 'VIDEO' };\n case AssetType.Audio:\n return { id: getTrad('settings.section.audio.label'), defaultMessage: 'AUDIO' };\n default:\n return { id: getTrad('settings.section.doc.label'), defaultMessage: 'DOC' };\n }\n};\n\nexport const AIAssetCard = ({\n asset,\n onCaptionChange,\n onAltTextChange,\n wasAltTextChanged,\n wasCaptionChanged,\n}: AssetCardProps) => {\n const { formatMessage } = useIntl();\n\n const assetType = typeFromMime(asset.mime || '');\n const thumbnailUrl =\n prefixFileUrlWithBackendUrl(asset?.formats?.thumbnail?.url || asset.url) || '';\n const assetUrl = prefixFileUrlWithBackendUrl(asset.url) || '';\n const subtitle = asset.height && asset.width ? ` - ${asset.width}x${asset.height}` : '';\n const formattedSize = asset.size ? formatBytes(asset.size) : '';\n const fullSubtitle = `${subtitle}${subtitle && formattedSize ? ' - ' : ''}${formattedSize}`;\n\n const [caption, setCaption] = React.useState(asset.caption || '');\n React.useEffect(() => {\n onCaptionChange(caption);\n }, [caption, onCaptionChange]);\n\n const [altText, setAltText] = React.useState(asset.alternativeText || '');\n React.useEffect(() => {\n onAltTextChange(altText);\n }, [altText, onAltTextChange]);\n\n return (\n <CardContainer>\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <StyledCard width=\"100%\" height=\"100%\" shadow=\"none\" borderRadius={0} padding={0}>\n <CardHeader style={{ borderStyle: 'none' }}>\n <AssetCardActions asset={asset} />\n <Asset\n assetType={assetType}\n thumbnailUrl={thumbnailUrl}\n assetUrl={assetUrl}\n asset={asset}\n />\n </CardHeader>\n <StyledCardBody>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\">\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n <CardBadge>{formatMessage(getAssetBadgeLabel(assetType))}</CardBadge>\n </Flex>\n <Flex>\n <CardSubtitle>\n <Extension>{getFileExtension(asset.ext)}</Extension>\n {fullSubtitle}\n </CardSubtitle>\n </Flex>\n </CardContent>\n </StyledCardBody>\n </StyledCard>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Field.Root name=\"caption\">\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n </Flex>\n <TextInput\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-caption'),\n defaultMessage: 'Enter caption',\n })}\n endAction={\n !wasCaptionChanged &&\n asset.caption && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: \"This text will be displayed if the asset can't be shown.\",\n })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n </Flex>\n\n <TextInput\n value={altText}\n onChange={(e) => setAltText(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-alt'),\n defaultMessage: 'Enter alternative text',\n })}\n endAction={\n !wasAltTextChanged &&\n asset.alternativeText && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n <Field.Hint />\n </Field.Root>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </CardContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardSkeletons\n * -----------------------------------------------------------------------------------------------*/\n\nconst SkeletonBox = styled(Box)<{ width?: string; height?: string }>`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.neutral100} 25%,\n ${({ theme }) => theme.colors.neutral150} 50%,\n ${({ theme }) => theme.colors.neutral100} 75%\n );\n background-size: 200% 100%;\n animation: loading 1.5s infinite;\n border-radius: ${({ theme }) => theme.borderRadius};\n width: ${({ width }) => width || '100%'};\n height: ${({ height }) => height || '1rem'};\n\n @keyframes loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n`;\n\nexport const AIAssetCardSkeletons = ({ count = 1 }: { count?: number }) => {\n const skeletons = Array.from({ length: count }, (_, i) => i);\n\n return skeletons.map((index) => (\n <Box\n key={index}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n borderRadius=\"4px\"\n marginBottom={4}\n >\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <Card\n height=\"100%\"\n width=\"100%\"\n borderStyle=\"none\"\n shadow=\"none\"\n borderRadius={0}\n padding={2}\n >\n <Box height=\"150px\" padding={2}>\n <SkeletonBox height=\"100%\" />\n </Box>\n <CardBody style={{ display: 'flex', padding: '8px 4px' }}>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\" marginBottom={1}>\n <SkeletonBox width=\"60%\" height=\"18px\" />\n <SkeletonBox width=\"40px\" height=\"16px\" />\n </Flex>\n <SkeletonBox width=\"80%\" height=\"14px\" />\n </CardContent>\n </CardBody>\n </Card>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Box>\n <SkeletonBox width=\"60px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n </Box>\n\n <Box>\n <SkeletonBox width=\"100px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n <Box marginTop={1}>\n <SkeletonBox width=\"70%\" height=\"12px\" />\n </Box>\n </Box>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </Box>\n ));\n};\n"],"names":["CardActionsContainer","styled","CardAction","CardContainer","Box","theme","colors","neutral0","neutral150","borderRadius","AssetCardActions","asset","formatMessage","useIntl","dispatch","useAIUploadModalContext","s","state","onClose","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","isEditModalOpen","setIsEditModalOpen","React","useState","removeAsset","useRemoveAsset","handleConfirmRemove","event","preventDefault","id","type","payload","uploadedAssets","length","handlePropagationClick","stopPropagation","handleEditAsset","editedAsset","_jsxs","onClick","position","Dialog","Root","_jsx","Trigger","IconButton","label","getTrad","defaultMessage","Trash","ConfirmDialog","onConfirm","Modal","open","onOpenChange","Pencil","Content","EditAssetContent","isLocal","folder","arg","omitFields","omitActions","Extension","span","VideoPreviewWrapper","VideoTimerOverlay","CardTimer","AudioPreviewWrapper","Asset","assetType","thumbnailUrl","assetUrl","duration","setDuration","formattedDuration","formatDuration","undefined","AssetType","Image","CardAsset","src","size","alt","alternativeText","name","Video","VideoPreview","url","mime","onLoadDuration","Audio","AudioPreview","StyledCardBody","CardBody","spaces","StyledCard","Card","getAssetBadgeLabel","AIAssetCard","onCaptionChange","onAltTextChange","wasAltTextChanged","wasCaptionChanged","typeFromMime","prefixFileUrlWithBackendUrl","formats","thumbnail","subtitle","height","width","formattedSize","formatBytes","fullSubtitle","caption","setCaption","useEffect","altText","setAltText","Grid","Item","col","alignItems","shadow","padding","CardHeader","style","borderStyle","CardContent","Flex","justifyContent","Typography","tag","CardTitle","CardBadge","CardSubtitle","getFileExtension","ext","flex","direction","gap","Field","Label","TextInput","value","onChange","e","target","placeholder","endAction","Sparkle","fill","hint","Hint","SkeletonBox","neutral100","AIAssetCardSkeletons","count","skeletons","Array","from","_","i","map","index","background","borderColor","borderWidth","marginBottom","display","marginTop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AIAssetCard.js","sources":["../../../../admin/src/ai/components/AIAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Card,\n CardAction,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CardTimer,\n Field,\n Flex,\n Grid,\n TextInput,\n Typography,\n IconButton,\n Dialog,\n Modal,\n} from '@strapi/design-system';\nimport { Pencil, Sparkle, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AudioPreview } from '../../components/AssetCard/AudioPreview';\nimport { VideoPreview } from '../../components/AssetCard/VideoPreview';\nimport { type Asset, EditAssetContent } from '../../components/EditAssetDialog/EditAssetContent';\nimport { AssetType, DocType } from '../../enums';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useRemoveAsset } from '../../hooks/useRemoveAsset';\nimport {\n formatBytes,\n formatDuration,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { typeFromMime } from '../../utils/typeFromMime';\n\nimport { useAIUploadModalContext } from './AIUploadModal';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst CardActionsContainer = styled(CardAction)`\n opacity: 0;\n z-index: 1;\n\n &:focus-within {\n opacity: 1;\n }\n`;\n\nconst CardContainer = styled(Box)`\n background: ${({ theme }) => theme.colors.neutral0};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n\n &:hover {\n ${CardActionsContainer} {\n opacity: 1;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardActions\n * -----------------------------------------------------------------------------------------------*/\n\nconst AssetCardActions = ({ asset }: { asset: File }) => {\n const { formatMessage } = useIntl();\n const dispatch = useAIUploadModalContext('AssetCardActions', (s) => s.dispatch);\n const state = useAIUploadModalContext('AssetCardActions', (s) => s.state);\n const onClose = useAIUploadModalContext('AssetCardActions', (s) => s.onClose);\n const { canUpdate, canCopyLink, canDownload } = useMediaLibraryPermissions();\n\n const [isEditModalOpen, setIsEditModalOpen] = React.useState(false);\n\n const { removeAsset } = useRemoveAsset(() => {});\n\n const handleConfirmRemove = async (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event?.preventDefault();\n await removeAsset(asset.id);\n dispatch({\n type: 'remove_uploaded_asset',\n payload: { id: asset.id },\n });\n\n // Close modal if this was the last asset\n if (state.uploadedAssets.length === 1) {\n onClose();\n }\n };\n\n const handlePropagationClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n const handleEditAsset = (editedAsset?: File | null) => {\n if (editedAsset) {\n dispatch({\n type: 'edit_uploaded_asset',\n payload: { editedAsset },\n });\n\n setIsEditModalOpen(false);\n }\n };\n\n return (\n <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n <Dialog.Root>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.remove-selection'),\n defaultMessage: 'Remove from selection',\n })}\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n\n <Modal.Root open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>\n <Modal.Trigger>\n <IconButton\n label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n >\n <Pencil />\n </IconButton>\n </Modal.Trigger>\n <Modal.Content>\n <EditAssetContent\n // Is Local must be set to false to trigger the correct branch of logic in the EditAssetContent on submit\n asset={\n {\n ...asset,\n isLocal: false,\n folder: typeof asset.folder === 'number' ? { id: asset.folder } : asset.folder,\n } as Asset\n }\n onClose={(arg) => handleEditAsset(arg as File)}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n omitFields={['caption', 'alternativeText']}\n omitActions={['replace']}\n />\n </Modal.Content>\n </Modal.Root>\n </CardActionsContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Asset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetProps {\n assetType: AssetType | DocType;\n thumbnailUrl: string;\n assetUrl: string;\n asset: File;\n}\n\ninterface AssetCardProps {\n asset: File;\n onCaptionChange: (caption: string) => void;\n onAltTextChange: (altText: string) => void;\n wasCaptionChanged: boolean;\n wasAltTextChanged: boolean;\n}\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n position: relative;\n height: 100%;\n overflow: hidden;\n\n canvas,\n video {\n display: block;\n pointer-events: none;\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n\nconst VideoTimerOverlay = styled(CardTimer)`\n position: absolute;\n bottom: 0.5rem;\n right: 0.5rem;\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n canvas,\n audio {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n`;\n\nconst Asset = ({ assetType, thumbnailUrl, assetUrl, asset }: AssetProps) => {\n const [duration, setDuration] = React.useState<number>();\n const formattedDuration = duration ? formatDuration(duration) : undefined;\n\n switch (assetType) {\n case AssetType.Image:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n case AssetType.Video:\n return (\n <CardAsset size=\"S\">\n <VideoPreviewWrapper>\n <VideoPreview\n url={assetUrl}\n mime={asset.mime || 'video/mp4'}\n onLoadDuration={setDuration}\n alt={asset.alternativeText || asset.name}\n />\n {formattedDuration && <VideoTimerOverlay>{formattedDuration}</VideoTimerOverlay>}\n </VideoPreviewWrapper>\n </CardAsset>\n );\n case AssetType.Audio:\n return (\n <CardAsset size=\"S\">\n <AudioPreviewWrapper>\n <AudioPreview url={assetUrl} alt={asset.alternativeText || asset.name} />\n </AudioPreviewWrapper>\n </CardAsset>\n );\n default:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst StyledCard = styled(Card)`\n width: 100%;\n height: 100%;\n border: none;\n box-shadow: none;\n border-radius: 0;\n padding: 0;\n`;\n\nconst getAssetBadgeLabel = (assetType: AssetType | DocType) => {\n switch (assetType) {\n case AssetType.Image:\n return { id: getTrad('settings.section.image.label'), defaultMessage: 'IMAGE' };\n case AssetType.Video:\n return { id: getTrad('settings.section.video.label'), defaultMessage: 'VIDEO' };\n case AssetType.Audio:\n return { id: getTrad('settings.section.audio.label'), defaultMessage: 'AUDIO' };\n case DocType.Pdf:\n return { id: getTrad('settings.section.pdf.label'), defaultMessage: 'PDF' };\n case DocType.Csv:\n return { id: getTrad('settings.section.csv.label'), defaultMessage: 'CSV' };\n case DocType.Xls:\n return { id: getTrad('settings.section.xls.label'), defaultMessage: 'XLS' };\n case DocType.Zip:\n return { id: getTrad('settings.section.zip.label'), defaultMessage: 'ZIP' };\n default:\n return { id: getTrad('settings.section.doc.label'), defaultMessage: 'DOC' };\n }\n};\n\nexport const AIAssetCard = ({\n asset,\n onCaptionChange,\n onAltTextChange,\n wasAltTextChanged,\n wasCaptionChanged,\n}: AssetCardProps) => {\n const { formatMessage } = useIntl();\n\n const assetType = typeFromMime(asset.mime || '');\n const thumbnailUrl =\n prefixFileUrlWithBackendUrl(asset?.formats?.thumbnail?.url || asset.url) || '';\n const assetUrl = prefixFileUrlWithBackendUrl(asset.url) || '';\n const subtitle = asset.height && asset.width ? ` - ${asset.width}x${asset.height}` : '';\n const formattedSize = asset.size ? formatBytes(asset.size) : '';\n const fullSubtitle = `${subtitle}${subtitle && formattedSize ? ' - ' : ''}${formattedSize}`;\n\n const [caption, setCaption] = React.useState(asset.caption || '');\n React.useEffect(() => {\n onCaptionChange(caption);\n }, [caption, onCaptionChange]);\n\n const [altText, setAltText] = React.useState(asset.alternativeText || '');\n React.useEffect(() => {\n onAltTextChange(altText);\n }, [altText, onAltTextChange]);\n\n return (\n <CardContainer>\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <StyledCard width=\"100%\" height=\"100%\" shadow=\"none\" borderRadius={0} padding={0}>\n <CardHeader style={{ borderStyle: 'none' }}>\n <AssetCardActions asset={asset} />\n <Asset\n assetType={assetType}\n thumbnailUrl={thumbnailUrl}\n assetUrl={assetUrl}\n asset={asset}\n />\n </CardHeader>\n <StyledCardBody>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\">\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n <CardBadge>{formatMessage(getAssetBadgeLabel(assetType))}</CardBadge>\n </Flex>\n <Flex>\n <CardSubtitle>\n <Extension>{getFileExtension(asset.ext)}</Extension>\n {fullSubtitle}\n </CardSubtitle>\n </Flex>\n </CardContent>\n </StyledCardBody>\n </StyledCard>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Field.Root name=\"caption\">\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n </Flex>\n <TextInput\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-caption'),\n defaultMessage: 'Enter caption',\n })}\n endAction={\n !wasCaptionChanged &&\n asset.caption && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: \"This text will be displayed if the asset can't be shown.\",\n })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n </Flex>\n\n <TextInput\n value={altText}\n onChange={(e) => setAltText(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-alt'),\n defaultMessage: 'Enter alternative text',\n })}\n endAction={\n !wasAltTextChanged &&\n asset.alternativeText && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n <Field.Hint />\n </Field.Root>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </CardContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardSkeletons\n * -----------------------------------------------------------------------------------------------*/\n\nconst SkeletonBox = styled(Box)<{ width?: string; height?: string }>`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.neutral100} 25%,\n ${({ theme }) => theme.colors.neutral150} 50%,\n ${({ theme }) => theme.colors.neutral100} 75%\n );\n background-size: 200% 100%;\n animation: loading 1.5s infinite;\n border-radius: ${({ theme }) => theme.borderRadius};\n width: ${({ width }) => width || '100%'};\n height: ${({ height }) => height || '1rem'};\n\n @keyframes loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n`;\n\nexport const AIAssetCardSkeletons = ({ count = 1 }: { count?: number }) => {\n const skeletons = Array.from({ length: count }, (_, i) => i);\n\n return skeletons.map((index) => (\n <Box\n key={index}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n borderRadius=\"4px\"\n marginBottom={4}\n >\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <Card\n height=\"100%\"\n width=\"100%\"\n borderStyle=\"none\"\n shadow=\"none\"\n borderRadius={0}\n padding={2}\n >\n <Box height=\"150px\" padding={2}>\n <SkeletonBox height=\"100%\" />\n </Box>\n <CardBody style={{ display: 'flex', padding: '8px 4px' }}>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\" marginBottom={1}>\n <SkeletonBox width=\"60%\" height=\"18px\" />\n <SkeletonBox width=\"40px\" height=\"16px\" />\n </Flex>\n <SkeletonBox width=\"80%\" height=\"14px\" />\n </CardContent>\n </CardBody>\n </Card>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Box>\n <SkeletonBox width=\"60px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n </Box>\n\n <Box>\n <SkeletonBox width=\"100px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n <Box marginTop={1}>\n <SkeletonBox width=\"70%\" height=\"12px\" />\n </Box>\n </Box>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </Box>\n ));\n};\n"],"names":["CardActionsContainer","styled","CardAction","CardContainer","Box","theme","colors","neutral0","neutral150","borderRadius","AssetCardActions","asset","formatMessage","useIntl","dispatch","useAIUploadModalContext","s","state","onClose","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","isEditModalOpen","setIsEditModalOpen","React","useState","removeAsset","useRemoveAsset","handleConfirmRemove","event","preventDefault","id","type","payload","uploadedAssets","length","handlePropagationClick","stopPropagation","handleEditAsset","editedAsset","_jsxs","onClick","position","Dialog","Root","_jsx","Trigger","IconButton","label","getTrad","defaultMessage","Trash","ConfirmDialog","onConfirm","Modal","open","onOpenChange","Pencil","Content","EditAssetContent","isLocal","folder","arg","omitFields","omitActions","Extension","span","VideoPreviewWrapper","VideoTimerOverlay","CardTimer","AudioPreviewWrapper","Asset","assetType","thumbnailUrl","assetUrl","duration","setDuration","formattedDuration","formatDuration","undefined","AssetType","Image","CardAsset","src","size","alt","alternativeText","name","Video","VideoPreview","url","mime","onLoadDuration","Audio","AudioPreview","StyledCardBody","CardBody","spaces","StyledCard","Card","getAssetBadgeLabel","DocType","Pdf","Csv","Xls","Zip","AIAssetCard","onCaptionChange","onAltTextChange","wasAltTextChanged","wasCaptionChanged","typeFromMime","prefixFileUrlWithBackendUrl","formats","thumbnail","subtitle","height","width","formattedSize","formatBytes","fullSubtitle","caption","setCaption","useEffect","altText","setAltText","Grid","Item","col","alignItems","shadow","padding","CardHeader","style","borderStyle","CardContent","Flex","justifyContent","Typography","tag","CardTitle","CardBadge","CardSubtitle","getFileExtension","ext","flex","direction","gap","Field","Label","TextInput","value","onChange","e","target","placeholder","endAction","Sparkle","fill","hint","Hint","SkeletonBox","neutral100","AIAssetCardSkeletons","count","skeletons","Array","from","_","i","map","index","background","borderColor","borderWidth","marginBottom","display","marginTop"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { styled } from 'styled-components';
|
|
|
8
8
|
import { AudioPreview } from '../../components/AssetCard/AudioPreview.mjs';
|
|
9
9
|
import { VideoPreview } from '../../components/AssetCard/VideoPreview.mjs';
|
|
10
10
|
import { EditAssetContent } from '../../components/EditAssetDialog/EditAssetContent.mjs';
|
|
11
|
-
import { AssetType } from '../../
|
|
11
|
+
import { AssetType, DocType } from '../../enums.mjs';
|
|
12
12
|
import { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions.mjs';
|
|
13
13
|
import { useRemoveAsset } from '../../hooks/useRemoveAsset.mjs';
|
|
14
14
|
import { prefixFileUrlWithBackendUrl } from '../../utils/prefixFileUrlWithBackendUrl.mjs';
|
|
@@ -252,6 +252,26 @@ const getAssetBadgeLabel = (assetType)=>{
|
|
|
252
252
|
id: getTrad('settings.section.audio.label'),
|
|
253
253
|
defaultMessage: 'AUDIO'
|
|
254
254
|
};
|
|
255
|
+
case DocType.Pdf:
|
|
256
|
+
return {
|
|
257
|
+
id: getTrad('settings.section.pdf.label'),
|
|
258
|
+
defaultMessage: 'PDF'
|
|
259
|
+
};
|
|
260
|
+
case DocType.Csv:
|
|
261
|
+
return {
|
|
262
|
+
id: getTrad('settings.section.csv.label'),
|
|
263
|
+
defaultMessage: 'CSV'
|
|
264
|
+
};
|
|
265
|
+
case DocType.Xls:
|
|
266
|
+
return {
|
|
267
|
+
id: getTrad('settings.section.xls.label'),
|
|
268
|
+
defaultMessage: 'XLS'
|
|
269
|
+
};
|
|
270
|
+
case DocType.Zip:
|
|
271
|
+
return {
|
|
272
|
+
id: getTrad('settings.section.zip.label'),
|
|
273
|
+
defaultMessage: 'ZIP'
|
|
274
|
+
};
|
|
255
275
|
default:
|
|
256
276
|
return {
|
|
257
277
|
id: getTrad('settings.section.doc.label'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIAssetCard.mjs","sources":["../../../../admin/src/ai/components/AIAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Card,\n CardAction,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CardTimer,\n Field,\n Flex,\n Grid,\n TextInput,\n Typography,\n IconButton,\n Dialog,\n Modal,\n} from '@strapi/design-system';\nimport { Pencil, Sparkle, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AudioPreview } from '../../components/AssetCard/AudioPreview';\nimport { VideoPreview } from '../../components/AssetCard/VideoPreview';\nimport { type Asset, EditAssetContent } from '../../components/EditAssetDialog/EditAssetContent';\nimport { AssetType } from '../../constants';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useRemoveAsset } from '../../hooks/useRemoveAsset';\nimport {\n formatBytes,\n formatDuration,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { typeFromMime } from '../../utils/typeFromMime';\n\nimport { useAIUploadModalContext } from './AIUploadModal';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst CardActionsContainer = styled(CardAction)`\n opacity: 0;\n z-index: 1;\n\n &:focus-within {\n opacity: 1;\n }\n`;\n\nconst CardContainer = styled(Box)`\n background: ${({ theme }) => theme.colors.neutral0};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n\n &:hover {\n ${CardActionsContainer} {\n opacity: 1;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardActions\n * -----------------------------------------------------------------------------------------------*/\n\nconst AssetCardActions = ({ asset }: { asset: File }) => {\n const { formatMessage } = useIntl();\n const dispatch = useAIUploadModalContext('AssetCardActions', (s) => s.dispatch);\n const state = useAIUploadModalContext('AssetCardActions', (s) => s.state);\n const onClose = useAIUploadModalContext('AssetCardActions', (s) => s.onClose);\n const { canUpdate, canCopyLink, canDownload } = useMediaLibraryPermissions();\n\n const [isEditModalOpen, setIsEditModalOpen] = React.useState(false);\n\n const { removeAsset } = useRemoveAsset(() => {});\n\n const handleConfirmRemove = async (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event?.preventDefault();\n await removeAsset(asset.id);\n dispatch({\n type: 'remove_uploaded_asset',\n payload: { id: asset.id },\n });\n\n // Close modal if this was the last asset\n if (state.uploadedAssets.length === 1) {\n onClose();\n }\n };\n\n const handlePropagationClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n const handleEditAsset = (editedAsset?: File | null) => {\n if (editedAsset) {\n dispatch({\n type: 'edit_uploaded_asset',\n payload: { editedAsset },\n });\n\n setIsEditModalOpen(false);\n }\n };\n\n return (\n <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n <Dialog.Root>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.remove-selection'),\n defaultMessage: 'Remove from selection',\n })}\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n\n <Modal.Root open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>\n <Modal.Trigger>\n <IconButton\n label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n >\n <Pencil />\n </IconButton>\n </Modal.Trigger>\n <Modal.Content>\n <EditAssetContent\n // Is Local must be set to false to trigger the correct branch of logic in the EditAssetContent on submit\n asset={\n {\n ...asset,\n isLocal: false,\n folder: typeof asset.folder === 'number' ? { id: asset.folder } : asset.folder,\n } as Asset\n }\n onClose={(arg) => handleEditAsset(arg as File)}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n omitFields={['caption', 'alternativeText']}\n omitActions={['replace']}\n />\n </Modal.Content>\n </Modal.Root>\n </CardActionsContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Asset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetProps {\n assetType: AssetType;\n thumbnailUrl: string;\n assetUrl: string;\n asset: File;\n}\n\ninterface AssetCardProps {\n asset: File;\n onCaptionChange: (caption: string) => void;\n onAltTextChange: (altText: string) => void;\n wasCaptionChanged: boolean;\n wasAltTextChanged: boolean;\n}\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n position: relative;\n height: 100%;\n overflow: hidden;\n\n canvas,\n video {\n display: block;\n pointer-events: none;\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n\nconst VideoTimerOverlay = styled(CardTimer)`\n position: absolute;\n bottom: 0.5rem;\n right: 0.5rem;\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n canvas,\n audio {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n`;\n\nconst Asset = ({ assetType, thumbnailUrl, assetUrl, asset }: AssetProps) => {\n const [duration, setDuration] = React.useState<number>();\n const formattedDuration = duration ? formatDuration(duration) : undefined;\n\n switch (assetType) {\n case AssetType.Image:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n case AssetType.Video:\n return (\n <CardAsset size=\"S\">\n <VideoPreviewWrapper>\n <VideoPreview\n url={assetUrl}\n mime={asset.mime || 'video/mp4'}\n onLoadDuration={setDuration}\n alt={asset.alternativeText || asset.name}\n />\n {formattedDuration && <VideoTimerOverlay>{formattedDuration}</VideoTimerOverlay>}\n </VideoPreviewWrapper>\n </CardAsset>\n );\n case AssetType.Audio:\n return (\n <CardAsset size=\"S\">\n <AudioPreviewWrapper>\n <AudioPreview url={assetUrl} alt={asset.alternativeText || asset.name} />\n </AudioPreviewWrapper>\n </CardAsset>\n );\n default:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst StyledCard = styled(Card)`\n width: 100%;\n height: 100%;\n border: none;\n box-shadow: none;\n border-radius: 0;\n padding: 0;\n`;\n\nconst getAssetBadgeLabel = (assetType: AssetType) => {\n switch (assetType) {\n case AssetType.Image:\n return { id: getTrad('settings.section.image.label'), defaultMessage: 'IMAGE' };\n case AssetType.Video:\n return { id: getTrad('settings.section.video.label'), defaultMessage: 'VIDEO' };\n case AssetType.Audio:\n return { id: getTrad('settings.section.audio.label'), defaultMessage: 'AUDIO' };\n default:\n return { id: getTrad('settings.section.doc.label'), defaultMessage: 'DOC' };\n }\n};\n\nexport const AIAssetCard = ({\n asset,\n onCaptionChange,\n onAltTextChange,\n wasAltTextChanged,\n wasCaptionChanged,\n}: AssetCardProps) => {\n const { formatMessage } = useIntl();\n\n const assetType = typeFromMime(asset.mime || '');\n const thumbnailUrl =\n prefixFileUrlWithBackendUrl(asset?.formats?.thumbnail?.url || asset.url) || '';\n const assetUrl = prefixFileUrlWithBackendUrl(asset.url) || '';\n const subtitle = asset.height && asset.width ? ` - ${asset.width}x${asset.height}` : '';\n const formattedSize = asset.size ? formatBytes(asset.size) : '';\n const fullSubtitle = `${subtitle}${subtitle && formattedSize ? ' - ' : ''}${formattedSize}`;\n\n const [caption, setCaption] = React.useState(asset.caption || '');\n React.useEffect(() => {\n onCaptionChange(caption);\n }, [caption, onCaptionChange]);\n\n const [altText, setAltText] = React.useState(asset.alternativeText || '');\n React.useEffect(() => {\n onAltTextChange(altText);\n }, [altText, onAltTextChange]);\n\n return (\n <CardContainer>\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <StyledCard width=\"100%\" height=\"100%\" shadow=\"none\" borderRadius={0} padding={0}>\n <CardHeader style={{ borderStyle: 'none' }}>\n <AssetCardActions asset={asset} />\n <Asset\n assetType={assetType}\n thumbnailUrl={thumbnailUrl}\n assetUrl={assetUrl}\n asset={asset}\n />\n </CardHeader>\n <StyledCardBody>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\">\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n <CardBadge>{formatMessage(getAssetBadgeLabel(assetType))}</CardBadge>\n </Flex>\n <Flex>\n <CardSubtitle>\n <Extension>{getFileExtension(asset.ext)}</Extension>\n {fullSubtitle}\n </CardSubtitle>\n </Flex>\n </CardContent>\n </StyledCardBody>\n </StyledCard>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Field.Root name=\"caption\">\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n </Flex>\n <TextInput\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-caption'),\n defaultMessage: 'Enter caption',\n })}\n endAction={\n !wasCaptionChanged &&\n asset.caption && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: \"This text will be displayed if the asset can't be shown.\",\n })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n </Flex>\n\n <TextInput\n value={altText}\n onChange={(e) => setAltText(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-alt'),\n defaultMessage: 'Enter alternative text',\n })}\n endAction={\n !wasAltTextChanged &&\n asset.alternativeText && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n <Field.Hint />\n </Field.Root>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </CardContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardSkeletons\n * -----------------------------------------------------------------------------------------------*/\n\nconst SkeletonBox = styled(Box)<{ width?: string; height?: string }>`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.neutral100} 25%,\n ${({ theme }) => theme.colors.neutral150} 50%,\n ${({ theme }) => theme.colors.neutral100} 75%\n );\n background-size: 200% 100%;\n animation: loading 1.5s infinite;\n border-radius: ${({ theme }) => theme.borderRadius};\n width: ${({ width }) => width || '100%'};\n height: ${({ height }) => height || '1rem'};\n\n @keyframes loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n`;\n\nexport const AIAssetCardSkeletons = ({ count = 1 }: { count?: number }) => {\n const skeletons = Array.from({ length: count }, (_, i) => i);\n\n return skeletons.map((index) => (\n <Box\n key={index}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n borderRadius=\"4px\"\n marginBottom={4}\n >\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <Card\n height=\"100%\"\n width=\"100%\"\n borderStyle=\"none\"\n shadow=\"none\"\n borderRadius={0}\n padding={2}\n >\n <Box height=\"150px\" padding={2}>\n <SkeletonBox height=\"100%\" />\n </Box>\n <CardBody style={{ display: 'flex', padding: '8px 4px' }}>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\" marginBottom={1}>\n <SkeletonBox width=\"60%\" height=\"18px\" />\n <SkeletonBox width=\"40px\" height=\"16px\" />\n </Flex>\n <SkeletonBox width=\"80%\" height=\"14px\" />\n </CardContent>\n </CardBody>\n </Card>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Box>\n <SkeletonBox width=\"60px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n </Box>\n\n <Box>\n <SkeletonBox width=\"100px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n <Box marginTop={1}>\n <SkeletonBox width=\"70%\" height=\"12px\" />\n </Box>\n </Box>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </Box>\n ));\n};\n"],"names":["CardActionsContainer","styled","CardAction","CardContainer","Box","theme","colors","neutral0","neutral150","borderRadius","AssetCardActions","asset","formatMessage","useIntl","dispatch","useAIUploadModalContext","s","state","onClose","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","isEditModalOpen","setIsEditModalOpen","React","useState","removeAsset","useRemoveAsset","handleConfirmRemove","event","preventDefault","id","type","payload","uploadedAssets","length","handlePropagationClick","stopPropagation","handleEditAsset","editedAsset","_jsxs","onClick","position","Dialog","Root","_jsx","Trigger","IconButton","label","getTrad","defaultMessage","Trash","ConfirmDialog","onConfirm","Modal","open","onOpenChange","Pencil","Content","EditAssetContent","isLocal","folder","arg","omitFields","omitActions","Extension","span","VideoPreviewWrapper","VideoTimerOverlay","CardTimer","AudioPreviewWrapper","Asset","assetType","thumbnailUrl","assetUrl","duration","setDuration","formattedDuration","formatDuration","undefined","AssetType","Image","CardAsset","src","size","alt","alternativeText","name","Video","VideoPreview","url","mime","onLoadDuration","Audio","AudioPreview","StyledCardBody","CardBody","spaces","StyledCard","Card","getAssetBadgeLabel","AIAssetCard","onCaptionChange","onAltTextChange","wasAltTextChanged","wasCaptionChanged","typeFromMime","prefixFileUrlWithBackendUrl","formats","thumbnail","subtitle","height","width","formattedSize","formatBytes","fullSubtitle","caption","setCaption","useEffect","altText","setAltText","Grid","Item","col","alignItems","shadow","padding","CardHeader","style","borderStyle","CardContent","Flex","justifyContent","Typography","tag","CardTitle","CardBadge","CardSubtitle","getFileExtension","ext","flex","direction","gap","Field","Label","TextInput","value","onChange","e","target","placeholder","endAction","Sparkle","fill","hint","Hint","SkeletonBox","neutral100","AIAssetCardSkeletons","count","skeletons","Array","from","_","i","map","index","background","borderColor","borderWidth","marginBottom","display","marginTop"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AIAssetCard.mjs","sources":["../../../../admin/src/ai/components/AIAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Card,\n CardAction,\n CardAsset,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n CardTimer,\n Field,\n Flex,\n Grid,\n TextInput,\n Typography,\n IconButton,\n Dialog,\n Modal,\n} from '@strapi/design-system';\nimport { Pencil, Sparkle, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AudioPreview } from '../../components/AssetCard/AudioPreview';\nimport { VideoPreview } from '../../components/AssetCard/VideoPreview';\nimport { type Asset, EditAssetContent } from '../../components/EditAssetDialog/EditAssetContent';\nimport { AssetType, DocType } from '../../enums';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useRemoveAsset } from '../../hooks/useRemoveAsset';\nimport {\n formatBytes,\n formatDuration,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { typeFromMime } from '../../utils/typeFromMime';\n\nimport { useAIUploadModalContext } from './AIUploadModal';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst CardActionsContainer = styled(CardAction)`\n opacity: 0;\n z-index: 1;\n\n &:focus-within {\n opacity: 1;\n }\n`;\n\nconst CardContainer = styled(Box)`\n background: ${({ theme }) => theme.colors.neutral0};\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n border-radius: ${({ theme }) => theme.borderRadius};\n\n &:hover {\n ${CardActionsContainer} {\n opacity: 1;\n }\n }\n`;\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardActions\n * -----------------------------------------------------------------------------------------------*/\n\nconst AssetCardActions = ({ asset }: { asset: File }) => {\n const { formatMessage } = useIntl();\n const dispatch = useAIUploadModalContext('AssetCardActions', (s) => s.dispatch);\n const state = useAIUploadModalContext('AssetCardActions', (s) => s.state);\n const onClose = useAIUploadModalContext('AssetCardActions', (s) => s.onClose);\n const { canUpdate, canCopyLink, canDownload } = useMediaLibraryPermissions();\n\n const [isEditModalOpen, setIsEditModalOpen] = React.useState(false);\n\n const { removeAsset } = useRemoveAsset(() => {});\n\n const handleConfirmRemove = async (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event?.preventDefault();\n await removeAsset(asset.id);\n dispatch({\n type: 'remove_uploaded_asset',\n payload: { id: asset.id },\n });\n\n // Close modal if this was the last asset\n if (state.uploadedAssets.length === 1) {\n onClose();\n }\n };\n\n const handlePropagationClick = (event: React.MouseEvent) => {\n event.stopPropagation();\n };\n\n const handleEditAsset = (editedAsset?: File | null) => {\n if (editedAsset) {\n dispatch({\n type: 'edit_uploaded_asset',\n payload: { editedAsset },\n });\n\n setIsEditModalOpen(false);\n }\n };\n\n return (\n <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n <Dialog.Root>\n <Dialog.Trigger>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.remove-selection'),\n defaultMessage: 'Remove from selection',\n })}\n >\n <Trash />\n </IconButton>\n </Dialog.Trigger>\n <ConfirmDialog onConfirm={handleConfirmRemove} />\n </Dialog.Root>\n\n <Modal.Root open={isEditModalOpen} onOpenChange={setIsEditModalOpen}>\n <Modal.Trigger>\n <IconButton\n label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n >\n <Pencil />\n </IconButton>\n </Modal.Trigger>\n <Modal.Content>\n <EditAssetContent\n // Is Local must be set to false to trigger the correct branch of logic in the EditAssetContent on submit\n asset={\n {\n ...asset,\n isLocal: false,\n folder: typeof asset.folder === 'number' ? { id: asset.folder } : asset.folder,\n } as Asset\n }\n onClose={(arg) => handleEditAsset(arg as File)}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n omitFields={['caption', 'alternativeText']}\n omitActions={['replace']}\n />\n </Modal.Content>\n </Modal.Root>\n </CardActionsContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Asset\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetProps {\n assetType: AssetType | DocType;\n thumbnailUrl: string;\n assetUrl: string;\n asset: File;\n}\n\ninterface AssetCardProps {\n asset: File;\n onCaptionChange: (caption: string) => void;\n onAltTextChange: (altText: string) => void;\n wasCaptionChanged: boolean;\n wasAltTextChanged: boolean;\n}\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n position: relative;\n height: 100%;\n overflow: hidden;\n\n canvas,\n video {\n display: block;\n pointer-events: none;\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: ${({ theme }) => theme.borderRadius};\n }\n`;\n\nconst VideoTimerOverlay = styled(CardTimer)`\n position: absolute;\n bottom: 0.5rem;\n right: 0.5rem;\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n height: 100%;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n\n canvas,\n audio {\n display: block;\n max-width: 100%;\n max-height: 100%;\n }\n`;\n\nconst Asset = ({ assetType, thumbnailUrl, assetUrl, asset }: AssetProps) => {\n const [duration, setDuration] = React.useState<number>();\n const formattedDuration = duration ? formatDuration(duration) : undefined;\n\n switch (assetType) {\n case AssetType.Image:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n case AssetType.Video:\n return (\n <CardAsset size=\"S\">\n <VideoPreviewWrapper>\n <VideoPreview\n url={assetUrl}\n mime={asset.mime || 'video/mp4'}\n onLoadDuration={setDuration}\n alt={asset.alternativeText || asset.name}\n />\n {formattedDuration && <VideoTimerOverlay>{formattedDuration}</VideoTimerOverlay>}\n </VideoPreviewWrapper>\n </CardAsset>\n );\n case AssetType.Audio:\n return (\n <CardAsset size=\"S\">\n <AudioPreviewWrapper>\n <AudioPreview url={assetUrl} alt={asset.alternativeText || asset.name} />\n </AudioPreviewWrapper>\n </CardAsset>\n );\n default:\n return <CardAsset src={thumbnailUrl} size=\"S\" alt={asset.alternativeText || asset.name} />;\n }\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCard\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledCardBody = styled(CardBody)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[2]} ${({ theme }) => theme.spaces[1]};\n`;\n\nconst StyledCard = styled(Card)`\n width: 100%;\n height: 100%;\n border: none;\n box-shadow: none;\n border-radius: 0;\n padding: 0;\n`;\n\nconst getAssetBadgeLabel = (assetType: AssetType | DocType) => {\n switch (assetType) {\n case AssetType.Image:\n return { id: getTrad('settings.section.image.label'), defaultMessage: 'IMAGE' };\n case AssetType.Video:\n return { id: getTrad('settings.section.video.label'), defaultMessage: 'VIDEO' };\n case AssetType.Audio:\n return { id: getTrad('settings.section.audio.label'), defaultMessage: 'AUDIO' };\n case DocType.Pdf:\n return { id: getTrad('settings.section.pdf.label'), defaultMessage: 'PDF' };\n case DocType.Csv:\n return { id: getTrad('settings.section.csv.label'), defaultMessage: 'CSV' };\n case DocType.Xls:\n return { id: getTrad('settings.section.xls.label'), defaultMessage: 'XLS' };\n case DocType.Zip:\n return { id: getTrad('settings.section.zip.label'), defaultMessage: 'ZIP' };\n default:\n return { id: getTrad('settings.section.doc.label'), defaultMessage: 'DOC' };\n }\n};\n\nexport const AIAssetCard = ({\n asset,\n onCaptionChange,\n onAltTextChange,\n wasAltTextChanged,\n wasCaptionChanged,\n}: AssetCardProps) => {\n const { formatMessage } = useIntl();\n\n const assetType = typeFromMime(asset.mime || '');\n const thumbnailUrl =\n prefixFileUrlWithBackendUrl(asset?.formats?.thumbnail?.url || asset.url) || '';\n const assetUrl = prefixFileUrlWithBackendUrl(asset.url) || '';\n const subtitle = asset.height && asset.width ? ` - ${asset.width}x${asset.height}` : '';\n const formattedSize = asset.size ? formatBytes(asset.size) : '';\n const fullSubtitle = `${subtitle}${subtitle && formattedSize ? ' - ' : ''}${formattedSize}`;\n\n const [caption, setCaption] = React.useState(asset.caption || '');\n React.useEffect(() => {\n onCaptionChange(caption);\n }, [caption, onCaptionChange]);\n\n const [altText, setAltText] = React.useState(asset.alternativeText || '');\n React.useEffect(() => {\n onAltTextChange(altText);\n }, [altText, onAltTextChange]);\n\n return (\n <CardContainer>\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <StyledCard width=\"100%\" height=\"100%\" shadow=\"none\" borderRadius={0} padding={0}>\n <CardHeader style={{ borderStyle: 'none' }}>\n <AssetCardActions asset={asset} />\n <Asset\n assetType={assetType}\n thumbnailUrl={thumbnailUrl}\n assetUrl={assetUrl}\n asset={asset}\n />\n </CardHeader>\n <StyledCardBody>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\">\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n <CardBadge>{formatMessage(getAssetBadgeLabel(assetType))}</CardBadge>\n </Flex>\n <Flex>\n <CardSubtitle>\n <Extension>{getFileExtension(asset.ext)}</Extension>\n {fullSubtitle}\n </CardSubtitle>\n </Flex>\n </CardContent>\n </StyledCardBody>\n </StyledCard>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Field.Root name=\"caption\">\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n </Flex>\n <TextInput\n value={caption}\n onChange={(e) => setCaption(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-caption'),\n defaultMessage: 'Enter caption',\n })}\n endAction={\n !wasCaptionChanged &&\n asset.caption && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: \"This text will be displayed if the asset can't be shown.\",\n })}\n >\n <Flex alignItems=\"center\" gap={2}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n </Flex>\n\n <TextInput\n value={altText}\n onChange={(e) => setAltText(e.target.value)}\n placeholder={formatMessage({\n id: getTrad('form.input.placeholder.file-alt'),\n defaultMessage: 'Enter alternative text',\n })}\n endAction={\n !wasAltTextChanged &&\n asset.alternativeText && <Sparkle width=\"16px\" height=\"16px\" fill=\"#AC73E6\" />\n }\n type=\"text\"\n />\n <Field.Hint />\n </Field.Root>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </CardContainer>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetCardSkeletons\n * -----------------------------------------------------------------------------------------------*/\n\nconst SkeletonBox = styled(Box)<{ width?: string; height?: string }>`\n background: linear-gradient(\n 90deg,\n ${({ theme }) => theme.colors.neutral100} 25%,\n ${({ theme }) => theme.colors.neutral150} 50%,\n ${({ theme }) => theme.colors.neutral100} 75%\n );\n background-size: 200% 100%;\n animation: loading 1.5s infinite;\n border-radius: ${({ theme }) => theme.borderRadius};\n width: ${({ width }) => width || '100%'};\n height: ${({ height }) => height || '1rem'};\n\n @keyframes loading {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n }\n`;\n\nexport const AIAssetCardSkeletons = ({ count = 1 }: { count?: number }) => {\n const skeletons = Array.from({ length: count }, (_, i) => i);\n\n return skeletons.map((index) => (\n <Box\n key={index}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n borderRadius=\"4px\"\n marginBottom={4}\n >\n <Grid.Root>\n <Grid.Item col={5} alignItems=\"stretch\">\n <Card\n height=\"100%\"\n width=\"100%\"\n borderStyle=\"none\"\n shadow=\"none\"\n borderRadius={0}\n padding={2}\n >\n <Box height=\"150px\" padding={2}>\n <SkeletonBox height=\"100%\" />\n </Box>\n <CardBody style={{ display: 'flex', padding: '8px 4px' }}>\n <CardContent width=\"100%\">\n <Flex justifyContent=\"space-between\" alignItems=\"start\" marginBottom={1}>\n <SkeletonBox width=\"60%\" height=\"18px\" />\n <SkeletonBox width=\"40px\" height=\"16px\" />\n </Flex>\n <SkeletonBox width=\"80%\" height=\"14px\" />\n </CardContent>\n </CardBody>\n </Card>\n </Grid.Item>\n\n <Grid.Item col={7} flex={1}>\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\" flex={1} padding={4} gap={2}>\n <Box>\n <SkeletonBox width=\"60px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n </Box>\n\n <Box>\n <SkeletonBox width=\"100px\" height=\"16px\" marginBottom={1} />\n <SkeletonBox height=\"32px\" />\n <Box marginTop={1}>\n <SkeletonBox width=\"70%\" height=\"12px\" />\n </Box>\n </Box>\n </Flex>\n </Grid.Item>\n </Grid.Root>\n </Box>\n ));\n};\n"],"names":["CardActionsContainer","styled","CardAction","CardContainer","Box","theme","colors","neutral0","neutral150","borderRadius","AssetCardActions","asset","formatMessage","useIntl","dispatch","useAIUploadModalContext","s","state","onClose","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","isEditModalOpen","setIsEditModalOpen","React","useState","removeAsset","useRemoveAsset","handleConfirmRemove","event","preventDefault","id","type","payload","uploadedAssets","length","handlePropagationClick","stopPropagation","handleEditAsset","editedAsset","_jsxs","onClick","position","Dialog","Root","_jsx","Trigger","IconButton","label","getTrad","defaultMessage","Trash","ConfirmDialog","onConfirm","Modal","open","onOpenChange","Pencil","Content","EditAssetContent","isLocal","folder","arg","omitFields","omitActions","Extension","span","VideoPreviewWrapper","VideoTimerOverlay","CardTimer","AudioPreviewWrapper","Asset","assetType","thumbnailUrl","assetUrl","duration","setDuration","formattedDuration","formatDuration","undefined","AssetType","Image","CardAsset","src","size","alt","alternativeText","name","Video","VideoPreview","url","mime","onLoadDuration","Audio","AudioPreview","StyledCardBody","CardBody","spaces","StyledCard","Card","getAssetBadgeLabel","DocType","Pdf","Csv","Xls","Zip","AIAssetCard","onCaptionChange","onAltTextChange","wasAltTextChanged","wasCaptionChanged","typeFromMime","prefixFileUrlWithBackendUrl","formats","thumbnail","subtitle","height","width","formattedSize","formatBytes","fullSubtitle","caption","setCaption","useEffect","altText","setAltText","Grid","Item","col","alignItems","shadow","padding","CardHeader","style","borderStyle","CardContent","Flex","justifyContent","Typography","tag","CardTitle","CardBadge","CardSubtitle","getFileExtension","ext","flex","direction","gap","Field","Label","TextInput","value","onChange","e","target","placeholder","endAction","Sparkle","fill","hint","Hint","SkeletonBox","neutral100","AIAssetCardSkeletons","count","skeletons","Array","from","_","i","map","index","background","borderColor","borderWidth","marginBottom","display","marginTop"],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ require('byte-size');
|
|
|
15
15
|
require('date-fns');
|
|
16
16
|
var getTrad = require('../../utils/getTrad.js');
|
|
17
17
|
require('qs');
|
|
18
|
-
require('../../
|
|
18
|
+
require('../../utils/typeFromMime.js');
|
|
19
19
|
require('../../utils/urlYupSchema.js');
|
|
20
20
|
var AIAssetCard = require('./AIAssetCard.js');
|
|
21
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIUploadModal.js","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\nimport { Alert, Button, Flex, Modal } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n AddAssetStep,\n FileWithRawFile,\n} from '../../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\nimport { AssetType } from '../../constants';\nimport { useBulkEdit } from '../../hooks/useBulkEdit';\nimport { useTracking } from '../../hooks/useTracking';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad, typeFromMime } from '../../utils';\n\nimport { AIAssetCard, AIAssetCardSkeletons } from './AIAssetCard';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/* -------------------------------------------------------------------------------------------------\n * ModalBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n display: flex;\n justify-content: center;\n\n [data-radix-scroll-area-viewport] {\n padding-top: ${({ theme }) => theme.spaces[6]};\n padding-bottom: ${({ theme }) => theme.spaces[6]};\n padding-left: ${({ theme }) => theme.spaces[7]};\n padding-right: ${({ theme }) => theme.spaces[7]};\n }\n`;\n\nconst StyledAlert = styled(Alert)`\n & > button {\n display: none;\n }\n`;\n\nconst ModalContent = ({ onClose }: Pick<AIUploadModalProps, 'onClose'>) => {\n const { formatMessage } = useIntl();\n const state = useAIUploadModalContext('ModalContent', (s) => s.state);\n const dispatch = useAIUploadModalContext('ModalContent', (s) => s.dispatch);\n const folderId = useAIUploadModalContext('ModalContent', (s) => s.folderId);\n const { upload } = useUpload();\n const { edit, isLoading: isSaving } = useBulkEdit();\n const [isUploading, setIsUploading] = React.useState(false);\n const [uploadError, setUploadError] = React.useState<Error | null>(null);\n const { trackUsage } = useTracking();\n\n const handleCaptionChange = (assetId: number, caption: string) => {\n dispatch({\n type: 'set_uploaded_asset_caption',\n payload: { id: assetId, caption },\n });\n };\n\n const handleAltTextChange = (assetId: number, altText: string) => {\n dispatch({\n type: 'set_uploaded_asset_alt_text',\n payload: { id: assetId, altText },\n });\n };\n\n const resetState = () => {\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n };\n\n const handleFinish = async () => {\n if (state.hasUnsavedChanges) {\n const assetsToUpdate = state.uploadedAssets.filter(\n (asset) => (asset.wasCaptionChanged || asset.wasAltTextChanged) && asset.file.id\n );\n\n if (assetsToUpdate.length > 0) {\n if (assetsToUpdate.some((asset) => asset.wasCaptionChanged)) {\n trackUsage('didEditAICaption');\n }\n\n if (assetsToUpdate.some((asset) => asset.wasAltTextChanged)) {\n trackUsage('didEditAIAlternativeText');\n }\n\n // Update assets\n const updates = assetsToUpdate.map((asset) => ({\n id: asset.file.id!,\n fileInfo: {\n name: asset.file.name,\n alternativeText: asset.file.alternativeText ?? null,\n caption: asset.file.caption ?? null,\n folder:\n typeof asset.file.folder === 'object' && asset.file.folder !== null\n ? // @ts-expect-error types are wrong\n asset.file.folder.id\n : asset.file.folder,\n },\n }));\n\n try {\n await edit(updates);\n dispatch({ type: 'clear_unsaved_changes' });\n } catch (err) {\n console.error('Failed to save asset changes:', err);\n return; // Don't close modal on error\n }\n }\n }\n\n resetState();\n onClose();\n };\n\n const handleCancel = () => {\n resetState();\n onClose();\n };\n\n const handleUpload = async (assets: FileWithRawFile[]) => {\n dispatch({ type: 'set_assets_to_upload_length', payload: assets.length });\n setUploadError(null);\n setIsUploading(true);\n\n try {\n const assetsForUpload = assets.map((asset) => ({\n ...asset,\n id: asset.id ? Number(asset.id) : undefined,\n }));\n\n const uploadedFiles = await upload(assetsForUpload, folderId);\n const filesWithFolder = uploadedFiles.map((file: File) => ({\n ...file,\n // The upload API doesn't populate the folder relation, so we add it manually\n folder: folderId || file.folder,\n }));\n dispatch({ type: 'set_uploaded_assets', payload: filesWithFolder });\n } catch (error) {\n console.error('Upload failed:', error);\n setUploadError(error instanceof Error ? error : new Error('Upload failed'));\n } finally {\n setIsUploading(false);\n }\n };\n\n if (state.assetsToUploadLength === 0) {\n return (\n <Modal.Content>\n <AddAssetStep onClose={onClose} onAddAsset={handleUpload} />\n </Modal.Content>\n );\n }\n\n if (\n isUploading ||\n (state.assetsToUploadLength > 0 && state.uploadedAssets.length === 0 && !uploadError)\n ) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('ai.modal.uploading.title'),\n defaultMessage: 'Uploading and processing with AI...',\n })}\n </Modal.Title>\n </Modal.Header>\n <StyledModalBody>\n <AIAssetCardSkeletons count={state.assetsToUploadLength} />\n </StyledModalBody>\n </Modal.Content>\n );\n }\n\n const title = formatMessage(\n {\n id: getTrad('ai.modal.title'),\n defaultMessage:\n '{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata',\n },\n { count: state.uploadedAssets.length }\n );\n\n if (uploadError) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <StyledAlert closeLabel=\"\" variant=\"danger\">\n {formatMessage({\n id: getTrad('ai.modal.error'),\n defaultMessage: 'Could not generate AI metadata for the uploaded files.',\n })}\n </StyledAlert>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n }\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n\n <StyledModalBody>\n <Flex gap={6} direction=\"column\" alignItems=\"stretch\">\n {state.uploadedAssets.map(({ file: asset, wasCaptionChanged, wasAltTextChanged }) => (\n <AIAssetCard\n key={asset.id}\n asset={asset}\n onCaptionChange={(caption: string) =>\n asset.id && handleCaptionChange(asset.id, caption)\n }\n onAltTextChange={(altText: string) =>\n asset.id && handleAltTextChange(asset.id, altText)\n }\n wasCaptionChanged={wasCaptionChanged}\n wasAltTextChanged={wasAltTextChanged}\n />\n ))}\n </Flex>\n </StyledModalBody>\n\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AIUploadModalProps {\n open: boolean;\n onClose: () => void;\n folderId?: number | null;\n}\n\ntype State = {\n uploadedAssets: Array<{ file: File; wasCaptionChanged: boolean; wasAltTextChanged: boolean }>;\n assetsToUploadLength: number;\n hasUnsavedChanges: boolean;\n};\n\ntype Action =\n | {\n type: 'set_uploaded_assets';\n payload: File[];\n }\n | {\n type: 'set_assets_to_upload_length';\n payload: number;\n }\n | {\n type: 'set_uploaded_asset_caption';\n payload: { id: number; caption: string };\n }\n | {\n type: 'set_uploaded_asset_alt_text';\n payload: { id: number; altText: string };\n }\n | {\n type: 'remove_uploaded_asset';\n payload: { id: number };\n }\n | {\n type: 'edit_uploaded_asset';\n payload: { editedAsset: File };\n }\n | {\n type: 'clear_unsaved_changes';\n };\n\nconst [AIUploadModalContext, useAIUploadModalContext] = createContext<{\n state: State;\n dispatch: React.Dispatch<Action>;\n folderId: number | null;\n onClose: () => void;\n}>('AIUploadModalContext');\n\nconst reducer = (state: State, action: Action): State => {\n return produce(state, (draft: State) => {\n if (action.type === 'set_uploaded_assets') {\n draft.uploadedAssets = action.payload.map((file) => ({\n file,\n wasCaptionChanged: false,\n wasAltTextChanged: false,\n }));\n draft.hasUnsavedChanges = false;\n }\n\n if (action.type === 'set_assets_to_upload_length') {\n draft.assetsToUploadLength = action.payload;\n }\n\n if (action.type === 'set_uploaded_asset_caption') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.caption !== action.payload.caption) {\n asset.file.caption = action.payload.caption;\n asset.wasCaptionChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'set_uploaded_asset_alt_text') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.alternativeText !== action.payload.altText) {\n asset.file.alternativeText = action.payload.altText;\n asset.wasAltTextChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'remove_uploaded_asset') {\n draft.uploadedAssets = draft.uploadedAssets.filter((a) => a.file.id !== action.payload.id);\n }\n\n if (action.type === 'edit_uploaded_asset') {\n const assetIndex = draft.uploadedAssets.findIndex(\n (a) => a.file.id === action.payload.editedAsset.id\n );\n if (assetIndex !== -1) {\n draft.uploadedAssets[assetIndex] = {\n file: action.payload.editedAsset,\n wasCaptionChanged: draft.uploadedAssets[assetIndex].wasCaptionChanged,\n wasAltTextChanged: draft.uploadedAssets[assetIndex].wasAltTextChanged,\n };\n }\n }\n\n if (action.type === 'clear_unsaved_changes') {\n draft.hasUnsavedChanges = false;\n draft.uploadedAssets.forEach((asset) => {\n asset.wasCaptionChanged = false;\n asset.wasAltTextChanged = false;\n });\n }\n });\n};\n\nexport const AIUploadModal = ({ open, onClose, folderId = null }: AIUploadModalProps) => {\n const [state, dispatch] = React.useReducer(reducer, {\n uploadedAssets: [],\n assetsToUploadLength: 0,\n hasUnsavedChanges: false,\n });\n\n const handleClose = React.useCallback(() => {\n // Reset state when modal closes\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n onClose();\n }, [onClose]);\n\n return (\n <AIUploadModalContext\n state={state}\n dispatch={dispatch}\n folderId={folderId}\n onClose={handleClose}\n >\n <Modal.Root open={open} onOpenChange={handleClose}>\n <ModalContent onClose={handleClose} />\n </Modal.Root>\n </AIUploadModalContext>\n );\n};\n\nexport { useAIUploadModalContext };\n"],"names":["StyledModalBody","styled","Modal","Body","theme","spaces","StyledAlert","Alert","ModalContent","onClose","formatMessage","useIntl","state","useAIUploadModalContext","s","dispatch","folderId","upload","useUpload","edit","isLoading","isSaving","useBulkEdit","isUploading","setIsUploading","React","useState","uploadError","setUploadError","trackUsage","useTracking","handleCaptionChange","assetId","caption","type","payload","id","handleAltTextChange","altText","resetState","handleFinish","hasUnsavedChanges","assetsToUpdate","uploadedAssets","filter","asset","wasCaptionChanged","wasAltTextChanged","file","length","some","updates","map","fileInfo","name","alternativeText","folder","err","console","error","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","Error","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","defaultMessage","AIAssetCardSkeletons","count","title","closeLabel","variant","Footer","Button","onClick","loading","Flex","gap","direction","alignItems","AIAssetCard","onCaptionChange","onAltTextChange","AIUploadModalContext","createContext","reducer","action","produce","draft","find","a","assetIndex","findIndex","editedAsset","forEach","AIUploadModal","open","useReducer","handleClose","useCallback","Root","onOpenChange"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA;;AAEkG,qGAElG,MAAMA,eAAkBC,GAAAA,uBAAAA,CAAOC,kBAAMC,CAAAA,IAAI,CAAC;;;;;;iBAMzB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;oBAC9B,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;kBACnC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;mBAChC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC;;AAEpD,CAAC;AAED,MAAMC,WAAAA,GAAcL,uBAAOM,CAAAA,kBAAAA,CAAM;;;;AAIjC,CAAC;AAED,MAAMC,YAAe,GAAA,CAAC,EAAEC,OAAO,EAAuC,GAAA;IACpE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,uBAAwB,CAAA,cAAA,EAAgB,CAACC,CAAAA,GAAMA,EAAEF,KAAK,CAAA;AACpE,IAAA,MAAMG,WAAWF,uBAAwB,CAAA,cAAA,EAAgB,CAACC,CAAAA,GAAMA,EAAEC,QAAQ,CAAA;AAC1E,IAAA,MAAMC,WAAWH,uBAAwB,CAAA,cAAA,EAAgB,CAACC,CAAAA,GAAMA,EAAEE,QAAQ,CAAA;IAC1E,MAAM,EAAEC,MAAM,EAAE,GAAGC,mBAAAA,EAAAA;AACnB,IAAA,MAAM,EAAEC,IAAI,EAAEC,SAAWC,EAAAA,QAAQ,EAAE,GAAGC,uBAAAA,EAAAA;AACtC,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,CAACC,WAAaC,EAAAA,cAAAA,CAAe,GAAGH,gBAAAA,CAAMC,QAAQ,CAAe,IAAA,CAAA;IACnE,MAAM,EAAEG,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;IAEvB,MAAMC,mBAAAA,GAAsB,CAACC,OAAiBC,EAAAA,OAAAA,GAAAA;QAC5ClB,QAAS,CAAA;YACPmB,IAAM,EAAA,4BAAA;YACNC,OAAS,EAAA;gBAAEC,EAAIJ,EAAAA,OAAAA;AAASC,gBAAAA;AAAQ;AAClC,SAAA,CAAA;AACF,KAAA;IAEA,MAAMI,mBAAAA,GAAsB,CAACL,OAAiBM,EAAAA,OAAAA,GAAAA;QAC5CvB,QAAS,CAAA;YACPmB,IAAM,EAAA,6BAAA;YACNC,OAAS,EAAA;gBAAEC,EAAIJ,EAAAA,OAAAA;AAASM,gBAAAA;AAAQ;AAClC,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAMC,UAAa,GAAA,IAAA;QACjBxB,QAAS,CAAA;YAAEmB,IAAM,EAAA,qBAAA;AAAuBC,YAAAA,OAAAA,EAAS;AAAG,SAAA,CAAA;AACtD,KAAA;AAEA,IAAA,MAAMK,YAAe,GAAA,UAAA;QACnB,IAAI5B,KAAAA,CAAM6B,iBAAiB,EAAE;YAC3B,MAAMC,cAAAA,GAAiB9B,MAAM+B,cAAc,CAACC,MAAM,CAChD,CAACC,QAAU,CAACA,MAAMC,iBAAiB,IAAID,MAAME,iBAAgB,KAAMF,KAAMG,CAAAA,IAAI,CAACZ,EAAE,CAAA;YAGlF,IAAIM,cAAAA,CAAeO,MAAM,GAAG,CAAG,EAAA;AAC7B,gBAAA,IAAIP,eAAeQ,IAAI,CAAC,CAACL,KAAUA,GAAAA,KAAAA,CAAMC,iBAAiB,CAAG,EAAA;oBAC3DjB,UAAW,CAAA,kBAAA,CAAA;AACb;AAEA,gBAAA,IAAIa,eAAeQ,IAAI,CAAC,CAACL,KAAUA,GAAAA,KAAAA,CAAME,iBAAiB,CAAG,EAAA;oBAC3DlB,UAAW,CAAA,0BAAA,CAAA;AACb;;AAGA,gBAAA,MAAMsB,UAAUT,cAAeU,CAAAA,GAAG,CAAC,CAACP,SAAW;wBAC7CT,EAAIS,EAAAA,KAAAA,CAAMG,IAAI,CAACZ,EAAE;wBACjBiB,QAAU,EAAA;4BACRC,IAAMT,EAAAA,KAAAA,CAAMG,IAAI,CAACM,IAAI;AACrBC,4BAAAA,eAAAA,EAAiBV,KAAMG,CAAAA,IAAI,CAACO,eAAe,IAAI,IAAA;AAC/CtB,4BAAAA,OAAAA,EAASY,KAAMG,CAAAA,IAAI,CAACf,OAAO,IAAI,IAAA;4BAC/BuB,MACE,EAAA,OAAOX,MAAMG,IAAI,CAACQ,MAAM,KAAK,QAAA,IAAYX,KAAMG,CAAAA,IAAI,CAACQ,MAAM,KAAK,IAE3DX,GAAAA,KAAAA,CAAMG,IAAI,CAACQ,MAAM,CAACpB,EAAE,GACpBS,KAAAA,CAAMG,IAAI,CAACQ;AACnB;qBACF,CAAA,CAAA;gBAEA,IAAI;AACF,oBAAA,MAAMrC,IAAKgC,CAAAA,OAAAA,CAAAA;oBACXpC,QAAS,CAAA;wBAAEmB,IAAM,EAAA;AAAwB,qBAAA,CAAA;AAC3C,iBAAA,CAAE,OAAOuB,GAAK,EAAA;oBACZC,OAAQC,CAAAA,KAAK,CAAC,+BAAiCF,EAAAA,GAAAA,CAAAA;AAC/C,oBAAA,OAAA;AACF;AACF;AACF;AAEAlB,QAAAA,UAAAA,EAAAA;AACA9B,QAAAA,OAAAA,EAAAA;AACF,KAAA;AAEA,IAAA,MAAMmD,YAAe,GAAA,IAAA;AACnBrB,QAAAA,UAAAA,EAAAA;AACA9B,QAAAA,OAAAA,EAAAA;AACF,KAAA;AAEA,IAAA,MAAMoD,eAAe,OAAOC,MAAAA,GAAAA;QAC1B/C,QAAS,CAAA;YAAEmB,IAAM,EAAA,6BAAA;AAA+BC,YAAAA,OAAAA,EAAS2B,OAAOb;AAAO,SAAA,CAAA;QACvErB,cAAe,CAAA,IAAA,CAAA;QACfJ,cAAe,CAAA,IAAA,CAAA;QAEf,IAAI;AACF,YAAA,MAAMuC,kBAAkBD,MAAOV,CAAAA,GAAG,CAAC,CAACP,SAAW;AAC7C,oBAAA,GAAGA,KAAK;AACRT,oBAAAA,EAAAA,EAAIS,MAAMT,EAAE,GAAG4B,MAAOnB,CAAAA,KAAAA,CAAMT,EAAE,CAAI6B,GAAAA;iBACpC,CAAA,CAAA;YAEA,MAAMC,aAAAA,GAAgB,MAAMjD,MAAAA,CAAO8C,eAAiB/C,EAAAA,QAAAA,CAAAA;AACpD,YAAA,MAAMmD,kBAAkBD,aAAcd,CAAAA,GAAG,CAAC,CAACJ,QAAgB;AACzD,oBAAA,GAAGA,IAAI;;oBAEPQ,MAAQxC,EAAAA,QAAAA,IAAYgC,KAAKQ;iBAC3B,CAAA,CAAA;YACAzC,QAAS,CAAA;gBAAEmB,IAAM,EAAA,qBAAA;gBAAuBC,OAASgC,EAAAA;AAAgB,aAAA,CAAA;AACnE,SAAA,CAAE,OAAOR,KAAO,EAAA;YACdD,OAAQC,CAAAA,KAAK,CAAC,gBAAkBA,EAAAA,KAAAA,CAAAA;AAChC/B,YAAAA,cAAAA,CAAe+B,KAAiBS,YAAAA,KAAAA,GAAQT,KAAQ,GAAA,IAAIS,KAAM,CAAA,eAAA,CAAA,CAAA;SAClD,QAAA;YACR5C,cAAe,CAAA,KAAA,CAAA;AACjB;AACF,KAAA;IAEA,IAAIZ,KAAAA,CAAMyD,oBAAoB,KAAK,CAAG,EAAA;QACpC,qBACEC,cAAA,CAACpE,mBAAMqE,OAAO,EAAA;AACZ,YAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;gBAAa/D,OAASA,EAAAA,OAAAA;gBAASgE,UAAYZ,EAAAA;;;AAGlD;AAEA,IAAA,IACEtC,WACCX,IAAAA,KAAAA,CAAMyD,oBAAoB,GAAG,CAAKzD,IAAAA,KAAAA,CAAM+B,cAAc,CAACM,MAAM,KAAK,CAAK,IAAA,CAACtB,WACzE,EAAA;QACA,qBACE+C,eAAA,CAACxE,mBAAMqE,OAAO,EAAA;;AACZ,8BAAAD,cAAA,CAACpE,mBAAMyE,MAAM,EAAA;4CACXL,cAAA,CAACpE,mBAAM0E,KAAK,EAAA;kCACTlE,aAAc,CAAA;AACb0B,4BAAAA,EAAAA,EAAIyC,eAAQ,CAAA,0BAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;;8BAGJR,cAACtE,CAAAA,eAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAsE,cAACS,CAAAA,gCAAAA,EAAAA;AAAqBC,wBAAAA,KAAAA,EAAOpE,MAAMyD;;;;;AAI3C;AAEA,IAAA,MAAMY,QAAQvE,aACZ,CAAA;AACE0B,QAAAA,EAAAA,EAAIyC,eAAQ,CAAA,gBAAA,CAAA;QACZC,cACE,EAAA;KAEJ,EAAA;QAAEE,KAAOpE,EAAAA,KAAAA,CAAM+B,cAAc,CAACM;AAAO,KAAA,CAAA;AAGvC,IAAA,IAAItB,WAAa,EAAA;QACf,qBACE+C,eAAA,CAACxE,mBAAMqE,OAAO,EAAA;;AACZ,8BAAAD,cAAA,CAACpE,mBAAMyE,MAAM,EAAA;4CACXL,cAAA,CAACpE,mBAAM0E,KAAK,EAAA;AAAEK,wBAAAA,QAAAA,EAAAA;;;AAEhB,8BAAAX,cAAA,CAACpE,mBAAMC,IAAI,EAAA;AACT,oBAAA,QAAA,gBAAAmE,cAAChE,CAAAA,WAAAA,EAAAA;wBAAY4E,UAAW,EAAA,EAAA;wBAAGC,OAAQ,EAAA,QAAA;kCAChCzE,aAAc,CAAA;AACb0B,4BAAAA,EAAAA,EAAIyC,eAAQ,CAAA,gBAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA;;;AAGJ,8BAAAJ,eAAA,CAACxE,mBAAMkF,MAAM,EAAA;;sCACXd,cAACe,CAAAA,mBAAAA,EAAAA;4BAAOC,OAAS1B,EAAAA,YAAAA;4BAAcuB,OAAQ,EAAA,UAAA;sCACpCzE,aAAc,CAAA;gCAAE0B,EAAI,EAAA,QAAA;gCAAU0C,cAAgB,EAAA;AAAS,6BAAA;;sCAE1DR,cAACe,CAAAA,mBAAAA,EAAAA;4BAAOC,OAAS9C,EAAAA,YAAAA;4BAAc+C,OAASlE,EAAAA,QAAAA;sCACrCX,aAAc,CAAA;gCAAE0B,EAAI,EAAA,eAAA;gCAAiB0C,cAAgB,EAAA;AAAS,6BAAA;;;;;;AAKzE;IAEA,qBACEJ,eAAA,CAACxE,mBAAMqE,OAAO,EAAA;;AACZ,0BAAAD,cAAA,CAACpE,mBAAMyE,MAAM,EAAA;wCACXL,cAAA,CAACpE,mBAAM0E,KAAK,EAAA;AAAEK,oBAAAA,QAAAA,EAAAA;;;0BAGhBX,cAACtE,CAAAA,eAAAA,EAAAA;AACC,gBAAA,QAAA,gBAAAsE,cAACkB,CAAAA,iBAAAA,EAAAA;oBAAKC,GAAK,EAAA,CAAA;oBAAGC,SAAU,EAAA,QAAA;oBAASC,UAAW,EAAA,SAAA;AACzC/E,oBAAAA,QAAAA,EAAAA,KAAAA,CAAM+B,cAAc,CAACS,GAAG,CAAC,CAAC,EAAEJ,IAAAA,EAAMH,KAAK,EAAEC,iBAAiB,EAAEC,iBAAiB,EAAE,iBAC9EuB,cAACsB,CAAAA,uBAAAA,EAAAA;4BAEC/C,KAAOA,EAAAA,KAAAA;4BACPgD,eAAiB,EAAA,CAAC5D,UAChBY,KAAMT,CAAAA,EAAE,IAAIL,mBAAoBc,CAAAA,KAAAA,CAAMT,EAAE,EAAEH,OAAAA,CAAAA;4BAE5C6D,eAAiB,EAAA,CAACxD,UAChBO,KAAMT,CAAAA,EAAE,IAAIC,mBAAoBQ,CAAAA,KAAAA,CAAMT,EAAE,EAAEE,OAAAA,CAAAA;4BAE5CQ,iBAAmBA,EAAAA,iBAAAA;4BACnBC,iBAAmBA,EAAAA;AATdF,yBAAAA,EAAAA,KAAAA,CAAMT,EAAE,CAAA;;;AAerB,0BAAAsC,eAAA,CAACxE,mBAAMkF,MAAM,EAAA;;kCACXd,cAACe,CAAAA,mBAAAA,EAAAA;wBAAOC,OAAS1B,EAAAA,YAAAA;wBAAcuB,OAAQ,EAAA,UAAA;kCACpCzE,aAAc,CAAA;4BAAE0B,EAAI,EAAA,QAAA;4BAAU0C,cAAgB,EAAA;AAAS,yBAAA;;kCAE1DR,cAACe,CAAAA,mBAAAA,EAAAA;wBAAOC,OAAS9C,EAAAA,YAAAA;wBAAc+C,OAASlE,EAAAA,QAAAA;kCACrCX,aAAc,CAAA;4BAAE0B,EAAI,EAAA,eAAA;4BAAiB0C,cAAgB,EAAA;AAAS,yBAAA;;;;;;AAKzE,CAAA;AA+CA,MAAM,CAACiB,oBAAAA,EAAsBlF,uBAAwB,CAAA,GAAGmF,yBAKrD,CAAA,sBAAA;AAEH,MAAMC,OAAAA,GAAU,CAACrF,KAAcsF,EAAAA,MAAAA,GAAAA;IAC7B,OAAOC,aAAAA,CAAQvF,OAAO,CAACwF,KAAAA,GAAAA;QACrB,IAAIF,MAAAA,CAAOhE,IAAI,KAAK,qBAAuB,EAAA;YACzCkE,KAAMzD,CAAAA,cAAc,GAAGuD,MAAO/D,CAAAA,OAAO,CAACiB,GAAG,CAAC,CAACJ,IAAAA,IAAU;AACnDA,oBAAAA,IAAAA;oBACAF,iBAAmB,EAAA,KAAA;oBACnBC,iBAAmB,EAAA;iBACrB,CAAA,CAAA;AACAqD,YAAAA,KAAAA,CAAM3D,iBAAiB,GAAG,KAAA;AAC5B;QAEA,IAAIyD,MAAAA,CAAOhE,IAAI,KAAK,6BAA+B,EAAA;YACjDkE,KAAM/B,CAAAA,oBAAoB,GAAG6B,MAAAA,CAAO/D,OAAO;AAC7C;QAEA,IAAI+D,MAAAA,CAAOhE,IAAI,KAAK,4BAA8B,EAAA;AAChD,YAAA,MAAMW,QAAQuD,KAAMzD,CAAAA,cAAc,CAAC0D,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAEtD,CAAAA,IAAI,CAACZ,EAAE,KAAK8D,MAAO/D,CAAAA,OAAO,CAACC,EAAE,CAAA;YAC9E,IAAIS,KAAAA,IAASA,KAAMG,CAAAA,IAAI,CAACf,OAAO,KAAKiE,MAAO/D,CAAAA,OAAO,CAACF,OAAO,EAAE;AAC1DY,gBAAAA,KAAAA,CAAMG,IAAI,CAACf,OAAO,GAAGiE,MAAO/D,CAAAA,OAAO,CAACF,OAAO;AAC3CY,gBAAAA,KAAAA,CAAMC,iBAAiB,GAAG,IAAA;AAC1BsD,gBAAAA,KAAAA,CAAM3D,iBAAiB,GAAG,IAAA;AAC5B;AACF;QAEA,IAAIyD,MAAAA,CAAOhE,IAAI,KAAK,6BAA+B,EAAA;AACjD,YAAA,MAAMW,QAAQuD,KAAMzD,CAAAA,cAAc,CAAC0D,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAEtD,CAAAA,IAAI,CAACZ,EAAE,KAAK8D,MAAO/D,CAAAA,OAAO,CAACC,EAAE,CAAA;YAC9E,IAAIS,KAAAA,IAASA,KAAMG,CAAAA,IAAI,CAACO,eAAe,KAAK2C,MAAO/D,CAAAA,OAAO,CAACG,OAAO,EAAE;AAClEO,gBAAAA,KAAAA,CAAMG,IAAI,CAACO,eAAe,GAAG2C,MAAO/D,CAAAA,OAAO,CAACG,OAAO;AACnDO,gBAAAA,KAAAA,CAAME,iBAAiB,GAAG,IAAA;AAC1BqD,gBAAAA,KAAAA,CAAM3D,iBAAiB,GAAG,IAAA;AAC5B;AACF;QAEA,IAAIyD,MAAAA,CAAOhE,IAAI,KAAK,uBAAyB,EAAA;AAC3CkE,YAAAA,KAAAA,CAAMzD,cAAc,GAAGyD,KAAAA,CAAMzD,cAAc,CAACC,MAAM,CAAC,CAAC0D,CAAMA,GAAAA,CAAAA,CAAEtD,IAAI,CAACZ,EAAE,KAAK8D,MAAO/D,CAAAA,OAAO,CAACC,EAAE,CAAA;AAC3F;QAEA,IAAI8D,MAAAA,CAAOhE,IAAI,KAAK,qBAAuB,EAAA;AACzC,YAAA,MAAMqE,aAAaH,KAAMzD,CAAAA,cAAc,CAAC6D,SAAS,CAC/C,CAACF,CAAMA,GAAAA,CAAAA,CAAEtD,IAAI,CAACZ,EAAE,KAAK8D,MAAAA,CAAO/D,OAAO,CAACsE,WAAW,CAACrE,EAAE,CAAA;YAEpD,IAAImE,UAAAA,KAAe,CAAC,CAAG,EAAA;gBACrBH,KAAMzD,CAAAA,cAAc,CAAC4D,UAAAA,CAAW,GAAG;oBACjCvD,IAAMkD,EAAAA,MAAAA,CAAO/D,OAAO,CAACsE,WAAW;AAChC3D,oBAAAA,iBAAAA,EAAmBsD,KAAMzD,CAAAA,cAAc,CAAC4D,UAAAA,CAAW,CAACzD,iBAAiB;AACrEC,oBAAAA,iBAAAA,EAAmBqD,KAAMzD,CAAAA,cAAc,CAAC4D,UAAAA,CAAW,CAACxD;AACtD,iBAAA;AACF;AACF;QAEA,IAAImD,MAAAA,CAAOhE,IAAI,KAAK,uBAAyB,EAAA;AAC3CkE,YAAAA,KAAAA,CAAM3D,iBAAiB,GAAG,KAAA;AAC1B2D,YAAAA,KAAAA,CAAMzD,cAAc,CAAC+D,OAAO,CAAC,CAAC7D,KAAAA,GAAAA;AAC5BA,gBAAAA,KAAAA,CAAMC,iBAAiB,GAAG,KAAA;AAC1BD,gBAAAA,KAAAA,CAAME,iBAAiB,GAAG,KAAA;AAC5B,aAAA,CAAA;AACF;AACF,KAAA,CAAA;AACF,CAAA;AAEO,MAAM4D,aAAgB,GAAA,CAAC,EAAEC,IAAI,EAAEnG,OAAO,EAAEO,QAAW,GAAA,IAAI,EAAsB,GAAA;AAClF,IAAA,MAAM,CAACJ,KAAOG,EAAAA,QAAAA,CAAS,GAAGU,gBAAMoF,CAAAA,UAAU,CAACZ,OAAS,EAAA;AAClDtD,QAAAA,cAAAA,EAAgB,EAAE;QAClB0B,oBAAsB,EAAA,CAAA;QACtB5B,iBAAmB,EAAA;AACrB,KAAA,CAAA;IAEA,MAAMqE,WAAAA,GAAcrF,gBAAMsF,CAAAA,WAAW,CAAC,IAAA;;QAEpChG,QAAS,CAAA;YAAEmB,IAAM,EAAA,qBAAA;AAAuBC,YAAAA,OAAAA,EAAS;AAAG,SAAA,CAAA;AACpD1B,QAAAA,OAAAA,EAAAA;KACC,EAAA;AAACA,QAAAA;AAAQ,KAAA,CAAA;AAEZ,IAAA,qBACE6D,cAACyB,CAAAA,oBAAAA,EAAAA;QACCnF,KAAOA,EAAAA,KAAAA;QACPG,QAAUA,EAAAA,QAAAA;QACVC,QAAUA,EAAAA,QAAAA;QACVP,OAASqG,EAAAA,WAAAA;gCAETxC,cAAA,CAACpE,mBAAM8G,IAAI,EAAA;YAACJ,IAAMA,EAAAA,IAAAA;YAAMK,YAAcH,EAAAA,WAAAA;AACpC,YAAA,QAAA,gBAAAxC,cAAC9D,CAAAA,YAAAA,EAAAA;gBAAaC,OAASqG,EAAAA;;;;AAI/B;;;;;"}
|
|
1
|
+
{"version":3,"file":"AIUploadModal.js","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext } from '@strapi/admin/strapi-admin';\nimport { Alert, Button, Flex, Modal } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport {\n AddAssetStep,\n FileWithRawFile,\n} from '../../components/UploadAssetDialog/AddAssetStep/AddAssetStep';\nimport { useBulkEdit } from '../../hooks/useBulkEdit';\nimport { useTracking } from '../../hooks/useTracking';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad } from '../../utils';\n\nimport { AIAssetCard, AIAssetCardSkeletons } from './AIAssetCard';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/* -------------------------------------------------------------------------------------------------\n * ModalBody\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledModalBody = styled(Modal.Body)`\n padding: 0;\n display: flex;\n justify-content: center;\n\n [data-radix-scroll-area-viewport] {\n padding-top: ${({ theme }) => theme.spaces[6]};\n padding-bottom: ${({ theme }) => theme.spaces[6]};\n padding-left: ${({ theme }) => theme.spaces[7]};\n padding-right: ${({ theme }) => theme.spaces[7]};\n }\n`;\n\nconst StyledAlert = styled(Alert)`\n & > button {\n display: none;\n }\n`;\n\nconst ModalContent = ({ onClose }: Pick<AIUploadModalProps, 'onClose'>) => {\n const { formatMessage } = useIntl();\n const state = useAIUploadModalContext('ModalContent', (s) => s.state);\n const dispatch = useAIUploadModalContext('ModalContent', (s) => s.dispatch);\n const folderId = useAIUploadModalContext('ModalContent', (s) => s.folderId);\n const { upload } = useUpload();\n const { edit, isLoading: isSaving } = useBulkEdit();\n const [isUploading, setIsUploading] = React.useState(false);\n const [uploadError, setUploadError] = React.useState<Error | null>(null);\n const { trackUsage } = useTracking();\n\n const handleCaptionChange = (assetId: number, caption: string) => {\n dispatch({\n type: 'set_uploaded_asset_caption',\n payload: { id: assetId, caption },\n });\n };\n\n const handleAltTextChange = (assetId: number, altText: string) => {\n dispatch({\n type: 'set_uploaded_asset_alt_text',\n payload: { id: assetId, altText },\n });\n };\n\n const resetState = () => {\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n };\n\n const handleFinish = async () => {\n if (state.hasUnsavedChanges) {\n const assetsToUpdate = state.uploadedAssets.filter(\n (asset) => (asset.wasCaptionChanged || asset.wasAltTextChanged) && asset.file.id\n );\n\n if (assetsToUpdate.length > 0) {\n if (assetsToUpdate.some((asset) => asset.wasCaptionChanged)) {\n trackUsage('didEditAICaption');\n }\n\n if (assetsToUpdate.some((asset) => asset.wasAltTextChanged)) {\n trackUsage('didEditAIAlternativeText');\n }\n\n // Update assets\n const updates = assetsToUpdate.map((asset) => ({\n id: asset.file.id!,\n fileInfo: {\n name: asset.file.name,\n alternativeText: asset.file.alternativeText ?? null,\n caption: asset.file.caption ?? null,\n folder:\n typeof asset.file.folder === 'object' && asset.file.folder !== null\n ? // @ts-expect-error types are wrong\n asset.file.folder.id\n : asset.file.folder,\n },\n }));\n\n try {\n await edit(updates);\n dispatch({ type: 'clear_unsaved_changes' });\n } catch (err) {\n console.error('Failed to save asset changes:', err);\n return; // Don't close modal on error\n }\n }\n }\n\n resetState();\n onClose();\n };\n\n const handleCancel = () => {\n resetState();\n onClose();\n };\n\n const handleUpload = async (assets: FileWithRawFile[]) => {\n dispatch({ type: 'set_assets_to_upload_length', payload: assets.length });\n setUploadError(null);\n setIsUploading(true);\n\n try {\n const assetsForUpload = assets.map((asset) => ({\n ...asset,\n id: asset.id ? Number(asset.id) : undefined,\n }));\n\n const uploadedFiles = await upload(assetsForUpload, folderId);\n const filesWithFolder = uploadedFiles.map((file: File) => ({\n ...file,\n // The upload API doesn't populate the folder relation, so we add it manually\n folder: folderId || file.folder,\n }));\n dispatch({ type: 'set_uploaded_assets', payload: filesWithFolder });\n } catch (error) {\n console.error('Upload failed:', error);\n setUploadError(error instanceof Error ? error : new Error('Upload failed'));\n } finally {\n setIsUploading(false);\n }\n };\n\n if (state.assetsToUploadLength === 0) {\n return (\n <Modal.Content>\n <AddAssetStep onClose={onClose} onAddAsset={handleUpload} />\n </Modal.Content>\n );\n }\n\n if (\n isUploading ||\n (state.assetsToUploadLength > 0 && state.uploadedAssets.length === 0 && !uploadError)\n ) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('ai.modal.uploading.title'),\n defaultMessage: 'Uploading and processing with AI...',\n })}\n </Modal.Title>\n </Modal.Header>\n <StyledModalBody>\n <AIAssetCardSkeletons count={state.assetsToUploadLength} />\n </StyledModalBody>\n </Modal.Content>\n );\n }\n\n const title = formatMessage(\n {\n id: getTrad('ai.modal.title'),\n defaultMessage:\n '{count, plural, one {# asset uploaded} other {# assets uploaded}}, review AI generated metadata',\n },\n { count: state.uploadedAssets.length }\n );\n\n if (uploadError) {\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <StyledAlert closeLabel=\"\" variant=\"danger\">\n {formatMessage({\n id: getTrad('ai.modal.error'),\n defaultMessage: 'Could not generate AI metadata for the uploaded files.',\n })}\n </StyledAlert>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n }\n\n return (\n <Modal.Content>\n <Modal.Header>\n <Modal.Title>{title}</Modal.Title>\n </Modal.Header>\n\n <StyledModalBody>\n <Flex gap={6} direction=\"column\" alignItems=\"stretch\">\n {state.uploadedAssets.map(({ file: asset, wasCaptionChanged, wasAltTextChanged }) => (\n <AIAssetCard\n key={asset.id}\n asset={asset}\n onCaptionChange={(caption: string) =>\n asset.id && handleCaptionChange(asset.id, caption)\n }\n onAltTextChange={(altText: string) =>\n asset.id && handleAltTextChange(asset.id, altText)\n }\n wasCaptionChanged={wasCaptionChanged}\n wasAltTextChanged={wasAltTextChanged}\n />\n ))}\n </Flex>\n </StyledModalBody>\n\n <Modal.Footer>\n <Button onClick={handleCancel} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Button onClick={handleFinish} loading={isSaving}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Modal.Footer>\n </Modal.Content>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadModal\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AIUploadModalProps {\n open: boolean;\n onClose: () => void;\n folderId?: number | null;\n}\n\ntype State = {\n uploadedAssets: Array<{ file: File; wasCaptionChanged: boolean; wasAltTextChanged: boolean }>;\n assetsToUploadLength: number;\n hasUnsavedChanges: boolean;\n};\n\ntype Action =\n | {\n type: 'set_uploaded_assets';\n payload: File[];\n }\n | {\n type: 'set_assets_to_upload_length';\n payload: number;\n }\n | {\n type: 'set_uploaded_asset_caption';\n payload: { id: number; caption: string };\n }\n | {\n type: 'set_uploaded_asset_alt_text';\n payload: { id: number; altText: string };\n }\n | {\n type: 'remove_uploaded_asset';\n payload: { id: number };\n }\n | {\n type: 'edit_uploaded_asset';\n payload: { editedAsset: File };\n }\n | {\n type: 'clear_unsaved_changes';\n };\n\nconst [AIUploadModalContext, useAIUploadModalContext] = createContext<{\n state: State;\n dispatch: React.Dispatch<Action>;\n folderId: number | null;\n onClose: () => void;\n}>('AIUploadModalContext');\n\nconst reducer = (state: State, action: Action): State => {\n return produce(state, (draft: State) => {\n if (action.type === 'set_uploaded_assets') {\n draft.uploadedAssets = action.payload.map((file) => ({\n file,\n wasCaptionChanged: false,\n wasAltTextChanged: false,\n }));\n draft.hasUnsavedChanges = false;\n }\n\n if (action.type === 'set_assets_to_upload_length') {\n draft.assetsToUploadLength = action.payload;\n }\n\n if (action.type === 'set_uploaded_asset_caption') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.caption !== action.payload.caption) {\n asset.file.caption = action.payload.caption;\n asset.wasCaptionChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'set_uploaded_asset_alt_text') {\n const asset = draft.uploadedAssets.find((a) => a.file.id === action.payload.id);\n if (asset && asset.file.alternativeText !== action.payload.altText) {\n asset.file.alternativeText = action.payload.altText;\n asset.wasAltTextChanged = true;\n draft.hasUnsavedChanges = true;\n }\n }\n\n if (action.type === 'remove_uploaded_asset') {\n draft.uploadedAssets = draft.uploadedAssets.filter((a) => a.file.id !== action.payload.id);\n }\n\n if (action.type === 'edit_uploaded_asset') {\n const assetIndex = draft.uploadedAssets.findIndex(\n (a) => a.file.id === action.payload.editedAsset.id\n );\n if (assetIndex !== -1) {\n draft.uploadedAssets[assetIndex] = {\n file: action.payload.editedAsset,\n wasCaptionChanged: draft.uploadedAssets[assetIndex].wasCaptionChanged,\n wasAltTextChanged: draft.uploadedAssets[assetIndex].wasAltTextChanged,\n };\n }\n }\n\n if (action.type === 'clear_unsaved_changes') {\n draft.hasUnsavedChanges = false;\n draft.uploadedAssets.forEach((asset) => {\n asset.wasCaptionChanged = false;\n asset.wasAltTextChanged = false;\n });\n }\n });\n};\n\nexport const AIUploadModal = ({ open, onClose, folderId = null }: AIUploadModalProps) => {\n const [state, dispatch] = React.useReducer(reducer, {\n uploadedAssets: [],\n assetsToUploadLength: 0,\n hasUnsavedChanges: false,\n });\n\n const handleClose = React.useCallback(() => {\n // Reset state when modal closes\n dispatch({ type: 'set_uploaded_assets', payload: [] });\n onClose();\n }, [onClose]);\n\n return (\n <AIUploadModalContext\n state={state}\n dispatch={dispatch}\n folderId={folderId}\n onClose={handleClose}\n >\n <Modal.Root open={open} onOpenChange={handleClose}>\n <ModalContent onClose={handleClose} />\n </Modal.Root>\n </AIUploadModalContext>\n );\n};\n\nexport { useAIUploadModalContext };\n"],"names":["StyledModalBody","styled","Modal","Body","theme","spaces","StyledAlert","Alert","ModalContent","onClose","formatMessage","useIntl","state","useAIUploadModalContext","s","dispatch","folderId","upload","useUpload","edit","isLoading","isSaving","useBulkEdit","isUploading","setIsUploading","React","useState","uploadError","setUploadError","trackUsage","useTracking","handleCaptionChange","assetId","caption","type","payload","id","handleAltTextChange","altText","resetState","handleFinish","hasUnsavedChanges","assetsToUpdate","uploadedAssets","filter","asset","wasCaptionChanged","wasAltTextChanged","file","length","some","updates","map","fileInfo","name","alternativeText","folder","err","console","error","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","Error","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","defaultMessage","AIAssetCardSkeletons","count","title","closeLabel","variant","Footer","Button","onClick","loading","Flex","gap","direction","alignItems","AIAssetCard","onCaptionChange","onAltTextChange","AIUploadModalContext","createContext","reducer","action","produce","draft","find","a","assetIndex","findIndex","editedAsset","forEach","AIUploadModal","open","useReducer","handleClose","useCallback","Root","onOpenChange"],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import 'byte-size';
|
|
|
13
13
|
import 'date-fns';
|
|
14
14
|
import { getTrad } from '../../utils/getTrad.mjs';
|
|
15
15
|
import 'qs';
|
|
16
|
-
import '../../
|
|
16
|
+
import '../../utils/typeFromMime.mjs';
|
|
17
17
|
import '../../utils/urlYupSchema.mjs';
|
|
18
18
|
import { AIAssetCardSkeletons, AIAssetCard } from './AIAssetCard.mjs';
|
|
19
19
|
|