@strapi/upload 5.29.0 → 5.30.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 (87) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +4 -2
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs +4 -2
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  5. package/dist/admin/ai/components/AIUploadModal.js +2 -1
  6. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  7. package/dist/admin/ai/components/AIUploadModal.mjs +2 -1
  8. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  9. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +2 -2
  10. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  11. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -1
  12. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  13. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +8 -5
  14. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  15. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +7 -4
  16. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  17. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +2 -2
  18. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  19. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -1
  20. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  21. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +2 -2
  22. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  23. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -1
  24. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  25. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +2 -1
  26. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
  27. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +2 -1
  28. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
  29. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +2 -2
  30. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  31. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +1 -1
  32. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  33. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +2 -2
  34. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  35. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -1
  36. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  37. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +2 -2
  38. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  39. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -1
  40. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  41. package/dist/admin/hooks/useConfig.js +2 -1
  42. package/dist/admin/hooks/useConfig.js.map +1 -1
  43. package/dist/admin/hooks/useConfig.mjs +2 -1
  44. package/dist/admin/hooks/useConfig.mjs.map +1 -1
  45. package/dist/admin/hooks/useModalQueryParams.js +2 -2
  46. package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
  47. package/dist/admin/hooks/useModalQueryParams.mjs +1 -1
  48. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
  49. package/dist/admin/hooks/useTracking.js +21 -0
  50. package/dist/admin/hooks/useTracking.js.map +1 -0
  51. package/dist/admin/hooks/useTracking.mjs +19 -0
  52. package/dist/admin/hooks/useTracking.mjs.map +1 -0
  53. package/dist/admin/package.json.js +5 -5
  54. package/dist/admin/package.json.mjs +5 -5
  55. package/dist/admin/pages/App/MediaLibrary/components/Filters.js +2 -1
  56. package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -1
  57. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +2 -1
  58. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -1
  59. package/dist/admin/src/hooks/useTracking.d.ts +4 -0
  60. package/dist/server/controllers/admin-folder-file.js +2 -2
  61. package/dist/server/controllers/admin-folder-file.js.map +1 -1
  62. package/dist/server/controllers/admin-folder-file.mjs +2 -2
  63. package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
  64. package/dist/server/controllers/admin-upload.js +1 -1
  65. package/dist/server/controllers/admin-upload.js.map +1 -1
  66. package/dist/server/controllers/admin-upload.mjs +1 -1
  67. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  68. package/dist/server/services/metrics.js +11 -1
  69. package/dist/server/services/metrics.js.map +1 -1
  70. package/dist/server/services/metrics.mjs +11 -1
  71. package/dist/server/services/metrics.mjs.map +1 -1
  72. package/dist/server/services/upload.js +8 -8
  73. package/dist/server/services/upload.js.map +1 -1
  74. package/dist/server/services/upload.mjs +8 -8
  75. package/dist/server/services/upload.mjs.map +1 -1
  76. package/dist/server/services/weekly-metrics.js +3 -6
  77. package/dist/server/services/weekly-metrics.js.map +1 -1
  78. package/dist/server/services/weekly-metrics.mjs +3 -6
  79. package/dist/server/services/weekly-metrics.mjs.map +1 -1
  80. package/dist/server/src/index.d.ts +1 -1
  81. package/dist/server/src/services/index.d.ts +1 -1
  82. package/dist/server/src/services/metrics.d.ts +1 -0
  83. package/dist/server/src/services/metrics.d.ts.map +1 -1
  84. package/dist/server/src/services/upload.d.ts.map +1 -1
  85. package/dist/server/src/services/weekly-metrics.d.ts +0 -1
  86. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
  87. package/package.json +5 -5
@@ -1,6 +1,6 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking, useNotification } from '@strapi/admin/strapi-admin';
3
+ import { useNotification } from '@strapi/admin/strapi-admin';
4
4
  import { Modal, Flex, Loader, Grid, Field, Typography, Button } from '@strapi/design-system';
5
5
  import { Formik, Form } from 'formik';
6
6
  import isEmpty from 'lodash/isEmpty';
@@ -10,6 +10,7 @@ import { useBulkRemove } from '../../hooks/useBulkRemove.mjs';
10
10
  import { useEditFolder } from '../../hooks/useEditFolder.mjs';
11
11
  import { useFolderStructure } from '../../hooks/useFolderStructure.mjs';
