@strapi/upload 0.0.0-experimental.17b4116f461a49b8ce5386f7c8d79c511d40fb3b

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 (218) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1 -0
  3. package/dist/_chunks/ca-B2_I-q1t.mjs +121 -0
  4. package/dist/_chunks/ca-B2_I-q1t.mjs.map +1 -0
  5. package/dist/_chunks/ca-BUpuZx8N.js +121 -0
  6. package/dist/_chunks/ca-BUpuZx8N.js.map +1 -0
  7. package/dist/_chunks/de-A7mEKx6c.mjs +107 -0
  8. package/dist/_chunks/de-A7mEKx6c.mjs.map +1 -0
  9. package/dist/_chunks/de-uGb_Pkq7.js +107 -0
  10. package/dist/_chunks/de-uGb_Pkq7.js.map +1 -0
  11. package/dist/_chunks/dk-BPfkJb9q.mjs +103 -0
  12. package/dist/_chunks/dk-BPfkJb9q.mjs.map +1 -0
  13. package/dist/_chunks/dk-Cd8oFO-O.js +103 -0
  14. package/dist/_chunks/dk-Cd8oFO-O.js.map +1 -0
  15. package/dist/_chunks/en-BcOqhiNe.js +144 -0
  16. package/dist/_chunks/en-BcOqhiNe.js.map +1 -0
  17. package/dist/_chunks/en-oDx2Gnre.mjs +144 -0
  18. package/dist/_chunks/en-oDx2Gnre.mjs.map +1 -0
  19. package/dist/_chunks/es-CuWi2pOn.mjs +120 -0
  20. package/dist/_chunks/es-CuWi2pOn.mjs.map +1 -0
  21. package/dist/_chunks/es-DWFtw_h4.js +120 -0
  22. package/dist/_chunks/es-DWFtw_h4.js.map +1 -0
  23. package/dist/_chunks/fr-BN6ndmWf.mjs +144 -0
  24. package/dist/_chunks/fr-BN6ndmWf.mjs.map +1 -0
  25. package/dist/_chunks/fr-D2bop66d.js +144 -0
  26. package/dist/_chunks/fr-D2bop66d.js.map +1 -0
  27. package/dist/_chunks/graphql-BVCZSNa2.mjs +71 -0
  28. package/dist/_chunks/graphql-BVCZSNa2.mjs.map +1 -0
  29. package/dist/_chunks/graphql-Beol7Y3b.js +71 -0
  30. package/dist/_chunks/graphql-Beol7Y3b.js.map +1 -0
  31. package/dist/_chunks/he-BpxHjaZg.js +76 -0
  32. package/dist/_chunks/he-BpxHjaZg.js.map +1 -0
  33. package/dist/_chunks/he-C9ZOXBB-.mjs +76 -0
  34. package/dist/_chunks/he-C9ZOXBB-.mjs.map +1 -0
  35. package/dist/_chunks/index-BDeTmSt8.js +6553 -0
  36. package/dist/_chunks/index-BDeTmSt8.js.map +1 -0
  37. package/dist/_chunks/index-BDovMPfa.mjs +865 -0
  38. package/dist/_chunks/index-BDovMPfa.mjs.map +1 -0
  39. package/dist/_chunks/index-BEZEyVJC.js +213 -0
  40. package/dist/_chunks/index-BEZEyVJC.js.map +1 -0
  41. package/dist/_chunks/index-BMP6oOO2.mjs +6525 -0
  42. package/dist/_chunks/index-BMP6oOO2.mjs.map +1 -0
  43. package/dist/_chunks/index-BaFEJjHu.js +869 -0
  44. package/dist/_chunks/index-BaFEJjHu.js.map +1 -0
  45. package/dist/_chunks/index-CRhNpXFr.js +2632 -0
  46. package/dist/_chunks/index-CRhNpXFr.js.map +1 -0
  47. package/dist/_chunks/index-CcYfi11p.js +245 -0
  48. package/dist/_chunks/index-CcYfi11p.js.map +1 -0
  49. package/dist/_chunks/index-DBqMYMQA.mjs +241 -0
  50. package/dist/_chunks/index-DBqMYMQA.mjs.map +1 -0
  51. package/dist/_chunks/index-DJdqnfst.mjs +208 -0
  52. package/dist/_chunks/index-DJdqnfst.mjs.map +1 -0
  53. package/dist/_chunks/index-VKvfSVC7.mjs +2622 -0
  54. package/dist/_chunks/index-VKvfSVC7.mjs.map +1 -0
  55. package/dist/_chunks/it-B7rmoZNx.mjs +76 -0
  56. package/dist/_chunks/it-B7rmoZNx.mjs.map +1 -0
  57. package/dist/_chunks/it-BKCWXl8t.js +76 -0
  58. package/dist/_chunks/it-BKCWXl8t.js.map +1 -0
  59. package/dist/_chunks/ja-DlaJTi_3.mjs +76 -0
  60. package/dist/_chunks/ja-DlaJTi_3.mjs.map +1 -0
  61. package/dist/_chunks/ja-ajHzIJz6.js +76 -0
  62. package/dist/_chunks/ja-ajHzIJz6.js.map +1 -0
  63. package/dist/_chunks/ko-Pzj-818C.js +106 -0
  64. package/dist/_chunks/ko-Pzj-818C.js.map +1 -0
  65. package/dist/_chunks/ko-vJl9kPpn.mjs +106 -0
  66. package/dist/_chunks/ko-vJl9kPpn.mjs.map +1 -0
  67. package/dist/_chunks/ms-CqwG8v8l.mjs +68 -0
  68. package/dist/_chunks/ms-CqwG8v8l.mjs.map +1 -0
  69. package/dist/_chunks/ms-h3gjldBy.js +68 -0
  70. package/dist/_chunks/ms-h3gjldBy.js.map +1 -0
  71. package/dist/_chunks/pl-Cj8jChOO.mjs +105 -0
  72. package/dist/_chunks/pl-Cj8jChOO.mjs.map +1 -0
  73. package/dist/_chunks/pl-esgZ7ltN.js +105 -0
  74. package/dist/_chunks/pl-esgZ7ltN.js.map +1 -0
  75. package/dist/_chunks/pt-BR-B4LJHJIp.mjs +76 -0
  76. package/dist/_chunks/pt-BR-B4LJHJIp.mjs.map +1 -0
  77. package/dist/_chunks/pt-BR-Cazr7Z5I.js +76 -0
  78. package/dist/_chunks/pt-BR-Cazr7Z5I.js.map +1 -0
  79. package/dist/_chunks/pt-CNOOM_7x.mjs +76 -0
  80. package/dist/_chunks/pt-CNOOM_7x.mjs.map +1 -0
  81. package/dist/_chunks/pt-cbUnkHM5.js +76 -0
  82. package/dist/_chunks/pt-cbUnkHM5.js.map +1 -0
  83. package/dist/_chunks/ru-DqglvSUC.mjs +76 -0
  84. package/dist/_chunks/ru-DqglvSUC.mjs.map +1 -0
  85. package/dist/_chunks/ru-H6MzFUxp.js +76 -0
  86. package/dist/_chunks/ru-H6MzFUxp.js.map +1 -0
  87. package/dist/_chunks/sk-CZxC4dFY.js +122 -0
  88. package/dist/_chunks/sk-CZxC4dFY.js.map +1 -0
  89. package/dist/_chunks/sk-Dgpb3lnz.mjs +122 -0
  90. package/dist/_chunks/sk-Dgpb3lnz.mjs.map +1 -0
  91. package/dist/_chunks/th-C6unJZ8j.js +76 -0
  92. package/dist/_chunks/th-C6unJZ8j.js.map +1 -0
  93. package/dist/_chunks/th-DRfzuiFf.mjs +76 -0
  94. package/dist/_chunks/th-DRfzuiFf.mjs.map +1 -0
  95. package/dist/_chunks/tr--GzWXE_A.mjs +122 -0
  96. package/dist/_chunks/tr--GzWXE_A.mjs.map +1 -0
  97. package/dist/_chunks/tr-CY6AwX50.js +122 -0
  98. package/dist/_chunks/tr-CY6AwX50.js.map +1 -0
  99. package/dist/_chunks/uk-BniyNsD4.js +73 -0
  100. package/dist/_chunks/uk-BniyNsD4.js.map +1 -0
  101. package/dist/_chunks/uk-DVMT2Piq.mjs +73 -0
  102. package/dist/_chunks/uk-DVMT2Piq.mjs.map +1 -0
  103. package/dist/_chunks/zh-CsZw0IpM.js +129 -0
  104. package/dist/_chunks/zh-CsZw0IpM.js.map +1 -0
  105. package/dist/_chunks/zh-HOnih0is.mjs +129 -0
  106. package/dist/_chunks/zh-HOnih0is.mjs.map +1 -0
  107. package/dist/_chunks/zh-Hans-Cpmhg8uH.mjs +152 -0
  108. package/dist/_chunks/zh-Hans-Cpmhg8uH.mjs.map +1 -0
  109. package/dist/_chunks/zh-Hans-k_xAc6nm.js +152 -0
  110. package/dist/_chunks/zh-Hans-k_xAc6nm.js.map +1 -0
  111. package/dist/admin/index.js +4 -0
  112. package/dist/admin/index.js.map +1 -0
  113. package/dist/admin/index.mjs +5 -0
  114. package/dist/admin/index.mjs.map +1 -0
  115. package/dist/server/index.js +4 -0
  116. package/dist/server/index.js.map +1 -0
  117. package/dist/server/index.mjs +5 -0
  118. package/dist/server/index.mjs.map +1 -0
  119. package/dist/server/src/bootstrap.d.ts +5 -0
  120. package/dist/server/src/bootstrap.d.ts.map +1 -0
  121. package/dist/server/src/config.d.ts +10 -0
  122. package/dist/server/src/config.d.ts.map +1 -0
  123. package/dist/server/src/constants.d.ts +20 -0
  124. package/dist/server/src/constants.d.ts.map +1 -0
  125. package/dist/server/src/content-types/file.d.ts +110 -0
  126. package/dist/server/src/content-types/file.d.ts.map +1 -0
  127. package/dist/server/src/content-types/folder.d.ts +61 -0
  128. package/dist/server/src/content-types/folder.d.ts.map +1 -0
  129. package/dist/server/src/content-types/index.d.ts +170 -0
  130. package/dist/server/src/content-types/index.d.ts.map +1 -0
  131. package/dist/server/src/controllers/admin-file.d.ts +16 -0
  132. package/dist/server/src/controllers/admin-file.d.ts.map +1 -0
  133. package/dist/server/src/controllers/admin-folder-file.d.ts +7 -0
  134. package/dist/server/src/controllers/admin-folder-file.d.ts.map +1 -0
  135. package/dist/server/src/controllers/admin-folder.d.ts +10 -0
  136. package/dist/server/src/controllers/admin-folder.d.ts.map +1 -0
  137. package/dist/server/src/controllers/admin-settings.d.ts +7 -0
  138. package/dist/server/src/controllers/admin-settings.d.ts.map +1 -0
  139. package/dist/server/src/controllers/admin-upload.d.ts +9 -0
  140. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -0
  141. package/dist/server/src/controllers/content-api.d.ts +15 -0
  142. package/dist/server/src/controllers/content-api.d.ts.map +1 -0
  143. package/dist/server/src/controllers/index.d.ts +53 -0
  144. package/dist/server/src/controllers/index.d.ts.map +1 -0
  145. package/dist/server/src/controllers/utils/find-entity-and-check-permissions.d.ts +6 -0
  146. package/dist/server/src/controllers/utils/find-entity-and-check-permissions.d.ts.map +1 -0
  147. package/dist/server/src/controllers/utils/folders.d.ts +4 -0
  148. package/dist/server/src/controllers/utils/folders.d.ts.map +1 -0
  149. package/dist/server/src/controllers/validation/admin/configureView.d.ts +15 -0
  150. package/dist/server/src/controllers/validation/admin/configureView.d.ts.map +1 -0
  151. package/dist/server/src/controllers/validation/admin/folder-file.d.ts +3 -0
  152. package/dist/server/src/controllers/validation/admin/folder-file.d.ts.map +1 -0
  153. package/dist/server/src/controllers/validation/admin/folder.d.ts +3 -0
  154. package/dist/server/src/controllers/validation/admin/folder.d.ts.map +1 -0
  155. package/dist/server/src/controllers/validation/admin/settings.d.ts +18 -0
  156. package/dist/server/src/controllers/validation/admin/settings.d.ts.map +1 -0
  157. package/dist/server/src/controllers/validation/admin/upload.d.ts +109 -0
  158. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -0
  159. package/dist/server/src/controllers/validation/admin/utils.d.ts +3 -0
  160. package/dist/server/src/controllers/validation/admin/utils.d.ts.map +1 -0
  161. package/dist/server/src/controllers/validation/content-api/upload.d.ts +91 -0
  162. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -0
  163. package/dist/server/src/controllers/view-configuration.d.ts +7 -0
  164. package/dist/server/src/controllers/view-configuration.d.ts.map +1 -0
  165. package/dist/server/src/graphql.d.ts +5 -0
  166. package/dist/server/src/graphql.d.ts.map +1 -0
  167. package/dist/server/src/index.d.ts +475 -0
  168. package/dist/server/src/index.d.ts.map +1 -0
  169. package/dist/server/src/middlewares/upload.d.ts +9 -0
  170. package/dist/server/src/middlewares/upload.d.ts.map +1 -0
  171. package/dist/server/src/register.d.ts +8 -0
  172. package/dist/server/src/register.d.ts.map +1 -0
  173. package/dist/server/src/routes/admin.d.ts +17 -0
  174. package/dist/server/src/routes/admin.d.ts.map +1 -0
  175. package/dist/server/src/routes/content-api.d.ts +9 -0
  176. package/dist/server/src/routes/content-api.d.ts.map +1 -0
  177. package/dist/server/src/routes/index.d.ts +43 -0
  178. package/dist/server/src/routes/index.d.ts.map +1 -0
  179. package/dist/server/src/routes/view-configuration.d.ts +17 -0
  180. package/dist/server/src/routes/view-configuration.d.ts.map +1 -0
  181. package/dist/server/src/services/api-upload-folder.d.ts +5 -0
  182. package/dist/server/src/services/api-upload-folder.d.ts.map +1 -0
  183. package/dist/server/src/services/extensions/content-manager/entity-manager.d.ts +15 -0
  184. package/dist/server/src/services/extensions/content-manager/entity-manager.d.ts.map +1 -0
  185. package/dist/server/src/services/extensions/content-manager/index.d.ts +4 -0
  186. package/dist/server/src/services/extensions/content-manager/index.d.ts.map +1 -0
  187. package/dist/server/src/services/extensions/core/entity-service.d.ts +4 -0
  188. package/dist/server/src/services/extensions/core/entity-service.d.ts.map +1 -0
  189. package/dist/server/src/services/extensions/core/index.d.ts +4 -0
  190. package/dist/server/src/services/extensions/core/index.d.ts.map +1 -0
  191. package/dist/server/src/services/extensions/index.d.ts +8 -0
  192. package/dist/server/src/services/extensions/index.d.ts.map +1 -0
  193. package/dist/server/src/services/extensions/utils.d.ts +14 -0
  194. package/dist/server/src/services/extensions/utils.d.ts.map +1 -0
  195. package/dist/server/src/services/file.d.ts +8 -0
  196. package/dist/server/src/services/file.d.ts.map +1 -0
  197. package/dist/server/src/services/folder.d.ts +32 -0
  198. package/dist/server/src/services/folder.d.ts.map +1 -0
  199. package/dist/server/src/services/image-manipulation.d.ts +63 -0
  200. package/dist/server/src/services/image-manipulation.d.ts.map +1 -0
  201. package/dist/server/src/services/index.d.ts +196 -0
  202. package/dist/server/src/services/index.d.ts.map +1 -0
  203. package/dist/server/src/services/metrics.d.ts +8 -0
  204. package/dist/server/src/services/metrics.d.ts.map +1 -0
  205. package/dist/server/src/services/provider.d.ts +10 -0
  206. package/dist/server/src/services/provider.d.ts.map +1 -0
  207. package/dist/server/src/services/upload.d.ts +67 -0
  208. package/dist/server/src/services/upload.d.ts.map +1 -0
  209. package/dist/server/src/services/weekly-metrics.d.ts +17 -0
  210. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -0
  211. package/dist/server/src/types.d.ts +74 -0
  212. package/dist/server/src/types.d.ts.map +1 -0
  213. package/dist/server/src/utils/cron.d.ts +3 -0
  214. package/dist/server/src/utils/cron.d.ts.map +1 -0
  215. package/dist/server/src/utils/index.d.ts +23 -0
  216. package/dist/server/src/utils/index.d.ts.map +1 -0
  217. package/package.json +115 -0
  218. package/strapi-server.js +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BDovMPfa.mjs","sources":["../../admin/src/utils/getBreadcrumbDataML.js","../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.jsx","../../admin/src/pages/App/MediaLibrary/components/BulkDeleteButton.jsx","../../admin/src/hooks/useBulkMove.js","../../admin/src/components/BulkMoveDialog/BulkMoveDialog.jsx","../../admin/src/pages/App/MediaLibrary/components/BulkMoveButton.jsx","../../admin/src/pages/App/MediaLibrary/components/BulkActions.jsx","../../admin/src/pages/App/MediaLibrary/components/EmptyOrNoPermissions.jsx","../../admin/src/pages/App/MediaLibrary/components/Filters.jsx","../../admin/src/pages/App/MediaLibrary/components/Header.jsx","../../admin/src/pages/App/MediaLibrary/index.jsx","../../admin/src/pages/App/index.jsx"],"sourcesContent":["import getFolderURL from './getFolderURL';\nimport getTrad from './getTrad';\n\nconst getBreadcrumbDataML = (folder, { pathname, query }) => {\n let data = [\n {\n id: null,\n label: { id: getTrad('plugin.name'), defaultMessage: 'Media Library' },\n href: folder ? getFolderURL(pathname, query) : undefined,\n },\n ];\n\n if (folder?.parent?.parent) {\n data.push([]);\n }\n\n if (folder?.parent) {\n data.push({\n id: folder.parent.id,\n label: folder.parent.name,\n href: getFolderURL(pathname, query, {\n folder: folder.parent.id,\n folderPath: folder.parent.path,\n }),\n });\n }\n\n if (folder) {\n data.push({\n id: folder.id,\n label: folder.name,\n });\n }\n\n return data;\n};\n\nexport default getBreadcrumbDataML;\n","import React from 'react';\n\nimport { BaseCheckbox, Box } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <BaseCheckbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n","import React, { useState } from 'react';\n\nimport { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { Trash } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { AssetDefinition, FolderDefinition } from '../../../../constants';\nimport { useBulkRemove } from '../../../../hooks/useBulkRemove';\n\nexport const BulkDeleteButton = ({ selected, onSuccess }) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n const { remove } = useBulkRemove();\n\n const handleConfirmRemove = async () => {\n await remove(selected);\n onSuccess();\n };\n\n return (\n <>\n <Button\n variant=\"danger-light\"\n size=\"S\"\n startIcon={<Trash />}\n onClick={() => setShowConfirmDialog(true)}\n >\n {formatMessage({ id: 'global.delete', defaultMessage: 'Delete' })}\n </Button>\n\n <ConfirmDialog\n isOpen={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleConfirmRemove}\n />\n </>\n );\n};\n\nBulkDeleteButton.propTypes = {\n selected: PropTypes.arrayOf(AssetDefinition, FolderDefinition).isRequired,\n onSuccess: PropTypes.func.isRequired,\n};\n","import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport pluginId from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport const useBulkMove = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const { post } = useFetchClient();\n\n const bulkMoveQuery = ({ destinationFolderId, filesAndFolders }) => {\n const payload = filesAndFolders.reduce((acc, selected) => {\n const { id, type } = selected;\n const key = type === 'asset' ? 'fileIds' : 'folderIds';\n\n if (!acc[key]) {\n acc[key] = [];\n }\n\n acc[key].push(id);\n\n return acc;\n }, {});\n\n return post('/upload/actions/bulk-move', { ...payload, destinationFolderId });\n };\n\n const mutation = useMutation(bulkMoveQuery, {\n onSuccess(res) {\n const {\n data: { data },\n } = res;\n\n if (data?.files?.length > 0) {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n }\n\n // folders need to be re-fetched in any case, because assets might have been\n // moved into a sub-folder and therefore the count needs to be updated\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('modal.move.success-label'),\n defaultMessage: 'Elements have been moved successfully.',\n }),\n });\n },\n });\n\n const move = (destinationFolderId, filesAndFolders) =>\n mutation.mutateAsync({ destinationFolderId, filesAndFolders });\n\n return { ...mutation, move };\n};\n","import React from 'react';\n\nimport {\n Button,\n FieldLabel,\n Flex,\n Grid,\n GridItem,\n Loader,\n ModalBody,\n ModalFooter,\n ModalHeader,\n ModalLayout,\n Typography,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { AssetDefinition, FolderDefinition } from '../../constants';\nimport { useBulkMove } from '../../hooks/useBulkMove';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getTrad } from '../../utils';\nimport { normalizeAPIError } from '../../utils/normalizeAPIError';\nimport SelectTree from '../SelectTree';\n\nexport const BulkMoveDialog = ({ onClose, selected, currentFolder }) => {\n const { formatMessage } = useIntl();\n const { data: folderStructure, isLoading } = useFolderStructure();\n const { move } = useBulkMove();\n\n if (!folderStructure) {\n return null;\n }\n\n const handleSubmit = async (values, { setErrors }) => {\n try {\n await move(values.destination.value, selected);\n onClose();\n } catch (error) {\n const normalizedError = normalizeAPIError(error);\n\n const formikErrors = normalizedError.errors.reduce((acc, error) => {\n acc[error.values?.path?.length || 'destination'] = error.defaultMessage;\n\n return acc;\n }, {});\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n };\n\n const handleClose = () => {\n onClose();\n };\n\n if (isLoading) {\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <ModalBody>\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 </ModalBody>\n </ModalLayout>\n );\n }\n\n const initialFormData = {\n destination: {\n value: currentFolder?.id || '',\n label: currentFolder?.name || folderStructure[0].label,\n },\n };\n\n return (\n <ModalLayout onClose={handleClose} labelledBy=\"title\">\n <Formik validateOnChange={false} onSubmit={handleSubmit} initialValues={initialFormData}>\n {({ values, errors, setFieldValue }) => (\n <Form noValidate>\n <ModalHeader>\n <Typography fontWeight=\"bold\" textColor=\"neutral800\" as=\"h2\" id=\"title\">\n {formatMessage({\n id: getTrad('modal.folder.move.title'),\n defaultMessage: 'Move elements to',\n })}\n </Typography>\n </ModalHeader>\n\n <ModalBody>\n <Grid gap={4}>\n <GridItem xs={12} col={12}>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <FieldLabel htmlFor=\"folder-destination\">\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </FieldLabel>\n\n <SelectTree\n options={folderStructure}\n onChange={(value) => {\n setFieldValue('destination', value);\n }}\n defaultValue={values.destination}\n name=\"destination\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-destination\"\n error={errors?.destination}\n ariaErrorMessage=\"destination-error\"\n />\n\n {errors.destination && (\n <Typography\n variant=\"pi\"\n as=\"p\"\n id=\"folder-destination-error\"\n textColor=\"danger600\"\n >\n {errors.destination}\n </Typography>\n )}\n </Flex>\n </GridItem>\n </Grid>\n </ModalBody>\n\n <ModalFooter\n startActions={\n <Button onClick={handleClose} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n }\n endActions={\n <Button type=\"submit\" loading={isLoading}>\n {formatMessage({ id: 'modal.folder.move.submit', defaultMessage: 'Move' })}\n </Button>\n }\n />\n </Form>\n )}\n </Formik>\n </ModalLayout>\n );\n};\n\nBulkMoveDialog.defaultProps = {\n currentFolder: undefined,\n};\n\nBulkMoveDialog.propTypes = {\n onClose: PropTypes.func.isRequired,\n currentFolder: FolderDefinition,\n selected: PropTypes.arrayOf(FolderDefinition, AssetDefinition).isRequired,\n};\n","import React, { useState } from 'react';\n\nimport { Button } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { BulkMoveDialog } from '../../../../components/BulkMoveDialog';\nimport { AssetDefinition, FolderDefinition } from '../../../../constants';\n\nexport const BulkMoveButton = ({ selected, onSuccess, currentFolder }) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = useState(false);\n\n const handleConfirmMove = () => {\n setShowConfirmDialog(false);\n onSuccess();\n };\n\n return (\n <>\n <Button\n variant=\"secondary\"\n size=\"S\"\n startIcon={<Folder />}\n onClick={() => setShowConfirmDialog(true)}\n >\n {formatMessage({ id: 'global.move', defaultMessage: 'Move' })}\n </Button>\n\n {showConfirmDialog && (\n <BulkMoveDialog\n currentFolder={currentFolder}\n onClose={handleConfirmMove}\n selected={selected}\n />\n )}\n </>\n );\n};\n\nBulkMoveButton.defaultProps = {\n currentFolder: undefined,\n};\n\nBulkMoveButton.propTypes = {\n onSuccess: PropTypes.func.isRequired,\n currentFolder: FolderDefinition,\n selected: PropTypes.arrayOf(AssetDefinition, FolderDefinition).isRequired,\n};\n","import React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { AssetDefinition, FolderDefinition } from '../../../../constants';\nimport getTrad from '../../../../utils/getTrad';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nexport const BulkActions = ({ selected, onSuccess, currentFolder }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected.filter(({ type }) => type === 'folder').length,\n numberAssets: selected.filter(({ type }) => type === 'asset').length,\n }\n )}\n </Typography>\n\n <BulkDeleteButton selected={selected} onSuccess={onSuccess} />\n <BulkMoveButton currentFolder={currentFolder} selected={selected} onSuccess={onSuccess} />\n </Flex>\n );\n};\n\nBulkActions.defaultProps = {\n currentFolder: undefined,\n};\n\nBulkActions.propTypes = {\n onSuccess: PropTypes.func.isRequired,\n currentFolder: FolderDefinition,\n selected: PropTypes.arrayOf(AssetDefinition, FolderDefinition).isRequired,\n};\n","import React from 'react';\n\nimport { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../../components/EmptyAssets';\nimport { getTrad } from '../../../../utils';\n\nconst getContentIntlMessage = ({ isFiltering, canCreate, canRead }) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({ canCreate, isFiltering, canRead, onActionClick }) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n\nEmptyOrNoPermissions.propTypes = {\n canCreate: PropTypes.bool.isRequired,\n canRead: PropTypes.bool.isRequired,\n isFiltering: PropTypes.bool.isRequired,\n onActionClick: PropTypes.func.isRequired,\n};\n","import React, { useRef, useState } from 'react';\n\nimport { useTracking, useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport FilterList from '../../../../components/FilterList';\nimport FilterPopover from '../../../../components/FilterPopover';\nimport displayedFilters from '../../../../utils/displayedFilters';\n\nexport const Filters = () => {\n const buttonRef = useRef(null);\n const [isVisible, setVisible] = useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams();\n const filters = query?.filters?.$and || [];\n\n const toggleFilter = () => setVisible((prev) => !prev);\n\n const handleRemoveFilter = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 });\n };\n\n const handleSubmit = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 });\n };\n\n return (\n <>\n <Button\n variant=\"tertiary\"\n ref={buttonRef}\n startIcon={<Filter />}\n onClick={toggleFilter}\n size=\"S\"\n >\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n {isVisible && (\n <FilterPopover\n displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={toggleFilter}\n source={buttonRef}\n />\n )}\n <FilterList\n appliedFilters={filters}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </>\n );\n};\n","import React from 'react';\n\nimport { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport PropTypes from 'prop-types';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../../components/Breadcrumbs';\nimport { BreadcrumbsDefinition, FolderDefinition } from '../../../../constants';\nimport { getTrad } from '../../../../utils';\n\nexport const Header = ({\n breadcrumbs,\n canCreate,\n folder,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder: folder?.parent?.id ?? undefined,\n folderPath: folder?.parent?.path ?? undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n folder && (\n <Breadcrumbs\n as=\"nav\"\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2}>\n <Button startIcon={<Plus />} variant=\"secondary\" onClick={onToggleEditFolderDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n\nHeader.defaultProps = {\n breadcrumbs: false,\n folder: null,\n};\n\nHeader.propTypes = {\n breadcrumbs: PropTypes.oneOfType([BreadcrumbsDefinition, PropTypes.bool]),\n canCreate: PropTypes.bool.isRequired,\n folder: FolderDefinition,\n onToggleEditFolderDialog: PropTypes.func.isRequired,\n onToggleUploadAssetDialog: PropTypes.func.isRequired,\n};\n","import React, { useRef, useState } from 'react';\n\nimport {\n Page,\n SearchInput,\n Pagination,\n useTracking,\n useQueryParams,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport {\n BaseCheckbox,\n Box,\n Divider,\n Flex,\n GridItem,\n IconButton,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Cog, GridFour as Grid, List, Pencil } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link as ReactRouterLink, useNavigate, useLocation } from 'react-router-dom';\nimport styled from 'styled-components';\n\nimport { AssetGridList } from '../../../components/AssetGridList';\nimport { EditAssetDialog } from '../../../components/EditAssetDialog';\nimport { EditFolderDialog } from '../../../components/EditFolderDialog';\nimport {\n FolderCard,\n FolderCardBody,\n FolderCardBodyAction,\n FolderCardCheckbox,\n} from '../../../components/FolderCard';\nimport { FolderGridList } from '../../../components/FolderGridList';\nimport SortPicker from '../../../components/SortPicker';\nimport { TableList } from '../../../components/TableList';\nimport { UploadAssetDialog } from '../../../components/UploadAssetDialog/UploadAssetDialog';\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useAssets } from '../../../hooks/useAssets';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { useFolders } from '../../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../../hooks/useMediaLibraryPermissions';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport { useSelectionState } from '../../../hooks/useSelectionState';\nimport { containsAssetFilter, getBreadcrumbDataML, getFolderURL, getTrad } from '../../../utils';\n\nimport { BulkActions } from './components/BulkActions';\nimport { EmptyOrNoPermissions } from './components/EmptyOrNoPermissions';\nimport { Filters } from './components/Filters';\nimport { Header } from './components/Header';\n\nconst BoxWithHeight = styled(Box)`\n height: 3.2rem;\n display: flex;\n align-items: center;\n`;\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\nexport const MediaLibrary = () => {\n const navigate = useNavigate();\n const {\n canRead,\n canCreate,\n canUpdate,\n canCopyLink,\n canDownload,\n canConfigureView,\n isLoading: permissionsLoading,\n } = useMediaLibraryPermissions();\n const currentFolderToEditRef = useRef();\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams();\n const isFiltering = Boolean(query._q || query.filters);\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const {\n data: assetsData,\n isLoading: assetsLoading,\n errors: assetsError,\n } = useAssets({\n skipWhen: !canRead,\n query,\n });\n\n const {\n data: foldersData,\n isLoading: foldersLoading,\n errors: foldersError,\n } = useFolders({\n enabled: canRead && assetsData?.pagination?.page === 1 && !containsAssetFilter(query),\n query,\n });\n\n const {\n data: currentFolder,\n isLoading: isCurrentFolderLoading,\n error: currentFolderError,\n } = useFolder(query?.folder, {\n enabled: canRead && !!query?.folder,\n });\n\n // Folder was not found: redirect to the media library root\n if (currentFolderError?.response?.status === 404) {\n navigate(pathname);\n }\n\n const folders =\n foldersData?.map((folder) => ({\n ...folder,\n type: 'folder',\n folderURL: getFolderURL(pathname, query, folder.id),\n isSelectable: canUpdate,\n })) ?? [];\n const folderCount = folders?.length || 0;\n const assets =\n assetsData?.results?.map((asset) => ({ ...asset, type: 'asset', isSelectable: canUpdate })) ||\n [];\n const assetCount = assets?.length ?? 0;\n const totalAssetCount = assetsData?.pagination?.total;\n\n const isLoading = isCurrentFolderLoading || foldersLoading || permissionsLoading || assetsLoading;\n const [showUploadAssetDialog, setShowUploadAssetDialog] = useState(false);\n const [showEditFolderDialog, setShowEditFolderDialog] = useState(false);\n const [assetToEdit, setAssetToEdit] = useState(undefined);\n const [folderToEdit, setFolderToEdit] = useState(undefined);\n const [selected, { selectOne, selectAll }] = useSelectionState(['type', 'id'], []);\n const indeterminateBulkSelect =\n selected?.length > 0 && selected?.length !== assetCount + folderCount;\n const toggleUploadAssetDialog = () => setShowUploadAssetDialog((prev) => !prev);\n const toggleEditFolderDialog = ({ created = false } = {}) => {\n // folders are only displayed on the first page, therefore\n // we have to navigate the user to that page, in case a folder\n // was created successfully in order for them to see it\n if (created && query?.page !== '1') {\n setQuery({\n ...query,\n page: 1,\n });\n }\n\n setShowEditFolderDialog((prev) => !prev);\n };\n\n const handleBulkSelect = (event, elements) => {\n if (event.target.checked) {\n trackUsage('didSelectAllMediaLibraryElements');\n }\n\n selectAll(elements);\n };\n\n const handleChangeSort = (value) => {\n trackUsage('didSortMediaLibraryElements', {\n location: 'upload',\n sort: value,\n });\n setQuery({ sort: value });\n };\n\n const handleEditFolder = (folder) => {\n setFolderToEdit(folder);\n setShowEditFolderDialog(true);\n };\n\n const handleEditFolderClose = (payload) => {\n setFolderToEdit(null);\n toggleEditFolderDialog(payload);\n\n if (currentFolderToEditRef.current) {\n currentFolderToEditRef.current.focus();\n }\n };\n\n const handleAssetDeleted = (numberOfAssets) => {\n if (\n numberOfAssets === assetCount &&\n assetsData.pagination.page === assetsData.pagination.pageCount &&\n assetsData.pagination.page > 1\n ) {\n setQuery({\n ...query,\n page: assetsData.pagination.page - 1,\n });\n }\n };\n\n const handleBulkActionSuccess = () => {\n selectAll();\n\n handleAssetDeleted(selected.length);\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (assetsError || foldersError) {\n return <Page.Error />;\n }\n\n return (\n <Layouts.Root>\n <Page.Main>\n <Header\n breadcrumbs={\n !isCurrentFolderLoading && getBreadcrumbDataML(currentFolder, { pathname, query })\n }\n canCreate={canCreate}\n onToggleEditFolderDialog={toggleEditFolderDialog}\n onToggleUploadAssetDialog={toggleUploadAssetDialog}\n folder={currentFolder}\n />\n <Layouts.Action\n startActions={\n <>\n {canUpdate && isGridView && (assetCount > 0 || folderCount > 0) && (\n <BoxWithHeight\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n >\n <BaseCheckbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n indeterminate={indeterminateBulkSelect}\n value={\n (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n onChange={(e) => handleBulkSelect(e, [...assets, ...folders])}\n />\n </BoxWithHeight>\n )}\n {canRead && isGridView && (\n <SortPicker value={query?.sort} onChangeSort={handleChangeSort} />\n )}\n {canRead && <Filters />}\n </>\n }\n endActions={\n <>\n {canConfigureView ? (\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n forwardedAs={ReactRouterLink}\n to={{\n pathname: `${pathname}/configuration`,\n search: stringify(query, { encode: false }),\n }}\n icon={<Cog />}\n label={formatMessage({\n id: 'app.links.configure-view',\n defaultMessage: 'Configure the view',\n })}\n />\n </ActionContainer>\n ) : null}\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n icon={isGridView ? <List /> : <Grid />}\n label={\n isGridView\n ? formatMessage({\n id: getTrad('view-switch.list'),\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: getTrad('view-switch.grid'),\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n />\n </ActionContainer>\n <SearchInput\n label={formatMessage({\n id: getTrad('search.label'),\n defaultMessage: 'Search for an asset',\n })}\n trackedEvent=\"didSearchMediaLibraryElements\"\n trackedEventDetails={{ location: 'upload' }}\n />\n </>\n }\n />\n\n <Layouts.Content>\n {selected.length > 0 && (\n <BulkActions\n currentFolder={currentFolder}\n selected={selected}\n onSuccess={handleBulkActionSuccess}\n />\n )}\n\n {folderCount === 0 && assetCount === 0 && (\n <EmptyOrNoPermissions\n canCreate={canCreate}\n canRead={canRead}\n isFiltering={isFiltering}\n onActionClick={toggleUploadAssetDialog}\n />\n )}\n\n {/* TODO: fix AssetListTable should handle no assets views (loading) */}\n {canRead && !isGridView && (assetCount > 0 || folderCount > 0) && (\n <TableList\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={indeterminateBulkSelect}\n onChangeSort={handleChangeSort}\n onChangeFolder={(folderID, folderPath) =>\n navigate(getFolderURL(pathname, query, { folder: folderID, folderPath }))\n }\n onEditAsset={setAssetToEdit}\n onEditFolder={handleEditFolder}\n onSelectOne={selectOne}\n onSelectAll={handleBulkSelect}\n rows={[...folders, ...assets]}\n selected={selected}\n shouldDisableBulkSelect={!canUpdate}\n sortQuery={query?.sort ?? ''}\n />\n )}\n\n {canRead && isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n // Folders title should only appear if:\n // user is filtering and there are assets to display, to divide both type of elements\n // user is not filtering\n (((isFiltering && assetCount > 0) || !isFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n const selectedFolders = selected.filter(({ type }) => type === 'folder');\n const isSelected = !!selectedFolders.find(\n (currentFolder) => currentFolder.id === folder.id\n );\n\n const url = getFolderURL(pathname, query, {\n folder: folder?.id,\n folderPath: folder?.path,\n });\n\n return (\n <GridItem col={3} key={`folder-${folder.id}`}>\n <FolderCard\n ref={\n folderToEdit && folder.id === folderToEdit.id\n ? currentFolderToEditRef\n : undefined\n }\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n to={url}\n startAction={\n selectOne && folder.isSelectable ? (\n <FolderCardCheckbox\n data-testid={`folder-checkbox-${folder.id}`}\n value={isSelected}\n onChange={() => selectOne(folder)}\n />\n ) : null\n }\n cardActions={\n <IconButton\n icon={<Pencil />}\n aria-label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => handleEditFolder(folder)}\n />\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction to={url}>\n <Flex as=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth fontWeight=\"semiBold\" ellipsis>\n {folder.name}\n <VisuallyHidden>:</VisuallyHidden>\n </TypographyMaxWidth>\n\n <TypographyMaxWidth\n as=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children.count,\n filesCount: folder.files.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </GridItem>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6} paddingBottom={4}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <AssetGridList\n assets={assets}\n onEditAsset={setAssetToEdit}\n onSelectAsset={selectOne}\n selectedAssets={selected.filter(({ type }) => type === 'asset')}\n title={\n // Assets title should only appear if:\n // - user is not filtering\n // - user is filtering and there are folders to display, to separate them\n // - user is on page 1 since folders won't appear on any other page than the first one (no need to visually separate them)\n ((!isFiltering || (isFiltering && folderCount > 0)) &&\n assetsData?.pagination?.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: totalAssetCount }\n )) ||\n ''\n }\n />\n )}\n </>\n )}\n <Pagination.Root {...assetsData.pagination}>\n <Pagination.PageSize />\n <Pagination.Links />\n </Pagination.Root>\n </Layouts.Content>\n </Page.Main>\n\n {showUploadAssetDialog && (\n <UploadAssetDialog\n onClose={toggleUploadAssetDialog}\n trackedLocation=\"upload\"\n folderId={query?.folder}\n />\n )}\n\n {showEditFolderDialog && (\n <EditFolderDialog\n onClose={handleEditFolderClose}\n folder={folderToEdit}\n parentFolderId={query?.folder}\n location=\"upload\"\n />\n )}\n\n {assetToEdit && (\n <EditAssetDialog\n onClose={(editedAsset) => {\n // The asset has been deleted\n if (editedAsset === null) {\n handleAssetDeleted(1);\n }\n\n setAssetToEdit(undefined);\n }}\n asset={assetToEdit}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation=\"upload\"\n />\n )}\n </Layouts.Root>\n );\n};\n","import React, { lazy, Suspense, useEffect } from 'react';\n\nimport { Page, useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport { useIntl } from 'react-intl';\nimport { Route, Routes } from 'react-router-dom';\n\nimport { useConfig } from '../../hooks/useConfig';\nimport { getTrad } from '../../utils';\n\nimport { MediaLibrary } from './MediaLibrary';\n\nconst ConfigureTheView = lazy(() => import('./ConfigureTheView'));\n\nconst Upload = () => {\n const {\n config: { isLoading, isError, data: config },\n } = useConfig();\n\n const [{ rawQuery }, setQuery] = useQueryParams();\n const { formatMessage } = useIntl();\n const title = formatMessage({ id: getTrad('plugin.name'), defaultMessage: 'Media Library' });\n\n useEffect(() => {\n if (isLoading || isError || rawQuery) {\n return;\n }\n setQuery({ sort: config.sort, page: 1, pageSize: config.pageSize });\n }, [isLoading, isError, config, rawQuery, setQuery]);\n\n if (isLoading) {\n return (\n <>\n <Page.Title>{title}</Page.Title>\n <Page.Loading />\n </>\n );\n }\n\n return (\n <Page.Main>\n {rawQuery ? (\n <Suspense fallback={<Page.Loading />}>\n <Routes>\n <Route index element={<MediaLibrary />} />\n <Route path=\"configuration\" element={<ConfigureTheView config={config} />} />\n </Routes>\n </Suspense>\n ) : null}\n </Page.Main>\n );\n};\n\nexport default Upload;\n"],"names":["error","filters","ReactRouterLink","Grid","currentFolder"],"mappings":"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"}
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const strapiAdmin = require("@strapi/admin/strapi-admin");
6
+ const designSystem = require("@strapi/design-system");
7
+ const icons = require("@strapi/icons");
8
+ const isEqual = require("lodash/isEqual");
9
+ const PropTypes = require("prop-types");
10
+ const reactIntl = require("react-intl");
11
+ const reactRouterDom = require("react-router-dom");
12
+ const index = require("./index-BDeTmSt8.js");
13
+ const immer = require("immer");
14
+ const get = require("lodash/get");
15
+ const set = require("lodash/set");
16
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
17
+ const isEqual__default = /* @__PURE__ */ _interopDefault(isEqual);
18
+ const PropTypes__default = /* @__PURE__ */ _interopDefault(PropTypes);
19
+ const get__default = /* @__PURE__ */ _interopDefault(get);
20
+ const set__default = /* @__PURE__ */ _interopDefault(set);
21
+ const Settings = ({ sort = "", pageSize = 10, onChange: onChange2 }) => {
22
+ const { formatMessage } = reactIntl.useIntl();
23
+ return /* @__PURE__ */ jsxRuntime.jsx(
24
+ designSystem.Box,
25
+ {
26
+ background: "neutral0",
27
+ hasRadius: true,
28
+ shadow: "tableShadow",
29
+ paddingTop: 6,
30
+ paddingBottom: 6,
31
+ paddingLeft: 7,
32
+ paddingRight: 7,
33
+ children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Grid, { gap: 4, children: [
34
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { s: 12, col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
35
+ designSystem.SingleSelect,
36
+ {
37
+ label: formatMessage({
38
+ id: index.getTrad("config.entries.title"),
39
+ defaultMessage: "Entries per page"
40
+ }),
41
+ hint: formatMessage({
42
+ id: index.getTrad("config.entries.note"),
43
+ defaultMessage: "Number of assets displayed by default in the Media Library"
44
+ }),
45
+ onChange: (value) => onChange2({ target: { name: "pageSize", value } }),
46
+ name: "pageSize",
47
+ value: pageSize,
48
+ children: index.pageSizes.map((pageSize2) => /* @__PURE__ */ jsxRuntime.jsx(designSystem.SingleSelectOption, { value: pageSize2, children: pageSize2 }, pageSize2))
49
+ }
50
+ ) }),
51
+ /* @__PURE__ */ jsxRuntime.jsx(designSystem.GridItem, { s: 12, col: 6, children: /* @__PURE__ */ jsxRuntime.jsx(
52
+ designSystem.SingleSelect,
53
+ {
54
+ label: formatMessage({
55
+ id: index.getTrad("config.sort.title"),
56
+ defaultMessage: "Default sort order"
57
+ }),
58
+ hint: formatMessage({
59
+ id: index.getTrad("config.note"),
60
+ defaultMessage: "Note: You can override this value in the media library."
61
+ }),
62
+ onChange: (value) => onChange2({ target: { name: "sort", value } }),
63
+ name: "sort",
64
+ value: sort,
65
+ "test-sort": sort,
66
+ "data-testid": "sort-select",
67
+ children: index.sortOptions.map((filter) => /* @__PURE__ */ jsxRuntime.jsx(
68
+ designSystem.SingleSelectOption,
69
+ {
70
+ "data-testid": `sort-option-${filter.value}`,
71
+ value: filter.value,
72
+ children: formatMessage({ id: index.getTrad(filter.key), defaultMessage: `${filter.value}` })
73
+ },
74
+ filter.key
75
+ ))
76
+ }
77
+ ) })
78
+ ] })
79
+ }
80
+ );
81
+ };
82
+ Settings.propTypes = {
83
+ sort: PropTypes__default.default.string.isRequired,
84
+ pageSize: PropTypes__default.default.number.isRequired,
85
+ onChange: PropTypes__default.default.func.isRequired
86
+ };
87
+ const ON_CHANGE = `${index.pluginId}/ON_CHANGE`;
88
+ const SET_LOADED = `${index.pluginId}/SET_LOADED`;
89
+ const onChange = ({ name, value }) => ({
90
+ type: ON_CHANGE,
91
+ keys: name,
92
+ value
93
+ });
94
+ const setLoaded = () => ({
95
+ type: SET_LOADED
96
+ });
97
+ const initialState = {
98
+ initialData: {},
99
+ modifiedData: {}
100
+ };
101
+ const init = (configData) => {
102
+ return {
103
+ ...initialState,
104
+ initialData: configData,
105
+ modifiedData: configData
106
+ };
107
+ };
108
+ const reducer = (state = initialState, action) => (
109
+ // eslint-disable-next-line consistent-return
110
+ immer.produce(state, (draftState) => {
111
+ switch (action.type) {
112
+ case ON_CHANGE: {
113
+ set__default.default(draftState, ["modifiedData", ...action.keys.split(".")], action.value);
114
+ break;
115
+ }
116
+ case SET_LOADED: {
117
+ const reInitialise = init(get__default.default(draftState, ["modifiedData"], {}));
118
+ draftState.initialData = reInitialise.initialData;
119
+ draftState.modifiedData = reInitialise.modifiedData;
120
+ break;
121
+ }
122
+ default:
123
+ return draftState;
124
+ }
125
+ })
126
+ );
127
+ const ConfigureTheView = ({ config }) => {
128
+ const { trackUsage } = strapiAdmin.useTracking();
129
+ const { formatMessage } = reactIntl.useIntl();
130
+ const { toggleNotification } = strapiAdmin.useNotification();
131
+ const { mutateConfig } = index.useConfig();
132
+ const { isLoading: isSubmittingForm } = mutateConfig;
133
+ const [showWarningSubmit, setWarningSubmit] = React.useState(false);
134
+ const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);
135
+ const [reducerState, dispatch] = React.useReducer(reducer, initialState, () => init(config));
136
+ const { initialData, modifiedData } = reducerState;
137
+ const handleSubmit = (e) => {
138
+ e.preventDefault();
139
+ toggleWarningSubmit();
140
+ };
141
+ const handleConfirm = async () => {
142
+ trackUsage("willEditMediaLibraryConfig");
143
+ await mutateConfig.mutateAsync(modifiedData);
144
+ toggleWarningSubmit();
145
+ dispatch(setLoaded());
146
+ toggleNotification({
147
+ type: "success",
148
+ message: formatMessage({
149
+ id: "notification.form.success.fields",
150
+ defaultMessage: "Changes saved"
151
+ })
152
+ });
153
+ };
154
+ const handleChange = ({ target: { name, value } }) => {
155
+ dispatch(onChange({ name, value }));
156
+ };
157
+ return /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Root, { children: /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Page.Main, { "aria-busy": isSubmittingForm, children: /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, children: [
158
+ /* @__PURE__ */ jsxRuntime.jsx(
159
+ strapiAdmin.Layouts.Header,
160
+ {
161
+ navigationAction: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Link, { as: reactRouterDom.NavLink, startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.ArrowLeft, {}), to: `/plugins/${index.pluginId}`, id: "go-back", children: formatMessage({ id: index.getTrad("config.back"), defaultMessage: "Back" }) }),
162
+ primaryAction: /* @__PURE__ */ jsxRuntime.jsx(
163
+ designSystem.Button,
164
+ {
165
+ size: "S",
166
+ startIcon: /* @__PURE__ */ jsxRuntime.jsx(icons.Check, {}),
167
+ disabled: isEqual__default.default(modifiedData, initialData),
168
+ type: "submit",
169
+ children: formatMessage({ id: "global.save", defaultMessage: "Save" })
170
+ }
171
+ ),
172
+ subtitle: formatMessage({
173
+ id: index.getTrad("config.subtitle"),
174
+ defaultMessage: "Define the view settings of the media library."
175
+ }),
176
+ title: formatMessage({
177
+ id: index.getTrad("config.title"),
178
+ defaultMessage: "Configure the view - Media Library"
179
+ })
180
+ }
181
+ ),
182
+ /* @__PURE__ */ jsxRuntime.jsx(strapiAdmin.Layouts.Content, { children: /* @__PURE__ */ jsxRuntime.jsx(
183
+ Settings,
184
+ {
185
+ "data-testid": "settings",
186
+ pageSize: modifiedData.pageSize || "",
187
+ sort: modifiedData.sort || "",
188
+ onChange: handleChange
189
+ }
190
+ ) }),
191
+ /* @__PURE__ */ jsxRuntime.jsx(
192
+ strapiAdmin.ConfirmDialog,
193
+ {
194
+ isOpen: showWarningSubmit,
195
+ onClose: toggleWarningSubmit,
196
+ onConfirm: handleConfirm,
197
+ variant: "success-light",
198
+ children: formatMessage({
199
+ id: index.getTrad("config.popUpWarning.warning.updateAllSettings"),
200
+ defaultMessage: "This will modify all your settings"
201
+ })
202
+ }
203
+ )
204
+ ] }) }) });
205
+ };
206
+ ConfigureTheView.propTypes = {
207
+ config: PropTypes__default.default.shape({
208
+ pageSize: PropTypes__default.default.number,
209
+ sort: PropTypes__default.default.string
210
+ }).isRequired
211
+ };
212
+ exports.default = ConfigureTheView;
213
+ //# sourceMappingURL=index-BEZEyVJC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-BEZEyVJC.js","sources":["../../admin/src/pages/App/ConfigureTheView/components/Settings.jsx","../../admin/src/pages/App/ConfigureTheView/state/actionTypes.js","../../admin/src/pages/App/ConfigureTheView/state/actions.js","../../admin/src/pages/App/ConfigureTheView/state/init.js","../../admin/src/pages/App/ConfigureTheView/state/reducer.js","../../admin/src/pages/App/ConfigureTheView/index.jsx"],"sourcesContent":["import React from 'react';\n\nimport { Box, Grid, GridItem, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\n\nimport { pageSizes, sortOptions } from '../../../../constants';\nimport getTrad from '../../../../utils/getTrad';\n\nconst Settings = ({ sort = '', pageSize = 10, onChange }) => {\n const { formatMessage } = useIntl();\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"tableShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Grid gap={4}>\n <GridItem s={12} col={6}>\n <SingleSelect\n label={formatMessage({\n id: getTrad('config.entries.title'),\n defaultMessage: 'Entries per page',\n })}\n hint={formatMessage({\n id: getTrad('config.entries.note'),\n defaultMessage: 'Number of assets displayed by default in the Media Library',\n })}\n onChange={(value) => onChange({ target: { name: 'pageSize', value } })}\n name=\"pageSize\"\n value={pageSize}\n >\n {pageSizes.map((pageSize) => (\n <SingleSelectOption key={pageSize} value={pageSize}>\n {pageSize}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </GridItem>\n <GridItem s={12} col={6}>\n <SingleSelect\n label={formatMessage({\n id: getTrad('config.sort.title'),\n defaultMessage: 'Default sort order',\n })}\n hint={formatMessage({\n id: getTrad('config.note'),\n defaultMessage: 'Note: You can override this value in the media library.',\n })}\n onChange={(value) => onChange({ target: { name: 'sort', value } })}\n name=\"sort\"\n value={sort}\n test-sort={sort}\n data-testid=\"sort-select\"\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption\n data-testid={`sort-option-${filter.value}`}\n key={filter.key}\n value={filter.value}\n >\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </GridItem>\n </Grid>\n </Box>\n );\n};\n\nSettings.propTypes = {\n sort: PropTypes.string.isRequired,\n pageSize: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n};\n\nexport { Settings };\n","import pluginId from '../../../../pluginId';\n\nexport const ON_CHANGE = `${pluginId}/ON_CHANGE`;\nexport const SET_LOADED = `${pluginId}/SET_LOADED`;\n","import { ON_CHANGE, SET_LOADED } from './actionTypes';\n\nexport const onChange = ({ name, value }) => ({\n type: ON_CHANGE,\n keys: name,\n value,\n});\n\nexport const setLoaded = () => ({\n type: SET_LOADED,\n});\n","const initialState = {\n initialData: {},\n modifiedData: {},\n};\n\nconst init = (configData) => {\n return {\n ...initialState,\n initialData: configData,\n modifiedData: configData,\n };\n};\nexport { init, initialState };\n","import { produce } from 'immer'; // current\nimport get from 'lodash/get';\nimport set from 'lodash/set';\n\nimport { ON_CHANGE, SET_LOADED } from './actionTypes';\nimport { init, initialState } from './init';\n\nconst reducer = (state = initialState, action) =>\n // eslint-disable-next-line consistent-return\n produce(state, (draftState) => {\n switch (action.type) {\n case ON_CHANGE: {\n set(draftState, ['modifiedData', ...action.keys.split('.')], action.value);\n break;\n }\n case SET_LOADED: {\n // This action re-initialises the state using the current modifiedData.\n const reInitialise = init(get(draftState, ['modifiedData'], {}));\n draftState.initialData = reInitialise.initialData;\n draftState.modifiedData = reInitialise.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\nexport default reducer;\n","import React, { useReducer, useState } from 'react';\n\nimport {\n ConfirmDialog,\n useTracking,\n useNotification,\n Page,\n Layouts,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Link } from '@strapi/design-system';\nimport { ArrowLeft, Check } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport PropTypes from 'prop-types';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\n\nimport { useConfig } from '../../../hooks/useConfig';\nimport pluginID from '../../../pluginId';\nimport getTrad from '../../../utils/getTrad';\n\nimport { Settings } from './components/Settings';\nimport { onChange, setLoaded } from './state/actions';\nimport { init, initialState } from './state/init';\nimport reducer from './state/reducer';\n\nconst ConfigureTheView = ({ config }) => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { mutateConfig } = useConfig();\n const { isLoading: isSubmittingForm } = mutateConfig;\n\n const [showWarningSubmit, setWarningSubmit] = useState(false);\n const toggleWarningSubmit = () => setWarningSubmit((prevState) => !prevState);\n\n const [reducerState, dispatch] = useReducer(reducer, initialState, () => init(config));\n const { initialData, modifiedData } = reducerState;\n\n const handleSubmit = (e) => {\n e.preventDefault();\n toggleWarningSubmit();\n };\n\n const handleConfirm = async () => {\n trackUsage('willEditMediaLibraryConfig');\n await mutateConfig.mutateAsync(modifiedData);\n toggleWarningSubmit();\n dispatch(setLoaded());\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.form.success.fields',\n defaultMessage: 'Changes saved',\n }),\n });\n };\n\n const handleChange = ({ target: { name, value } }) => {\n dispatch(onChange({ name, value }));\n };\n\n return (\n <Layouts.Root>\n <Page.Main aria-busy={isSubmittingForm}>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n navigationAction={\n <Link as={NavLink} startIcon={<ArrowLeft />} to={`/plugins/${pluginID}`} id=\"go-back\">\n {formatMessage({ id: getTrad('config.back'), defaultMessage: 'Back' })}\n </Link>\n }\n primaryAction={\n <Button\n size=\"S\"\n startIcon={<Check />}\n disabled={isEqual(modifiedData, initialData)}\n type=\"submit\"\n >\n {formatMessage({ id: 'global.save', defaultMessage: 'Save' })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('config.subtitle'),\n defaultMessage: 'Define the view settings of the media library.',\n })}\n title={formatMessage({\n id: getTrad('config.title'),\n defaultMessage: 'Configure the view - Media Library',\n })}\n />\n\n <Layouts.Content>\n <Settings\n data-testid=\"settings\"\n pageSize={modifiedData.pageSize || ''}\n sort={modifiedData.sort || ''}\n onChange={handleChange}\n />\n </Layouts.Content>\n\n <ConfirmDialog\n isOpen={showWarningSubmit}\n onClose={toggleWarningSubmit}\n onConfirm={handleConfirm}\n variant=\"success-light\"\n >\n {formatMessage({\n id: getTrad('config.popUpWarning.warning.updateAllSettings'),\n defaultMessage: 'This will modify all your settings',\n })}\n </ConfirmDialog>\n </form>\n </Page.Main>\n </Layouts.Root>\n );\n};\n\nConfigureTheView.propTypes = {\n config: PropTypes.shape({\n pageSize: PropTypes.number,\n sort: PropTypes.string,\n }).isRequired,\n};\n\nexport default ConfigureTheView;\n"],"names":["onChange","useIntl","jsx","Box","jsxs","Grid","GridItem","SingleSelect","getTrad","pageSizes","pageSize","SingleSelectOption","sortOptions","PropTypes","pluginId","produce","set","get","useTracking","useNotification","useConfig","useState","useReducer","Layouts","Page","Link","NavLink","ArrowLeft","pluginID","Button","Check","isEqual","ConfirmDialog"],"mappings":"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"}