@strapi/upload 5.31.0 → 5.31.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/admin/ai/components/AIUploadModal.js +8 -1
  2. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  3. package/dist/admin/ai/components/AIUploadModal.mjs +9 -2
  4. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  5. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +2 -2
  6. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  7. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -2
  8. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  9. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +6 -1
  10. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
  11. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +6 -1
  12. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
  13. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +4 -0
  14. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  15. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +4 -0
  16. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  17. package/dist/admin/components/TableList/TableRows.js +3 -0
  18. package/dist/admin/components/TableList/TableRows.js.map +1 -1
  19. package/dist/admin/components/TableList/TableRows.mjs +3 -0
  20. package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
  21. package/dist/admin/package.json.js +5 -5
  22. package/dist/admin/package.json.mjs +5 -5
  23. package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.d.ts +1 -0
  24. package/dist/admin/translations/fr.json.js +8 -8
  25. package/dist/admin/translations/fr.json.mjs +8 -8
  26. package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
  27. package/dist/server/utils/mime-validation.js +6 -2
  28. package/dist/server/utils/mime-validation.js.map +1 -1
  29. package/dist/server/utils/mime-validation.mjs +5 -1
  30. package/dist/server/utils/mime-validation.mjs.map +1 -1
  31. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselAssets.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { CarouselInput, CarouselSlide } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { EditAssetDialog } from '../../EditAssetDialog/EditAssetContent';\n\nimport { CarouselAsset } from './CarouselAsset';\nimport { CarouselAssetActions } from './CarouselAssetActions';\nimport { EmptyStateAsset } from './EmptyStateAsset';\n\nimport type { File as FileAsset, RawFile } from '../../../../../shared/contracts/files';\n\nexport type FileWithoutIdHash = Omit<FileAsset, 'id' | 'hash'>;\n\ninterface Asset extends Omit<FileAsset, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileAsset['folder'] & { id: number };\n}\n\nexport interface CarouselAssetsProps {\n assets: FileAsset[];\n disabled?: boolean;\n error?: string;\n hint?: string;\n label: string;\n labelAction?: React.ReactNode;\n onAddAsset: (asset?: FileAsset, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDeleteAsset: (asset: FileAsset) => void;\n onDeleteAssetFromMediaLibrary: () => void;\n onDropAsset?: (assets: FileWithoutIdHash[]) => void;\n onEditAsset?: (asset: FileAsset) => void;\n onNext: () => void;\n onPrevious: () => void;\n required?: boolean;\n selectedAssetIndex: number;\n trackedLocation?: string;\n}\n\nexport const CarouselAssets = React.forwardRef(\n (\n {\n assets,\n disabled = false,\n error,\n hint,\n label,\n labelAction,\n onAddAsset,\n onDeleteAsset,\n onDeleteAssetFromMediaLibrary,\n onDropAsset,\n onEditAsset,\n onNext,\n onPrevious,\n required = false,\n selectedAssetIndex,\n trackedLocation,\n }: CarouselAssetsProps,\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const [isEditingAsset, setIsEditingAsset] = React.useState(false);\n\n const currentAsset = assets[selectedAssetIndex];\n const canEditMedia = !disabled && onEditAsset;\n\n return (\n <>\n <CarouselInput\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n label={label}\n labelAction={labelAction}\n secondaryLabel={currentAsset?.name}\n selectedSlide={selectedAssetIndex}\n previousLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.previousSlide'),\n defaultMessage: 'Previous slide',\n })}\n nextLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.nextSlide'),\n defaultMessage: 'Next slide',\n })}\n onNext={onNext}\n onPrevious={onPrevious}\n hint={hint}\n error={error}\n required={required}\n actions={\n currentAsset ? (\n <CarouselAssetActions\n asset={currentAsset}\n onDeleteAsset={disabled ? undefined : onDeleteAsset}\n onAddAsset={disabled ? undefined : onAddAsset}\n onEditAsset={canEditMedia ? () => setIsEditingAsset(true) : undefined}\n />\n ) : undefined\n }\n >\n {assets.length === 0 ? (\n <CarouselSlide\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: 1, m: 1 }\n )}\n >\n <EmptyStateAsset\n disabled={disabled}\n onClick={onAddAsset}\n onDropAsset={onDropAsset!}\n />\n </CarouselSlide>\n ) : (\n assets.map((asset, index) => (\n <CarouselSlide\n key={asset.id}\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: index + 1, m: assets.length }\n )}\n >\n <CarouselAsset asset={asset} />\n </CarouselSlide>\n ))\n )}\n </CarouselInput>\n <EditAssetDialog\n open={isEditingAsset}\n onClose={(editedAsset) => {\n setIsEditingAsset(false);\n\n // The asset has been deleted\n if (editedAsset === null) {\n onDeleteAssetFromMediaLibrary();\n }\n if (editedAsset && typeof editedAsset !== 'boolean') {\n onEditAsset?.(editedAsset);\n }\n }}\n asset={currentAsset as Asset}\n canUpdate\n canCopyLink\n canDownload\n trackedLocation={trackedLocation}\n />\n </>\n );\n }\n);\n"],"names":["CarouselAssets","React","forwardRef","assets","disabled","error","hint","label","labelAction","onAddAsset","onDeleteAsset","onDeleteAssetFromMediaLibrary","onDropAsset","onEditAsset","onNext","onPrevious","required","selectedAssetIndex","trackedLocation","forwardedRef","formatMessage","useIntl","isEditingAsset","setIsEditingAsset","useState","currentAsset","canEditMedia","_jsxs","_Fragment","_jsx","CarouselInput","ref","secondaryLabel","name","selectedSlide","previousLabel","id","getTrad","defaultMessage","nextLabel","actions","CarouselAssetActions","asset","undefined","length","CarouselSlide","n","m","EmptyStateAsset","onClick","map","index","CarouselAsset","EditAssetDialog","open","onClose","editedAsset","canUpdate","canCopyLink","canDownload"],"mappings":"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"}
1
+ {"version":3,"file":"CarouselAssets.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { CarouselInput, CarouselSlide } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { EditAssetDialog } from '../../EditAssetDialog/EditAssetContent';\n\nimport { CarouselAsset } from './CarouselAsset';\nimport { CarouselAssetActions } from './CarouselAssetActions';\nimport { EmptyStateAsset } from './EmptyStateAsset';\n\nimport type { File as FileAsset, RawFile } from '../../../../../shared/contracts/files';\n\nexport type FileWithoutIdHash = Omit<FileAsset, 'id' | 'hash'>;\n\ninterface Asset extends Omit<FileAsset, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileAsset['folder'] & { id: number };\n}\n\nexport interface CarouselAssetsProps {\n assets: FileAsset[];\n disabled?: boolean;\n error?: string;\n hint?: string;\n label: string;\n labelAction?: React.ReactNode;\n onAddAsset: (asset?: FileAsset, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDeleteAsset: (asset: FileAsset) => void;\n onDeleteAssetFromMediaLibrary: () => void;\n onDropAsset?: (assets: FileWithoutIdHash[]) => void;\n onEditAsset?: (asset: FileAsset) => void;\n onNext: () => void;\n onPrevious: () => void;\n onDoubleClickAsset: (asset: FileAsset, event?: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n required?: boolean;\n selectedAssetIndex: number;\n trackedLocation?: string;\n}\n\nexport const CarouselAssets = React.forwardRef(\n (\n {\n assets,\n disabled = false,\n error,\n hint,\n label,\n labelAction,\n onAddAsset,\n onDeleteAsset,\n onDeleteAssetFromMediaLibrary,\n onDropAsset,\n onEditAsset,\n onNext,\n onPrevious,\n onDoubleClickAsset,\n required = false,\n selectedAssetIndex,\n trackedLocation,\n }: CarouselAssetsProps,\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const [isEditingAsset, setIsEditingAsset] = React.useState(false);\n\n const currentAsset = assets[selectedAssetIndex];\n const canEditMedia = !disabled && onEditAsset;\n\n return (\n <>\n <CarouselInput\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n label={label}\n labelAction={labelAction}\n secondaryLabel={currentAsset?.name}\n selectedSlide={selectedAssetIndex}\n previousLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.previousSlide'),\n defaultMessage: 'Previous slide',\n })}\n nextLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.nextSlide'),\n defaultMessage: 'Next slide',\n })}\n onNext={onNext}\n onPrevious={onPrevious}\n hint={hint}\n error={error}\n required={required}\n actions={\n currentAsset ? (\n <CarouselAssetActions\n asset={currentAsset}\n onDeleteAsset={disabled ? undefined : onDeleteAsset}\n onAddAsset={disabled ? undefined : onAddAsset}\n onEditAsset={canEditMedia ? () => setIsEditingAsset(true) : undefined}\n />\n ) : undefined\n }\n >\n {assets.length === 0 ? (\n <CarouselSlide\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: 1, m: 1 }\n )}\n >\n <EmptyStateAsset\n disabled={disabled}\n onClick={onAddAsset}\n onDropAsset={onDropAsset!}\n />\n </CarouselSlide>\n ) : (\n assets.map((asset, index) => (\n <CarouselSlide\n key={asset.id}\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: index + 1, m: assets.length }\n )}\n onDoubleClick={(event) => {\n setIsEditingAsset(true);\n onDoubleClickAsset(asset, event);\n }}\n aria-selected={currentAsset.id === asset.id}\n >\n <CarouselAsset asset={asset} />\n </CarouselSlide>\n ))\n )}\n </CarouselInput>\n <EditAssetDialog\n open={isEditingAsset}\n onClose={(editedAsset) => {\n setIsEditingAsset(false);\n\n // The asset has been deleted\n if (editedAsset === null) {\n onDeleteAssetFromMediaLibrary();\n }\n if (editedAsset && typeof editedAsset !== 'boolean') {\n onEditAsset?.(editedAsset);\n }\n }}\n asset={currentAsset as Asset}\n canUpdate\n canCopyLink\n canDownload\n trackedLocation={trackedLocation}\n />\n </>\n );\n }\n);\n"],"names":["CarouselAssets","React","forwardRef","assets","disabled","error","hint","label","labelAction","onAddAsset","onDeleteAsset","onDeleteAssetFromMediaLibrary","onDropAsset","onEditAsset","onNext","onPrevious","onDoubleClickAsset","required","selectedAssetIndex","trackedLocation","forwardedRef","formatMessage","useIntl","isEditingAsset","setIsEditingAsset","useState","currentAsset","canEditMedia","_jsxs","_Fragment","_jsx","CarouselInput","ref","secondaryLabel","name","selectedSlide","previousLabel","id","getTrad","defaultMessage","nextLabel","actions","CarouselAssetActions","asset","undefined","length","CarouselSlide","n","m","EmptyStateAsset","onClick","map","index","onDoubleClick","event","aria-selected","CarouselAsset","EditAssetDialog","open","onClose","editedAsset","canUpdate","canCopyLink","canDownload"],"mappings":"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"}
@@ -146,6 +146,9 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
146
146
  allowedUploadedFiles[0]
147
147
  ];
