@strapi/upload 5.34.0 → 5.35.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.
Files changed (88) hide show
  1. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +32 -3
  2. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  3. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +32 -3
  4. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  5. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  6. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  7. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +57 -0
  8. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -0
  9. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +55 -0
  10. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -0
  11. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +96 -20
  12. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  13. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +98 -22
  14. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  15. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js +47 -0
  16. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -1
  17. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs +44 -1
  18. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -1
  19. package/dist/admin/future/App.js +2 -2
  20. package/dist/admin/future/App.js.map +1 -1
  21. package/dist/admin/future/App.mjs +2 -2
  22. package/dist/admin/future/App.mjs.map +1 -1
  23. package/dist/admin/future/pages/MediaLibraryPage.js +97 -33
  24. package/dist/admin/future/pages/MediaLibraryPage.js.map +1 -1
  25. package/dist/admin/future/pages/MediaLibraryPage.mjs +80 -35
  26. package/dist/admin/future/pages/MediaLibraryPage.mjs.map +1 -1
  27. package/dist/admin/future/services/api.js +28 -0
  28. package/dist/admin/future/services/api.js.map +1 -0
  29. package/dist/admin/future/services/api.mjs +25 -0
  30. package/dist/admin/future/services/api.mjs.map +1 -0
  31. package/dist/admin/future/utils/translations.js +8 -0
  32. package/dist/admin/future/utils/translations.js.map +1 -0
  33. package/dist/admin/future/utils/translations.mjs +6 -0
  34. package/dist/admin/future/utils/translations.mjs.map +1 -0
  35. package/dist/admin/hooks/useEditAsset.js +1 -0
  36. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  37. package/dist/admin/hooks/useEditAsset.mjs +1 -0
  38. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  39. package/dist/admin/index.js +1 -1
  40. package/dist/admin/index.js.map +1 -1
  41. package/dist/admin/index.mjs +1 -1
  42. package/dist/admin/index.mjs.map +1 -1
  43. package/dist/admin/package.json.js +5 -5
  44. package/dist/admin/package.json.mjs +5 -5
  45. package/dist/admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +1 -2
  46. package/dist/admin/src/components/EditAssetDialog/PreviewBox/FocalPointActions.d.ts +7 -0
  47. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +6 -2
  48. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +13 -0
  49. package/dist/admin/src/future/App.d.ts +1 -1
  50. package/dist/admin/src/future/services/api.d.ts +5 -1
  51. package/dist/admin/src/future/utils/translations.d.ts +1 -0
  52. package/dist/admin/translations/en.json.js +8 -0
  53. package/dist/admin/translations/en.json.js.map +1 -1
  54. package/dist/admin/translations/en.json.mjs +8 -0
  55. package/dist/admin/translations/en.json.mjs.map +1 -1
  56. package/dist/server/content-types/file.js +4 -0
  57. package/dist/server/content-types/file.js.map +1 -1
  58. package/dist/server/content-types/file.mjs +4 -0
  59. package/dist/server/content-types/file.mjs.map +1 -1
  60. package/dist/server/controllers/validation/admin/upload.js +5 -0
  61. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  62. package/dist/server/controllers/validation/admin/upload.mjs +5 -0
  63. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  64. package/dist/server/controllers/validation/content-api/upload.js +6 -1
  65. package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
  66. package/dist/server/controllers/validation/content-api/upload.mjs +6 -1
  67. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
  68. package/dist/server/services/upload.js +3 -1
  69. package/dist/server/services/upload.js.map +1 -1
  70. package/dist/server/services/upload.mjs +3 -1
  71. package/dist/server/services/upload.mjs.map +1 -1
  72. package/dist/server/src/content-types/file.d.ts +4 -0
  73. package/dist/server/src/content-types/file.d.ts.map +1 -1
  74. package/dist/server/src/content-types/index.d.ts +4 -0
  75. package/dist/server/src/content-types/index.d.ts.map +1 -1
  76. package/dist/server/src/controllers/validation/admin/upload.d.ts +240 -0
  77. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  78. package/dist/server/src/controllers/validation/content-api/upload.d.ts +180 -0
  79. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
  80. package/dist/server/src/index.d.ts +5 -1
  81. package/dist/server/src/index.d.ts.map +1 -1
  82. package/dist/server/src/services/index.d.ts +1 -1
  83. package/dist/server/src/services/upload.d.ts +1 -1
  84. package/dist/server/src/services/upload.d.ts.map +1 -1
  85. package/dist/server/src/types.d.ts +6 -0
  86. package/dist/server/src/types.d.ts.map +1 -1
  87. package/dist/shared/contracts/files.d.ts +6 -0
  88. package/package.json +5 -5
@@ -49,10 +49,15 @@ const LoadingBody = styledComponents.styled(designSystem.Flex)`
49
49
  /* 80px are coming from the Tabs component that is not included in the ModalBody */
50
50
  min-height: ${()=>`calc(60dvh + 8rem)`};
51
51
  `;
52
+ const focalPointSchema = yup__namespace.object({
53
+ x: yup__namespace.number().min(0).max(100).required(),
54
+ y: yup__namespace.number().min(0).max(100).required()
55
+ }).nullable().default(null);
52
56
  const fileInfoSchema = yup__namespace.object({
53
57
  name: yup__namespace.string().required(),
54
58
  alternativeText: yup__namespace.string(),
55
59
  caption: yup__namespace.string(),
60
+ focalPoint: focalPointSchema,
56
61
  folder: yup__namespace.number()
57
62
  });
