@strapi/upload 5.48.0 → 5.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/ai/components/AIAssetCard.js +3 -2
- package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
- package/dist/admin/ai/components/AIUploadModal.js +3 -2
- package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
- package/dist/admin/components/AssetCard/UploadingAssetCard.js +3 -2
- package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
- package/dist/admin/components/AssetCard/VideoAssetCard.js +3 -2
- package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
- package/dist/admin/components/AssetDialog/AssetDialog.js +3 -2
- package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -1
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +3 -2
- package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
- package/dist/admin/components/AssetGridList/Draggable.js +3 -2
- package/dist/admin/components/AssetGridList/Draggable.js.map +1 -1
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +3 -2
- package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +5 -1
- package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js +8 -4
- package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +7 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +7 -3
- package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +3 -2
- package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +8 -4
- package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
- package/dist/admin/components/FilterPopover/FilterPopover.js +3 -2
- package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js +3 -2
- package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js +5 -3
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs +2 -1
- package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +3 -2
- package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +3 -2
- package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +3 -2
- package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
- package/dist/admin/components/SelectTree/SelectTree.js +7 -3
- package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
- package/dist/admin/components/TableList/CellContent.js +5 -1
- package/dist/admin/components/TableList/CellContent.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +3 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +3 -2
- package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +3 -2
- package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js +3 -2
- package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
- package/dist/admin/future/components/Drawer.js +4 -3
- package/dist/admin/future/components/Drawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.js +29 -4
- package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
- package/dist/admin/future/pages/Assets/AssetsPage.mjs +28 -4
- package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +3 -2
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +3 -2
- package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js +3 -2
- package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +389 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +387 -0
- package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -0
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js +3 -2
- package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js +4 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs +4 -4
- package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +48 -2
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +48 -2
- package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
- package/dist/admin/future/services/folders.js +28 -1
- package/dist/admin/future/services/folders.js.map +1 -1
- package/dist/admin/future/services/folders.mjs +28 -2
- package/dist/admin/future/services/folders.mjs.map +1 -1
- package/dist/admin/future/utils/files.js +5 -1
- package/dist/admin/future/utils/files.js.map +1 -1
- package/dist/admin/hooks/useAIMetadataJob.js +3 -2
- package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
- package/dist/admin/hooks/useAssets.js +3 -2
- package/dist/admin/hooks/useAssets.js.map +1 -1
- package/dist/admin/hooks/useCropImg.js +7 -3
- package/dist/admin/hooks/useCropImg.js.map +1 -1
- package/dist/admin/hooks/useEditAsset.js +3 -2
- package/dist/admin/hooks/useEditAsset.js.map +1 -1
- package/dist/admin/hooks/useFolders.js +3 -2
- package/dist/admin/hooks/useFolders.js.map +1 -1
- package/dist/admin/hooks/useModalQueryParams.js +3 -2
- package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
- package/dist/admin/hooks/useSelectionState.js +3 -2
- package/dist/admin/hooks/useSelectionState.js.map +1 -1
- package/dist/admin/hooks/useUpload.js +3 -2
- package/dist/admin/hooks/useUpload.js.map +1 -1
- package/dist/admin/pages/App/App.js +3 -2
- package/dist/admin/pages/App/App.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +7 -3
- package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js +7 -2
- package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -1
- package/dist/admin/pages/App/MediaLibrary.js +3 -2
- package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
- package/dist/admin/pages/App/components/BulkMoveButton.js +3 -2
- package/dist/admin/pages/App/components/BulkMoveButton.js.map +1 -1
- package/dist/admin/pages/App/components/Filters.js +3 -2
- package/dist/admin/pages/App/components/Filters.js.map +1 -1
- package/dist/admin/pages/SettingsPage/SettingsPage.js +7 -3
- package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
- package/dist/admin/pages/SettingsPage/reducer.js +5 -1
- package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
- package/dist/admin/src/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +2 -1
- package/dist/admin/src/future/pages/Assets/components/FolderTree/FolderTree.d.ts +19 -0
- package/dist/admin/src/future/pages/Assets/hooks/useFolderNavigation.d.ts +2 -0
- package/dist/admin/src/future/services/folders.d.ts +2 -2
- package/dist/admin/translations/en.json.js +10 -1
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +10 -1
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/formatBytes.js +5 -1
- package/dist/admin/utils/formatBytes.js.map +1 -1
- package/dist/admin/utils/urlYupSchema.js +3 -2
- package/dist/admin/utils/urlYupSchema.js.map +1 -1
- package/dist/server/controllers/admin-upload.js +11 -4
- package/dist/server/controllers/admin-upload.js.map +1 -1
- package/dist/server/controllers/content-api.js +19 -2
- package/dist/server/controllers/content-api.js.map +1 -1
- package/dist/server/controllers/content-api.mjs +12 -0
- package/dist/server/controllers/content-api.mjs.map +1 -1
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js +7 -3
- package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -1
- package/dist/server/middlewares/upload.js +7 -2
- package/dist/server/middlewares/upload.js.map +1 -1
- package/dist/server/register.js +9 -4
- package/dist/server/register.js.map +1 -1
- package/dist/server/routes/content-api.js +18 -2
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +15 -0
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/routes/validation/upload.js +31 -2
- package/dist/server/routes/validation/upload.js.map +1 -1
- package/dist/server/routes/validation/upload.mjs +28 -0
- package/dist/server/routes/validation/upload.mjs.map +1 -1
- package/dist/server/services/file.js +13 -6
- package/dist/server/services/file.js.map +1 -1
- package/dist/server/services/image-manipulation.js +18 -12
- package/dist/server/services/image-manipulation.js.map +1 -1
- package/dist/server/services/provider.js +24 -0
- package/dist/server/services/provider.js.map +1 -1
- package/dist/server/services/provider.mjs +24 -0
- package/dist/server/services/provider.mjs.map +1 -1
- package/dist/server/services/upload.js +187 -31
- package/dist/server/services/upload.js.map +1 -1
- package/dist/server/services/upload.mjs +159 -11
- package/dist/server/services/upload.mjs.map +1 -1
- package/dist/server/src/controllers/content-api.d.ts +1 -0
- package/dist/server/src/controllers/content-api.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -0
- package/dist/server/src/controllers/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +6 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/routes/validation/upload.d.ts +45 -0
- package/dist/server/src/routes/validation/upload.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +5 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/provider.d.ts +2 -1
- package/dist/server/src/services/provider.d.ts.map +1 -1
- package/dist/server/src/services/upload.d.ts +5 -0
- package/dist/server/src/services/upload.d.ts.map +1 -1
- package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
- package/dist/server/utils/mime-validation.js +8 -2
- package/dist/server/utils/mime-validation.js.map +1 -1
- package/dist/server/utils/mime-validation.mjs +9 -3
- package/dist/server/utils/mime-validation.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -23,7 +23,8 @@ var typeFromMime = require('../../utils/typeFromMime.js');
|
|
|
23
23
|
require('../../utils/urlYupSchema.js');
|
|
24
24
|
var AIUploadModal = require('./AIUploadModal.js');
|
|
25
25
|
|
|
26
|
-
function
|
|
26
|
+
function _interopNamespace(e) {
|
|
27
|
+
if (e && e.__esModule) return e;
|
|
27
28
|
var n = Object.create(null);
|
|
28
29
|
if (e) {
|
|
29
30
|
Object.keys(e).forEach(function (k) {
|
|
@@ -40,7 +41,7 @@ function _interopNamespaceDefault(e) {
|
|
|
40
41
|
return Object.freeze(n);
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
var React__namespace = /*#__PURE__*/
|
|
44
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
44
45
|
|
|
45
46
|
const CardActionsContainer = styledComponents.styled(designSystem.CardAction)`
|
|
46
47
|
opacity: 0;
|
|
@@ -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, 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 m={5} xs={12} 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 m={7} xs={12} 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 m={7} xs={12} 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","m","xs","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","col","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 m={5} xs={12} 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 m={7} xs={12} 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 m={7} xs={12} 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","m","xs","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","col","display","marginTop"],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ require('../../utils/typeFromMime.js');
|
|
|
19
19
|
require('../../utils/urlYupSchema.js');
|
|
20
20
|
var AIAssetCard = require('./AIAssetCard.js');
|
|
21
21
|
|
|
22
|
-
function
|
|
22
|
+
function _interopNamespace(e) {
|
|
23
|
+
if (e && e.__esModule) return e;
|
|
23
24
|
var n = Object.create(null);
|
|
24
25
|
if (e) {
|
|
25
26
|
Object.keys(e).forEach(function (k) {
|
|
@@ -36,7 +37,7 @@ function _interopNamespaceDefault(e) {
|
|
|
36
37
|
return Object.freeze(n);
|
|
37
38
|
}
|
|
38
39
|
|
|
39
|
-
var React__namespace = /*#__PURE__*/
|
|
40
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
40
41
|
|
|
41
42
|
/* -------------------------------------------------------------------------------------------------
|
|
42
43
|
* ModalBody
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIUploadModal.js","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext, useNotification } 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 { toggleNotification } = useNotification();\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 toggleNotification({\n type: 'danger',\n message:\n (err instanceof Error ? err.message : null) ||\n formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\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","toggleNotification","useNotification","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","message","Error","defaultMessage","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","error","console","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","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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"}
|
|
1
|
+
{"version":3,"file":"AIUploadModal.js","sources":["../../../../admin/src/ai/components/AIUploadModal.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { createContext, useNotification } 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 { toggleNotification } = useNotification();\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 toggleNotification({\n type: 'danger',\n message:\n (err instanceof Error ? err.message : null) ||\n formatMessage({ id: 'notification.error', defaultMessage: 'An error occurred' }),\n });\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","toggleNotification","useNotification","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","message","Error","defaultMessage","handleCancel","handleUpload","assets","assetsForUpload","Number","undefined","uploadedFiles","filesWithFolder","error","console","assetsToUploadLength","_jsx","Content","AddAssetStep","onAddAsset","_jsxs","Header","Title","getTrad","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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"}
|
|
@@ -15,7 +15,8 @@ require('../../utils/typeFromMime.js');
|
|
|
15
15
|
require('../../utils/urlYupSchema.js');
|
|
16
16
|
var UploadProgress = require('../UploadProgress/UploadProgress.js');
|
|
17
17
|
|
|
18
|
-
function
|
|
18
|
+
function _interopNamespace(e) {
|
|
19
|
+
if (e && e.__esModule) return e;
|
|
19
20
|
var n = Object.create(null);
|
|
20
21
|
if (e) {
|
|
21
22
|
Object.keys(e).forEach(function (k) {
|
|
@@ -32,7 +33,7 @@ function _interopNamespaceDefault(e) {
|
|
|
32
33
|
return Object.freeze(n);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
var React__namespace = /*#__PURE__*/
|
|
36
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
36
37
|
|
|
37
38
|
const UploadProgressWrapper = styledComponents.styled.div`
|
|
38
39
|
height: 8.8rem;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UploadingAssetCard.js","sources":["../../../../admin/src/components/AssetCard/UploadingAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Card,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n Flex,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad } from '../../utils';\nimport { UploadProgress } from '../UploadProgress/UploadProgress';\n\nimport type { RawFile, File } from '../../../../shared/contracts/files';\n\nconst UploadProgressWrapper = styled.div`\n height: 8.8rem;\n width: 100%;\n`;\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\ninterface UploadingAssetCardProps {\n onCancel: (rawFile: RawFile) => void;\n onStatusChange: (status: string) => void;\n addUploadedFiles: (files: File[]) => void;\n folderId?: string | number | null;\n asset: Asset;\n id?: string;\n size?: 'S' | 'M';\n}\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\nexport const UploadingAssetCard = ({\n asset,\n onCancel,\n onStatusChange,\n addUploadedFiles,\n folderId = null,\n}: UploadingAssetCardProps) => {\n const { upload, cancel, error, progress, status } = useUpload();\n const { formatMessage } = useIntl();\n\n let badgeContent = formatMessage({\n id: getTrad('settings.section.doc.label'),\n defaultMessage: 'Doc',\n });\n\n if (asset.type === AssetType.Image) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.image.label'),\n defaultMessage: 'Image',\n });\n } else if (asset.type === AssetType.Video) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.video.label'),\n defaultMessage: 'Video',\n });\n } else if (asset.type === AssetType.Audio) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.audio.label'),\n defaultMessage: 'Audio',\n });\n }\n\n React.useEffect(() => {\n const uploadFile = async () => {\n const files = await upload(asset, folderId ? Number(folderId) : null);\n\n if (addUploadedFiles) {\n addUploadedFiles(files);\n }\n };\n\n uploadFile();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n onStatusChange(status);\n }, [status, onStatusChange]);\n\n const handleCancel = () => {\n cancel();\n onCancel(asset.rawFile!);\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Card borderColor={error ? 'danger600' : 'neutral150'}>\n <CardHeader>\n <UploadProgressWrapper>\n <UploadProgress\n error={error || undefined}\n onCancel={handleCancel}\n progress={progress}\n />\n </UploadProgressWrapper>\n </CardHeader>\n <CardBody>\n <CardContent>\n <Box paddingTop={1}>\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n </Box>\n <CardSubtitle>\n <Extension>{asset.ext}</Extension>\n </CardSubtitle>\n </CardContent>\n <Flex paddingTop={1} grow={1}>\n <CardBadge>{badgeContent}</CardBadge>\n </Flex>\n </CardBody>\n </Card>\n {error ? (\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"danger600\">\n {formatMessage(\n error?.message\n ? {\n id: getTrad(`apiError.${error.message}`),\n defaultMessage: error.message,\n /* See issue: https://github.com/strapi/strapi/issues/13867\n A proxy might return an error, before the request reaches Strapi\n and therefore we need to handle errors gracefully.\n */\n }\n : {\n id: getTrad('upload.generic-error'),\n defaultMessage: 'An error occurred while uploading the file.',\n }\n )}\n </Typography>\n ) : undefined}\n </Flex>\n );\n};\n"],"names":["UploadProgressWrapper","styled","div","Extension","span","UploadingAssetCard","asset","onCancel","onStatusChange","addUploadedFiles","folderId","upload","cancel","error","progress","status","useUpload","formatMessage","useIntl","badgeContent","id","getTrad","defaultMessage","type","AssetType","Image","Video","Audio","React","useEffect","uploadFile","files","Number","handleCancel","rawFile","_jsxs","Flex","direction","alignItems","gap","Card","borderColor","_jsx","CardHeader","UploadProgress","undefined","CardBody","CardContent","Box","paddingTop","Typography","tag","CardTitle","name","CardSubtitle","ext","grow","CardBadge","variant","fontWeight","textColor","message"],"mappings":"
|
|
1
|
+
{"version":3,"file":"UploadingAssetCard.js","sources":["../../../../admin/src/components/AssetCard/UploadingAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Box,\n Card,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n Flex,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../enums';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad } from '../../utils';\nimport { UploadProgress } from '../UploadProgress/UploadProgress';\n\nimport type { RawFile, File } from '../../../../shared/contracts/files';\n\nconst UploadProgressWrapper = styled.div`\n height: 8.8rem;\n width: 100%;\n`;\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\ninterface UploadingAssetCardProps {\n onCancel: (rawFile: RawFile) => void;\n onStatusChange: (status: string) => void;\n addUploadedFiles: (files: File[]) => void;\n folderId?: string | number | null;\n asset: Asset;\n id?: string;\n size?: 'S' | 'M';\n}\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\nexport const UploadingAssetCard = ({\n asset,\n onCancel,\n onStatusChange,\n addUploadedFiles,\n folderId = null,\n}: UploadingAssetCardProps) => {\n const { upload, cancel, error, progress, status } = useUpload();\n const { formatMessage } = useIntl();\n\n let badgeContent = formatMessage({\n id: getTrad('settings.section.doc.label'),\n defaultMessage: 'Doc',\n });\n\n if (asset.type === AssetType.Image) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.image.label'),\n defaultMessage: 'Image',\n });\n } else if (asset.type === AssetType.Video) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.video.label'),\n defaultMessage: 'Video',\n });\n } else if (asset.type === AssetType.Audio) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.audio.label'),\n defaultMessage: 'Audio',\n });\n }\n\n React.useEffect(() => {\n const uploadFile = async () => {\n const files = await upload(asset, folderId ? Number(folderId) : null);\n\n if (addUploadedFiles) {\n addUploadedFiles(files);\n }\n };\n\n uploadFile();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n onStatusChange(status);\n }, [status, onStatusChange]);\n\n const handleCancel = () => {\n cancel();\n onCancel(asset.rawFile!);\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Card borderColor={error ? 'danger600' : 'neutral150'}>\n <CardHeader>\n <UploadProgressWrapper>\n <UploadProgress\n error={error || undefined}\n onCancel={handleCancel}\n progress={progress}\n />\n </UploadProgressWrapper>\n </CardHeader>\n <CardBody>\n <CardContent>\n <Box paddingTop={1}>\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n </Box>\n <CardSubtitle>\n <Extension>{asset.ext}</Extension>\n </CardSubtitle>\n </CardContent>\n <Flex paddingTop={1} grow={1}>\n <CardBadge>{badgeContent}</CardBadge>\n </Flex>\n </CardBody>\n </Card>\n {error ? (\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"danger600\">\n {formatMessage(\n error?.message\n ? {\n id: getTrad(`apiError.${error.message}`),\n defaultMessage: error.message,\n /* See issue: https://github.com/strapi/strapi/issues/13867\n A proxy might return an error, before the request reaches Strapi\n and therefore we need to handle errors gracefully.\n */\n }\n : {\n id: getTrad('upload.generic-error'),\n defaultMessage: 'An error occurred while uploading the file.',\n }\n )}\n </Typography>\n ) : undefined}\n </Flex>\n );\n};\n"],"names":["UploadProgressWrapper","styled","div","Extension","span","UploadingAssetCard","asset","onCancel","onStatusChange","addUploadedFiles","folderId","upload","cancel","error","progress","status","useUpload","formatMessage","useIntl","badgeContent","id","getTrad","defaultMessage","type","AssetType","Image","Video","Audio","React","useEffect","uploadFile","files","Number","handleCancel","rawFile","_jsxs","Flex","direction","alignItems","gap","Card","borderColor","_jsx","CardHeader","UploadProgress","undefined","CardBody","CardContent","Box","paddingTop","Typography","tag","CardTitle","name","CardSubtitle","ext","grow","CardBadge","variant","fontWeight","textColor","message"],"mappings":"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"}
|
|
@@ -12,7 +12,8 @@ require('../../utils/urlYupSchema.js');
|
|
|
12
12
|
var AssetCardBase = require('./AssetCardBase.js');
|
|
13
13
|
var VideoPreview = require('./VideoPreview.js');
|
|
14
14
|
|
|
15
|
-
function
|
|
15
|
+
function _interopNamespace(e) {
|
|
16
|
+
if (e && e.__esModule) return e;
|
|
16
17
|
var n = Object.create(null);
|
|
17
18
|
if (e) {
|
|
18
19
|
Object.keys(e).forEach(function (k) {
|
|
@@ -29,7 +30,7 @@ function _interopNamespaceDefault(e) {
|
|
|
29
30
|
return Object.freeze(n);
|
|
30
31
|
}
|
|
31
32
|
|
|
32
|
-
var React__namespace = /*#__PURE__*/
|
|
33
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
33
34
|
|
|
34
35
|
const VideoPreviewWrapper = styledComponents.styled(designSystem.Box)`
|
|
35
36
|
canvas,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoAssetCard.js","sources":["../../../../admin/src/components/AssetCard/VideoAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, CardAsset, CardTimer } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { formatDuration } from '../../utils';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\nimport { VideoPreview } from './VideoPreview';\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n display: block;\n pointer-events: none;\n max-width: 100%;\n max-height: ${({ size }) => (size === 'M' ? 16.4 : 8.8)}rem;\n }\n`;\n\ninterface VideoAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n mime: string;\n url: string;\n size?: 'S' | 'M';\n}\n\nexport const VideoAssetCard = ({\n name,\n url,\n mime,\n size = 'M',\n selected = false,\n ...props\n}: VideoAssetCardProps) => {\n const [duration, setDuration] = React.useState<number>();\n\n const formattedDuration = duration && formatDuration(duration);\n\n return (\n <AssetCardBase selected={selected} name={name} {...props} variant=\"Video\">\n <CardAsset size={size}>\n <VideoPreviewWrapper size={size}>\n <VideoPreview url={url} mime={mime} onLoadDuration={setDuration} alt={name} />\n </VideoPreviewWrapper>\n </CardAsset>\n <CardTimer>{formattedDuration || '...'}</CardTimer>\n </AssetCardBase>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","size","VideoAssetCard","name","url","mime","selected","props","duration","setDuration","React","useState","formattedDuration","formatDuration","_jsxs","AssetCardBase","variant","_jsx","CardAsset","VideoPreview","onLoadDuration","alt","CardTimer"],"mappings":"
|
|
1
|
+
{"version":3,"file":"VideoAssetCard.js","sources":["../../../../admin/src/components/AssetCard/VideoAssetCard.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, CardAsset, CardTimer } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { formatDuration } from '../../utils';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\nimport { VideoPreview } from './VideoPreview';\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n display: block;\n pointer-events: none;\n max-width: 100%;\n max-height: ${({ size }) => (size === 'M' ? 16.4 : 8.8)}rem;\n }\n`;\n\ninterface VideoAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n mime: string;\n url: string;\n size?: 'S' | 'M';\n}\n\nexport const VideoAssetCard = ({\n name,\n url,\n mime,\n size = 'M',\n selected = false,\n ...props\n}: VideoAssetCardProps) => {\n const [duration, setDuration] = React.useState<number>();\n\n const formattedDuration = duration && formatDuration(duration);\n\n return (\n <AssetCardBase selected={selected} name={name} {...props} variant=\"Video\">\n <CardAsset size={size}>\n <VideoPreviewWrapper size={size}>\n <VideoPreview url={url} mime={mime} onLoadDuration={setDuration} alt={name} />\n </VideoPreviewWrapper>\n </CardAsset>\n <CardTimer>{formattedDuration || '...'}</CardTimer>\n </AssetCardBase>\n );\n};\n"],"names":["VideoPreviewWrapper","styled","Box","size","VideoAssetCard","name","url","mime","selected","props","duration","setDuration","React","useState","formattedDuration","formatDuration","_jsxs","AssetCardBase","variant","_jsx","CardAsset","VideoPreview","onLoadDuration","alt","CardTimer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAMA,mBAAAA,GAAsBC,uBAAAA,CAAOC,gBAAAA,CAAI;;;;;;gBAMvB,EAAE,CAAC,EAAEC,IAAI,EAAE,GAAMA,IAAAA,KAAS,GAAA,GAAM,OAAO,GAAA,CAAK;;AAE5D,CAAC;MAQYC,cAAAA,GAAiB,CAAC,EAC7BC,IAAI,EACJC,GAAG,EACHC,IAAI,EACJJ,OAAO,GAAG,EACVK,WAAW,KAAK,EAChB,GAAGC,KAAAA,EACiB,GAAA;AACpB,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGC,iBAAMC,QAAQ,EAAA;IAE9C,MAAMC,iBAAAA,GAAoBJ,YAAYK,6BAAAA,CAAeL,QAAAA,CAAAA;AAErD,IAAA,qBACEM,eAAA,CAACC,2BAAAA,EAAAA;QAAcT,QAAAA,EAAUA,QAAAA;QAAUH,IAAAA,EAAMA,IAAAA;AAAO,QAAA,GAAGI,KAAK;QAAES,OAAAA,EAAQ,OAAA;;0BAChEC,cAAA,CAACC,sBAAAA,EAAAA;gBAAUjB,IAAAA,EAAMA,IAAAA;AACf,gBAAA,QAAA,gBAAAgB,cAAA,CAACnB,mBAAAA,EAAAA;oBAAoBG,IAAAA,EAAMA,IAAAA;AACzB,oBAAA,QAAA,gBAAAgB,cAAA,CAACE,yBAAAA,EAAAA;wBAAaf,GAAAA,EAAKA,GAAAA;wBAAKC,IAAAA,EAAMA,IAAAA;wBAAMe,cAAAA,EAAgBX,WAAAA;wBAAaY,GAAAA,EAAKlB;;;;0BAG1Ec,cAAA,CAACK,sBAAAA,EAAAA;0BAAWV,iBAAAA,IAAqB;;;;AAGvC;;;;"}
|
|
@@ -26,7 +26,8 @@ var BrowseStep = require('./BrowseStep/BrowseStep.js');
|
|
|
26
26
|
var DialogFooter = require('./DialogFooter.js');
|
|
27
27
|
var SelectedStep = require('./SelectedStep/SelectedStep.js');
|
|
28
28
|
|
|
29
|
-
function
|
|
29
|
+
function _interopNamespace(e) {
|
|
30
|
+
if (e && e.__esModule) return e;
|
|
30
31
|
var n = Object.create(null);
|
|
31
32
|
if (e) {
|
|
32
33
|
Object.keys(e).forEach(function (k) {
|
|
@@ -43,7 +44,7 @@ function _interopNamespaceDefault(e) {
|
|
|
43
44
|
return Object.freeze(n);
|
|
44
45
|
}
|
|
45
46
|
|
|
46
|
-
var React__namespace = /*#__PURE__*/
|
|
47
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
47
48
|
|
|
48
49
|
// TODO: find a better naming convention for the file that was an index file before
|
|
49
50
|
const LoadingBody = styledComponents.styled(designSystem.Flex)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssetDialog.js","sources":["../../../../admin/src/components/AssetDialog/AssetDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport {\n Badge,\n Button,\n Divider,\n Flex,\n Loader,\n Modal,\n ScrollArea,\n Tabs,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useModalQueryParams } from '../../hooks/useModalQueryParams';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport {\n containsAssetFilter,\n getTrad,\n getAllowedFiles,\n moveElement,\n AllowedFiles,\n} from '../../utils';\nimport { EditAssetContent, Asset as EditAsset } from '../EditAssetDialog/EditAssetContent';\nimport { EditFolderContent } from '../EditFolderDialog/EditFolderDialog';\n\nimport {\n BrowseStep,\n FolderWithType,\n FileWithType,\n Filter as BrowseFilter,\n} from './BrowseStep/BrowseStep';\nimport { DialogFooter } from './DialogFooter';\nimport { SelectedStep } from './SelectedStep/SelectedStep';\n\nimport type { File as Asset, FilterCondition, Query } from '../../../../shared/contracts/files';\nimport type { Folder, FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nexport interface FileRow extends Asset {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface AssetContentProps {\n allowedTypes?: AllowedTypes[];\n folderId?: number | null;\n onClose: () => void;\n onAddAsset: (arg?: { folderId: number | { id: number } | null | undefined }) => void;\n onAddFolder: ({ folderId }: { folderId: number | { id: number } | null | undefined }) => void;\n onChangeFolder: (folderId: number | null) => void;\n onValidate: (selectedAssets: Asset[]) => void;\n multiple?: boolean;\n trackedLocation?: string;\n initiallySelectedAssets?: Asset[];\n}\n\nexport const AssetContent = ({\n allowedTypes = [],\n folderId = null,\n onClose,\n onAddAsset,\n onAddFolder,\n onChangeFolder,\n onValidate,\n multiple = false,\n initiallySelectedAssets = [],\n trackedLocation,\n}: AssetContentProps) => {\n const [assetToEdit, setAssetToEdit] = React.useState<FileWithType | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined>(undefined);\n const { formatMessage } = useIntl();\n const {\n canRead,\n canCreate,\n isLoading: isLoadingPermissions,\n canUpdate,\n canCopyLink,\n canDownload,\n } = useMediaLibraryPermissions();\n\n const [\n { queryObject },\n {\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSort,\n onChangeSearch,\n onChangeFolder: onChangeFolderParam,\n },\n ] = useModalQueryParams({ folder: folderId });\n\n const {\n data: { pagination, results: assets } = {},\n isLoading: isLoadingAssets,\n error: errorAssets,\n } = useAssets({ skipWhen: !canRead, query: queryObject });\n\n const {\n data: folders,\n isLoading: isLoadingFolders,\n error: errorFolders,\n } = useFolders({\n enabled: canRead && !containsAssetFilter(queryObject!) && pagination?.page === 1,\n query: queryObject,\n });\n\n const [\n selectedAssets,\n { selectOne, selectOnly, setSelections, selectMultiple, deselectMultiple },\n ] = useSelectionState(['id'], initiallySelectedAssets);\n\n const handleSelectAllAssets = () => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (!multiple) {\n return undefined;\n }\n\n // selected files in current folder\n const alreadySelected = allowedAssets.filter(\n (asset) => selectedAssets.findIndex((selectedAsset) => selectedAsset.id === asset.id) !== -1\n );\n\n if (alreadySelected.length > 0) {\n deselectMultiple(alreadySelected);\n } else {\n selectMultiple(allowedAssets);\n }\n };\n\n const handleSelectAsset = (asset: Asset | FileRow | FolderRow) => {\n return multiple ? selectOne(asset as Asset) : selectOnly(asset as Asset);\n };\n\n const isLoading = isLoadingPermissions || isLoadingAssets || isLoadingFolders;\n const hasError = errorAssets || errorFolders;\n\n const [activeTab, setActiveTab] = React.useState(\n selectedAssets.length > 0 ? 'selected' : 'browse'\n );\n\n if (isLoading) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <LoadingBody justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (hasError) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.Error />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (!canRead) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.NoPermissions />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (assetToEdit) {\n return (\n <EditAssetContent\n onClose={() => setAssetToEdit(undefined)}\n asset={assetToEdit as EditAsset}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation={trackedLocation}\n />\n );\n }\n\n if (folderToEdit) {\n return (\n <EditFolderContent\n folder={folderToEdit as FolderDefinition}\n onClose={() => setFolderToEdit(undefined)}\n location=\"content-manager\"\n parentFolderId={queryObject?.folder as string | number | null | undefined}\n />\n );\n }\n\n const handleMoveItem = (hoverIndex: number, destIndex: number) => {\n const offset = destIndex - hoverIndex;\n const orderedAssetsClone = selectedAssets.slice();\n const nextAssets = moveElement<Asset>(orderedAssetsClone, hoverIndex, offset);\n setSelections(nextAssets);\n };\n\n const handleFolderChange = (folderId: number, folderPath?: string) => {\n onChangeFolder(folderId);\n if (onChangeFolderParam) {\n onChangeFolderParam(folderId, folderPath);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <TabsRoot variant=\"simple\" value={activeTab} onValueChange={setActiveTab}>\n <Flex paddingLeft={8} paddingRight={8} paddingTop={6} justifyContent=\"space-between\">\n <Tabs.List>\n <Tabs.Trigger value=\"browse\">\n {formatMessage({\n id: getTrad('modal.nav.browse'),\n defaultMessage: 'Browse',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"selected\">\n {formatMessage({\n id: getTrad('modal.header.select-files'),\n defaultMessage: 'Selected files',\n })}\n <Badge marginLeft={2}>{selectedAssets.length}</Badge>\n </Tabs.Trigger>\n </Tabs.List>\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => onAddFolder({ folderId: queryObject?.folder })}\n >\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.add-folder'),\n defaultMessage: 'Add folder',\n })}\n </Button>\n <Button onClick={() => onAddAsset({ folderId: queryObject?.folder })}>\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.button'),\n defaultMessage: 'Add more assets',\n })}\n </Button>\n </Flex>\n </Flex>\n <Divider />\n <ScrollArea>\n <Modal.Body>\n <Tabs.Content value=\"browse\">\n <BrowseStep\n allowedTypes={allowedTypes}\n assets={assets!}\n canCreate={canCreate}\n canRead={canRead}\n folders={folders as FolderWithType[]}\n onSelectAsset={handleSelectAsset}\n selectedAssets={selectedAssets}\n multiple={multiple}\n onSelectAllAsset={handleSelectAllAssets}\n onEditAsset={setAssetToEdit}\n onEditFolder={setFolderToEdit}\n pagination={pagination!}\n queryObject={queryObject!}\n onAddAsset={onAddAsset}\n onChangeFilters={(filters: FilterCondition<string>[] | BrowseFilter[]) =>\n onChangeFilters!(filters as FilterCondition<string>[])\n }\n onChangeFolder={handleFolderChange}\n onChangePage={onChangePage!}\n onChangePageSize={onChangePageSize!}\n onChangeSort={(sort: string | undefined) => onChangeSort!(sort as Query['sort'])}\n onChangeSearch={onChangeSearch!}\n />\n </Tabs.Content>\n <Tabs.Content value=\"selected\">\n <SelectedStep\n selectedAssets={selectedAssets}\n onSelectAsset={handleSelectAsset}\n onReorderAsset={handleMoveItem}\n />\n </Tabs.Content>\n </Modal.Body>\n </ScrollArea>\n </TabsRoot>\n <DialogFooter onClose={onClose} onValidate={() => onValidate(selectedAssets)} />\n </>\n );\n};\n\ninterface AssetDialogProps extends AssetContentProps {\n open?: boolean;\n}\n\nexport const AssetDialog = ({ open = false, onClose, ...restProps }: AssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <AssetContent onClose={onClose} {...restProps} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst TabsRoot = styled(Tabs.Root)`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n"],"names":["LoadingBody","styled","Flex","AssetContent","allowedTypes","folderId","onClose","onAddAsset","onAddFolder","onChangeFolder","onValidate","multiple","initiallySelectedAssets","trackedLocation","assetToEdit","setAssetToEdit","React","useState","undefined","folderToEdit","setFolderToEdit","formatMessage","useIntl","canRead","canCreate","isLoading","isLoadingPermissions","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","queryObject","onChangeFilters","onChangePage","onChangePageSize","onChangeSort","onChangeSearch","onChangeFolderParam","useModalQueryParams","folder","data","pagination","results","assets","isLoadingAssets","error","errorAssets","useAssets","skipWhen","query","folders","isLoadingFolders","errorFolders","useFolders","enabled","containsAssetFilter","page","selectedAssets","selectOne","selectOnly","setSelections","selectMultiple","deselectMultiple","useSelectionState","handleSelectAllAssets","allowedAssets","getAllowedFiles","alreadySelected","filter","asset","findIndex","selectedAsset","id","length","handleSelectAsset","hasError","activeTab","setActiveTab","_jsxs","_Fragment","_jsx","Modal","Header","Title","getTrad","defaultMessage","justifyContent","paddingTop","paddingBottom","Loader","DialogFooter","Page","Error","NoPermissions","EditAssetContent","EditFolderContent","location","parentFolderId","handleMoveItem","hoverIndex","destIndex","offset","orderedAssetsClone","slice","nextAssets","moveElement","handleFolderChange","folderPath","TabsRoot","variant","value","onValueChange","paddingLeft","paddingRight","Tabs","List","Trigger","Badge","marginLeft","gap","Button","onClick","Divider","ScrollArea","Body","Content","BrowseStep","onSelectAsset","onSelectAllAsset","onEditAsset","onEditFolder","filters","sort","SelectedStep","onReorderAsset","AssetDialog","open","restProps","Root","onOpenChange"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AssetDialog.js","sources":["../../../../admin/src/components/AssetDialog/AssetDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport {\n Badge,\n Button,\n Divider,\n Flex,\n Loader,\n Modal,\n ScrollArea,\n Tabs,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useModalQueryParams } from '../../hooks/useModalQueryParams';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport {\n containsAssetFilter,\n getTrad,\n getAllowedFiles,\n moveElement,\n AllowedFiles,\n} from '../../utils';\nimport { EditAssetContent, Asset as EditAsset } from '../EditAssetDialog/EditAssetContent';\nimport { EditFolderContent } from '../EditFolderDialog/EditFolderDialog';\n\nimport {\n BrowseStep,\n FolderWithType,\n FileWithType,\n Filter as BrowseFilter,\n} from './BrowseStep/BrowseStep';\nimport { DialogFooter } from './DialogFooter';\nimport { SelectedStep } from './SelectedStep/SelectedStep';\n\nimport type { File as Asset, FilterCondition, Query } from '../../../../shared/contracts/files';\nimport type { Folder, FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nexport interface FileRow extends Asset {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface AssetContentProps {\n allowedTypes?: AllowedTypes[];\n folderId?: number | null;\n onClose: () => void;\n onAddAsset: (arg?: { folderId: number | { id: number } | null | undefined }) => void;\n onAddFolder: ({ folderId }: { folderId: number | { id: number } | null | undefined }) => void;\n onChangeFolder: (folderId: number | null) => void;\n onValidate: (selectedAssets: Asset[]) => void;\n multiple?: boolean;\n trackedLocation?: string;\n initiallySelectedAssets?: Asset[];\n}\n\nexport const AssetContent = ({\n allowedTypes = [],\n folderId = null,\n onClose,\n onAddAsset,\n onAddFolder,\n onChangeFolder,\n onValidate,\n multiple = false,\n initiallySelectedAssets = [],\n trackedLocation,\n}: AssetContentProps) => {\n const [assetToEdit, setAssetToEdit] = React.useState<FileWithType | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined>(undefined);\n const { formatMessage } = useIntl();\n const {\n canRead,\n canCreate,\n isLoading: isLoadingPermissions,\n canUpdate,\n canCopyLink,\n canDownload,\n } = useMediaLibraryPermissions();\n\n const [\n { queryObject },\n {\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSort,\n onChangeSearch,\n onChangeFolder: onChangeFolderParam,\n },\n ] = useModalQueryParams({ folder: folderId });\n\n const {\n data: { pagination, results: assets } = {},\n isLoading: isLoadingAssets,\n error: errorAssets,\n } = useAssets({ skipWhen: !canRead, query: queryObject });\n\n const {\n data: folders,\n isLoading: isLoadingFolders,\n error: errorFolders,\n } = useFolders({\n enabled: canRead && !containsAssetFilter(queryObject!) && pagination?.page === 1,\n query: queryObject,\n });\n\n const [\n selectedAssets,\n { selectOne, selectOnly, setSelections, selectMultiple, deselectMultiple },\n ] = useSelectionState(['id'], initiallySelectedAssets);\n\n const handleSelectAllAssets = () => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (!multiple) {\n return undefined;\n }\n\n // selected files in current folder\n const alreadySelected = allowedAssets.filter(\n (asset) => selectedAssets.findIndex((selectedAsset) => selectedAsset.id === asset.id) !== -1\n );\n\n if (alreadySelected.length > 0) {\n deselectMultiple(alreadySelected);\n } else {\n selectMultiple(allowedAssets);\n }\n };\n\n const handleSelectAsset = (asset: Asset | FileRow | FolderRow) => {\n return multiple ? selectOne(asset as Asset) : selectOnly(asset as Asset);\n };\n\n const isLoading = isLoadingPermissions || isLoadingAssets || isLoadingFolders;\n const hasError = errorAssets || errorFolders;\n\n const [activeTab, setActiveTab] = React.useState(\n selectedAssets.length > 0 ? 'selected' : 'browse'\n );\n\n if (isLoading) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <LoadingBody justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (hasError) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.Error />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (!canRead) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.NoPermissions />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (assetToEdit) {\n return (\n <EditAssetContent\n onClose={() => setAssetToEdit(undefined)}\n asset={assetToEdit as EditAsset}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation={trackedLocation}\n />\n );\n }\n\n if (folderToEdit) {\n return (\n <EditFolderContent\n folder={folderToEdit as FolderDefinition}\n onClose={() => setFolderToEdit(undefined)}\n location=\"content-manager\"\n parentFolderId={queryObject?.folder as string | number | null | undefined}\n />\n );\n }\n\n const handleMoveItem = (hoverIndex: number, destIndex: number) => {\n const offset = destIndex - hoverIndex;\n const orderedAssetsClone = selectedAssets.slice();\n const nextAssets = moveElement<Asset>(orderedAssetsClone, hoverIndex, offset);\n setSelections(nextAssets);\n };\n\n const handleFolderChange = (folderId: number, folderPath?: string) => {\n onChangeFolder(folderId);\n if (onChangeFolderParam) {\n onChangeFolderParam(folderId, folderPath);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <TabsRoot variant=\"simple\" value={activeTab} onValueChange={setActiveTab}>\n <Flex paddingLeft={8} paddingRight={8} paddingTop={6} justifyContent=\"space-between\">\n <Tabs.List>\n <Tabs.Trigger value=\"browse\">\n {formatMessage({\n id: getTrad('modal.nav.browse'),\n defaultMessage: 'Browse',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"selected\">\n {formatMessage({\n id: getTrad('modal.header.select-files'),\n defaultMessage: 'Selected files',\n })}\n <Badge marginLeft={2}>{selectedAssets.length}</Badge>\n </Tabs.Trigger>\n </Tabs.List>\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => onAddFolder({ folderId: queryObject?.folder })}\n >\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.add-folder'),\n defaultMessage: 'Add folder',\n })}\n </Button>\n <Button onClick={() => onAddAsset({ folderId: queryObject?.folder })}>\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.button'),\n defaultMessage: 'Add more assets',\n })}\n </Button>\n </Flex>\n </Flex>\n <Divider />\n <ScrollArea>\n <Modal.Body>\n <Tabs.Content value=\"browse\">\n <BrowseStep\n allowedTypes={allowedTypes}\n assets={assets!}\n canCreate={canCreate}\n canRead={canRead}\n folders={folders as FolderWithType[]}\n onSelectAsset={handleSelectAsset}\n selectedAssets={selectedAssets}\n multiple={multiple}\n onSelectAllAsset={handleSelectAllAssets}\n onEditAsset={setAssetToEdit}\n onEditFolder={setFolderToEdit}\n pagination={pagination!}\n queryObject={queryObject!}\n onAddAsset={onAddAsset}\n onChangeFilters={(filters: FilterCondition<string>[] | BrowseFilter[]) =>\n onChangeFilters!(filters as FilterCondition<string>[])\n }\n onChangeFolder={handleFolderChange}\n onChangePage={onChangePage!}\n onChangePageSize={onChangePageSize!}\n onChangeSort={(sort: string | undefined) => onChangeSort!(sort as Query['sort'])}\n onChangeSearch={onChangeSearch!}\n />\n </Tabs.Content>\n <Tabs.Content value=\"selected\">\n <SelectedStep\n selectedAssets={selectedAssets}\n onSelectAsset={handleSelectAsset}\n onReorderAsset={handleMoveItem}\n />\n </Tabs.Content>\n </Modal.Body>\n </ScrollArea>\n </TabsRoot>\n <DialogFooter onClose={onClose} onValidate={() => onValidate(selectedAssets)} />\n </>\n );\n};\n\ninterface AssetDialogProps extends AssetContentProps {\n open?: boolean;\n}\n\nexport const AssetDialog = ({ open = false, onClose, ...restProps }: AssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <AssetContent onClose={onClose} {...restProps} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst TabsRoot = styled(Tabs.Root)`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n"],"names":["LoadingBody","styled","Flex","AssetContent","allowedTypes","folderId","onClose","onAddAsset","onAddFolder","onChangeFolder","onValidate","multiple","initiallySelectedAssets","trackedLocation","assetToEdit","setAssetToEdit","React","useState","undefined","folderToEdit","setFolderToEdit","formatMessage","useIntl","canRead","canCreate","isLoading","isLoadingPermissions","canUpdate","canCopyLink","canDownload","useMediaLibraryPermissions","queryObject","onChangeFilters","onChangePage","onChangePageSize","onChangeSort","onChangeSearch","onChangeFolderParam","useModalQueryParams","folder","data","pagination","results","assets","isLoadingAssets","error","errorAssets","useAssets","skipWhen","query","folders","isLoadingFolders","errorFolders","useFolders","enabled","containsAssetFilter","page","selectedAssets","selectOne","selectOnly","setSelections","selectMultiple","deselectMultiple","useSelectionState","handleSelectAllAssets","allowedAssets","getAllowedFiles","alreadySelected","filter","asset","findIndex","selectedAsset","id","length","handleSelectAsset","hasError","activeTab","setActiveTab","_jsxs","_Fragment","_jsx","Modal","Header","Title","getTrad","defaultMessage","justifyContent","paddingTop","paddingBottom","Loader","DialogFooter","Page","Error","NoPermissions","EditAssetContent","EditFolderContent","location","parentFolderId","handleMoveItem","hoverIndex","destIndex","offset","orderedAssetsClone","slice","nextAssets","moveElement","handleFolderChange","folderPath","TabsRoot","variant","value","onValueChange","paddingLeft","paddingRight","Tabs","List","Trigger","Badge","marginLeft","gap","Button","onClick","Divider","ScrollArea","Body","Content","BrowseStep","onSelectAsset","onSelectAllAsset","onEditAsset","onEditFolder","filters","sort","SelectedStep","onReorderAsset","AssetDialog","open","restProps","Root","onOpenChange"],"mappings":"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"}
|
|
@@ -14,7 +14,8 @@ require('../../../utils/urlYupSchema.js');
|
|
|
14
14
|
var FilterList = require('../../FilterList/FilterList.js');
|
|
15
15
|
var FilterPopover = require('../../FilterPopover/FilterPopover.js');
|
|
16
16
|
|
|
17
|
-
function
|
|
17
|
+
function _interopNamespace(e) {
|
|
18
|
+
if (e && e.__esModule) return e;
|
|
18
19
|
var n = Object.create(null);
|
|
19
20
|
if (e) {
|
|
20
21
|
Object.keys(e).forEach(function (k) {
|
|
@@ -31,7 +32,7 @@ function _interopNamespaceDefault(e) {
|
|
|
31
32
|
return Object.freeze(n);
|
|
32
33
|
}
|
|
33
34
|
|
|
34
|
-
var React__namespace = /*#__PURE__*/
|
|
35
|
+
var React__namespace = /*#__PURE__*/_interopNamespace(React);
|
|
35
36
|
|
|
36
37
|
const Filters = ({ appliedFilters, onChangeFilters })=>{
|
|
37
38
|
const [open, setOpen] = React__namespace.useState(false);
|