148
148
  }
149
+ const handleDoubleClickAsset = (asset)=>{
150
+ handleAssetEdit(asset);
151
+ };
149
152
  return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
150
153
  children: [
151
154
  /*#__PURE__*/ jsxRuntime.jsx(CarouselAssets.CarouselAssets, {
@@ -161,6 +164,7 @@ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute
161
164
  onEditAsset: handleAssetEdit,
162
165
  onNext: handleNext,
163
166
  onPrevious: handlePrevious,
167
+ onDoubleClickAsset: handleDoubleClickAsset,
164
168
  error: error,
165
169
  hint: hint,
166
170
  required: required,
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { AllowedFiles, getAllowedFiles, getTrad } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { Asset, UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\n\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n const handleDoubleClickAsset = (asset: File) => {\n handleAssetEdit(asset);\n };\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n onDoubleClickAsset={handleDoubleClickAsset}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","handleDoubleClickAsset","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","onDoubleClickAsset","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
@@ -125,6 +125,9 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
125
125
  allowedUploadedFiles[0]
126
126
  ];
127
127
  }
128
+ const handleDoubleClickAsset = (asset)=>{
129
+ handleAssetEdit(asset);
130
+ };
128
131
  return /*#__PURE__*/ jsxs(Fragment, {
129
132
  children: [
130
133
  /*#__PURE__*/ jsx(CarouselAssets, {
@@ -140,6 +143,7 @@ const MediaLibraryInput = /*#__PURE__*/ React.forwardRef(({ attribute: { allowed
140
143
  onEditAsset: handleAssetEdit,
141
144
  onNext: handleNext,
142
145
  onPrevious: handlePrevious,
146
+ onDoubleClickAsset: handleDoubleClickAsset,
143
147
  error: error,
144
148
  hint: hint,
145
149
  required: required,
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { AllowedFiles, getAllowedFiles, getTrad } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { Asset, UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\n\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n const handleDoubleClickAsset = (asset: File) => {\n handleAssetEdit(asset);\n };\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n onDoubleClickAsset={handleDoubleClickAsset}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","handleDoubleClickAsset","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","onDoubleClickAsset","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
@@ -43,6 +43,9 @@ const TableRows = ({ onChangeFolder = null, onEditAsset, onEditFolder, onSelectO
43
43
  }),
44
44
  disabled: !isSelectable,
45
45
  onCheckedChange: ()=>onSelectOne(element),
46
+ onPointerDown: (e)=>{
47
+ e.preventDefault();
48
+ },
46
49
  checked: isSelected
47
50
  })
48
51
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"TableRows.js","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={id}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"TableRows.js","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={id}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
@@ -41,6 +41,9 @@ const TableRows = ({ onChangeFolder = null, onEditAsset, onEditFolder, onSelectO
41
41
  }),
42
42
  disabled: !isSelectable,
43
43
  onCheckedChange: ()=>onSelectOne(element),
44
+ onPointerDown: (e)=>{
45
+ e.preventDefault();
46
+ },
44
47
  checked: isSelected
45
48
  })
46
49
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"TableRows.mjs","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={id}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
1
+ {"version":3,"file":"TableRows.mjs","sources":["../../../../admin/src/components/TableList/TableRows.tsx"],"sourcesContent":["import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={id}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n onPointerDown={(e) => {\n e.preventDefault();\n }}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n"],"names":["TableRows","onChangeFolder","onEditAsset","onEditFolder","onSelectOne","rows","selected","formatMessage","useIntl","handleRowClickFn","element","id","path","elementType","_jsx","Tbody","map","isSelectable","name","folderURL","type","contentType","isSelected","find","currentRow","_jsxs","Tr","onClick","undefined","Td","e","stopPropagation","Checkbox","aria-label","defaultMessage","disabled","onCheckedChange","onPointerDown","preventDefault","checked","cells","cellType","CellContent","content","Flex","justifyContent","IconButton","tag","Link","label","getTrad","to","variant","Eye","Pencil"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var name = "@strapi/upload";
6
- var version = "5.31.0";
6
+ var version = "5.31.1";
7
7
  var description = "Makes it easy to upload images and files to your Strapi Application.";
8
8
  var license = "SEE LICENSE IN LICENSE";
9
9
  var author = {
@@ -67,8 +67,8 @@ var dependencies = {
67
67
  "@reduxjs/toolkit": "1.9.7",
68
68
  "@strapi/design-system": "2.0.0-rc.30",
69
69
  "@strapi/icons": "2.0.0-rc.30",
70
- "@strapi/provider-upload-local": "5.31.0",
71
- "@strapi/utils": "5.31.0",
70
+ "@strapi/provider-upload-local": "5.31.1",
71
+ "@strapi/utils": "5.31.1",
72
72
  "byte-size": "8.1.1",
73
73
  cropperjs: "1.6.1",
74
74
  "date-fns": "2.30.0",
@@ -92,8 +92,8 @@ var dependencies = {
92
92
  zod: "3.25.67"
93
93
  };
94
94
  var devDependencies = {
95
- "@strapi/admin": "5.31.0",
96
- "@strapi/types": "5.31.0",
95
+ "@strapi/admin": "5.31.1",
96
+ "@strapi/types": "5.31.1",
97
97
  "@testing-library/dom": "10.1.0",
98
98
  "@testing-library/react": "15.0.7",
99
99
  "@testing-library/user-event": "14.5.2",
@@ -1,5 +1,5 @@
1
1
  var name = "@strapi/upload";
2
- var version = "5.31.0";
2
+ var version = "5.31.1";
3
3
  var description = "Makes it easy to upload images and files to your Strapi Application.";
4
4
  var license = "SEE LICENSE IN LICENSE";
5
5
  var author = {
@@ -63,8 +63,8 @@ var dependencies = {
63
63
  "@reduxjs/toolkit": "1.9.7",
64
64
  "@strapi/design-system": "2.0.0-rc.30",
65
65
  "@strapi/icons": "2.0.0-rc.30",
66
- "@strapi/provider-upload-local": "5.31.0",
67
- "@strapi/utils": "5.31.0",
66
+ "@strapi/provider-upload-local": "5.31.1",
67
+ "@strapi/utils": "5.31.1",
68
68
  "byte-size": "8.1.1",
69
69
  cropperjs: "1.6.1",
70
70
  "date-fns": "2.30.0",
@@ -88,8 +88,8 @@ var dependencies = {
88
88
  zod: "3.25.67"
89
89
  };
90
90
  var devDependencies = {
91
- "@strapi/admin": "5.31.0",
92
- "@strapi/types": "5.31.0",
91
+ "@strapi/admin": "5.31.1",
92
+ "@strapi/types": "5.31.1",
93
93
  "@testing-library/dom": "10.1.0",
94
94
  "@testing-library/react": "15.0.7",
95
95
  "@testing-library/user-event": "14.5.2",
@@ -15,6 +15,7 @@ export interface CarouselAssetsProps {
15
15
  onEditAsset?: (asset: FileAsset) => void;
16
16
  onNext: () => void;
17
17
  onPrevious: () => void;
18
+ onDoubleClickAsset: (asset: FileAsset, event?: React.MouseEvent<HTMLElement, MouseEvent>) => void;
18
19
  required?: boolean;
19
20
  selectedAssetIndex: number;
20
21
  trackedLocation?: string;
@@ -2,8 +2,8 @@
2
2
 
3
3
  var fr = {
4
4
  "apiError.FileTooBig": "Le fichier importé dépasse la taille maximale autorisée pour les médias.",
5
- "upload.generic-error": "Un erreur est survenu durant l'importation du fichier.",
6
- "bulk.select.label": "Selectionner tous les médias",
5
+ "upload.generic-error": "Une erreur est survenue durant l'importation du fichier.",
6
+ "bulk.select.label": "Sélectionner tous les médias",
7
7
  "button.next": "Suivant",
8
8
  "checkControl.crop-duplicate": "Dupliquer & recadrer le média",
9
9
  "checkControl.crop-original": "Recadrer le média d'origine",
@@ -37,28 +37,28 @@ var fr = {
37
37
  "input.label-bold": "Glissez & déposez",
38
38
  "input.label-normal": "pour importer ou",
39
39
  "input.placeholder": "Cliquez pour sélectionner un média ou glissez & déposez un fichier dans cette zone",
40
- "input.placeholder.icon": "Lacher le fichier dans cette zone",
40
+ "input.placeholder.icon": "Lâcher le fichier dans cette zone",
41
41
  "input.url.description": "Séparez vos URLs par un retour à la ligne.",
42
42
  "input.url.label": "URL",
43
43
  "input.notification.not-supported": "Vous ne pouvez pas importer ce type de fichier, seuls ces types de fichiers sont acceptés – {fileTypes}",
44
44
  "list.assets.title": "Médias ({count})",
45
45
  "list.asset.at.finished": "Les médias sont chargés.",
46
- "list.assets-empty.search": "No result found",
46
+ "list.assets-empty.search": "Aucun résultat trouvé",
47
47
  "list.assets-empty.subtitle": "Ajoutez-en un à la liste.",
48
48
  "list.assets-empty.title": "Il n'y a pas encore de média",
49
49
  "list.assets-empty.title-withSearch": "Il n'y a aucun média avec les filtres appliqués",
50
50
  "list.assets.empty": "La médiathèque est vide",
51
51
  "list.assets.empty-upload": "Importez vos premiers médias...",
52
- "list.assets.empty.no-permissions": "Aucune permissions à voir",
52
+ "list.assets.empty.no-permissions": "Aucune permission à voir",
53
53
  "list.assets.loading-asset": "Chargement du contenu pour le media {path}",
54
54
  "list.assets.not-supported-content": "Aperçu non disponible",
55
55
  "list.assets.preview-asset": "Aperçu de la vidéo {path}",
56
56
  "list.assets.selected": "{numberFolders, plural, one {1 dossier} other {# dossiers}} - {numberAssets, plural, one {1 média} other {# médias}}",
57
- "list-assets-select": "Selectionner le média {name}",
57
+ "list-assets-select": "Sélectionner le média {name}",
58
58
  "list.assets.type-not-allowed": "Ce type de fichier n'est pas autorisé.",
59
59
  "list.assets.to-upload": "{number, plural, =0 {Aucun média} one {1 média} other {# médias}} à importer",
60
60
  "list.folder.edit": "Éditer le dossier",
61
- "list.folder.select": "Selectionner le dossier {name}",
61
+ "list.folder.select": "Sélectionner le dossier {name}",
62
62
  "list.folder.subtitle": "{folderCount, plural, =0 {aucun dossier} one {1 dossier} other {# dossiers}}, {filesCount, plural, =0 {aucun média} one {1 média} other {# médias}}",
63
63
  "list.folders.title": "Dossiers ({count})",
64
64
  "list.folders.link-label": "Accéder au dossier",
@@ -81,7 +81,7 @@ var fr = {
81
81
  "modal.nav.browse": "parcourir",
82
82
  "modal.nav.computer": "depuis l'ordinateur",
83
83
  "modal.nav.selected": "sélectionné(s)",
84
- "modal.nav.url": "depuis une url",
84
+ "modal.nav.url": "depuis une URL",
85
85
  "modal.remove.success-label": "Les éléments sélectionnés ont bien été supprimés.",
86
86
  "modal.move.success-label": "Les éléments sélectionnés ont bien été déplacés.",
87
87
  "modal.selected-list.sub-header-subtitle": "Glissez-déposez pour réorganiser les médias dans le champ",
@@ -1,7 +1,7 @@
1
1
  var fr = {
2
2
  "apiError.FileTooBig": "Le fichier importé dépasse la taille maximale autorisée pour les médias.",
3
- "upload.generic-error": "Un erreur est survenu durant l'importation du fichier.",
4
- "bulk.select.label": "Selectionner tous les médias",
3
+ "upload.generic-error": "Une erreur est survenue durant l'importation du fichier.",
4
+ "bulk.select.label": "Sélectionner tous les médias",
5
5
  "button.next": "Suivant",
6
6
  "checkControl.crop-duplicate": "Dupliquer & recadrer le média",
7
7
  "checkControl.crop-original": "Recadrer le média d'origine",
@@ -35,28 +35,28 @@ var fr = {
35
35
  "input.label-bold": "Glissez & déposez",
36
36
  "input.label-normal": "pour importer ou",
37
37
  "input.placeholder": "Cliquez pour sélectionner un média ou glissez & déposez un fichier dans cette zone",
38
- "input.placeholder.icon": "Lacher le fichier dans cette zone",
38
+ "input.placeholder.icon": "Lâcher le fichier dans cette zone",
39
39
  "input.url.description": "Séparez vos URLs par un retour à la ligne.",
40
40
  "input.url.label": "URL",
41
41
  "input.notification.not-supported": "Vous ne pouvez pas importer ce type de fichier, seuls ces types de fichiers sont acceptés – {fileTypes}",
42
42
  "list.assets.title": "Médias ({count})",
43
43
  "list.asset.at.finished": "Les médias sont chargés.",
44
- "list.assets-empty.search": "No result found",
44
+ "list.assets-empty.search": "Aucun résultat trouvé",
45
45
  "list.assets-empty.subtitle": "Ajoutez-en un à la liste.",
46
46
  "list.assets-empty.title": "Il n'y a pas encore de média",
47
47
  "list.assets-empty.title-withSearch": "Il n'y a aucun média avec les filtres appliqués",
48
48
  "list.assets.empty": "La médiathèque est vide",
49
49
  "list.assets.empty-upload": "Importez vos premiers médias...",
50
- "list.assets.empty.no-permissions": "Aucune permissions à voir",
50
+ "list.assets.empty.no-permissions": "Aucune permission à voir",
51
51
  "list.assets.loading-asset": "Chargement du contenu pour le media {path}",
52
52
  "list.assets.not-supported-content": "Aperçu non disponible",
53
53
  "list.assets.preview-asset": "Aperçu de la vidéo {path}",
54
54
  "list.assets.selected": "{numberFolders, plural, one {1 dossier} other {# dossiers}} - {numberAssets, plural, one {1 média} other {# médias}}",
55
- "list-assets-select": "Selectionner le média {name}",
55
+ "list-assets-select": "Sélectionner le média {name}",
56
56
  "list.assets.type-not-allowed": "Ce type de fichier n'est pas autorisé.",
57
57
  "list.assets.to-upload": "{number, plural, =0 {Aucun média} one {1 média} other {# médias}} à importer",
58
58
  "list.folder.edit": "Éditer le dossier",
59
- "list.folder.select": "Selectionner le dossier {name}",
59
+ "list.folder.select": "Sélectionner le dossier {name}",
60
60
  "list.folder.subtitle": "{folderCount, plural, =0 {aucun dossier} one {1 dossier} other {# dossiers}}, {filesCount, plural, =0 {aucun média} one {1 média} other {# médias}}",
61
61
  "list.folders.title": "Dossiers ({count})",
62
62
  "list.folders.link-label": "Accéder au dossier",
@@ -79,7 +79,7 @@ var fr = {
79
79
  "modal.nav.browse": "parcourir",
80
80
  "modal.nav.computer": "depuis l'ordinateur",
81
81
  "modal.nav.selected": "sélectionné(s)",
82
- "modal.nav.url": "depuis une url",
82
+ "modal.nav.url": "depuis une URL",
83
83
  "modal.remove.success-label": "Les éléments sélectionnés ont bien été supprimés.",
84
84
  "modal.move.success-label": "Les éléments sélectionnés ont bien été déplacés.",
85
85
  "modal.selected-list.sub-header-subtitle": "Glissez-déposez pour réorganiser les médias dans le champ",
@@ -1 +1 @@
1
- {"version":3,"file":"mime-validation.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/mime-validation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AACF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,uBAAuB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC;AAOF,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA4B3E;AAsBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAcnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG;;;EAMxC;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAoE3B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6DhG;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC;IACT,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC5B,CAAC,CAqCD"}
1
+ {"version":3,"file":"mime-validation.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/mime-validation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AACF,KAAK,qBAAqB,GAAG;IAC3B,IAAI,EAAE,uBAAuB,GAAG,kBAAkB,GAAG,eAAe,CAAC;IACrE,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,qBAAqB,CAAC;CAC9B,CAAC;AAOF,wBAAsB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC3E;AAsBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAcnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,GAAG;;;EAMxC;AAED,wBAAsB,YAAY,CAChC,IAAI,EAAE,GAAG,EACT,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAoE3B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6DhG;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,GAAG,EACV,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC;IACT,UAAU,EAAE,GAAG,EAAE,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;CAC5B,CAAC,CAqCD"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fileType = require('file-type');
4
3
  var promises = require('node:fs/promises');
5
4
  var utils = require('@strapi/utils');
6
5
 
@@ -24,7 +23,12 @@ async function detectMimeType(file) {
24
23
  return undefined;
25
24
  }
26
25
  try {
27
- const result = await fileType.fileTypeFromBuffer(new Uint8Array(buffer));
26
+ /**
27
+ * Use dynamic import to support file-type which is ESM-only
28
+ * Static imports fail during CommonJS build since bundler can't transform ESM-only packages
29
+ * @see https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c
30
+ */ const { fileTypeFromBuffer } = await import('file-type');
31
+ const result = await fileTypeFromBuffer(new Uint8Array(buffer));
28
32
  return result?.mime;
29
33
  } catch (error) {
30
34
  throw new Error(`Failed to detect MIME type: ${error instanceof Error ? error.message : String(error)}`);