58
63
  const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = [], omitActions = [] })=>{
@@ -60,6 +65,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
60
65
  const { trackUsage } = useTracking.useTracking();
61
66
  const submitButtonRef = React__namespace.useRef(null);
62
67
  const [isCropping, setIsCropping] = React__namespace.useState(false);
68
+ const [isFocalPointMode, setIsFocalPointMode] = React__namespace.useState(false);
63
69
  const [replacementFile, setReplacementFile] = React__namespace.useState();
64
70
  const { editAsset, isLoading } = useEditAsset.useEditAsset();
65
71
  const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure.useFolderStructure({
@@ -97,7 +103,13 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
97
103
  setIsCropping(false);
98
104
  onClose();
99
105
  };
100
- const formDisabled = !canUpdate || isCropping;
106
+ const handleFocalPointStart = ()=>{
107
+ setIsFocalPointMode(true);
108
+ };
109
+ const handleFocalPointCancel = ()=>{
110
+ setIsFocalPointMode(false);
111
+ };
112
+ const formDisabled = !canUpdate || isCropping || isFocalPointMode;
101
113
  const handleConfirmClose = ()=>{
102
114
  // eslint-disable-next-line no-alert
103
115
  const confirm = window.confirm(formatMessage({
@@ -113,6 +125,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
113
125
  name: asset?.name,
114
126
  alternativeText: asset?.alternativeText ?? undefined,
115
127
  caption: asset?.caption ?? undefined,
128
+ focalPoint: asset?.focalPoint ?? null,
116
129
  parent: {
117
130
  value: activeFolderId ?? undefined,
118
131
  label: findRecursiveFolderByValue.findRecursiveFolderByValue(folderStructure, activeFolderId)?.label ?? folderStructure[0].label
@@ -181,7 +194,14 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
181
194
  onCropStart: handleStartCropping,
182
195
  onCropCancel: handleCancelCropping,
183
196
  replacementFile: replacementFile,
184
- trackedLocation: trackedLocation
197
+ trackedLocation: trackedLocation,
198
+ formFocalPoint: values.focalPoint,
199
+ onFocalPointStart: handleFocalPointStart,
200
+ onFocalPointFinish: (focalPoint)=>{
201
+ setIsFocalPointMode(false);
202
+ setFieldValue('focalPoint', focalPoint);
203
+ },
204
+ onFocalPointCancel: handleFocalPointCancel
185
205
  })
186
206
  }),
187
207
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
@@ -233,7 +253,16 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
233
253
  defaultMessage: 'Asset ID'
234
254
  }),
235
255
  value: asset?.id ? asset.id : null
236
- }
256
+ },
257
+ ...values.focalPoint ? [
258
+ {
259
+ label: formatMessage({
260
+ id: getTrad.getTrad('modal.file-details.focal-point'),
261
+ defaultMessage: 'Focal point'
262
+ }),
263
+ value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`
264
+ }
265
+ ] : []
237
266
  ]
238
267
  }),
239
268
  /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
1
+ {"version":3,"file":"EditAssetContent.js","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
@@ -27,10 +27,15 @@ const LoadingBody = styled(Flex)`
27
27
  /* 80px are coming from the Tabs component that is not included in the ModalBody */
28
28
  min-height: ${()=>`calc(60dvh + 8rem)`};
29
29
  `;
30
+ const focalPointSchema = yup.object({
31
+ x: yup.number().min(0).max(100).required(),
32
+ y: yup.number().min(0).max(100).required()
33
+ }).nullable().default(null);
30
34
  const fileInfoSchema = yup.object({
31
35
  name: yup.string().required(),
32
36
  alternativeText: yup.string(),
33
37
  caption: yup.string(),
38
+ focalPoint: focalPointSchema,
34
39
  folder: yup.number()
35
40
  });
36
41
  const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = false, canDownload = false, trackedLocation, omitFields = [], omitActions = [] })=>{
@@ -38,6 +43,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
38
43
  const { trackUsage } = useTracking();
39
44
  const submitButtonRef = React.useRef(null);
40
45
  const [isCropping, setIsCropping] = React.useState(false);
46
+ const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);
41
47
  const [replacementFile, setReplacementFile] = React.useState();
42
48
  const { editAsset, isLoading } = useEditAsset();
43
49
  const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({
@@ -75,7 +81,13 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
75
81
  setIsCropping(false);
76
82
  onClose();
77
83
  };
78
- const formDisabled = !canUpdate || isCropping;
84
+ const handleFocalPointStart = ()=>{
85
+ setIsFocalPointMode(true);
86
+ };
87
+ const handleFocalPointCancel = ()=>{
88
+ setIsFocalPointMode(false);
89
+ };
90
+ const formDisabled = !canUpdate || isCropping || isFocalPointMode;
79
91
  const handleConfirmClose = ()=>{
80
92
  // eslint-disable-next-line no-alert
81
93
  const confirm = window.confirm(formatMessage({
@@ -91,6 +103,7 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
91
103
  name: asset?.name,
92
104
  alternativeText: asset?.alternativeText ?? undefined,
93
105
  caption: asset?.caption ?? undefined,
106
+ focalPoint: asset?.focalPoint ?? null,
94
107
  parent: {
95
108
  value: activeFolderId ?? undefined,
96
109
  label: findRecursiveFolderByValue(folderStructure, activeFolderId)?.label ?? folderStructure[0].label
@@ -159,7 +172,14 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
159
172
  onCropStart: handleStartCropping,
160
173
  onCropCancel: handleCancelCropping,
161
174
  replacementFile: replacementFile,
162
- trackedLocation: trackedLocation
175
+ trackedLocation: trackedLocation,
176
+ formFocalPoint: values.focalPoint,
177
+ onFocalPointStart: handleFocalPointStart,
178
+ onFocalPointFinish: (focalPoint)=>{
179
+ setIsFocalPointMode(false);
180
+ setFieldValue('focalPoint', focalPoint);
181
+ },
182
+ onFocalPointCancel: handleFocalPointCancel
163
183
  })
164
184
  }),
165
185
  /*#__PURE__*/ jsx(Grid.Item, {
@@ -211,7 +231,16 @@ const EditAssetContent = ({ onClose, asset, canUpdate = false, canCopyLink = fal
211
231
  defaultMessage: 'Asset ID'
212
232
  }),
213
233
  value: asset?.id ? asset.id : null
214
- }
234
+ },
235
+ ...values.focalPoint ? [
236
+ {
237
+ label: formatMessage({
238
+ id: getTrad('modal.file-details.focal-point'),
239
+ defaultMessage: 'Focal point'
240
+ }),
241
+ value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`
242
+ }
243
+ ] : []
215
244
  ]