12
12
  import { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions.mjs';
13
+ import { useTracking } from '../../hooks/useTracking.mjs';
13
14
  import { findRecursiveFolderByValue } from '../../utils/findRecursiveFolderByValue.mjs';
14
15
  import 'byte-size';
15
16
  import 'date-fns';
@@ -1 +1 @@
1
- {"version":3,"file":"EditFolderDialog.mjs","sources":["../../../../admin/src/components/EditFolderDialog/EditFolderDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Field, Flex, Grid, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useBulkRemove } from '../../hooks/useBulkRemove';\nimport { useEditFolder } from '../../hooks/useEditFolder';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { findRecursiveFolderByValue, getTrad, getAPIInnerErrors } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { EditFolderModalHeader } from './ModalHeader/ModalHeader';\nimport { RemoveFolderDialog } from './RemoveFolderDialog';\n\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst folderSchema = yup.object({\n name: yup.string().required(),\n parent: yup\n .object({\n label: yup.string(),\n value: yup.number().nullable(true),\n })\n .nullable(true),\n});\n\ninterface ValuesSubmit {\n name: string;\n parent: null | { label?: string; value?: number };\n}\n\nexport interface EditFolderDialogProps {\n parentFolderId?: string | number | null;\n location?: string;\n folder?: FolderDefinition;\n open?: boolean;\n onClose: (payload?: { created?: boolean | undefined } | boolean) => void;\n}\n\nexport const EditFolderContent = ({\n onClose,\n folder,\n location,\n parentFolderId,\n}: EditFolderDialogProps) => {\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n const { canCreate, isLoading: isLoadingPermissions, canUpdate } = useMediaLibraryPermissions();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { editFolder, isLoading: isEditFolderLoading } = useEditFolder();\n const { remove } = useBulkRemove();\n const { toggleNotification } = useNotification();\n const isLoading = isLoadingPermissions || folderStructureIsLoading;\n const isEditing = !!folder;\n const formDisabled = (folder && !canUpdate) || (!folder && !canCreate);\n const initialFormData: ValuesSubmit = !folderStructureIsLoading\n ? {\n name: folder?.name ?? '',\n parent: {\n /* ideally we would use folderStructure[0].value, but since it is null\n react complains about rendering null as field value */\n value: parentFolderId ? parseInt(parentFolderId.toString(), 10) : undefined,\n label: parentFolderId\n ? folderStructure &&\n findRecursiveFolderByValue(folderStructure, parseInt(parentFolderId.toString(), 10))\n ?.label\n : folderStructure?.[0].label,\n },\n }\n : {\n name: '',\n parent: null,\n };\n\n const formRef = React.useRef<HTMLFormElement>(null);\n\n const handleKeyDown =\n (handleSubmit: (event: React.FormEvent<HTMLFormElement>) => void) =>\n (event: React.KeyboardEvent<HTMLFormElement>) => {\n if (event.key === 'Enter') {\n if (event.target instanceof HTMLInputElement) {\n handleSubmit(event);\n event.preventDefault();\n }\n }\n };\n\n const handleSubmit = async (\n values: ValuesSubmit,\n { setErrors }: { setErrors: (errors: FormikErrors<ValuesSubmit>) => void }\n ) => {\n try {\n await editFolder(\n {\n ...values,\n parent: values.parent?.value ?? null,\n },\n folder?.id\n );\n\n toggleNotification({\n type: 'success',\n message: isEditing\n ? formatMessage({\n id: getTrad('modal.folder-notification-edited-success'),\n defaultMessage: 'Folder successfully edited',\n })\n : formatMessage({\n id: getTrad('modal.folder-notification-created-success'),\n defaultMessage: 'Folder successfully created',\n }),\n });\n\n if (isEditing) {\n const didChangeLocation = parentFolderId\n ? parseInt(parentFolderId.toString(), 10) !== values.parent?.value\n : parentFolderId === null && !!values.parent?.value;\n trackUsage('didEditMediaLibraryElements', {\n location,\n type: 'folder',\n changeLocation: didChangeLocation,\n });\n } else {\n trackUsage('didAddMediaLibraryFolders', { location: location! });\n }\n\n onClose({ created: true });\n } catch (err) {\n const errors = getAPIInnerErrors(err as FetchError, { getTrad });\n const formikErrors = Object.entries(errors!).reduce(\n (acc: Record<string, string>, [key, error]) => {\n acc[key] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n };\n\n const handleDelete = async () => {\n if (folder) {\n await remove([folder]);\n }\n\n setShowConfirmDialog(false);\n onClose();\n };\n\n if (isLoading) {\n return (\n <>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </>\n );\n }\n\n return (\n <>\n <Formik\n validationSchema={folderSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue, handleSubmit }) => (\n <Form noValidate ref={formRef} onKeyDown={handleKeyDown(handleSubmit)}>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Grid.Root gap={4}>\n {isEditing && (\n <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.elements'),\n defaultMessage: 'Elements',\n }),\n value: formatMessage(\n {\n id: getTrad('modal.folder.elements.count'),\n defaultMessage: '{folderCount} folders, {assetCount} assets',\n },\n {\n assetCount: folder?.files?.count ?? 0,\n folderCount: folder?.children?.count ?? 0,\n }\n ),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.creation-date'),\n defaultMessage: 'Creation Date',\n }),\n value: formatDate(new Date(folder.createdAt!)),\n },\n ]}\n />\n </Grid.Item>\n )}\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={typeof errors.name === 'string' ? errors.name : undefined}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-name'),\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <Field.Input\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-parent\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n isDisabled={formDisabled}\n defaultValue={values.parent!}\n name=\"parent\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-parent\"\n disabled={formDisabled}\n error={typeof errors.parent === 'string' ? errors.parent : undefined}\n ariaErrorMessage=\"folder-parent-error\"\n />\n\n {errors.parent && (\n <Typography\n variant=\"pi\"\n tag=\"p\"\n id=\"folder-parent-error\"\n textColor=\"danger600\"\n >\n {typeof errors.parent === 'string' ? errors.parent : undefined}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onClose()} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {isEditing && canUpdate && (\n <Button\n type=\"button\"\n variant=\"danger-light\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"delete\"\n disabled={!canUpdate || isEditFolderLoading}\n >\n {formatMessage({\n id: getTrad('modal.folder.create.delete'),\n defaultMessage: 'Delete folder',\n })}\n </Button>\n )}\n\n <Button\n name=\"submit\"\n loading={isEditFolderLoading}\n disabled={formDisabled}\n type=\"submit\"\n >\n {formatMessage(\n isEditing\n ? { id: getTrad('modal.folder.edit.submit'), defaultMessage: 'Save' }\n : { id: getTrad('modal.folder.create.submit'), defaultMessage: 'Create' }\n )}\n </Button>\n </Flex>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n <RemoveFolderDialog\n open={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleDelete}\n />\n </>\n );\n};\n\nexport const EditFolderDialog = ({ open, onClose, ...restProps }: EditFolderDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditFolderContent {...restProps} onClose={onClose} open={open} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["folderSchema","yup","object","name","string","required","parent","label","value","number","nullable","EditFolderContent","onClose","folder","location","parentFolderId","data","folderStructure","isLoading","folderStructureIsLoading","useFolderStructure","enabled","canCreate","isLoadingPermissions","canUpdate","useMediaLibraryPermissions","showConfirmDialog","setShowConfirmDialog","React","useState","formatMessage","formatDate","useIntl","trackUsage","useTracking","editFolder","isEditFolderLoading","useEditFolder","remove","useBulkRemove","toggleNotification","useNotification","isEditing","formDisabled","initialFormData","parseInt","toString","undefined","findRecursiveFolderByValue","formRef","useRef","handleKeyDown","handleSubmit","event","key","target","HTMLInputElement","preventDefault","values","setErrors","id","type","message","getTrad","defaultMessage","didChangeLocation","changeLocation","created","err","errors","getAPIInnerErrors","formikErrors","Object","entries","reduce","acc","error","isEmpty","handleDelete","_jsxs","_Fragment","_jsx","EditFolderModalHeader","Modal","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","Formik","validationSchema","validateOnChange","onSubmit","initialValues","handleChange","setFieldValue","Form","noValidate","ref","onKeyDown","Grid","Root","gap","Item","xs","col","direction","alignItems","ContextInfo","blocks","assetCount","files","count","folderCount","children","Date","createdAt","Field","Label","Input","onChange","disabled","Error","SelectTree","options","isDisabled","defaultValue","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Button","onClick","loading","RemoveFolderDialog","open","onConfirm","EditFolderDialog","restProps","onOpenChange","Content"],"mappings":"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"}
1
+ {"version":3,"file":"EditFolderDialog.mjs","sources":["../../../../admin/src/components/EditFolderDialog/EditFolderDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useNotification } from '@strapi/admin/strapi-admin';\nimport { Button, Field, Flex, Grid, Loader, Modal, Typography } from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useBulkRemove } from '../../hooks/useBulkRemove';\nimport { useEditFolder } from '../../hooks/useEditFolder';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useTracking } from '../../hooks/useTracking';\nimport { findRecursiveFolderByValue, getTrad, getAPIInnerErrors } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { EditFolderModalHeader } from './ModalHeader/ModalHeader';\nimport { RemoveFolderDialog } from './RemoveFolderDialog';\n\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst folderSchema = yup.object({\n name: yup.string().required(),\n parent: yup\n .object({\n label: yup.string(),\n value: yup.number().nullable(true),\n })\n .nullable(true),\n});\n\ninterface ValuesSubmit {\n name: string;\n parent: null | { label?: string; value?: number };\n}\n\nexport interface EditFolderDialogProps {\n parentFolderId?: string | number | null;\n location?: string;\n folder?: FolderDefinition;\n open?: boolean;\n onClose: (payload?: { created?: boolean | undefined } | boolean) => void;\n}\n\nexport const EditFolderContent = ({\n onClose,\n folder,\n location,\n parentFolderId,\n}: EditFolderDialogProps) => {\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n const { canCreate, isLoading: isLoadingPermissions, canUpdate } = useMediaLibraryPermissions();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { editFolder, isLoading: isEditFolderLoading } = useEditFolder();\n const { remove } = useBulkRemove();\n const { toggleNotification } = useNotification();\n const isLoading = isLoadingPermissions || folderStructureIsLoading;\n const isEditing = !!folder;\n const formDisabled = (folder && !canUpdate) || (!folder && !canCreate);\n const initialFormData: ValuesSubmit = !folderStructureIsLoading\n ? {\n name: folder?.name ?? '',\n parent: {\n /* ideally we would use folderStructure[0].value, but since it is null\n react complains about rendering null as field value */\n value: parentFolderId ? parseInt(parentFolderId.toString(), 10) : undefined,\n label: parentFolderId\n ? folderStructure &&\n findRecursiveFolderByValue(folderStructure, parseInt(parentFolderId.toString(), 10))\n ?.label\n : folderStructure?.[0].label,\n },\n }\n : {\n name: '',\n parent: null,\n };\n\n const formRef = React.useRef<HTMLFormElement>(null);\n\n const handleKeyDown =\n (handleSubmit: (event: React.FormEvent<HTMLFormElement>) => void) =>\n (event: React.KeyboardEvent<HTMLFormElement>) => {\n if (event.key === 'Enter') {\n if (event.target instanceof HTMLInputElement) {\n handleSubmit(event);\n event.preventDefault();\n }\n }\n };\n\n const handleSubmit = async (\n values: ValuesSubmit,\n { setErrors }: { setErrors: (errors: FormikErrors<ValuesSubmit>) => void }\n ) => {\n try {\n await editFolder(\n {\n ...values,\n parent: values.parent?.value ?? null,\n },\n folder?.id\n );\n\n toggleNotification({\n type: 'success',\n message: isEditing\n ? formatMessage({\n id: getTrad('modal.folder-notification-edited-success'),\n defaultMessage: 'Folder successfully edited',\n })\n : formatMessage({\n id: getTrad('modal.folder-notification-created-success'),\n defaultMessage: 'Folder successfully created',\n }),\n });\n\n if (isEditing) {\n const didChangeLocation = parentFolderId\n ? parseInt(parentFolderId.toString(), 10) !== values.parent?.value\n : parentFolderId === null && !!values.parent?.value;\n trackUsage('didEditMediaLibraryElements', {\n location,\n type: 'folder',\n changeLocation: didChangeLocation,\n });\n } else {\n trackUsage('didAddMediaLibraryFolders', { location: location! });\n }\n\n onClose({ created: true });\n } catch (err) {\n const errors = getAPIInnerErrors(err as FetchError, { getTrad });\n const formikErrors = Object.entries(errors!).reduce(\n (acc: Record<string, string>, [key, error]) => {\n acc[key] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n };\n\n const handleDelete = async () => {\n if (folder) {\n await remove([folder]);\n }\n\n setShowConfirmDialog(false);\n onClose();\n };\n\n if (isLoading) {\n return (\n <>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </>\n );\n }\n\n return (\n <>\n <Formik\n validationSchema={folderSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue, handleSubmit }) => (\n <Form noValidate ref={formRef} onKeyDown={handleKeyDown(handleSubmit)}>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Grid.Root gap={4}>\n {isEditing && (\n <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.elements'),\n defaultMessage: 'Elements',\n }),\n value: formatMessage(\n {\n id: getTrad('modal.folder.elements.count'),\n defaultMessage: '{folderCount} folders, {assetCount} assets',\n },\n {\n assetCount: folder?.files?.count ?? 0,\n folderCount: folder?.children?.count ?? 0,\n }\n ),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.creation-date'),\n defaultMessage: 'Creation Date',\n }),\n value: formatDate(new Date(folder.createdAt!)),\n },\n ]}\n />\n </Grid.Item>\n )}\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={typeof errors.name === 'string' ? errors.name : undefined}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-name'),\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <Field.Input\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-parent\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n isDisabled={formDisabled}\n defaultValue={values.parent!}\n name=\"parent\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-parent\"\n disabled={formDisabled}\n error={typeof errors.parent === 'string' ? errors.parent : undefined}\n ariaErrorMessage=\"folder-parent-error\"\n />\n\n {errors.parent && (\n <Typography\n variant=\"pi\"\n tag=\"p\"\n id=\"folder-parent-error\"\n textColor=\"danger600\"\n >\n {typeof errors.parent === 'string' ? errors.parent : undefined}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onClose()} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {isEditing && canUpdate && (\n <Button\n type=\"button\"\n variant=\"danger-light\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"delete\"\n disabled={!canUpdate || isEditFolderLoading}\n >\n {formatMessage({\n id: getTrad('modal.folder.create.delete'),\n defaultMessage: 'Delete folder',\n })}\n </Button>\n )}\n\n <Button\n name=\"submit\"\n loading={isEditFolderLoading}\n disabled={formDisabled}\n type=\"submit\"\n >\n {formatMessage(\n isEditing\n ? { id: getTrad('modal.folder.edit.submit'), defaultMessage: 'Save' }\n : { id: getTrad('modal.folder.create.submit'), defaultMessage: 'Create' }\n )}\n </Button>\n </Flex>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n <RemoveFolderDialog\n open={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleDelete}\n />\n </>\n );\n};\n\nexport const EditFolderDialog = ({ open, onClose, ...restProps }: EditFolderDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditFolderContent {...restProps} onClose={onClose} open={open} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n"],"names":["folderSchema","yup","object","name","string","required","parent","label","value","number","nullable","EditFolderContent","onClose","folder","location","parentFolderId","data","folderStructure","isLoading","folderStructureIsLoading","useFolderStructure","enabled","canCreate","isLoadingPermissions","canUpdate","useMediaLibraryPermissions","showConfirmDialog","setShowConfirmDialog","React","useState","formatMessage","formatDate","useIntl","trackUsage","useTracking","editFolder","isEditFolderLoading","useEditFolder","remove","useBulkRemove","toggleNotification","useNotification","isEditing","formDisabled","initialFormData","parseInt","toString","undefined","findRecursiveFolderByValue","formRef","useRef","handleKeyDown","handleSubmit","event","key","target","HTMLInputElement","preventDefault","values","setErrors","id","type","message","getTrad","defaultMessage","didChangeLocation","changeLocation","created","err","errors","getAPIInnerErrors","formikErrors","Object","entries","reduce","acc","error","isEmpty","handleDelete","_jsxs","_Fragment","_jsx","EditFolderModalHeader","Modal","Body","Flex","justifyContent","paddingTop","paddingBottom","Loader","Formik","validationSchema","validateOnChange","onSubmit","initialValues","handleChange","setFieldValue","Form","noValidate","ref","onKeyDown","Grid","Root","gap","Item","xs","col","direction","alignItems","ContextInfo","blocks","assetCount","files","count","folderCount","children","Date","createdAt","Field","Label","Input","onChange","disabled","Error","SelectTree","options","isDisabled","defaultValue","menuPortalTarget","document","querySelector","inputId","ariaErrorMessage","Typography","variant","tag","textColor","Footer","Button","onClick","loading","RemoveFolderDialog","open","onConfirm","EditFolderDialog","restProps","onOpenChange","Content"],"mappings":"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"}
@@ -2,12 +2,12 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var strapiAdmin = require('@strapi/admin/strapi-admin');
6
5
  var designSystem = require('@strapi/design-system');
7
6
  var icons = require('@strapi/icons');
8
7
  var reactIntl = require('react-intl');
9
8
  var styledComponents = require('styled-components');
10
9
  var constants = require('../../../constants.js');
10
+ var useTracking = require('../../../hooks/useTracking.js');
11
11
  require('byte-size');
12
12
  require('date-fns');
13
13
  var getTrad = require('../../../utils/getTrad.js');
@@ -55,7 +55,7 @@ const FromComputerForm = ({ onClose, onAddAssets, trackedLocation })=>{
55
55
  const { formatMessage } = reactIntl.useIntl();
56
56
  const [dragOver, setDragOver] = React__namespace.useState(false);
57
57
  const inputRef = React__namespace.useRef(null);
58
- const { trackUsage } = strapiAdmin.useTracking();
58
+ const { trackUsage } = useTracking.useTracking();
59
59
  const handleDragOver = (event)=>{
60
60
  event.preventDefault();
61
61
  };
@@ -1 +1 @@
1
- {"version":3,"file":"FromComputerForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n // inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n\n {/* <Box position=\"relative\">\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: getTrad('input.button.label'),\n defaultMessage: 'Browse files',\n })}\n </Button>\n </Box> */}\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"FromComputerForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n // inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n\n {/* <Box position=\"relative\">\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: getTrad('input.button.label'),\n defaultMessage: 'Browse files',\n })}\n </Button>\n </Box> */}\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking } from '@strapi/admin/strapi-admin';
4
3
  import { Flex, Box, Typography, Modal, Button } from '@strapi/design-system';
5
4
  import { PlusCircle } from '@strapi/icons';
6
5
  import { useIntl } from 'react-intl';
7
6
  import { styled } from 'styled-components';
8
7
  import { AssetSource } from '../../../constants.mjs';
8
+ import { useTracking } from '../../../hooks/useTracking.mjs';
9
9
  import 'byte-size';
10
10
  import 'date-fns';
11
11
  import { getTrad } from '../../../utils/getTrad.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"FromComputerForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n // inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n\n {/* <Box position=\"relative\">\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: getTrad('input.button.label'),\n defaultMessage: 'Browse files',\n })}\n </Button>\n </Box> */}\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":";;;;;;;;;;;;;;;AAaA,MAAMA,OAAAA,GAAUC,MAAOC,CAAAA,IAAAA,CAAK;;AAE5B,CAAC;AAED,MAAMC,WAAAA,GAAcF,MAAOG,CAAAA,GAAG;;;;UAIpB,EAAE,CAAC,EAAEC,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;;AAEnD,CAAC;AAED,MAAMC,QAAAA,GAAWP,MAAOQ,CAAAA,GAAAA,CAAI;;AAE5B,CAAC;AAED,MAAMC,SAAAA,GAAYT,MAAOQ,CAAAA,GAAAA,CAAI;;;AAG7B,CAAC;AAQM,MAAME,mBAAmB,CAAC,EAC/BC,OAAO,EACPC,WAAW,EACXC,eAAe,EACO,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,QAAUC,EAAAA,WAAAA,CAAY,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IAC/C,MAAMC,QAAAA,GAAWF,KAAMG,CAAAA,MAAM,CAAmB,IAAA,CAAA;IAChD,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AAEvB,IAAA,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;AACtBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;AACtB,KAAA;AAEA,IAAA,MAAMC,kBAAkB,CAACF,KAAAA,GAAAA;AACvBA,QAAAA,KAAAA,CAAMC,cAAc,EAAA;QACpBT,WAAY,CAAA,IAAA,CAAA;AACd,KAAA;IAEA,MAAMW,eAAAA,GAAkB,IAAMX,WAAY,CAAA,KAAA,CAAA;AAO1C,IAAA,MAAMY,YAAe,GAAA,IAAA;QACnB,MAAMC,KAAAA,GAAQV,QAASW,CAAAA,OAAO,EAAED,KAAAA;AAChC,QAAA,MAAME,SAA4B,EAAE;AAEpC,QAAA,IAAIF,KAAO,EAAA;AACT,YAAA,IAAK,IAAIG,CAAI,GAAA,CAAA,EAAGA,IAAIH,KAAMI,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;gBACrC,MAAME,IAAAA,GAAOL,KAAMM,CAAAA,IAAI,CAACH,CAAAA,CAAAA;AACxB,gBAAA,IAAIE,IAAM,EAAA;AACR,oBAAA,MAAME,KAAQC,GAAAA,cAAAA,CAAeH,IAAMI,EAAAA,WAAAA,CAAYC,QAAQ,CAAA;AACvDR,oBAAAA,MAAAA,CAAOS,IAAI,CAACJ,KAAAA,CAAAA;AACd;AACF;AACF;AAEA,QAAA,IAAIxB,eAAiB,EAAA;AACnBS,YAAAA,UAAAA,CAAW,eAAiB,EAAA;gBAAEoB,MAAQ,EAAA,UAAA;gBAAYC,QAAU9B,EAAAA;AAAgB,aAAA,CAAA;AAC9E;QAEAD,WAAYoB,CAAAA,MAAAA,CAAAA;AACd,KAAA;AAEA,IAAA,MAAMY,aAAa,CAACC,CAAAA,GAAAA;AAClBA,QAAAA,CAAAA,CAAEnB,cAAc,EAAA;QAEhB,IAAImB,CAAAA,EAAGC,cAAchB,KAAO,EAAA;AAC1B,YAAA,MAAMA,KAAQe,GAAAA,CAAAA,CAAEC,YAAY,CAAChB,KAAK;AAClC,YAAA,MAAME,SAAS,EAAE;AAEjB,YAAA,IAAK,IAAIC,CAAI,GAAA,CAAA,EAAGA,IAAIH,KAAMI,CAAAA,MAAM,EAAED,CAAK,EAAA,CAAA;gBACrC,MAAME,IAAAA,GAAOL,KAAMM,CAAAA,IAAI,CAACH,CAAAA,CAAAA;AACxB,gBAAA,IAAIE,IAAM,EAAA;AACR,oBAAA,MAAME,KAAQC,GAAAA,cAAAA,CAAeH,IAAMI,EAAAA,WAAAA,CAAYC,QAAQ,CAAA;AACvDR,oBAAAA,MAAAA,CAAOS,IAAI,CAACJ,KAAAA,CAAAA;AACd;AACF;YAEAzB,WAAYoB,CAAAA,MAAAA,CAAAA;AACd;QAEAf,WAAY,CAAA,KAAA,CAAA;AACd,KAAA;AAEA,IAAA,qBACE8B,IAACC,CAAAA,MAAAA,EAAAA;;0BACCC,GAACzC,CAAAA,GAAAA,EAAAA;gBAAI0C,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;gBAAGC,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;AAClE,gBAAA,QAAA,gBAAAJ,GAACK,CAAAA,OAAAA,EAAAA;AACC,oBAAA,QAAA,gBAAAL,GAAC1C,CAAAA,QAAAA,EAAAA;wBACC6C,UAAY,EAAA,EAAA;wBACZC,aAAe,EAAA,EAAA;wBACfE,SAAS,EAAA,IAAA;wBACTC,cAAe,EAAA,QAAA;AACfC,wBAAAA,WAAAA,EAAazC,WAAW,YAAe,GAAA,YAAA;AACvC0C,wBAAAA,UAAAA,EAAY1C,WAAW,YAAe,GAAA,YAAA;wBACtC2C,QAAS,EAAA,UAAA;wBACTC,WAAajC,EAAAA,eAAAA;wBACbkC,WAAajC,EAAAA,eAAAA;wBACbkC,UAAYtC,EAAAA,cAAAA;wBACZuC,MAAQnB,EAAAA,UAAAA;AAER,wBAAA,QAAA,gBAAAK,GAAChD,CAAAA,IAAAA,EAAAA;4BAAKuD,cAAe,EAAA,QAAA;AACnB,4BAAA,QAAA,gBAAAT,IAAChD,CAAAA,OAAAA,EAAAA;;kDACCkD,GAAC/C,CAAAA,WAAAA,EAAAA;AACC,wCAAA,QAAA,gBAAA+C,GAACe,CAAAA,UAAAA,EAAAA;4CAAYC,aAAW,EAAA,IAAA;4CAACC,KAAM,EAAA,QAAA;4CAASC,MAAO,EAAA;;;kDAGjDlB,GAACzC,CAAAA,GAAAA,EAAAA;wCAAI4C,UAAY,EAAA,CAAA;wCAAGC,aAAe,EAAA,CAAA;AACjC,wCAAA,QAAA,gBAAAJ,GAACmB,CAAAA,UAAAA,EAAAA;4CAAWC,OAAQ,EAAA,OAAA;4CAAQC,SAAU,EAAA,YAAA;4CAAaC,GAAI,EAAA,MAAA;sDACpDzD,aAAc,CAAA;AACb0D,gDAAAA,EAAAA,EAAIC,OAAQ,CAAA,aAAA,CAAA;gDACZC,cAAgB,EAAA;AAClB,6CAAA;;;kDAIJzB,GAACxC,CAAAA,SAAAA,EAAAA;wCACC8D,GAAI,EAAA,OAAA;wCACJZ,QAAS,EAAA,UAAA;wCACTgB,IAAM,EAAA,CAAA;wCACNC,KAAO,EAAA,CAAA;wCACPC,MAAQ,EAAA,CAAA;wCACRC,GAAK,EAAA,CAAA;wCACLZ,KAAM,EAAA,MAAA;wCACNa,IAAK,EAAA,MAAA;wCACLC,QAAQ,EAAA,IAAA;wCACRC,IAAK,EAAA,OAAA;AACLC,wCAAAA,YAAAA,EAAYpE,aAAc,CAAA;AACxB0D,4CAAAA,EAAAA,EAAIC,OAAQ,CAAA,aAAA,CAAA;4CACZC,cAAgB,EAAA;AAClB,yCAAA,CAAA;AACAS,wCAAAA,QAAAA,EAAU,CAAC,CAAA;wCACXC,GAAKhE,EAAAA,QAAAA;wCACLiE,MAAQ,EAAA,CAAA;wCACRC,QAAUzD,EAAAA;;;;;;;;AAiBtB,0BAAAoB,GAAA,CAACsC,MAAMC,MAAM,EAAA;AACX,gBAAA,QAAA,gBAAAvC,GAACwC,CAAAA,MAAAA,EAAAA;oBAAOC,OAAS/E,EAAAA,OAAAA;oBAAS0D,OAAQ,EAAA,UAAA;8BAC/BvD,aAAc,CAAA;wBACb0D,EAAI,EAAA,8BAAA;wBACJE,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV;;;;"}
1
+ {"version":3,"file":"FromComputerForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n // inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n\n {/* <Box position=\"relative\">\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: getTrad('input.button.label'),\n defaultMessage: 'Browse files',\n })}\n </Button>\n </Box> */}\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n"],"names":["Wrapper","styled","Flex","IconWrapper","div","theme","colors","primary600","MediaBox","Box","OpaqueBox","FromComputerForm","onClose","onAddAssets","trackedLocation","formatMessage","useIntl","dragOver","setDragOver","React","useState","inputRef","useRef","trackUsage","useTracking","handleDragOver","event","preventDefault","handleDragEnter","handleDragLeave","handleChange","files","current","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","source","location","handleDrop","e","dataTransfer","_jsxs","form","_jsx","paddingLeft","paddingRight","paddingTop","paddingBottom","label","hasRadius","justifyContent","borderColor","background","position","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","aria-hidden","width","height","Typography","variant","textColor","tag","id","getTrad","defaultMessage","left","right","bottom","top","type","multiple","name","aria-label","tabIndex","ref","zIndex","onChange","Modal","Footer","Button","onClick"],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var strapiAdmin = require('@strapi/admin/strapi-admin');
6
5
  var designSystem = require('@strapi/design-system');
7
6
  var formik = require('formik');
8
7
  var reactIntl = require('react-intl');
8
+ var useTracking = require('../../../hooks/useTracking.js');
9
9
  require('byte-size');
10
10
  require('date-fns');
11
11
  var getTrad = require('../../../utils/getTrad.js');
@@ -37,7 +37,7 @@ const FromUrlForm = ({ onClose, onAddAsset, trackedLocation })=>{
37
37
  const [loading, setLoading] = React__namespace.useState(false);
38
38
  const [error, setError] = React__namespace.useState(undefined);
39
39
  const { formatMessage } = reactIntl.useIntl();
40
- const { trackUsage } = strapiAdmin.useTracking();
40
+ const { trackUsage } = useTracking.useTracking();
41
41
  const handleSubmit = async ({ urls })=>{
42
42
  setLoading(true);
43
43
  const urlArray = urls.split(/\r?\n/);
@@ -1 +1 @@
1
- {"version":3,"file":"FromUrlForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={\n error?.message ||\n (errors.urls\n ? formatMessage({ id: errors.urls, defaultMessage: 'An error occured' })\n : undefined)\n }\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","error","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","values","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","id","getTrad","defaultMessage","message","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBO,MAAMA,cAAc,CAAC,EAAEC,OAAO,EAAEC,UAAU,EAAEC,eAAe,EAAoB,GAAA;AACpF,IAAA,MAAM,CAACC,OAASC,EAAAA,UAAAA,CAAW,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAC7C,IAAA,MAAM,CAACC,KAAOC,EAAAA,QAAAA,CAAS,GAAGH,gBAAAA,CAAMC,QAAQ,CAAoBG,SAAAA,CAAAA;IAC5D,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AAEvB,IAAA,MAAMC,YAAe,GAAA,OAAO,EAAEC,IAAI,EAAoB,GAAA;QACpDX,UAAW,CAAA,IAAA,CAAA;QACX,MAAMY,QAAAA,GAAWD,IAAKE,CAAAA,KAAK,CAAC,OAAA,CAAA;QAC5B,IAAI;YACF,MAAMC,MAAAA,GAA4B,MAAMC,yBAAaH,CAAAA,QAAAA,CAAAA;AAErD,YAAA,IAAId,eAAiB,EAAA;AACnBU,gBAAAA,UAAAA,CAAW,eAAiB,EAAA;oBAAEQ,MAAQ,EAAA,KAAA;oBAAOC,QAAUnB,EAAAA;AAAgB,iBAAA,CAAA;AACzE;;YAGAD,UAAWiB,CAAAA,MAAAA,CAAAA;AACb,SAAA,CAAE,OAAOI,CAAY,EAAA;YACnBd,QAASc,CAAAA,CAAAA,CAAAA;YACTlB,UAAW,CAAA,KAAA,CAAA;AACb;AACF,KAAA;AAEA,IAAA,qBACEmB,cAACC,CAAAA,aAAAA,EAAAA;QACCC,kBAAkB,EAAA,IAAA;QAClBC,aAAe,EAAA;YACbX,IAAM,EAAA;AACR,SAAA;QACAY,QAAUb,EAAAA,YAAAA;QACVc,gBAAkBC,EAAAA,sBAAAA;QAClBC,gBAAkB,EAAA,KAAA;kBAEjB,CAAC,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAE,iBAChCC,eAACC,CAAAA,WAAAA,EAAAA;gBAAKC,UAAU,EAAA,IAAA;;kCACdb,cAACc,CAAAA,gBAAAA,EAAAA;wBAAIC,WAAa,EAAA,CAAA;wBAAGC,YAAc,EAAA,CAAA;wBAAGC,aAAe,EAAA,CAAA;wBAAGC,UAAY,EAAA,CAAA;gDAClEP,eAAA,CAACQ,mBAAMC,IAAI,EAAA;AACTC,4BAAAA,IAAAA,EAAMlC,aAAc,CAAA;AAClBmC,gCAAAA,EAAAA,EAAIC,eAAQ,CAAA,uBAAA,CAAA;gCACZC,cAAgB,EAAA;AAClB,6BAAA,CAAA;AACAxC,4BAAAA,KAAAA,EACEA,OAAOyC,OACNhB,KAAAA,MAAOjB,CAAAA,IAAI,GACRL,aAAc,CAAA;AAAEmC,gCAAAA,EAAAA,EAAIb,OAAOjB,IAAI;gCAAEgC,cAAgB,EAAA;AAAmB,6BAAA,CAAA,GACpEtC,SAAQ,CAAA;;AAGd,8CAAAc,cAAA,CAACmB,mBAAMO,KAAK,EAAA;8CACTvC,aAAc,CAAA;AAAEmC,wCAAAA,EAAAA,EAAIC,eAAQ,CAAA,iBAAA,CAAA;wCAAoBC,cAAgB,EAAA;AAAM,qCAAA;;8CAEzExB,cAAC2B,CAAAA,qBAAAA,EAAAA;oCAASC,IAAK,EAAA,MAAA;oCAAOC,QAAUnB,EAAAA,YAAAA;AAAcoB,oCAAAA,KAAAA,EAAOtB,OAAOhB;;AAC5D,8CAAAQ,cAAA,CAACmB,mBAAMY,IAAI,EAAA,EAAA,CAAA;AACX,8CAAA/B,cAAA,CAACmB,mBAAMa,KAAK,EAAA,EAAA;;;;AAIhB,kCAAArB,eAAA,CAACsB,mBAAMC,MAAM,EAAA;;0CACXlC,cAACmC,CAAAA,mBAAAA,EAAAA;gCAAOC,OAAS3D,EAAAA,OAAAA;gCAAS4D,OAAQ,EAAA,UAAA;0CAC/BlD,aAAc,CAAA;oCAAEmC,EAAI,EAAA,8BAAA;oCAAgCE,cAAgB,EAAA;AAAS,iCAAA;;0CAEhFxB,cAACmC,CAAAA,mBAAAA,EAAAA;gCAAOG,IAAK,EAAA,QAAA;gCAAS1D,OAASA,EAAAA,OAAAA;0CAC5BO,aAAc,CAAA;AACbmC,oCAAAA,EAAAA,EAAIC,eAAQ,CAAA,aAAA,CAAA;oCACZC,cAAgB,EAAA;AAClB,iCAAA;;;;;;;AAOd;;;;"}
1
+ {"version":3,"file":"FromUrlForm.js","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={\n error?.message ||\n (errors.urls\n ? formatMessage({ id: errors.urls, defaultMessage: 'An error occured' })\n : undefined)\n }\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","error","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","values","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","id","getTrad","defaultMessage","message","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking } from '@strapi/admin/strapi-admin';
4
3
  import { Box, Field, Textarea, Modal, Button } from '@strapi/design-system';
5
4
  import { Formik, Form } from 'formik';
6
5
  import { useIntl } from 'react-intl';
6
+ import { useTracking } from '../../../hooks/useTracking.mjs';
7
7
  import 'byte-size';
8
8
  import 'date-fns';
9
9
  import { getTrad } from '../../../utils/getTrad.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"FromUrlForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={\n error?.message ||\n (errors.urls\n ? formatMessage({ id: errors.urls, defaultMessage: 'An error occured' })\n : undefined)\n }\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","error","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","values","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","id","getTrad","defaultMessage","message","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"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"}
1
+ {"version":3,"file":"FromUrlForm.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={\n error?.message ||\n (errors.urls\n ? formatMessage({ id: errors.urls, defaultMessage: 'An error occured' })\n : undefined)\n }\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n"],"names":["FromUrlForm","onClose","onAddAsset","trackedLocation","loading","setLoading","React","useState","error","setError","undefined","formatMessage","useIntl","trackUsage","useTracking","handleSubmit","urls","urlArray","split","assets","urlsToAssets","source","location","e","_jsx","Formik","enableReinitialize","initialValues","onSubmit","validationSchema","urlSchema","validateOnChange","values","errors","handleChange","_jsxs","Form","noValidate","Box","paddingLeft","paddingRight","paddingBottom","paddingTop","Field","Root","hint","id","getTrad","defaultMessage","message","Label","Textarea","name","onChange","value","Hint","Error","Modal","Footer","Button","onClick","variant","type"],"mappings":"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"}
@@ -2,9 +2,9 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var strapiAdmin = require('@strapi/admin/strapi-admin');
6
5
  var designSystem = require('@strapi/design-system');
7
6
  var reactIntl = require('react-intl');
7
+ var useTracking = require('../../../hooks/useTracking.js');
8
8
  require('byte-size');
9
9
  require('date-fns');
10
10
  var getTrad = require('../../../utils/getTrad.js');
@@ -41,7 +41,7 @@ const Status = {
41
41
  const PendingAssetStep = ({ addUploadedFiles, folderId, onClose, onEditAsset, onRemoveAsset, assets, onClickAddAsset, onCancelUpload, onUploadSucceed, trackedLocation })=>{
42
42
  const assetCountRef = React__namespace.useRef(0);
43
43
  const { formatMessage } = reactIntl.useIntl();
44
- const { trackUsage } = strapiAdmin.useTracking();
44
+ const { trackUsage } = useTracking.useTracking();
45
45
  const [uploadStatus, setUploadStatus] = React__namespace.useState(Status.Idle);
46
46
  const handleSubmit = async (e)=>{
47
47
  e.preventDefault();
@@ -1 +1 @@
1
- {"version":3,"file":"PendingAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","col","UploadingAssetCard","onCancel","onStatusChange","rawFile","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
1
+ {"version":3,"file":"PendingAssetStep.js","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","col","UploadingAssetCard","onCancel","onStatusChange","rawFile","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useTracking } from '@strapi/admin/strapi-admin';
4
3
  import { Modal, Flex, Typography, Button, KeyboardNavigable, Grid } from '@strapi/design-system';
5
4
  import { useIntl } from 'react-intl';
5
+ import { useTracking } from '../../../hooks/useTracking.mjs';
6
6
  import 'byte-size';
7
7
  import 'date-fns';
8
8
  import { getTrad } from '../../../utils/getTrad.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"PendingAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","col","UploadingAssetCard","onCancel","onStatusChange","rawFile","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
1
+ {"version":3,"file":"PendingAssetStep.mjs","sources":["../../../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n"],"names":["Status","Idle","Uploading","Intermediate","PendingAssetStep","addUploadedFiles","folderId","onClose","onEditAsset","onRemoveAsset","assets","onClickAddAsset","onCancelUpload","onUploadSucceed","trackedLocation","assetCountRef","React","useRef","formatMessage","useIntl","trackUsage","useTracking","uploadStatus","setUploadStatus","useState","handleSubmit","e","preventDefault","stopPropagation","assetsCountByType","reduce","acc","asset","type","undefined","accType","currentCount","toString","parseInt","location","handleStatusChange","status","file","current","length","_jsxs","_Fragment","_jsx","Modal","Header","Title","id","getTrad","defaultMessage","Body","Flex","direction","alignItems","gap","justifyContent","Typography","variant","fontWeight","textColor","number","Button","size","onClick","KeyboardNavigable","tagName","Grid","Root","map","assetKey","url","Item","col","UploadingAssetCard","onCancel","onStatusChange","rawFile","AssetCard","local","alt","name","onEdit","onRemove","Footer","loading"],"mappings":"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"}
@@ -4,6 +4,7 @@ var strapiAdmin = require('@strapi/admin/strapi-admin');
4
4
  var reactIntl = require('react-intl');
5
5
  var reactQuery = require('react-query');
6
6
  var pluginId = require('../pluginId.js');
7
+ var useTracking = require('./useTracking.js');
7
8
 
8
9
  const endpoint = `/${pluginId.pluginId}/configuration`;
9
10
  const queryKey = [
@@ -11,7 +12,7 @@ const queryKey = [
11
12
  'configuration'
12
13
  ];
13
14
  const useConfig = ()=>{
14
- const { trackUsage } = strapiAdmin.useTracking();
15
+ const { trackUsage } = useTracking.useTracking();
15
16
  const { formatMessage } = reactIntl.useIntl();
16
17
  const { toggleNotification } = strapiAdmin.useNotification();
17
18
  const { get, put } = strapiAdmin.useFetchClient();