216
245
  }),
217
246
  /*#__PURE__*/ jsxs(Field.Root, {
@@ -1 +1 @@
1
- {"version":3,"file":"EditAssetContent.mjs","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","fileInfoSchema","yup","object","name","string","required","alternativeText","caption","folder","number","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
1
+ {"version":3,"file":"EditAssetContent.mjs","sources":["../../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx"],"sourcesContent":["/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60dvh + 8rem)`};\n`;\n\nconst focalPointSchema = yup\n .object({\n x: yup.number().min(0).max(100).required(),\n y: yup.number().min(0).max(100).required(),\n })\n .nullable()\n .default(null);\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n focalPoint: focalPointSchema,\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n omitFields?: ('caption' | 'alternativeText')[];\n omitActions?: 'replace'[];\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n focalPoint?: FocalPoint | null;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n omitFields = [],\n omitActions = [],\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [isFocalPointMode, setIsFocalPointMode] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const handleFocalPointStart = () => {\n setIsFocalPointMode(true);\n };\n\n const handleFocalPointCancel = () => {\n setIsFocalPointMode(false);\n };\n\n const formDisabled = !canUpdate || isCropping || isFocalPointMode;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n focalPoint: asset?.focalPoint ?? null,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n formFocalPoint={values.focalPoint}\n onFocalPointStart={handleFocalPointStart}\n onFocalPointFinish={(focalPoint) => {\n setIsFocalPointMode(false);\n setFieldValue('focalPoint', focalPoint);\n }}\n onFocalPointCancel={handleFocalPointCancel}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n\n ...(values.focalPoint\n ? [\n {\n label: formatMessage({\n id: getTrad('modal.file-details.focal-point'),\n defaultMessage: 'Focal point',\n }),\n value: `x: ${values.focalPoint.x}% - y: ${values.focalPoint.y}%`,\n },\n ]\n : []),\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Error />\n </Field.Root>\n\n {!omitFields?.includes('alternativeText') && (\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage:\n 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n )}\n\n {!omitFields?.includes('caption') && (\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n type=\"text\"\n />\n </Field.Root>\n )}\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {!omitActions?.includes('replace') && (\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n )}\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["LoadingBody","styled","Flex","focalPointSchema","yup","object","x","number","min","max","required","y","nullable","default","fileInfoSchema","name","string","alternativeText","caption","focalPoint","folder","EditAssetContent","onClose","asset","canUpdate","canCopyLink","canDownload","trackedLocation","omitFields","omitActions","formatMessage","formatDate","useIntl","trackUsage","useTracking","submitButtonRef","React","useRef","isCropping","setIsCropping","useState","isFocalPointMode","setIsFocalPointMode","replacementFile","setReplacementFile","editAsset","isLoading","useEditAsset","data","folderStructure","folderStructureIsLoading","useFolderStructure","enabled","handleSubmit","values","nextAsset","parent","value","isLocal","editedAsset","assetType","mime","split","didChangeLocation","id","location","type","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","handleFocalPointStart","handleFocalPointCancel","formDisabled","handleConfirmClose","confirm","window","defaultMessage","activeFolderId","initialFormData","undefined","label","findRecursiveFolderByValue","handleClose","isEqual","_jsxs","_Fragment","_jsx","DialogHeader","minHeight","justifyContent","paddingTop","paddingBottom","Loader","getTrad","Modal","Footer","Button","onClick","variant","Formik","validationSchema","validateOnChange","onSubmit","initialValues","errors","handleChange","setFieldValue","Body","Grid","Root","gap","Item","xs","col","direction","alignItems","PreviewBox","onDelete","onCropFinish","onCropStart","onCropCancel","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","Form","noValidate","ContextInfo","blocks","formatBytes","size","height","width","Date","createdAt","getFileExtension","ext","Field","error","Label","TextInput","onChange","disabled","Error","includes","hint","Hint","SelectTree","defaultValue","options","menuPortalTarget","document","querySelector","inputId","isDisabled","ariaErrorMessage","VisuallyHidden","button","tabIndex","ref","ReplaceMediaButton","onSelectMedia","acceptedMime","current","click","loading","EditAssetDialog","open","restProps","onOpenChange","Content"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetPreview.js","sources":["../../../../../admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/media-has-caption */\nimport * as React from 'react';\n\nimport MuxPlayer from '@mux/mux-player-react';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { typeFromMime } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\n\nconst CardAsset = styled(Flex)`\n min-height: 26.4rem;\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface AssetPreviewProps {\n mime: string;\n name: string;\n url: string;\n onLoad?: () => void;\n}\n\nexport const AssetPreview = React.forwardRef<\n HTMLImageElement | HTMLVideoElement | HTMLAudioElement,\n AssetPreviewProps\n>(({ mime, url, name, ...props }, ref) => {\n const theme = useTheme();\n\n const assetType = typeFromMime(mime);\n\n const { formatMessage } = useIntl();\n\n if (assetType === AssetType.Image) {\n return (\n <img ref={ref as React.ForwardedRef<HTMLImageElement>} src={url} alt={name} {...props} />\n );\n }\n\n if (assetType === AssetType.Video) {\n return <MuxPlayer src={url} accentColor={theme.colors.primary500} />;\n }\n\n if (assetType === AssetType.Audio) {\n return (\n <Box margin=\"5\">\n <audio controls src={url} ref={ref as React.ForwardedRef<HTMLAudioElement>} {...props}>\n {name}\n </audio>\n </Box>\n );\n }\n\n // getFileIconComponent will handle all other file types, eg. PDF, CSV, XLS, ZIP\n // If the file type is not recognized, the default icon will be used\n const IconComponent = getFileIconComponent(assetType);\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <IconComponent aria-label={name} fill=\"neutral500\" width={24} height={24} />\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n});\n\nAssetPreview.displayName = 'AssetPreview';\n"],"names":["CardAsset","styled","Flex","theme","borderRadius","colors","neutral0","neutral100","AssetPreview","React","forwardRef","mime","url","name","props","ref","useTheme","assetType","typeFromMime","formatMessage","useIntl","AssetType","Image","_jsx","img","src","alt","Video","MuxPlayer","accentColor","primary500","Audio","Box","margin","audio","controls","IconComponent","getFileIconComponent","width","justifyContent","_jsxs","gap","direction","alignItems","aria-label","fill","height","Typography","textColor","variant","id","defaultMessage","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,SAAAA,GAAYC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAEb,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;IAGtF,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,QAAQ,CAAC;IACvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACE,UAAU,CAAC;;AAE7C,CAAC;AASYC,MAAAA,YAAAA,iBAAeC,gBAAMC,CAAAA,UAAU,CAG1C,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;AAChC,IAAA,MAAMZ,KAAQa,GAAAA,yBAAAA,EAAAA;AAEd,IAAA,MAAMC,YAAYC,yBAAaP,CAAAA,IAAAA,CAAAA;IAE/B,MAAM,EAAEQ,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,IAAIH,SAAAA,KAAcI,eAAUC,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACEC,cAACC,CAAAA,KAAAA,EAAAA;YAAIT,GAAKA,EAAAA,GAAAA;YAA6CU,GAAKb,EAAAA,GAAAA;YAAKc,GAAKb,EAAAA,IAAAA;AAAO,YAAA,GAAGC;;AAEpF;IAEA,IAAIG,SAAAA,KAAcI,eAAUM,CAAAA,KAAK,EAAE;AACjC,QAAA,qBAAOJ,cAACK,CAAAA,SAAAA,EAAAA;YAAUH,GAAKb,EAAAA,GAAAA;YAAKiB,WAAa1B,EAAAA,KAAAA,CAAME,MAAM,CAACyB;;AACxD;IAEA,IAAIb,SAAAA,KAAcI,eAAUU,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACER,cAACS,CAAAA,gBAAAA,EAAAA;YAAIC,MAAO,EAAA,GAAA;AACV,YAAA,QAAA,gBAAAV,cAACW,CAAAA,OAAAA,EAAAA;gBAAMC,QAAQ,EAAA,IAAA;gBAACV,GAAKb,EAAAA,GAAAA;gBAAKG,GAAKA,EAAAA,GAAAA;AAA8C,gBAAA,GAAGD,KAAK;AAClFD,gBAAAA,QAAAA,EAAAA;;;AAIT;;;AAIA,IAAA,MAAMuB,gBAAgBC,0BAAqBpB,CAAAA,SAAAA,CAAAA;AAC3C,IAAA,qBACEM,cAACvB,CAAAA,SAAAA,EAAAA;QAAUsC,KAAM,EAAA,MAAA;QAAOC,cAAe,EAAA,QAAA;AAAU,QAAA,GAAGzB,KAAK;AACvD,QAAA,QAAA,gBAAA0B,eAACtC,CAAAA,iBAAAA,EAAAA;YAAKuC,GAAK,EAAA,CAAA;YAAGC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,QAAA;;8BAC1CpB,cAACa,CAAAA,aAAAA,EAAAA;oBAAcQ,YAAY/B,EAAAA,IAAAA;oBAAMgC,IAAK,EAAA,YAAA;oBAAaP,KAAO,EAAA,EAAA;oBAAIQ,MAAQ,EAAA;;8BACtEvB,cAACwB,CAAAA,uBAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,OAAQ,EAAA,IAAA;8BACxC9B,aAAc,CAAA;wBACb+B,EAAI,EAAA,WAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAG;AAEH3C,YAAAA,CAAa4C,WAAW,GAAG,cAAA;;;;"}
1
+ {"version":3,"file":"AssetPreview.js","sources":["../../../../../admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/media-has-caption */\nimport * as React from 'react';\n\nimport MuxPlayer from '@mux/mux-player-react';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { typeFromMime } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\n\nconst CardAsset = styled(Flex)`\n min-height: 26.4rem;\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface AssetPreviewProps extends React.HTMLAttributes<HTMLElement> {\n mime: string;\n name: string;\n url: string;\n}\n\nexport const AssetPreview = React.forwardRef<\n HTMLImageElement | HTMLVideoElement | HTMLAudioElement,\n AssetPreviewProps\n>(({ mime, url, name, ...props }, ref) => {\n const theme = useTheme();\n\n const assetType = typeFromMime(mime);\n\n const { formatMessage } = useIntl();\n\n if (assetType === AssetType.Image) {\n return (\n <img ref={ref as React.ForwardedRef<HTMLImageElement>} src={url} alt={name} {...props} />\n );\n }\n\n if (assetType === AssetType.Video) {\n return <MuxPlayer src={url} accentColor={theme.colors.primary500} />;\n }\n\n if (assetType === AssetType.Audio) {\n return (\n <Box margin=\"5\">\n <audio controls src={url} ref={ref as React.ForwardedRef<HTMLAudioElement>} {...props}>\n {name}\n </audio>\n </Box>\n );\n }\n\n // getFileIconComponent will handle all other file types, eg. PDF, CSV, XLS, ZIP\n // If the file type is not recognized, the default icon will be used\n const IconComponent = getFileIconComponent(assetType);\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <IconComponent aria-label={name} fill=\"neutral500\" width={24} height={24} />\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n});\n\nAssetPreview.displayName = 'AssetPreview';\n"],"names":["CardAsset","styled","Flex","theme","borderRadius","colors","neutral0","neutral100","AssetPreview","React","forwardRef","mime","url","name","props","ref","useTheme","assetType","typeFromMime","formatMessage","useIntl","AssetType","Image","_jsx","img","src","alt","Video","MuxPlayer","accentColor","primary500","Audio","Box","margin","audio","controls","IconComponent","getFileIconComponent","width","justifyContent","_jsxs","gap","direction","alignItems","aria-label","fill","height","Typography","textColor","variant","id","defaultMessage","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,MAAMA,SAAAA,GAAYC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAEb,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;IAGtF,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,QAAQ,CAAC;IACvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACE,UAAU,CAAC;;AAE7C,CAAC;AAQYC,MAAAA,YAAAA,iBAAeC,gBAAMC,CAAAA,UAAU,CAG1C,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;AAChC,IAAA,MAAMZ,KAAQa,GAAAA,yBAAAA,EAAAA;AAEd,IAAA,MAAMC,YAAYC,yBAAaP,CAAAA,IAAAA,CAAAA;IAE/B,MAAM,EAAEQ,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,IAAIH,SAAAA,KAAcI,eAAUC,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACEC,cAACC,CAAAA,KAAAA,EAAAA;YAAIT,GAAKA,EAAAA,GAAAA;YAA6CU,GAAKb,EAAAA,GAAAA;YAAKc,GAAKb,EAAAA,IAAAA;AAAO,YAAA,GAAGC;;AAEpF;IAEA,IAAIG,SAAAA,KAAcI,eAAUM,CAAAA,KAAK,EAAE;AACjC,QAAA,qBAAOJ,cAACK,CAAAA,SAAAA,EAAAA;YAAUH,GAAKb,EAAAA,GAAAA;YAAKiB,WAAa1B,EAAAA,KAAAA,CAAME,MAAM,CAACyB;;AACxD;IAEA,IAAIb,SAAAA,KAAcI,eAAUU,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACER,cAACS,CAAAA,gBAAAA,EAAAA;YAAIC,MAAO,EAAA,GAAA;AACV,YAAA,QAAA,gBAAAV,cAACW,CAAAA,OAAAA,EAAAA;gBAAMC,QAAQ,EAAA,IAAA;gBAACV,GAAKb,EAAAA,GAAAA;gBAAKG,GAAKA,EAAAA,GAAAA;AAA8C,gBAAA,GAAGD,KAAK;AAClFD,gBAAAA,QAAAA,EAAAA;;;AAIT;;;AAIA,IAAA,MAAMuB,gBAAgBC,0BAAqBpB,CAAAA,SAAAA,CAAAA;AAC3C,IAAA,qBACEM,cAACvB,CAAAA,SAAAA,EAAAA;QAAUsC,KAAM,EAAA,MAAA;QAAOC,cAAe,EAAA,QAAA;AAAU,QAAA,GAAGzB,KAAK;AACvD,QAAA,QAAA,gBAAA0B,eAACtC,CAAAA,iBAAAA,EAAAA;YAAKuC,GAAK,EAAA,CAAA;YAAGC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,QAAA;;8BAC1CpB,cAACa,CAAAA,aAAAA,EAAAA;oBAAcQ,YAAY/B,EAAAA,IAAAA;oBAAMgC,IAAK,EAAA,YAAA;oBAAaP,KAAO,EAAA,EAAA;oBAAIQ,MAAQ,EAAA;;8BACtEvB,cAACwB,CAAAA,uBAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,OAAQ,EAAA,IAAA;8BACxC9B,aAAc,CAAA;wBACb+B,EAAI,EAAA,WAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAG;AAEH3C,YAAAA,CAAa4C,WAAW,GAAG,cAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssetPreview.mjs","sources":["../../../../../admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/media-has-caption */\nimport * as React from 'react';\n\nimport MuxPlayer from '@mux/mux-player-react';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { typeFromMime } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\n\nconst CardAsset = styled(Flex)`\n min-height: 26.4rem;\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface AssetPreviewProps {\n mime: string;\n name: string;\n url: string;\n onLoad?: () => void;\n}\n\nexport const AssetPreview = React.forwardRef<\n HTMLImageElement | HTMLVideoElement | HTMLAudioElement,\n AssetPreviewProps\n>(({ mime, url, name, ...props }, ref) => {\n const theme = useTheme();\n\n const assetType = typeFromMime(mime);\n\n const { formatMessage } = useIntl();\n\n if (assetType === AssetType.Image) {\n return (\n <img ref={ref as React.ForwardedRef<HTMLImageElement>} src={url} alt={name} {...props} />\n );\n }\n\n if (assetType === AssetType.Video) {\n return <MuxPlayer src={url} accentColor={theme.colors.primary500} />;\n }\n\n if (assetType === AssetType.Audio) {\n return (\n <Box margin=\"5\">\n <audio controls src={url} ref={ref as React.ForwardedRef<HTMLAudioElement>} {...props}>\n {name}\n </audio>\n </Box>\n );\n }\n\n // getFileIconComponent will handle all other file types, eg. PDF, CSV, XLS, ZIP\n // If the file type is not recognized, the default icon will be used\n const IconComponent = getFileIconComponent(assetType);\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <IconComponent aria-label={name} fill=\"neutral500\" width={24} height={24} />\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n});\n\nAssetPreview.displayName = 'AssetPreview';\n"],"names":["CardAsset","styled","Flex","theme","borderRadius","colors","neutral0","neutral100","AssetPreview","React","forwardRef","mime","url","name","props","ref","useTheme","assetType","typeFromMime","formatMessage","useIntl","AssetType","Image","_jsx","img","src","alt","Video","MuxPlayer","accentColor","primary500","Audio","Box","margin","audio","controls","IconComponent","getFileIconComponent","width","justifyContent","_jsxs","gap","direction","alignItems","aria-label","fill","height","Typography","textColor","variant","id","defaultMessage","displayName"],"mappings":";;;;;;;;;;;;;;AAYA,MAAMA,SAAAA,GAAYC,MAAOC,CAAAA,IAAAA,CAAK;;AAEb,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;IAGtF,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,QAAQ,CAAC;IACvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACE,UAAU,CAAC;;AAE7C,CAAC;AASYC,MAAAA,YAAAA,iBAAeC,KAAMC,CAAAA,UAAU,CAG1C,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;AAChC,IAAA,MAAMZ,KAAQa,GAAAA,QAAAA,EAAAA;AAEd,IAAA,MAAMC,YAAYC,YAAaP,CAAAA,IAAAA,CAAAA;IAE/B,MAAM,EAAEQ,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,IAAIH,SAAAA,KAAcI,SAAUC,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACEC,GAACC,CAAAA,KAAAA,EAAAA;YAAIT,GAAKA,EAAAA,GAAAA;YAA6CU,GAAKb,EAAAA,GAAAA;YAAKc,GAAKb,EAAAA,IAAAA;AAAO,YAAA,GAAGC;;AAEpF;IAEA,IAAIG,SAAAA,KAAcI,SAAUM,CAAAA,KAAK,EAAE;AACjC,QAAA,qBAAOJ,GAACK,CAAAA,SAAAA,EAAAA;YAAUH,GAAKb,EAAAA,GAAAA;YAAKiB,WAAa1B,EAAAA,KAAAA,CAAME,MAAM,CAACyB;;AACxD;IAEA,IAAIb,SAAAA,KAAcI,SAAUU,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACER,GAACS,CAAAA,GAAAA,EAAAA;YAAIC,MAAO,EAAA,GAAA;AACV,YAAA,QAAA,gBAAAV,GAACW,CAAAA,OAAAA,EAAAA;gBAAMC,QAAQ,EAAA,IAAA;gBAACV,GAAKb,EAAAA,GAAAA;gBAAKG,GAAKA,EAAAA,GAAAA;AAA8C,gBAAA,GAAGD,KAAK;AAClFD,gBAAAA,QAAAA,EAAAA;;;AAIT;;;AAIA,IAAA,MAAMuB,gBAAgBC,oBAAqBpB,CAAAA,SAAAA,CAAAA;AAC3C,IAAA,qBACEM,GAACvB,CAAAA,SAAAA,EAAAA;QAAUsC,KAAM,EAAA,MAAA;QAAOC,cAAe,EAAA,QAAA;AAAU,QAAA,GAAGzB,KAAK;AACvD,QAAA,QAAA,gBAAA0B,IAACtC,CAAAA,IAAAA,EAAAA;YAAKuC,GAAK,EAAA,CAAA;YAAGC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,QAAA;;8BAC1CpB,GAACa,CAAAA,aAAAA,EAAAA;oBAAcQ,YAAY/B,EAAAA,IAAAA;oBAAMgC,IAAK,EAAA,YAAA;oBAAaP,KAAO,EAAA,EAAA;oBAAIQ,MAAQ,EAAA;;8BACtEvB,GAACwB,CAAAA,UAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,OAAQ,EAAA,IAAA;8BACxC9B,aAAc,CAAA;wBACb+B,EAAI,EAAA,WAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAG;AAEH3C,YAAAA,CAAa4C,WAAW,GAAG,cAAA;;;;"}
1
+ {"version":3,"file":"AssetPreview.mjs","sources":["../../../../../admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.tsx"],"sourcesContent":["/* eslint-disable jsx-a11y/media-has-caption */\nimport * as React from 'react';\n\nimport MuxPlayer from '@mux/mux-player-react';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { typeFromMime } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\n\nconst CardAsset = styled(Flex)`\n min-height: 26.4rem;\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface AssetPreviewProps extends React.HTMLAttributes<HTMLElement> {\n mime: string;\n name: string;\n url: string;\n}\n\nexport const AssetPreview = React.forwardRef<\n HTMLImageElement | HTMLVideoElement | HTMLAudioElement,\n AssetPreviewProps\n>(({ mime, url, name, ...props }, ref) => {\n const theme = useTheme();\n\n const assetType = typeFromMime(mime);\n\n const { formatMessage } = useIntl();\n\n if (assetType === AssetType.Image) {\n return (\n <img ref={ref as React.ForwardedRef<HTMLImageElement>} src={url} alt={name} {...props} />\n );\n }\n\n if (assetType === AssetType.Video) {\n return <MuxPlayer src={url} accentColor={theme.colors.primary500} />;\n }\n\n if (assetType === AssetType.Audio) {\n return (\n <Box margin=\"5\">\n <audio controls src={url} ref={ref as React.ForwardedRef<HTMLAudioElement>} {...props}>\n {name}\n </audio>\n </Box>\n );\n }\n\n // getFileIconComponent will handle all other file types, eg. PDF, CSV, XLS, ZIP\n // If the file type is not recognized, the default icon will be used\n const IconComponent = getFileIconComponent(assetType);\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <IconComponent aria-label={name} fill=\"neutral500\" width={24} height={24} />\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n});\n\nAssetPreview.displayName = 'AssetPreview';\n"],"names":["CardAsset","styled","Flex","theme","borderRadius","colors","neutral0","neutral100","AssetPreview","React","forwardRef","mime","url","name","props","ref","useTheme","assetType","typeFromMime","formatMessage","useIntl","AssetType","Image","_jsx","img","src","alt","Video","MuxPlayer","accentColor","primary500","Audio","Box","margin","audio","controls","IconComponent","getFileIconComponent","width","justifyContent","_jsxs","gap","direction","alignItems","aria-label","fill","height","Typography","textColor","variant","id","defaultMessage","displayName"],"mappings":";;;;;;;;;;;;;;AAYA,MAAMA,SAAAA,GAAYC,MAAOC,CAAAA,IAAAA,CAAK;;AAEb,iBAAA,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,MAAMC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAAA,CAAMC,YAAY,CAAC;;;IAGtF,EAAE,CAAC,EAAED,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACC,QAAQ,CAAC;IACvC,EAAE,CAAC,EAAEH,KAAK,EAAE,GAAKA,KAAME,CAAAA,MAAM,CAACE,UAAU,CAAC;;AAE7C,CAAC;AAQYC,MAAAA,YAAAA,iBAAeC,KAAMC,CAAAA,UAAU,CAG1C,CAAC,EAAEC,IAAI,EAAEC,GAAG,EAAEC,IAAI,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;AAChC,IAAA,MAAMZ,KAAQa,GAAAA,QAAAA,EAAAA;AAEd,IAAA,MAAMC,YAAYC,YAAaP,CAAAA,IAAAA,CAAAA;IAE/B,MAAM,EAAEQ,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,IAAIH,SAAAA,KAAcI,SAAUC,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACEC,GAACC,CAAAA,KAAAA,EAAAA;YAAIT,GAAKA,EAAAA,GAAAA;YAA6CU,GAAKb,EAAAA,GAAAA;YAAKc,GAAKb,EAAAA,IAAAA;AAAO,YAAA,GAAGC;;AAEpF;IAEA,IAAIG,SAAAA,KAAcI,SAAUM,CAAAA,KAAK,EAAE;AACjC,QAAA,qBAAOJ,GAACK,CAAAA,SAAAA,EAAAA;YAAUH,GAAKb,EAAAA,GAAAA;YAAKiB,WAAa1B,EAAAA,KAAAA,CAAME,MAAM,CAACyB;;AACxD;IAEA,IAAIb,SAAAA,KAAcI,SAAUU,CAAAA,KAAK,EAAE;AACjC,QAAA,qBACER,GAACS,CAAAA,GAAAA,EAAAA;YAAIC,MAAO,EAAA,GAAA;AACV,YAAA,QAAA,gBAAAV,GAACW,CAAAA,OAAAA,EAAAA;gBAAMC,QAAQ,EAAA,IAAA;gBAACV,GAAKb,EAAAA,GAAAA;gBAAKG,GAAKA,EAAAA,GAAAA;AAA8C,gBAAA,GAAGD,KAAK;AAClFD,gBAAAA,QAAAA,EAAAA;;;AAIT;;;AAIA,IAAA,MAAMuB,gBAAgBC,oBAAqBpB,CAAAA,SAAAA,CAAAA;AAC3C,IAAA,qBACEM,GAACvB,CAAAA,SAAAA,EAAAA;QAAUsC,KAAM,EAAA,MAAA;QAAOC,cAAe,EAAA,QAAA;AAAU,QAAA,GAAGzB,KAAK;AACvD,QAAA,QAAA,gBAAA0B,IAACtC,CAAAA,IAAAA,EAAAA;YAAKuC,GAAK,EAAA,CAAA;YAAGC,SAAU,EAAA,QAAA;YAASC,UAAW,EAAA,QAAA;;8BAC1CpB,GAACa,CAAAA,aAAAA,EAAAA;oBAAcQ,YAAY/B,EAAAA,IAAAA;oBAAMgC,IAAK,EAAA,YAAA;oBAAaP,KAAO,EAAA,EAAA;oBAAIQ,MAAQ,EAAA;;8BACtEvB,GAACwB,CAAAA,UAAAA,EAAAA;oBAAWC,SAAU,EAAA,YAAA;oBAAaC,OAAQ,EAAA,IAAA;8BACxC9B,aAAc,CAAA;wBACb+B,EAAI,EAAA,WAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAG;AAEH3C,YAAAA,CAAa4C,WAAW,GAAG,cAAA;;;;"}
@@ -0,0 +1,57 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var designSystem = require('@strapi/design-system');
5
+ var icons = require('@strapi/icons');
6
+ var reactIntl = require('react-intl');
7
+ require('byte-size');
8
+ require('date-fns');
9
+ var getTrad = require('../../../utils/getTrad.js');
10
+ require('qs');
11
+ require('../../../utils/typeFromMime.js');
12
+ require('../../../utils/urlYupSchema.js');
13
+ var PreviewComponents = require('./PreviewComponents.js');
14
+
15
+ const FocalPointActions = ({ onCancel, onValidate, onReset })=>{
16
+ const { formatMessage } = reactIntl.useIntl();
17
+ return /*#__PURE__*/ jsxRuntime.jsx(designSystem.FocusTrap, {
18
+ onEscape: onCancel,
19
+ children: /*#__PURE__*/ jsxRuntime.jsx(PreviewComponents.FocalPointActionRow, {
20
+ justifyContent: "flex-end",
21
+ paddingLeft: 3,
22
+ paddingRight: 3,
23
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
24
+ gap: 1,
25
+ children: [
26
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
27
+ label: formatMessage({
28
+ id: getTrad.getTrad('control-card.stop-focal-point'),
29
+ defaultMessage: 'Cancel focal point selection'
30
+ }),
31
+ onClick: onCancel,
32
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.Cross, {})
33
+ }),
34
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
35
+ label: formatMessage({
36
+ id: getTrad.getTrad('control-card.reset-focal-point'),
37
+ defaultMessage: 'Reset to center'
38
+ }),
39
+ onClick: onReset,
40
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.ArrowsCounterClockwise, {})
41
+ }),
42
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.IconButton, {
43
+ label: formatMessage({
44
+ id: getTrad.getTrad('control-card.save-focal-point'),
45
+ defaultMessage: 'Save focal point'
46
+ }),
47
+ onClick: onValidate,
48
+ children: /*#__PURE__*/ jsxRuntime.jsx(icons.Check, {})
49
+ })
50
+ ]
51
+ })
52
+ })
53
+ });
54
+ };
55
+
56
+ exports.FocalPointActions = FocalPointActions;
57
+ //# sourceMappingURL=FocalPointActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocalPointActions.js","sources":["../../../../../admin/src/components/EditAssetDialog/PreviewBox/FocalPointActions.tsx"],"sourcesContent":["import { Flex, FocusTrap, IconButton } from '@strapi/design-system';\nimport { Check, Cross, ArrowsCounterClockwise } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FocalPointActionRow } from './PreviewComponents';\n\ninterface FocalPointActionsProps {\n onCancel: () => void;\n onValidate: () => void;\n onReset: () => void;\n}\n\nexport const FocalPointActions = ({ onCancel, onValidate, onReset }: FocalPointActionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <FocusTrap onEscape={onCancel}>\n <FocalPointActionRow justifyContent=\"flex-end\" paddingLeft={3} paddingRight={3}>\n <Flex gap={1}>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.stop-focal-point'),\n defaultMessage: 'Cancel focal point selection',\n })}\n onClick={onCancel}\n >\n <Cross />\n </IconButton>\n\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.reset-focal-point'),\n defaultMessage: 'Reset to center',\n })}\n onClick={onReset}\n >\n <ArrowsCounterClockwise />\n </IconButton>\n\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.save-focal-point'),\n defaultMessage: 'Save focal point',\n })}\n onClick={onValidate}\n >\n <Check />\n </IconButton>\n </Flex>\n </FocalPointActionRow>\n </FocusTrap>\n );\n};\n"],"names":["FocalPointActions","onCancel","onValidate","onReset","formatMessage","useIntl","_jsx","FocusTrap","onEscape","FocalPointActionRow","justifyContent","paddingLeft","paddingRight","_jsxs","Flex","gap","IconButton","label","id","getTrad","defaultMessage","onClick","Cross","ArrowsCounterClockwise","Check"],"mappings":";;;;;;;;;;;;;;AAcO,MAAMA,oBAAoB,CAAC,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,EAA0B,GAAA;IACzF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,qBACEC,cAACC,CAAAA,sBAAAA,EAAAA;QAAUC,QAAUP,EAAAA,QAAAA;AACnB,QAAA,QAAA,gBAAAK,cAACG,CAAAA,qCAAAA,EAAAA;YAAoBC,cAAe,EAAA,UAAA;YAAWC,WAAa,EAAA,CAAA;YAAGC,YAAc,EAAA,CAAA;AAC3E,YAAA,QAAA,gBAAAC,eAACC,CAAAA,iBAAAA,EAAAA;gBAAKC,GAAK,EAAA,CAAA;;kCACTT,cAACU,CAAAA,uBAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOb,aAAc,CAAA;AACnBc,4BAAAA,EAAAA,EAAIC,eAAQ,CAAA,+BAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAC,OAASpB,EAAAA,QAAAA;AAET,wBAAA,QAAA,gBAAAK,cAACgB,CAAAA,WAAAA,EAAAA,EAAAA;;kCAGHhB,cAACU,CAAAA,uBAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOb,aAAc,CAAA;AACnBc,4BAAAA,EAAAA,EAAIC,eAAQ,CAAA,gCAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAC,OAASlB,EAAAA,OAAAA;AAET,wBAAA,QAAA,gBAAAG,cAACiB,CAAAA,4BAAAA,EAAAA,EAAAA;;kCAGHjB,cAACU,CAAAA,uBAAAA,EAAAA;AACCC,wBAAAA,KAAAA,EAAOb,aAAc,CAAA;AACnBc,4BAAAA,EAAAA,EAAIC,eAAQ,CAAA,+BAAA,CAAA;4BACZC,cAAgB,EAAA;AAClB,yBAAA,CAAA;wBACAC,OAASnB,EAAAA,UAAAA;AAET,wBAAA,QAAA,gBAAAI,cAACkB,CAAAA,WAAAA,EAAAA,EAAAA;;;;;;AAMb;;;;"}