@strapi/upload 5.57.0 → 5.59.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 (253) hide show
  1. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +141 -0
  2. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -0
  3. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +139 -0
  4. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -0
  5. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +129 -0
  6. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -0
  7. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +127 -0
  8. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -0
  9. package/dist/admin/components/MediaLibraryInput/AssetRow.js +144 -0
  10. package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -0
  11. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +142 -0
  12. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -0
  13. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +397 -0
  14. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
  15. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +395 -0
  16. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
  17. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js +45 -0
  18. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js.map +1 -0
  19. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs +43 -0
  20. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs.map +1 -0
  21. package/dist/admin/hooks/useAIMetadataAvailability.js +5 -1
  22. package/dist/admin/hooks/useAIMetadataAvailability.js.map +1 -1
  23. package/dist/admin/hooks/useAIMetadataAvailability.mjs +5 -1
  24. package/dist/admin/hooks/useAIMetadataAvailability.mjs.map +1 -1
  25. package/dist/admin/hooks/useAIMetadataEnabled.js +7 -1
  26. package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -1
  27. package/dist/admin/hooks/useAIMetadataEnabled.mjs +7 -1
  28. package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -1
  29. package/dist/admin/hooks/useMediaLibraryPermissions.js +4 -0
  30. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
  31. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +4 -0
  32. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
  33. package/dist/admin/hooks/useTracking.js +5 -1
  34. package/dist/admin/hooks/useTracking.js.map +1 -1
  35. package/dist/admin/hooks/useTracking.mjs +5 -1
  36. package/dist/admin/hooks/useTracking.mjs.map +1 -1
  37. package/dist/admin/index.js +7 -2
  38. package/dist/admin/index.js.map +1 -1
  39. package/dist/admin/index.mjs +7 -2
  40. package/dist/admin/index.mjs.map +1 -1
  41. package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -1
  42. package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -1
  43. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js +9 -1
  44. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js.map +1 -1
  45. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs +9 -1
  46. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
  47. package/dist/admin/legacy/components/AssetCard/VideoPreview.js +2 -1
  48. package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -1
  49. package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs +2 -1
  50. package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -1
  51. package/dist/admin/legacy/components/AssetDialog/AssetDialog.js +3 -1
  52. package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -1
  53. package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs +3 -1
  54. package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -1
  55. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +3 -1
  56. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  57. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +3 -1
  58. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  59. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
  60. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
  61. package/dist/admin/legacy/components/AssetGridList/AssetGridList.js +7 -6
  62. package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -1
  63. package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs +7 -6
  64. package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -1
  65. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js +2 -1
  66. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
  67. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +2 -1
  68. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
  69. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js +2 -1
  70. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  71. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs +2 -1
  72. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  73. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js +3 -1
  74. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  75. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs +3 -1
  76. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  77. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js +20 -6
  78. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  79. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +20 -6
  80. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  81. package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -1
  82. package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -1
  83. package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -1
  84. package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -1
  85. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js +2 -1
  86. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -1
  87. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs +2 -1
  88. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -1
  89. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js +4 -2
  90. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
  91. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs +4 -2
  92. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
  93. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js +2 -1
  94. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  95. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -1
  96. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  97. package/dist/admin/legacy/components/SelectTree/SelectTree.js +3 -1
  98. package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -1
  99. package/dist/admin/legacy/components/SelectTree/SelectTree.mjs +3 -1
  100. package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -1
  101. package/dist/admin/legacy/components/TableList/TableList.js +3 -1
  102. package/dist/admin/legacy/components/TableList/TableList.js.map +1 -1
  103. package/dist/admin/legacy/components/TableList/TableList.mjs +3 -1
  104. package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -1
  105. package/dist/admin/legacy/components/TableList/TableRows.js +3 -1
  106. package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -1
  107. package/dist/admin/legacy/components/TableList/TableRows.mjs +3 -1
  108. package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -1
  109. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js +3 -1
  110. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
  111. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs +3 -1
  112. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
  113. package/dist/admin/legacy/hooks/useEditAsset.js +11 -6
  114. package/dist/admin/legacy/hooks/useEditAsset.js.map +1 -1
  115. package/dist/admin/legacy/hooks/useEditAsset.mjs +12 -7
  116. package/dist/admin/legacy/hooks/useEditAsset.mjs.map +1 -1
  117. package/dist/admin/legacy/hooks/useUpload.js +6 -4
  118. package/dist/admin/legacy/hooks/useUpload.js.map +1 -1
  119. package/dist/admin/legacy/hooks/useUpload.mjs +6 -4
  120. package/dist/admin/legacy/hooks/useUpload.mjs.map +1 -1
  121. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  122. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  123. package/dist/admin/legacy/pages/App/components/BulkActions.js +2 -1
  124. package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -1
  125. package/dist/admin/legacy/pages/App/components/BulkActions.mjs +2 -1
  126. package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -1
  127. package/dist/admin/legacy/pages/App/components/BulkMoveButton.js +2 -1
  128. package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -1
  129. package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs +2 -1
  130. package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -1
  131. package/dist/admin/pages/Assets/components/AssetsGrid.js +2 -1
  132. package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
  133. package/dist/admin/pages/Assets/components/AssetsGrid.mjs +2 -1
  134. package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  135. package/dist/admin/pages/Assets/components/AssetsTable.js +2 -1
  136. package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
  137. package/dist/admin/pages/Assets/components/AssetsTable.mjs +2 -1
  138. package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
  139. package/dist/admin/pages/Assets/components/BulkActionsBar.js +3 -1
  140. package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -1
  141. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +3 -1
  142. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
  143. package/dist/admin/pages/Assets/components/DateRangeCalendar.js +10 -7
  144. package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -1
  145. package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs +10 -7
  146. package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -1
  147. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js +4 -2
  148. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  149. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +5 -3
  150. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  151. package/dist/admin/pages/Assets/components/FilterBadges.js +32 -3
  152. package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -1
  153. package/dist/admin/pages/Assets/components/FilterBadges.mjs +33 -4
  154. package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -1
  155. package/dist/admin/services/api.js +15 -5
  156. package/dist/admin/services/api.js.map +1 -1
  157. package/dist/admin/services/api.mjs +15 -5
  158. package/dist/admin/services/api.mjs.map +1 -1
  159. package/dist/admin/src/components/MediaLibraryInput/AddAssetMenu.d.ts +19 -0
  160. package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +13 -0
  161. package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +15 -0
  162. package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +26 -0
  163. package/dist/admin/src/components/MediaLibraryInput/NoLibraryAccessDialog.d.ts +10 -0
  164. package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +1 -0
  165. package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +1 -1
  166. package/dist/admin/src/legacy/hooks/useEditAsset.d.ts +13 -22
  167. package/dist/admin/src/legacy/hooks/useUpload.d.ts +1 -1
  168. package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +1 -1
  169. package/dist/admin/src/services/api.d.ts +6 -0
  170. package/dist/admin/src/utils/allowedMediaTypes.d.ts +16 -0
  171. package/dist/admin/translations/ca.json.js +3 -3
  172. package/dist/admin/translations/ca.json.mjs +3 -3
  173. package/dist/admin/translations/da.json.js +1 -1
  174. package/dist/admin/translations/da.json.mjs +1 -1
  175. package/dist/admin/translations/de.json.js +1 -1
  176. package/dist/admin/translations/de.json.mjs +1 -1
  177. package/dist/admin/translations/en.json.js +9 -0
  178. package/dist/admin/translations/en.json.js.map +1 -1
  179. package/dist/admin/translations/en.json.mjs +9 -0
  180. package/dist/admin/translations/en.json.mjs.map +1 -1
  181. package/dist/admin/translations/es.json.js +1 -1
  182. package/dist/admin/translations/es.json.mjs +1 -1
  183. package/dist/admin/translations/sk.json.js +2 -2
  184. package/dist/admin/translations/sk.json.mjs +2 -2
  185. package/dist/admin/translations/tr.json.js +2 -2
  186. package/dist/admin/translations/tr.json.mjs +2 -2
  187. package/dist/admin/translations/zh-Hans.json.js +1 -1
  188. package/dist/admin/translations/zh-Hans.json.mjs +1 -1
  189. package/dist/admin/translations/zh.json.js +2 -2
  190. package/dist/admin/translations/zh.json.mjs +2 -2
  191. package/dist/admin/utils/allowedMediaTypes.js +42 -0
  192. package/dist/admin/utils/allowedMediaTypes.js.map +1 -0
  193. package/dist/admin/utils/allowedMediaTypes.mjs +39 -0
  194. package/dist/admin/utils/allowedMediaTypes.mjs.map +1 -0
  195. package/dist/server/config.js +6 -0
  196. package/dist/server/config.js.map +1 -1
  197. package/dist/server/config.mjs +6 -0
  198. package/dist/server/config.mjs.map +1 -1
  199. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  200. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  201. package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
  202. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
  203. package/dist/server/mcp/ambient-instance.js +7 -5
  204. package/dist/server/mcp/ambient-instance.js.map +1 -1
  205. package/dist/server/mcp/ambient-instance.mjs +7 -5
  206. package/dist/server/mcp/ambient-instance.mjs.map +1 -1
  207. package/dist/server/mcp/handlers/folder-handlers.js +4 -16
  208. package/dist/server/mcp/handlers/folder-handlers.js.map +1 -1
  209. package/dist/server/mcp/handlers/folder-handlers.mjs +5 -17
  210. package/dist/server/mcp/handlers/folder-handlers.mjs.map +1 -1
  211. package/dist/server/mcp/handlers/read-handlers.js +6 -14
  212. package/dist/server/mcp/handlers/read-handlers.js.map +1 -1
  213. package/dist/server/mcp/handlers/read-handlers.mjs +7 -15
  214. package/dist/server/mcp/handlers/read-handlers.mjs.map +1 -1
  215. package/dist/server/mcp/handlers/write-handlers.js +3 -13
  216. package/dist/server/mcp/handlers/write-handlers.js.map +1 -1
  217. package/dist/server/mcp/handlers/write-handlers.mjs +3 -13
  218. package/dist/server/mcp/handlers/write-handlers.mjs.map +1 -1
  219. package/dist/server/mcp/register-upload-mcp-tools.js +215 -195
  220. package/dist/server/mcp/register-upload-mcp-tools.js.map +1 -1
  221. package/dist/server/mcp/register-upload-mcp-tools.mjs +215 -195
  222. package/dist/server/mcp/register-upload-mcp-tools.mjs.map +1 -1
  223. package/dist/server/services/extensions/utils.js +1 -1
  224. package/dist/server/services/extensions/utils.js.map +1 -1
  225. package/dist/server/services/extensions/utils.mjs +1 -1
  226. package/dist/server/services/extensions/utils.mjs.map +1 -1
  227. package/dist/server/services/image-manipulation.js +33 -14
  228. package/dist/server/services/image-manipulation.js.map +1 -1
  229. package/dist/server/services/image-manipulation.mjs +33 -14
  230. package/dist/server/services/image-manipulation.mjs.map +1 -1
  231. package/dist/server/src/config.d.ts +3 -0
  232. package/dist/server/src/config.d.ts.map +1 -1
  233. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  234. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
  235. package/dist/server/src/index.d.ts +3 -0
  236. package/dist/server/src/index.d.ts.map +1 -1
  237. package/dist/server/src/mcp/ambient-instance.d.ts +7 -5
  238. package/dist/server/src/mcp/ambient-instance.d.ts.map +1 -1
  239. package/dist/server/src/mcp/handlers/folder-handlers.d.ts.map +1 -1
  240. package/dist/server/src/mcp/handlers/read-handlers.d.ts +3 -2
  241. package/dist/server/src/mcp/handlers/read-handlers.d.ts.map +1 -1
  242. package/dist/server/src/mcp/handlers/write-handlers.d.ts.map +1 -1
  243. package/dist/server/src/mcp/register-upload-mcp-tools.d.ts +9 -14
  244. package/dist/server/src/mcp/register-upload-mcp-tools.d.ts.map +1 -1
  245. package/dist/server/src/services/extensions/utils.d.ts +1 -1
  246. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  247. package/dist/server/src/types.d.ts +1 -0
  248. package/dist/server/src/types.d.ts.map +1 -1
  249. package/dist/server/utils/mime-validation.js +1 -1
  250. package/dist/server/utils/mime-validation.js.map +1 -1
  251. package/dist/server/utils/mime-validation.mjs +1 -1
  252. package/dist/server/utils/mime-validation.mjs.map +1 -1
  253. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"PreviewBox.mjs","sources":["../../../../../../admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Flex, IconButton } from '@strapi/design-system';\nimport { Crop as Resize, Download as DownloadIcon, Trash, PinMap } from '@strapi/icons';\nimport cropperjscss from 'cropperjs/dist/cropper.css?raw';\nimport { useIntl } from 'react-intl';\nimport { createGlobalStyle } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../../../enums';\nimport { useCropImg } from '../../../hooks/useCropImg';\nimport { useEditAsset } from '../../../hooks/useEditAsset';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { useUpload } from '../../../hooks/useUpload';\nimport { appendSearchParamsToUrl, createAssetUrl, getTrad, downloadFile } from '../../../utils';\nimport { CopyLinkButton } from '../../CopyLinkButton/CopyLinkButton';\nimport { UploadProgress } from '../../UploadProgress/UploadProgress';\nimport { RemoveAssetDialog } from '../RemoveAssetDialog';\n\nimport { AssetPreview } from './AssetPreview';\nimport { CroppingActions } from './CroppingActions';\nimport { FocalPointActions } from './FocalPointActions';\nimport {\n ActionRow,\n BadgeOverride,\n RelativeBox,\n UploadProgressWrapper,\n Wrapper,\n FocalPointImageWrapper,\n FocalPointAim,\n FocalPointHalo,\n} from './PreviewComponents';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../../shared/contracts/files';\n\ninterface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface PreviewBoxProps {\n asset: Asset;\n canUpdate: boolean;\n canCopyLink: boolean;\n canDownload: boolean;\n replacementFile?: File;\n onDelete: (asset?: Asset | null) => void;\n onCropFinish: () => void;\n onCropStart: () => void;\n onCropCancel: () => void;\n trackedLocation?: string;\n formFocalPoint?: FocalPoint | null;\n onFocalPointStart: () => void;\n onFocalPointFinish: (focalPoint: FocalPoint) => void;\n onFocalPointCancel: () => void;\n}\n\nexport const PreviewBox = ({\n asset,\n canUpdate,\n canCopyLink,\n canDownload,\n onDelete,\n onCropFinish,\n onCropStart,\n onCropCancel,\n replacementFile,\n trackedLocation,\n formFocalPoint,\n onFocalPointStart,\n onFocalPointFinish,\n onFocalPointCancel,\n}: PreviewBoxProps) => {\n const CropperjsStyle = createGlobalStyle`${cropperjscss}`;\n const { trackUsage } = useTracking();\n const previewRef = React.useRef(null);\n const [isCropImageReady, setIsCropImageReady] = React.useState(false);\n const [hasCropIntent, setHasCropIntent] = React.useState<boolean | null>(null);\n const [assetUrl, setAssetUrl] = React.useState(createAssetUrl(asset, false));\n const [thumbnailUrl, setThumbnailUrl] = React.useState(createAssetUrl(asset, true));\n\n // When loading a cross-origin image for cropping, append a cache-busting parameter\n // so the browser makes a fresh request with CORS headers instead of serving a\n // previously cached non-CORS response (which would taint the canvas and break\n // cropping). Signed URLs are excluded because modifying them invalidates the signature.\n const cropUrl = React.useMemo(() => {\n if (!asset.isLocal && !asset.isUrlSigned && assetUrl) {\n return appendSearchParamsToUrl({ url: assetUrl, params: { updatedAt: asset.updatedAt } });\n }\n\n return assetUrl;\n }, [assetUrl, asset.isLocal, asset.isUrlSigned, asset.updatedAt]);\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { crop, produceFile, stopCropping, isCropping, isCropperReady, width, height } =\n useCropImg();\n const { editAsset, error, isLoading, progress, cancel } = useEditAsset();\n const [isInFocalPointMode, setIsInFocalPointMode] = React.useState<boolean>(false);\n const [focalPoint, setFocalPoint] = React.useState<FocalPoint>(\n formFocalPoint ?? { x: 50, y: 50 }\n );\n\n const {\n upload,\n isLoading: isLoadingUpload,\n cancel: cancelUpload,\n error: uploadError,\n progress: progressUpload,\n } = useUpload();\n\n React.useEffect(() => {\n // Whenever a replacementUrl is set, make sure to permutate the real asset.url by\n // the locally generated one\n if (replacementFile) {\n const fileLocalUrl = URL.createObjectURL(replacementFile);\n\n if (asset.isLocal) {\n asset.url = fileLocalUrl;\n }\n\n setAssetUrl(fileLocalUrl);\n setThumbnailUrl(fileLocalUrl);\n }\n }, [replacementFile, asset]);\n\n React.useEffect(() => {\n if (hasCropIntent === false) {\n stopCropping();\n onCropCancel();\n }\n }, [hasCropIntent, stopCropping, onCropCancel, onCropFinish]);\n\n React.useEffect(() => {\n if (hasCropIntent && isCropImageReady) {\n crop(previewRef.current!);\n onCropStart();\n }\n }, [isCropImageReady, hasCropIntent, onCropStart, crop]);\n\n const handleCropping = async () => {\n const nextAsset = { ...asset, width, height, folder: asset.folder?.id };\n const file = (await produceFile(nextAsset.name, nextAsset.mime!, nextAsset.updatedAt!)) as File;\n\n // Making sure that when persisting the new asset, the URL changes with width and height\n // So that the browser makes a request and handle the image caching correctly at the good size\n let optimizedCachingImage;\n let optimizedCachingThumbnailImage;\n\n if (asset.isLocal) {\n optimizedCachingImage = URL.createObjectURL(file);\n optimizedCachingThumbnailImage = optimizedCachingImage;\n asset.url = optimizedCachingImage;\n asset.rawFile = file;\n\n trackUsage('didCropFile', { duplicatedFile: null, location: trackedLocation! });\n } else {\n const updatedAsset = await editAsset(nextAsset, file);\n optimizedCachingImage = createAssetUrl(updatedAsset, false);\n optimizedCachingThumbnailImage = createAssetUrl(updatedAsset, true);\n\n trackUsage('didCropFile', { duplicatedFile: false, location: trackedLocation! });\n }\n\n setAssetUrl(optimizedCachingImage);\n setThumbnailUrl(optimizedCachingThumbnailImage);\n setHasCropIntent(false);\n };\n\n const isInCroppingMode = isCropping && !isLoading;\n\n const handleDuplication = async () => {\n const nextAsset = { ...asset, width, height };\n const file = (await produceFile(\n nextAsset.name,\n nextAsset.mime!,\n nextAsset.updatedAt!\n )) as RawFile;\n\n await upload({ name: file.name, rawFile: file }, asset.folder?.id ? asset.folder.id : null);\n\n trackUsage('didCropFile', { duplicatedFile: true, location: trackedLocation! });\n\n setHasCropIntent(false);\n onCropFinish();\n };\n\n const handleCropCancel = () => {\n setHasCropIntent(false);\n };\n\n const handleCropStart = () => {\n setHasCropIntent(true);\n };\n\n const calculateFocalPointFromEvent = (e: React.MouseEvent<HTMLElement>): FocalPoint => {\n const { clientX, clientY } = e;\n const rect = e.currentTarget.getBoundingClientRect();\n const posX = clientX - rect.left;\n const posY = clientY - rect.top;\n\n return {\n x: Number(((posX / rect.width) * 100).toFixed(2)),\n y: Number(((posY / rect.height) * 100).toFixed(2)),\n };\n };\n\n const handleFocalPointClick = (e: React.MouseEvent<HTMLElement>) => {\n if (!isInFocalPointMode) return;\n setFocalPoint(calculateFocalPointFromEvent(e));\n };\n\n const handleFocalPointCancel = () => {\n setIsInFocalPointMode(false);\n setFocalPoint(formFocalPoint ?? { x: 50, y: 50 });\n onFocalPointCancel();\n };\n\n const handleFocalPointStart = () => {\n onFocalPointStart();\n setIsInFocalPointMode(true);\n };\n\n const handleFocalPointValidate = () => {\n setIsInFocalPointMode(false);\n onFocalPointFinish(focalPoint);\n };\n\n const handleFocalPointReset = () => {\n setFocalPoint({ x: 50, y: 50 });\n };\n\n return (\n <>\n <CropperjsStyle />\n <RelativeBox hasRadius background=\"neutral150\" borderColor=\"neutral200\">\n {isCropperReady && isInCroppingMode && (\n <CroppingActions\n onValidate={handleCropping}\n onDuplicate={asset.isLocal ? undefined : handleDuplication}\n onCancel={handleCropCancel}\n />\n )}\n\n {isInFocalPointMode && (\n <FocalPointActions\n onValidate={handleFocalPointValidate}\n onCancel={handleFocalPointCancel}\n onReset={handleFocalPointReset}\n />\n )}\n\n <ActionRow paddingLeft={3} paddingRight={3} justifyContent=\"flex-end\">\n <Flex gap={1}>\n {canUpdate && !asset.isLocal && (\n <IconButton\n label={formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n onClick={() => setShowConfirmDialog(true)}\n >\n <Trash />\n </IconButton>\n )}\n\n {canDownload && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.download'),\n defaultMessage: 'Download',\n })}\n onClick={() => downloadFile(assetUrl!, asset.name)}\n >\n <DownloadIcon />\n </IconButton>\n )}\n\n {canCopyLink && <CopyLinkButton url={assetUrl!} />}\n\n {canUpdate && asset.mime?.includes(ASSET_TYPES.Image) && (\n <IconButton\n label={formatMessage({ id: getTrad('control-card.crop'), defaultMessage: 'Crop' })}\n onClick={handleCropStart}\n >\n <Resize />\n </IconButton>\n )}\n\n {canUpdate && asset.mime?.includes(ASSET_TYPES.Image) && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.set-focal-point'),\n defaultMessage: 'Set focal point',\n })}\n onClick={handleFocalPointStart}\n >\n <PinMap />\n </IconButton>\n )}\n </Flex>\n </ActionRow>\n\n <Wrapper>\n {/* This one is for editting an asset */}\n {isLoading && (\n <UploadProgressWrapper>\n <UploadProgress error={error} onCancel={cancel} progress={progress} />\n </UploadProgressWrapper>\n )}\n\n {/* This one is for duplicating an asset after cropping */}\n {isLoadingUpload && (\n <UploadProgressWrapper>\n <UploadProgress\n error={uploadError}\n onCancel={cancelUpload}\n progress={progressUpload}\n />\n </UploadProgressWrapper>\n )}\n\n <FocalPointImageWrapper>\n <AssetPreview\n ref={previewRef}\n mime={asset.mime!}\n name={asset.name}\n url={hasCropIntent ? cropUrl! : thumbnailUrl!}\n onLoad={() => {\n if (asset.isLocal || hasCropIntent) {\n setIsCropImageReady(true);\n }\n }}\n onClick={handleFocalPointClick}\n style={{ cursor: isInFocalPointMode ? 'crosshair' : undefined }}\n />\n\n {/* Show the set focal point marker */}\n {isInFocalPointMode && (\n <FocalPointAim $focalPoint={focalPoint}>\n <FocalPointHalo />\n </FocalPointAim>\n )}\n </FocalPointImageWrapper>\n </Wrapper>\n\n <ActionRow\n paddingLeft={2}\n paddingRight={2}\n justifyContent=\"flex-end\"\n $blurry={isInCroppingMode || isInFocalPointMode}\n >\n {isInCroppingMode && width && height && (\n <BadgeOverride background=\"neutral900\" color=\"neutral0\">\n {width && height ? `${height}✕${width}` : 'N/A'}\n </BadgeOverride>\n )}\n {isInFocalPointMode && (\n <BadgeOverride background=\"neutral900\" color=\"neutral0\">\n {`x: ${focalPoint.x}% | y: ${focalPoint.y}%`}\n </BadgeOverride>\n )}\n </ActionRow>\n </RelativeBox>\n\n <RemoveAssetDialog\n open={showConfirmDialog}\n onClose={(value) => {\n setShowConfirmDialog(false);\n if (value === null) {\n onDelete(null);\n }\n }}\n asset={asset}\n />\n </>\n );\n};\n"],"names":["PreviewBox","asset","canUpdate","canCopyLink","canDownload","onDelete","onCropFinish","onCropStart","onCropCancel","replacementFile","trackedLocation","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","CropperjsStyle","createGlobalStyle","cropperjscss","trackUsage","useTracking","previewRef","React","useRef","isCropImageReady","setIsCropImageReady","useState","hasCropIntent","setHasCropIntent","assetUrl","setAssetUrl","createAssetUrl","thumbnailUrl","setThumbnailUrl","cropUrl","useMemo","isLocal","isUrlSigned","appendSearchParamsToUrl","url","params","updatedAt","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","crop","produceFile","stopCropping","isCropping","isCropperReady","width","height","useCropImg","editAsset","error","isLoading","progress","cancel","useEditAsset","isInFocalPointMode","setIsInFocalPointMode","focalPoint","setFocalPoint","x","y","upload","isLoadingUpload","cancelUpload","uploadError","progressUpload","useUpload","useEffect","fileLocalUrl","URL","createObjectURL","current","handleCropping","nextAsset","folder","id","file","name","mime","optimizedCachingImage","optimizedCachingThumbnailImage","rawFile","duplicatedFile","location","updatedAsset","isInCroppingMode","handleDuplication","handleCropCancel","handleCropStart","calculateFocalPointFromEvent","e","clientX","clientY","rect","currentTarget","getBoundingClientRect","posX","left","posY","top","Number","toFixed","handleFocalPointClick","handleFocalPointCancel","handleFocalPointStart","handleFocalPointValidate","handleFocalPointReset","_jsxs","_Fragment","_jsx","RelativeBox","hasRadius","background","borderColor","CroppingActions","onValidate","onDuplicate","undefined","onCancel","FocalPointActions","onReset","ActionRow","paddingLeft","paddingRight","justifyContent","Flex","gap","IconButton","label","defaultMessage","onClick","Trash","getTrad","downloadFile","DownloadIcon","CopyLinkButton","includes","ASSET_TYPES","Image","Resize","PinMap","Wrapper","UploadProgressWrapper","UploadProgress","FocalPointImageWrapper","AssetPreview","ref","onLoad","style","cursor","FocalPointAim","$focalPoint","FocalPointHalo","$blurry","BadgeOverride","color","RemoveAssetDialog","open","onClose","value"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AA8DO,MAAMA,UAAAA,GAAa,CAAC,EACzBC,KAAK,EACLC,SAAS,EACTC,WAAW,EACXC,WAAW,EACXC,QAAQ,EACRC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,iBAAiB,EACjBC,kBAAkB,EAClBC,kBAAkB,EACF,GAAA;AAChB,IAAA,MAAMC,cAAAA,GAAiBC,iBAAiB,CAAC,EAAEC,aAAa,CAAC;IACzD,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;IACvB,MAAMC,UAAAA,GAAaC,KAAAA,CAAMC,MAAM,CAAC,IAAA,CAAA;AAChC,IAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGH,KAAAA,CAAMI,QAAQ,CAAC,KAAA,CAAA;AAC/D,IAAA,MAAM,CAACC,aAAAA,EAAeC,gBAAAA,CAAiB,GAAGN,KAAAA,CAAMI,QAAQ,CAAiB,IAAA,CAAA;IACzE,MAAM,CAACG,UAAUC,WAAAA,CAAY,GAAGR,MAAMI,QAAQ,CAACK,eAAe7B,KAAAA,EAAO,KAAA,CAAA,CAAA;IACrE,MAAM,CAAC8B,cAAcC,eAAAA,CAAgB,GAAGX,MAAMI,QAAQ,CAACK,eAAe7B,KAAAA,EAAO,IAAA,CAAA,CAAA;;;;;IAM7E,MAAMgC,OAAAA,GAAUZ,KAAAA,CAAMa,OAAO,CAAC,IAAA;QAC5B,IAAI,CAACjC,MAAMkC,OAAO,IAAI,CAAClC,KAAAA,CAAMmC,WAAW,IAAIR,QAAAA,EAAU;AACpD,YAAA,OAAOS,uBAAAA,CAAwB;gBAAEC,GAAAA,EAAKV,QAAAA;gBAAUW,MAAAA,EAAQ;AAAEC,oBAAAA,SAAAA,EAAWvC,MAAMuC;AAAU;AAAE,aAAA,CAAA;AACzF,QAAA;QAEA,OAAOZ,QAAAA;IACT,CAAA,EAAG;AAACA,QAAAA,QAAAA;AAAU3B,QAAAA,KAAAA,CAAMkC,OAAO;AAAElC,QAAAA,KAAAA,CAAMmC,WAAW;AAAEnC,QAAAA,KAAAA,CAAMuC;AAAU,KAAA,CAAA;IAEhE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGvB,KAAAA,CAAMI,QAAQ,CAAC,KAAA,CAAA;AACjE,IAAA,MAAM,EAAEoB,IAAI,EAAEC,WAAW,EAAEC,YAAY,EAAEC,UAAU,EAAEC,cAAc,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAClFC,UAAAA,EAAAA;IACF,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,MAAM,EAAE,GAAGC,YAAAA,EAAAA;AAC1D,IAAA,MAAM,CAACC,kBAAAA,EAAoBC,qBAAAA,CAAsB,GAAGvC,KAAAA,CAAMI,QAAQ,CAAU,KAAA,CAAA;AAC5E,IAAA,MAAM,CAACoC,UAAAA,EAAYC,aAAAA,CAAc,GAAGzC,KAAAA,CAAMI,QAAQ,CAChDd,cAAAA,IAAkB;QAAEoD,CAAAA,EAAG,EAAA;QAAIC,CAAAA,EAAG;AAAG,KAAA,CAAA;AAGnC,IAAA,MAAM,EACJC,MAAM,EACNV,SAAAA,EAAWW,eAAe,EAC1BT,MAAAA,EAAQU,YAAY,EACpBb,OAAOc,WAAW,EAClBZ,QAAAA,EAAUa,cAAc,EACzB,GAAGC,SAAAA,EAAAA;AAEJjD,IAAAA,KAAAA,CAAMkD,SAAS,CAAC,IAAA;;;AAGd,QAAA,IAAI9D,eAAAA,EAAiB;YACnB,MAAM+D,YAAAA,GAAeC,GAAAA,CAAIC,eAAe,CAACjE,eAAAA,CAAAA;YAEzC,IAAIR,KAAAA,CAAMkC,OAAO,EAAE;AACjBlC,gBAAAA,KAAAA,CAAMqC,GAAG,GAAGkC,YAAAA;AACd,YAAA;YAEA3C,WAAAA,CAAY2C,YAAAA,CAAAA;YACZxC,eAAAA,CAAgBwC,YAAAA,CAAAA;AAClB,QAAA;IACF,CAAA,EAAG;AAAC/D,QAAAA,eAAAA;AAAiBR,QAAAA;AAAM,KAAA,CAAA;AAE3BoB,IAAAA,KAAAA,CAAMkD,SAAS,CAAC,IAAA;AACd,QAAA,IAAI7C,kBAAkB,KAAA,EAAO;AAC3BqB,YAAAA,YAAAA,EAAAA;AACAvC,YAAAA,YAAAA,EAAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACkB,QAAAA,aAAAA;AAAeqB,QAAAA,YAAAA;AAAcvC,QAAAA,YAAAA;AAAcF,QAAAA;AAAa,KAAA,CAAA;AAE5De,IAAAA,KAAAA,CAAMkD,SAAS,CAAC,IAAA;AACd,QAAA,IAAI7C,iBAAiBH,gBAAAA,EAAkB;AACrCsB,YAAAA,IAAAA,CAAKzB,WAAWuD,OAAO,CAAA;AACvBpE,YAAAA,WAAAA,EAAAA;AACF,QAAA;IACF,CAAA,EAAG;AAACgB,QAAAA,gBAAAA;AAAkBG,QAAAA,aAAAA;AAAenB,QAAAA,WAAAA;AAAasC,QAAAA;AAAK,KAAA,CAAA;AAEvD,IAAA,MAAM+B,cAAAA,GAAiB,UAAA;AACrB,QAAA,MAAMC,SAAAA,GAAY;AAAE,YAAA,GAAG5E,KAAK;AAAEiD,YAAAA,KAAAA;AAAOC,YAAAA,MAAAA;YAAQ2B,MAAAA,EAAQ7E,KAAAA,CAAM6E,MAAM,EAAEC;AAAG,SAAA;QACtE,MAAMC,IAAAA,GAAQ,MAAMlC,WAAAA,CAAY+B,SAAAA,CAAUI,IAAI,EAAEJ,SAAAA,CAAUK,IAAI,EAAGL,SAAAA,CAAUrC,SAAS,CAAA;;;QAIpF,IAAI2C,qBAAAA;QACJ,IAAIC,8BAAAA;QAEJ,IAAInF,KAAAA,CAAMkC,OAAO,EAAE;YACjBgD,qBAAAA,GAAwBV,GAAAA,CAAIC,eAAe,CAACM,IAAAA,CAAAA;YAC5CI,8BAAAA,GAAiCD,qBAAAA;AACjClF,YAAAA,KAAAA,CAAMqC,GAAG,GAAG6C,qBAAAA;AACZlF,YAAAA,KAAAA,CAAMoF,OAAO,GAAGL,IAAAA;AAEhB9D,YAAAA,UAAAA,CAAW,aAAA,EAAe;gBAAEoE,cAAAA,EAAgB,IAAA;gBAAMC,QAAAA,EAAU7E;AAAiB,aAAA,CAAA;QAC/E,CAAA,MAAO;YACL,MAAM8E,YAAAA,GAAe,MAAMnC,SAAAA,CAAUwB,SAAAA,EAAWG,IAAAA,CAAAA;AAChDG,YAAAA,qBAAAA,GAAwBrD,eAAe0D,YAAAA,EAAc,KAAA,CAAA;AACrDJ,YAAAA,8BAAAA,GAAiCtD,eAAe0D,YAAAA,EAAc,IAAA,CAAA;AAE9DtE,YAAAA,UAAAA,CAAW,aAAA,EAAe;gBAAEoE,cAAAA,EAAgB,KAAA;gBAAOC,QAAAA,EAAU7E;AAAiB,aAAA,CAAA;AAChF,QAAA;QAEAmB,WAAAA,CAAYsD,qBAAAA,CAAAA;QACZnD,eAAAA,CAAgBoD,8BAAAA,CAAAA;QAChBzD,gBAAAA,CAAiB,KAAA,CAAA;AACnB,IAAA,CAAA;IAEA,MAAM8D,gBAAAA,GAAmBzC,cAAc,CAACO,SAAAA;AAExC,IAAA,MAAMmC,iBAAAA,GAAoB,UAAA;AACxB,QAAA,MAAMb,SAAAA,GAAY;AAAE,YAAA,GAAG5E,KAAqB,CAAA;QAC5C,MAAM+E,IAAAA,GAAQ,MAAMlC,WAAAA,CAClB+B,SAAAA,CAAUI,IAAI,EACdJ,SAAAA,CAAUK,IAAI,EACdL,SAAAA,CAAUrC,SAAS,CAAA;AAGrB,QAAA,MAAMyB,MAAAA,CAAO;AAAEgB,YAAAA,IAAAA,EAAMD,KAAKC,IAAI;YAAEI,OAAAA,EAASL;SAAK,EAAG/E,KAAAA,CAAM6E,MAAM,EAAEC,EAAAA,GAAK9E,MAAM6E,MAAM,CAACC,EAAE,GAAG,IAAA,CAAA;AAEtF7D,QAAAA,UAAAA,CAAW,aAAA,EAAe;YAAEoE,cAAAA,EAAgB,IAAA;YAAMC,QAAAA,EAAU7E;AAAiB,SAAA,CAAA;QAE7EiB,gBAAAA,CAAiB,KAAA,CAAA;AACjBrB,QAAAA,YAAAA,EAAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMqF,gBAAAA,GAAmB,IAAA;QACvBhE,gBAAAA,CAAiB,KAAA,CAAA;AACnB,IAAA,CAAA;AAEA,IAAA,MAAMiE,eAAAA,GAAkB,IAAA;QACtBjE,gBAAAA,CAAiB,IAAA,CAAA;AACnB,IAAA,CAAA;AAEA,IAAA,MAAMkE,+BAA+B,CAACC,CAAAA,GAAAA;AACpC,QAAA,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGF,CAAAA;AAC7B,QAAA,MAAMG,IAAAA,GAAOH,CAAAA,CAAEI,aAAa,CAACC,qBAAqB,EAAA;QAClD,MAAMC,IAAAA,GAAOL,OAAAA,GAAUE,IAAAA,CAAKI,IAAI;QAChC,MAAMC,IAAAA,GAAON,OAAAA,GAAUC,IAAAA,CAAKM,GAAG;QAE/B,OAAO;YACLxC,CAAAA,EAAGyC,MAAAA,CAAO,CAAC,IAACJ,GAAOH,IAAAA,CAAK/C,KAAK,GAAI,GAAE,EAAGuD,OAAO,CAAC,CAAA,CAAA,CAAA;YAC9CzC,CAAAA,EAAGwC,MAAAA,CAAO,CAAC,IAACF,GAAOL,IAAAA,CAAK9C,MAAM,GAAI,GAAE,EAAGsD,OAAO,CAAC,CAAA,CAAA;AACjD,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,wBAAwB,CAACZ,CAAAA,GAAAA;AAC7B,QAAA,IAAI,CAACnC,kBAAAA,EAAoB;AACzBG,QAAAA,aAAAA,CAAc+B,4BAAAA,CAA6BC,CAAAA,CAAAA,CAAAA;AAC7C,IAAA,CAAA;AAEA,IAAA,MAAMa,sBAAAA,GAAyB,IAAA;QAC7B/C,qBAAAA,CAAsB,KAAA,CAAA;AACtBE,QAAAA,aAAAA,CAAcnD,cAAAA,IAAkB;YAAEoD,CAAAA,EAAG,EAAA;YAAIC,CAAAA,EAAG;AAAG,SAAA,CAAA;AAC/ClD,QAAAA,kBAAAA,EAAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM8F,qBAAAA,GAAwB,IAAA;AAC5BhG,QAAAA,iBAAAA,EAAAA;QACAgD,qBAAAA,CAAsB,IAAA,CAAA;AACxB,IAAA,CAAA;AAEA,IAAA,MAAMiD,wBAAAA,GAA2B,IAAA;QAC/BjD,qBAAAA,CAAsB,KAAA,CAAA;QACtB/C,kBAAAA,CAAmBgD,UAAAA,CAAAA;AACrB,IAAA,CAAA;AAEA,IAAA,MAAMiD,qBAAAA,GAAwB,IAAA;QAC5BhD,aAAAA,CAAc;YAAEC,CAAAA,EAAG,EAAA;YAAIC,CAAAA,EAAG;AAAG,SAAA,CAAA;AAC/B,IAAA,CAAA;IAEA,qBACE+C,IAAA,CAAAC,QAAA,EAAA;;0BACEC,GAAA,CAAClG,cAAAA,EAAAA,EAAAA,CAAAA;0BACDgG,IAAA,CAACG,WAAAA,EAAAA;gBAAYC,SAAS,EAAA,IAAA;gBAACC,UAAAA,EAAW,YAAA;gBAAaC,WAAAA,EAAY,YAAA;;AACxDpE,oBAAAA,cAAAA,IAAkBwC,kCACjBwB,GAAA,CAACK,eAAAA,EAAAA;wBACCC,UAAAA,EAAY3C,cAAAA;wBACZ4C,WAAAA,EAAavH,KAAAA,CAAMkC,OAAO,GAAGsF,SAAAA,GAAY/B,iBAAAA;wBACzCgC,QAAAA,EAAU/B;;AAIbhC,oBAAAA,kBAAAA,kBACCsD,GAAA,CAACU,iBAAAA,EAAAA;wBACCJ,UAAAA,EAAYV,wBAAAA;wBACZa,QAAAA,EAAUf,sBAAAA;wBACViB,OAAAA,EAASd;;kCAIbG,GAAA,CAACY,SAAAA,EAAAA;wBAAUC,WAAAA,EAAa,CAAA;wBAAGC,YAAAA,EAAc,CAAA;wBAAGC,cAAAA,EAAe,UAAA;AACzD,wBAAA,QAAA,gBAAAjB,IAAA,CAACkB,IAAAA,EAAAA;4BAAKC,GAAAA,EAAK,CAAA;;AACRhI,gCAAAA,SAAAA,IAAa,CAACD,KAAAA,CAAMkC,OAAO,kBAC1B8E,GAAA,CAACkB,UAAAA,EAAAA;AACCC,oCAAAA,KAAAA,EAAO3F,aAAAA,CAAc;wCACnBsC,EAAAA,EAAI,eAAA;wCACJsD,cAAAA,EAAgB;AAClB,qCAAA,CAAA;AACAC,oCAAAA,OAAAA,EAAS,IAAM1F,oBAAAA,CAAqB,IAAA,CAAA;AAEpC,oCAAA,QAAA,gBAAAqE,GAAA,CAACsB,KAAAA,EAAAA,EAAAA;;AAIJnI,gCAAAA,WAAAA,kBACC6G,GAAA,CAACkB,UAAAA,EAAAA;AACCC,oCAAAA,KAAAA,EAAO3F,aAAAA,CAAc;AACnBsC,wCAAAA,EAAAA,EAAIyD,OAAAA,CAAQ,uBAAA,CAAA;wCACZH,cAAAA,EAAgB;AAClB,qCAAA,CAAA;AACAC,oCAAAA,OAAAA,EAAS,IAAMG,YAAAA,CAAa7G,QAAAA,EAAW3B,KAAAA,CAAMgF,IAAI,CAAA;AAEjD,oCAAA,QAAA,gBAAAgC,GAAA,CAACyB,QAAAA,EAAAA,EAAAA;;AAIJvI,gCAAAA,WAAAA,kBAAe8G,GAAA,CAAC0B,cAAAA,EAAAA;oCAAerG,GAAAA,EAAKV;;AAEpC1B,gCAAAA,SAAAA,IAAaD,MAAMiF,IAAI,EAAE0D,SAASC,WAAAA,CAAYC,KAAK,mBAClD7B,GAAA,CAACkB,UAAAA,EAAAA;AACCC,oCAAAA,KAAAA,EAAO3F,aAAAA,CAAc;AAAEsC,wCAAAA,EAAAA,EAAIyD,OAAAA,CAAQ,mBAAA,CAAA;wCAAsBH,cAAAA,EAAgB;AAAO,qCAAA,CAAA;oCAChFC,OAAAA,EAAS1C,eAAAA;AAET,oCAAA,QAAA,gBAAAqB,GAAA,CAAC8B,IAAAA,EAAAA,EAAAA;;AAIJ7I,gCAAAA,SAAAA,IAAaD,MAAMiF,IAAI,EAAE0D,SAASC,WAAAA,CAAYC,KAAK,mBAClD7B,GAAA,CAACkB,UAAAA,EAAAA;AACCC,oCAAAA,KAAAA,EAAO3F,aAAAA,CAAc;AACnBsC,wCAAAA,EAAAA,EAAIyD,OAAAA,CAAQ,8BAAA,CAAA;wCACZH,cAAAA,EAAgB;AAClB,qCAAA,CAAA;oCACAC,OAAAA,EAAS1B,qBAAAA;AAET,oCAAA,QAAA,gBAAAK,GAAA,CAAC+B,MAAAA,EAAAA,EAAAA;;;;;kCAMTjC,IAAA,CAACkC,OAAAA,EAAAA;;AAEE1F,4BAAAA,SAAAA,kBACC0D,GAAA,CAACiC,qBAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAAjC,GAAA,CAACkC,cAAAA,EAAAA;oCAAe7F,KAAAA,EAAOA,KAAAA;oCAAOoE,QAAAA,EAAUjE,MAAAA;oCAAQD,QAAAA,EAAUA;;;AAK7DU,4BAAAA,eAAAA,kBACC+C,GAAA,CAACiC,qBAAAA,EAAAA;AACC,gCAAA,QAAA,gBAAAjC,GAAA,CAACkC,cAAAA,EAAAA;oCACC7F,KAAAA,EAAOc,WAAAA;oCACPsD,QAAAA,EAAUvD,YAAAA;oCACVX,QAAAA,EAAUa;;;0CAKhB0C,IAAA,CAACqC,sBAAAA,EAAAA;;kDACCnC,GAAA,CAACoC,YAAAA,EAAAA;wCACCC,GAAAA,EAAKlI,UAAAA;AACL8D,wCAAAA,IAAAA,EAAMjF,MAAMiF,IAAI;AAChBD,wCAAAA,IAAAA,EAAMhF,MAAMgF,IAAI;AAChB3C,wCAAAA,GAAAA,EAAKZ,gBAAgBO,OAAAA,GAAWF,YAAAA;wCAChCwH,MAAAA,EAAQ,IAAA;4CACN,IAAItJ,KAAAA,CAAMkC,OAAO,IAAIT,aAAAA,EAAe;gDAClCF,mBAAAA,CAAoB,IAAA,CAAA;AACtB,4CAAA;AACF,wCAAA,CAAA;wCACA8G,OAAAA,EAAS5B,qBAAAA;wCACT8C,KAAAA,EAAO;AAAEC,4CAAAA,MAAAA,EAAQ9F,qBAAqB,WAAA,GAAc8D;AAAU;;AAI/D9D,oCAAAA,kBAAAA,kBACCsD,GAAA,CAACyC,aAAAA,EAAAA;wCAAcC,WAAAA,EAAa9F,UAAAA;AAC1B,wCAAA,QAAA,gBAAAoD,GAAA,CAAC2C,cAAAA,EAAAA,EAAAA;;;;;;kCAMT7C,IAAA,CAACc,SAAAA,EAAAA;wBACCC,WAAAA,EAAa,CAAA;wBACbC,YAAAA,EAAc,CAAA;wBACdC,cAAAA,EAAe,UAAA;AACf6B,wBAAAA,OAAAA,EAASpE,gBAAAA,IAAoB9B,kBAAAA;;4BAE5B8B,gBAAAA,IAAoBvC,KAAAA,IAASC,wBAC5B8D,GAAA,CAAC6C,aAAAA,EAAAA;gCAAc1C,UAAAA,EAAW,YAAA;gCAAa2C,KAAAA,EAAM,UAAA;AAC1C7G,gCAAAA,QAAAA,EAAAA,KAAAA,IAASC,SAAS,CAAA,EAAGA,MAAAA,CAAO,CAAC,EAAED,OAAO,GAAG;;AAG7CS,4BAAAA,kBAAAA,kBACCsD,GAAA,CAAC6C,aAAAA,EAAAA;gCAAc1C,UAAAA,EAAW,YAAA;gCAAa2C,KAAAA,EAAM,UAAA;0CAC1C,CAAC,GAAG,EAAElG,UAAAA,CAAWE,CAAC,CAAC,OAAO,EAAEF,UAAAA,CAAWG,CAAC,CAAC,CAAC;;;;;;0BAMnDiD,GAAA,CAAC+C,iBAAAA,EAAAA;gBACCC,IAAAA,EAAMtH,iBAAAA;AACNuH,gBAAAA,OAAAA,EAAS,CAACC,KAAAA,GAAAA;oBACRvH,oBAAAA,CAAqB,KAAA,CAAA;AACrB,oBAAA,IAAIuH,UAAU,IAAA,EAAM;wBAClB9J,QAAAA,CAAS,IAAA,CAAA;AACX,oBAAA;AACF,gBAAA,CAAA;gBACAJ,KAAAA,EAAOA;;;;AAIf;;;;"}
1
+ {"version":3,"file":"PreviewBox.mjs","sources":["../../../../../../admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { isAbortError } from '@strapi/admin/strapi-admin';\nimport { Flex, IconButton } from '@strapi/design-system';\nimport { Crop as Resize, Download as DownloadIcon, Trash, PinMap } from '@strapi/icons';\nimport cropperjscss from 'cropperjs/dist/cropper.css?raw';\nimport { useIntl } from 'react-intl';\nimport { createGlobalStyle } from 'styled-components';\n\nimport { ASSET_TYPES } from '../../../../enums';\nimport { UploadAbortedError } from '../../../../services/uploadFileViaXHR';\nimport { useCropImg } from '../../../hooks/useCropImg';\nimport { useEditAsset } from '../../../hooks/useEditAsset';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { useUpload } from '../../../hooks/useUpload';\nimport { appendSearchParamsToUrl, createAssetUrl, getTrad, downloadFile } from '../../../utils';\nimport { CopyLinkButton } from '../../CopyLinkButton/CopyLinkButton';\nimport { UploadProgress } from '../../UploadProgress/UploadProgress';\nimport { RemoveAssetDialog } from '../RemoveAssetDialog';\n\nimport { AssetPreview } from './AssetPreview';\nimport { CroppingActions } from './CroppingActions';\nimport { FocalPointActions } from './FocalPointActions';\nimport {\n ActionRow,\n BadgeOverride,\n RelativeBox,\n UploadProgressWrapper,\n Wrapper,\n FocalPointImageWrapper,\n FocalPointAim,\n FocalPointHalo,\n} from './PreviewComponents';\n\nimport type {\n File as FileDefinition,\n RawFile,\n FocalPoint,\n} from '../../../../../../shared/contracts/files';\n\ninterface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface PreviewBoxProps {\n asset: Asset;\n canUpdate: boolean;\n canCopyLink: boolean;\n canDownload: boolean;\n replacementFile?: File;\n onDelete: (asset?: Asset | null) => void;\n onCropFinish: () => void;\n onCropStart: () => void;\n onCropCancel: () => void;\n trackedLocation?: string;\n formFocalPoint?: FocalPoint | null;\n onFocalPointStart: () => void;\n onFocalPointFinish: (focalPoint: FocalPoint) => void;\n onFocalPointCancel: () => void;\n}\n\nexport const PreviewBox = ({\n asset,\n canUpdate,\n canCopyLink,\n canDownload,\n onDelete,\n onCropFinish,\n onCropStart,\n onCropCancel,\n replacementFile,\n trackedLocation,\n formFocalPoint,\n onFocalPointStart,\n onFocalPointFinish,\n onFocalPointCancel,\n}: PreviewBoxProps) => {\n const CropperjsStyle = createGlobalStyle`${cropperjscss}`;\n const { trackUsage } = useTracking();\n const previewRef = React.useRef(null);\n const [isCropImageReady, setIsCropImageReady] = React.useState(false);\n const [hasCropIntent, setHasCropIntent] = React.useState<boolean | null>(null);\n const [assetUrl, setAssetUrl] = React.useState(createAssetUrl(asset, false));\n const [thumbnailUrl, setThumbnailUrl] = React.useState(createAssetUrl(asset, true));\n\n // When loading a cross-origin image for cropping, append a cache-busting parameter\n // so the browser makes a fresh request with CORS headers instead of serving a\n // previously cached non-CORS response (which would taint the canvas and break\n // cropping). Signed URLs are excluded because modifying them invalidates the signature.\n const cropUrl = React.useMemo(() => {\n if (!asset.isLocal && !asset.isUrlSigned && assetUrl) {\n return appendSearchParamsToUrl({ url: assetUrl, params: { updatedAt: asset.updatedAt } });\n }\n\n return assetUrl;\n }, [assetUrl, asset.isLocal, asset.isUrlSigned, asset.updatedAt]);\n\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { crop, produceFile, stopCropping, isCropping, isCropperReady, width, height } =\n useCropImg();\n const { editAsset, error, isLoading, progress, cancel } = useEditAsset();\n const [isInFocalPointMode, setIsInFocalPointMode] = React.useState<boolean>(false);\n const [focalPoint, setFocalPoint] = React.useState<FocalPoint>(\n formFocalPoint ?? { x: 50, y: 50 }\n );\n\n const {\n upload,\n isLoading: isLoadingUpload,\n cancel: cancelUpload,\n error: uploadError,\n progress: progressUpload,\n } = useUpload();\n\n React.useEffect(() => {\n // Whenever a replacementUrl is set, make sure to permutate the real asset.url by\n // the locally generated one\n if (replacementFile) {\n const fileLocalUrl = URL.createObjectURL(replacementFile);\n\n if (asset.isLocal) {\n asset.url = fileLocalUrl;\n }\n\n setAssetUrl(fileLocalUrl);\n setThumbnailUrl(fileLocalUrl);\n }\n }, [replacementFile, asset]);\n\n React.useEffect(() => {\n if (hasCropIntent === false) {\n stopCropping();\n onCropCancel();\n }\n }, [hasCropIntent, stopCropping, onCropCancel, onCropFinish]);\n\n React.useEffect(() => {\n if (hasCropIntent && isCropImageReady) {\n crop(previewRef.current!);\n onCropStart();\n }\n }, [isCropImageReady, hasCropIntent, onCropStart, crop]);\n\n const handleCropping = async () => {\n const nextAsset = { ...asset, width, height, folder: asset.folder?.id };\n const file = (await produceFile(nextAsset.name, nextAsset.mime!, nextAsset.updatedAt!)) as File;\n\n // Making sure that when persisting the new asset, the URL changes with width and height\n // So that the browser makes a request and handle the image caching correctly at the good size\n let optimizedCachingImage;\n let optimizedCachingThumbnailImage;\n\n if (asset.isLocal) {\n optimizedCachingImage = URL.createObjectURL(file);\n optimizedCachingThumbnailImage = optimizedCachingImage;\n asset.url = optimizedCachingImage;\n asset.rawFile = file;\n\n trackUsage('didCropFile', { duplicatedFile: null, location: trackedLocation! });\n } else {\n let updatedAsset;\n\n try {\n updatedAsset = await editAsset(nextAsset, file);\n } catch (error) {\n // The user cancelled the edit: nothing to report.\n if (isAbortError(error)) return;\n\n throw error;\n }\n\n optimizedCachingImage = createAssetUrl(updatedAsset, false);\n optimizedCachingThumbnailImage = createAssetUrl(updatedAsset, true);\n\n trackUsage('didCropFile', { duplicatedFile: false, location: trackedLocation! });\n }\n\n setAssetUrl(optimizedCachingImage);\n setThumbnailUrl(optimizedCachingThumbnailImage);\n setHasCropIntent(false);\n };\n\n const isInCroppingMode = isCropping && !isLoading;\n\n const handleDuplication = async () => {\n const nextAsset = { ...asset, width, height };\n const file = (await produceFile(\n nextAsset.name,\n nextAsset.mime!,\n nextAsset.updatedAt!\n )) as RawFile;\n\n try {\n await upload({ name: file.name, rawFile: file }, asset.folder?.id ? asset.folder.id : null);\n } catch (error) {\n // The user cancelled the upload: nothing to report.\n if (error instanceof UploadAbortedError) return;\n\n throw error;\n }\n\n trackUsage('didCropFile', { duplicatedFile: true, location: trackedLocation! });\n\n setHasCropIntent(false);\n onCropFinish();\n };\n\n const handleCropCancel = () => {\n setHasCropIntent(false);\n };\n\n const handleCropStart = () => {\n setHasCropIntent(true);\n };\n\n const calculateFocalPointFromEvent = (e: React.MouseEvent<HTMLElement>): FocalPoint => {\n const { clientX, clientY } = e;\n const rect = e.currentTarget.getBoundingClientRect();\n const posX = clientX - rect.left;\n const posY = clientY - rect.top;\n\n return {\n x: Number(((posX / rect.width) * 100).toFixed(2)),\n y: Number(((posY / rect.height) * 100).toFixed(2)),\n };\n };\n\n const handleFocalPointClick = (e: React.MouseEvent<HTMLElement>) => {\n if (!isInFocalPointMode) return;\n setFocalPoint(calculateFocalPointFromEvent(e));\n };\n\n const handleFocalPointCancel = () => {\n setIsInFocalPointMode(false);\n setFocalPoint(formFocalPoint ?? { x: 50, y: 50 });\n onFocalPointCancel();\n };\n\n const handleFocalPointStart = () => {\n onFocalPointStart();\n setIsInFocalPointMode(true);\n };\n\n const handleFocalPointValidate = () => {\n setIsInFocalPointMode(false);\n onFocalPointFinish(focalPoint);\n };\n\n const handleFocalPointReset = () => {\n setFocalPoint({ x: 50, y: 50 });\n };\n\n return (\n <>\n <CropperjsStyle />\n <RelativeBox hasRadius background=\"neutral150\" borderColor=\"neutral200\">\n {isCropperReady && isInCroppingMode && (\n <CroppingActions\n onValidate={handleCropping}\n onDuplicate={asset.isLocal ? undefined : handleDuplication}\n onCancel={handleCropCancel}\n />\n )}\n\n {isInFocalPointMode && (\n <FocalPointActions\n onValidate={handleFocalPointValidate}\n onCancel={handleFocalPointCancel}\n onReset={handleFocalPointReset}\n />\n )}\n\n <ActionRow paddingLeft={3} paddingRight={3} justifyContent=\"flex-end\">\n <Flex gap={1}>\n {canUpdate && !asset.isLocal && (\n <IconButton\n label={formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n onClick={() => setShowConfirmDialog(true)}\n >\n <Trash />\n </IconButton>\n )}\n\n {canDownload && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.download'),\n defaultMessage: 'Download',\n })}\n onClick={() => downloadFile(assetUrl!, asset.name)}\n >\n <DownloadIcon />\n </IconButton>\n )}\n\n {canCopyLink && <CopyLinkButton url={assetUrl!} />}\n\n {canUpdate && asset.mime?.includes(ASSET_TYPES.Image) && (\n <IconButton\n label={formatMessage({ id: getTrad('control-card.crop'), defaultMessage: 'Crop' })}\n onClick={handleCropStart}\n >\n <Resize />\n </IconButton>\n )}\n\n {canUpdate && asset.mime?.includes(ASSET_TYPES.Image) && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.set-focal-point'),\n defaultMessage: 'Set focal point',\n })}\n onClick={handleFocalPointStart}\n >\n <PinMap />\n </IconButton>\n )}\n </Flex>\n </ActionRow>\n\n <Wrapper>\n {/* This one is for editting an asset */}\n {isLoading && (\n <UploadProgressWrapper>\n <UploadProgress error={error} onCancel={cancel} progress={progress} />\n </UploadProgressWrapper>\n )}\n\n {/* This one is for duplicating an asset after cropping */}\n {isLoadingUpload && (\n <UploadProgressWrapper>\n <UploadProgress\n error={uploadError}\n onCancel={cancelUpload}\n progress={progressUpload}\n />\n </UploadProgressWrapper>\n )}\n\n <FocalPointImageWrapper>\n <AssetPreview\n ref={previewRef}\n mime={asset.mime!}\n name={asset.name}\n url={hasCropIntent ? cropUrl! : thumbnailUrl!}\n onLoad={() => {\n if (asset.isLocal || hasCropIntent) {\n setIsCropImageReady(true);\n }\n }}\n onClick={handleFocalPointClick}\n style={{ cursor: isInFocalPointMode ? 'crosshair' : undefined }}\n />\n\n {/* Show the set focal point marker */}\n {isInFocalPointMode && (\n <FocalPointAim $focalPoint={focalPoint}>\n <FocalPointHalo />\n </FocalPointAim>\n )}\n </FocalPointImageWrapper>\n </Wrapper>\n\n <ActionRow\n paddingLeft={2}\n paddingRight={2}\n justifyContent=\"flex-end\"\n $blurry={isInCroppingMode || isInFocalPointMode}\n >\n {isInCroppingMode && width && height && (\n <BadgeOverride background=\"neutral900\" color=\"neutral0\">\n {width && height ? `${height}✕${width}` : 'N/A'}\n </BadgeOverride>\n )}\n {isInFocalPointMode && (\n <BadgeOverride background=\"neutral900\" color=\"neutral0\">\n {`x: ${focalPoint.x}% | y: ${focalPoint.y}%`}\n </BadgeOverride>\n )}\n </ActionRow>\n </RelativeBox>\n\n <RemoveAssetDialog\n open={showConfirmDialog}\n onClose={(value) => {\n setShowConfirmDialog(false);\n if (value === null) {\n onDelete(null);\n }\n }}\n asset={asset}\n />\n </>\n );\n};\n"],"names":["PreviewBox","asset","canUpdate","canCopyLink","canDownload","onDelete","onCropFinish","onCropStart","onCropCancel","replacementFile","trackedLocation","formFocalPoint","onFocalPointStart","onFocalPointFinish","onFocalPointCancel","CropperjsStyle","createGlobalStyle","cropperjscss","trackUsage","useTracking","previewRef","React","useRef","isCropImageReady","setIsCropImageReady","useState","hasCropIntent","setHasCropIntent","assetUrl","setAssetUrl","createAssetUrl","thumbnailUrl","setThumbnailUrl","cropUrl","useMemo","isLocal","isUrlSigned","appendSearchParamsToUrl","url","params","updatedAt","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","crop","produceFile","stopCropping","isCropping","isCropperReady","width","height","useCropImg","editAsset","error","isLoading","progress","cancel","useEditAsset","isInFocalPointMode","setIsInFocalPointMode","focalPoint","setFocalPoint","x","y","upload","isLoadingUpload","cancelUpload","uploadError","progressUpload","useUpload","useEffect","fileLocalUrl","URL","createObjectURL","current","handleCropping","nextAsset","folder","id","file","name","mime","optimizedCachingImage","optimizedCachingThumbnailImage","rawFile","duplicatedFile","location","updatedAsset","isAbortError","isInCroppingMode","handleDuplication","UploadAbortedError","handleCropCancel","handleCropStart","calculateFocalPointFromEvent","e","clientX","clientY","rect","currentTarget","getBoundingClientRect","posX","left","posY","top","Number","toFixed","handleFocalPointClick","handleFocalPointCancel","handleFocalPointStart","handleFocalPointValidate","handleFocalPointReset","_jsxs","_Fragment","_jsx","RelativeBox","hasRadius","background","borderColor","CroppingActions","onValidate","onDuplicate","undefined","onCancel","FocalPointActions","onReset","ActionRow","paddingLeft","paddingRight","justifyContent","Flex","gap","IconButton","label","defaultMessage","onClick","Trash","getTrad","downloadFile","DownloadIcon","CopyLinkButton","includes","ASSET_TYPES","Image","Resize","PinMap","Wrapper","UploadProgressWrapper","UploadProgress","FocalPointImageWrapper","AssetPreview","ref","onLoad","style","cursor","FocalPointAim","$focalPoint","FocalPointHalo","$blurry","BadgeOverride","color","RemoveAssetDialog","open","onClose","value"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"FilterList.js","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n | string\n | NumberKeyedObject\n | Record<string, string | NumberKeyedObject>\n | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":";;;AAAA;AA0BA,kFACA,MAAMA,WAAAA,GAAc,CAACC,GAAAA,GAAAA;AACnB,IAAA,IAAIC,KAAAA,CAAMC,OAAO,CAACF,GAAAA,CAAAA,EAAM,OAAOA,GAAAA;IAC/B,IAAIA,GAAAA,IAAO,OAAOA,GAAAA,KAAQ,QAAA,EAAU;QAClC,MAAMG,MAAAA,GAASC,MAAAA,CAAOD,MAAM,CAACH,GAAAA,CAAAA;AAC7B,QAAA,IAAIG,MAAAA,CAAOE,MAAM,GAAG,CAAA,IAAKF,MAAAA,CAAOG,KAAK,CAAC,CAACC,CAAAA,GAAM,OAAOA,CAAAA,KAAM,QAAA,CAAA,EAAW,OAAOJ,MAAAA;AAC9E,IAAA;IACA,OAAOK,SAAAA;AACT,CAAA;AAwBO,MAAMC,aAAa,CAAC,EAAEC,cAAc,EAAEC,aAAa,EAAEC,cAAc,EAAmB,GAAA;AAC3F,IAAA,MAAMC,cAAc,CAACC,MAAAA,GAAAA;AACnB,QAAA,MAAM,CAACC,IAAAA,CAAK,GAAGX,MAAAA,CAAOY,IAAI,CAACF,MAAAA,CAAAA;QAC3B,MAAMG,SAAAA,GAAYH,MAAM,CAACC,IAAAA,CAAK;AAC9B,QAAA,MAAM,CAACG,UAAAA,CAAW,GAAGd,MAAAA,CAAOY,IAAI,CAACC,SAAAA,CAAAA;QACjC,MAAME,WAAAA,GAAcF,SAAU,CAACC,UAAAA,CAAW;AAE1C,QAAA,MAAME,WAAAA,GAAcV,cAAAA,CAAeI,MAAM,CAAC,CAACO,UAAAA,GAAAA;YACzC,IAAI,OAAOF,gBAAgB,QAAA,EAAU;AACnC,gBAAA,OAAOE,UAAU,CAACN,IAAAA,CAAK,GAAGG,WAAW,KAAKC,WAAAA;AAC5C,YAAA;AACA,YAAA,IAAI,OAAOA,WAAAA,KAAgB,QAAA,IAAYA,WAAAA,KAAgB,IAAA,EAAM;AAC3D,gBAAA,OAAOG,IAAAA,CAAKC,SAAS,CAACF,UAAU,CAACN,IAAAA,CAAK,GAAGG,UAAAA,CAAW,CAAA,KAAMI,IAAAA,CAAKC,SAAS,CAACJ,WAAAA,CAAAA;AAC3E,YAAA;YACA,OAAO,IAAA;AACT,QAAA,CAAA,CAAA;QAEAP,cAAAA,CAAeQ,WAAAA,CAAAA;AACjB,IAAA,CAAA;AAEA,IAAA,OAAOV,cAAAA,CAAec,GAAG,CAAC,CAACV,MAAAA,EAAQW,CAAAA,GAAAA;AACjC,QAAA,MAAMC,gBAAgBtB,MAAAA,CAAOY,IAAI,CAACF,MAAAA,CAAO,CAAC,CAAA,CAAE;QAC5C,MAAMa,SAAAA,GAAYhB,cAAciB,IAAI,CAAC,CAAC,EAAEb,IAAI,EAAE,GAAKA,IAAAA,KAASW,aAAAA,CAAAA;QAE5D,IAAI,CAACC,WAAW,OAAO,IAAA;QAEvB,MAAMV,SAAAA,GAAYH,MAAM,CAACY,aAAAA,CAAc;AACvC,QAAA,MAAMG,WAAWzB,MAAAA,CAAOY,IAAI,CAACC,SAAAA,CAAW,CAAC,CAAA,CAAE;QAC3C,MAAMa,QAAAA,GAAWb,SAAU,CAACY,QAAAA,CAAS;QAErC,IAAIE,KAAAA;QACJ,IAAI9B,KAAAA,CAAMC,OAAO,CAAC4B,QAAAA,CAAAA,EAAW;YAC3BC,KAAAA,GAAQD,QAAAA,CAASE,IAAI,CAAC,IAAA,CAAA;AACxB,QAAA,CAAA,MAAO,IAAI,OAAOF,QAAAA,KAAa,QAAA,IAAYA,aAAa,IAAA,EAAM;YAC5D,MAAMG,KAAAA,GAAQ,QAACH,CAAqCI,SAAS;YAC7D,MAAMC,GAAAA,GAAMpC,YAAYkC,KAAAA,IAASH,QAAAA,CAAAA;YACjCC,KAAAA,GAAQI,GAAAA,GAAMA,GAAAA,CAAIH,IAAI,CAAC,IAAA,CAAA,GAAQ5B,OAAOD,MAAM,CAAC2B,QAAAA,CAAAA,CAAUE,IAAI,CAAC,IAAA,CAAA;QAC9D,CAAA,MAAO;YACLD,KAAAA,GAAQD,QAAAA;AACV,QAAA;AAEA,QAAA,IAAIM,iBAAAA,GAAoBP,QAAAA;QACxB,IAAIF,SAAAA,CAAUZ,IAAI,KAAK,MAAA,EAAQ;YAC7B,MAAMsB,SAAAA,GAAYpC,MAAMC,OAAO,CAAC4B,YAC5BA,QAAAA,GACA/B,WAAAA,CAAY,QAAC+B,EAAsCI,SAAAA,IAAaJ,QAAAA,CAAAA;AAEpE,YAAA,IAAIO,WAAWC,QAAAA,CAAS,OAAA,CAAA,IAAYD,SAAAA,CAAUC,QAAQ,CAAC,OAAA,CAAA,EAAU;gBAC/DP,KAAAA,GAAQ,MAAA;gBACRK,iBAAAA,GAAoBP,QAAAA,KAAa,SAAS,KAAA,GAAQ,KAAA;YACpD,CAAA,MAAO;gBACLO,iBAAAA,GAAoBP,QAAAA,KAAa,cAAc,KAAA,GAAQ,KAAA;AACzD,YAAA;AACF,QAAA;AAEA,QAAA,qBACEU,GAAA,CAACC,SAAAA,EAAAA;YAGCb,SAAAA,EAAWA,SAAAA;YACXb,MAAAA,EAAQA,MAAAA;YACR2B,OAAAA,EAAS5B,WAAAA;YACTgB,QAAAA,EAAUO,iBAAAA;YACVL,KAAAA,EAAOA;WALF,CAAA,EAAGL,aAAAA,CAAc,CAAC,EAAED,CAAAA,CAAAA,CAAG,CAAA;AAQlC,IAAA,CAAA,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"FilterList.mjs","sources":["../../../../../admin/src/legacy/components/FilterList/FilterList.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterList\n *\n */\nimport { FilterTag } from './FilterTag';\n\ntype NumberKeyedObject = Record<number, string>;\n\ntype StringFilter = {\n [key: string]: string;\n};\n\ntype MimeFilter = {\n [key: string]:\n string | NumberKeyedObject | Record<string, string | NumberKeyedObject> | undefined;\n};\n\nexport type FilterStructure = {\n [key: string]: MimeFilter | StringFilter | undefined;\n};\n\n/** Normalizes array or number-keyed object { 0: 'a', 1: 'b' } to string array */\nconst toMimeArray = (val: unknown): string[] | undefined => {\n if (Array.isArray(val)) return val;\n if (val && typeof val === 'object') {\n const values = Object.values(val);\n if (values.length > 0 && values.every((v) => typeof v === 'string')) return values as string[];\n }\n return undefined;\n};\n\nexport interface FilterListProps {\n appliedFilters: FilterStructure[];\n filtersSchema: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema?: {\n type?: string;\n mainField?: {\n name: string;\n type: string;\n };\n options?: {\n label: string;\n value: string;\n }[];\n };\n }[];\n onRemoveFilter: (filters: FilterStructure[]) => void;\n}\n\nexport const FilterList = ({ appliedFilters, filtersSchema, onRemoveFilter }: FilterListProps) => {\n const handleClick = (filter: FilterStructure) => {\n const [name] = Object.keys(filter);\n const filterObj = filter[name];\n const [filterType] = Object.keys(filterObj!);\n const filterValue = filterObj![filterType];\n\n const nextFilters = appliedFilters.filter((prevFilter) => {\n if (typeof filterValue === 'string') {\n return prevFilter[name]?.[filterType] !== filterValue;\n }\n if (typeof filterValue === 'object' && filterValue !== null) {\n return JSON.stringify(prevFilter[name]?.[filterType]) !== JSON.stringify(filterValue);\n }\n return true;\n });\n\n onRemoveFilter(nextFilters);\n };\n\n return appliedFilters.map((filter, i) => {\n const attributeName = Object.keys(filter)[0];\n const attribute = filtersSchema.find(({ name }) => name === attributeName);\n\n if (!attribute) return null;\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n const rawValue = filterObj![operator];\n\n let value: string;\n if (Array.isArray(rawValue)) {\n value = rawValue.join(', ');\n } else if (typeof rawValue === 'object' && rawValue !== null) {\n const inner = (rawValue as { $contains?: unknown }).$contains;\n const arr = toMimeArray(inner ?? rawValue);\n value = arr ? arr.join(', ') : Object.values(rawValue).join(', ');\n } else {\n value = rawValue!;\n }\n\n let displayedOperator = operator;\n if (attribute.name === 'mime') {\n const mimeArray = Array.isArray(rawValue)\n ? rawValue\n : toMimeArray((rawValue as { $contains?: unknown })?.$contains ?? rawValue);\n\n if (mimeArray?.includes('image') && mimeArray.includes('video')) {\n value = 'file';\n displayedOperator = operator === '$not' ? '$eq' : '$ne';\n } else {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n }\n }\n\n return (\n <FilterTag\n // eslint-disable-next-line react/no-array-index-key\n key={`${attributeName}-${i}`}\n attribute={attribute}\n filter={filter}\n onClick={handleClick}\n operator={displayedOperator}\n value={value as string}\n />\n );\n });\n};\n"],"names":["toMimeArray","val","Array","isArray","values","Object","length","every","v","undefined","FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","name","keys","filterObj","filterType","filterValue","nextFilters","prevFilter","JSON","stringify","map","i","attributeName","attribute","find","operator","rawValue","value","join","inner","$contains","arr","displayedOperator","mimeArray","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPopover.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n | 'mime'\n | 'createdAt'\n | 'updatedAt'\n | '$contains'\n | '$notContains'\n | '$eq'\n | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
1
+ {"version":3,"file":"FilterPopover.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n string[] | string | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n 'mime' | 'createdAt' | 'updatedAt' | '$contains' | '$notContains' | '$eq' | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterPopover.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n | 'mime'\n | 'createdAt'\n | 'updatedAt'\n | '$contains'\n | '$notContains'\n | '$eq'\n | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
1
+ {"version":3,"file":"FilterPopover.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterPopover.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n string[] | string | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const { value } = modifiedData;\n\n if (value) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n 'mime' | 'createdAt' | 'updatedAt' | '$contains' | '$notContains' | '$eq' | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === value\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: value } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4} style={{ zIndex: 499 }}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n"],"names":["FilterPopover","displayedFilters","filters","onSubmit","onToggle","formatMessage","useIntl","modifiedData","setModifiedData","React","useState","name","filter","value","handleChangeFilterField","nextField","find","f","fieldSchema","type","options","filterValue","getFilterList","toString","handleChangeOperator","operator","prev","handleSubmit","e","preventDefault","stopPropagation","alreadyAppliedFilters","Object","keys","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","mime","$not","Array","isArray","$contains","undefined","nextFilters","hasFilter","modifiedDataFilter","filtersWithoutFile","filterType","oppositeFilter","oppositeFilterIndex","findIndex","hasOppositeFilter","slice","splice","modifiedDataName","appliedFilter","_jsx","Popover","Content","sideOffset","style","zIndex","form","_jsxs","Flex","padding","direction","alignItems","gap","minWidth","Box","SingleSelect","aria-label","id","defaultMessage","size","onChange","map","SingleSelectOption","metadatas","label","option","intlLabel","FilterValueInput","Button","variant","startIcon","Plus","fullWidth"],"mappings":"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"}
@@ -4,7 +4,8 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
5
  var reactIntl = require('react-intl');
6
6
 
7
- const FilterValueInput = ({ label = '', onChange, options = [], type, value = '' })=>{
7
+ const EMPTY_OPTIONS = [];
8
+ const FilterValueInput = ({ label = '', onChange, options = EMPTY_OPTIONS, type, value = '' })=>{
8
9
  const { formatMessage } = reactIntl.useIntl();
9
10
  if (type === 'date') {
10
11
  return /*#__PURE__*/ jsxRuntime.jsx(designSystem.DateTimePicker, {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterValueInput.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = [],\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;;;MAWaA,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAU,EAAE,EACZC,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,cAAA,CAACC,2BAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,cAAA,CAACa,yBAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,cAAA,CAACiB,+BAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
1
+ {"version":3,"file":"FilterValueInput.js","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nconst EMPTY_OPTIONS: NonNullable<FilterValueInputProps['options']> = [];\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = EMPTY_OPTIONS,\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["EMPTY_OPTIONS","FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;;;AAGA,MAAMA,gBAA+D,EAAE;MAU1DC,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAUJ,aAAa,EACvBK,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,cAAA,CAACC,2BAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,cAAA,CAACa,yBAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,cAAA,CAACiB,+BAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
@@ -2,7 +2,8 @@ import { jsx } from 'react/jsx-runtime';
2
2
  import { DateTimePicker, SingleSelect, SingleSelectOption } from '@strapi/design-system';
3
3
  import { useIntl } from 'react-intl';
4
4
 
5
- const FilterValueInput = ({ label = '', onChange, options = [], type, value = '' })=>{
5
+ const EMPTY_OPTIONS = [];
6
+ const FilterValueInput = ({ label = '', onChange, options = EMPTY_OPTIONS, type, value = '' })=>{
6
7
  const { formatMessage } = useIntl();
7
8
  if (type === 'date') {
8
9
  return /*#__PURE__*/ jsx(DateTimePicker, {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterValueInput.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = [],\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;MAWaA,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAU,EAAE,EACZC,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,GAAA,CAACC,cAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,GAAA,CAACa,YAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,GAAA,CAACiB,kBAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
1
+ {"version":3,"file":"FilterValueInput.mjs","sources":["../../../../../admin/src/legacy/components/FilterPopover/FilterValueInput.tsx"],"sourcesContent":["import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nconst EMPTY_OPTIONS: NonNullable<FilterValueInputProps['options']> = [];\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = EMPTY_OPTIONS,\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n"],"names":["EMPTY_OPTIONS","FilterValueInput","label","onChange","options","type","value","formatMessage","useIntl","_jsx","DateTimePicker","clearLabel","id","defaultMessage","aria-label","name","date","formattedDate","Date","toISOString","onClear","undefined","SingleSelect","toString","map","option","SingleSelectOption"],"mappings":";;;;AAGA,MAAMA,gBAA+D,EAAE;MAU1DC,gBAAAA,GAAmB,CAAC,EAC/BC,KAAAA,GAAQ,EAAE,EACVC,QAAQ,EACRC,OAAAA,GAAUJ,aAAa,EACvBK,IAAI,EACJC,KAAAA,GAAQ,EAAE,EACY,GAAA;IACtB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,IAAIH,SAAS,MAAA,EAAQ;AACnB,QAAA,qBACEI,GAAA,CAACC,cAAAA,EAAAA;AACCC,YAAAA,UAAAA,EAAYJ,aAAAA,CAAc;gBAAEK,EAAAA,EAAI,YAAA;gBAAcC,cAAAA,EAAgB;AAAQ,aAAA,CAAA;YACtEC,YAAAA,EAAYZ,KAAAA;YACZa,IAAAA,EAAK,gBAAA;AACLZ,YAAAA,QAAAA,EAAU,CAACa,IAAAA,GAAAA;AACT,gBAAA,MAAMC,gBAAgBD,IAAAA,GAAO,IAAIE,IAAAA,CAAKF,IAAAA,CAAAA,CAAMG,WAAW,EAAA,GAAK,EAAA;gBAE5DhB,QAAAA,CAASc,aAAAA,CAAAA;AACX,YAAA,CAAA;AACAG,YAAAA,OAAAA,EAAS,IAAMjB,QAAAA,CAAS,EAAA,CAAA;YACxBG,KAAAA,EAAOA,KAAAA,GAAQ,IAAIY,IAAAA,CAAKZ,KAAAA,CAAAA,GAASe;;AAGvC,IAAA;AAEA,IAAA,qBACEZ,GAAA,CAACa,YAAAA,EAAAA;QACCR,YAAAA,EAAYZ,KAAAA;AACZC,QAAAA,QAAAA,EAAU,CAACG,KAAAA,GAA2BH,QAAAA,CAASG,KAAAA,CAAMiB,QAAQ,EAAA,CAAA;QAC7DjB,KAAAA,EAAOA,KAAAA;AAENF,QAAAA,QAAAA,EAAAA,OAAAA,EAASoB,IAAI,CAACC,MAAAA,GAAAA;AACb,YAAA,qBACEhB,GAAA,CAACiB,kBAAAA,EAAAA;AAAsCpB,gBAAAA,KAAAA,EAAOmB,OAAOnB,KAAK;AACvDmB,gBAAAA,QAAAA,EAAAA,MAAAA,CAAOvB;AADeuB,aAAAA,EAAAA,MAAAA,CAAOnB,KAAK,CAAA;AAIzC,QAAA,CAAA;;AAGN;;;;"}
@@ -32,12 +32,14 @@ const STEPS = {
32
32
  AssetUpload: 'UploadAsset',
33
33
  FolderCreate: 'FolderCreate'
34
34
  };
35
- const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = [
35
+ const DEFAULT_ALLOWED_TYPES = [
36
36
  'files',
37
37
  'images',
38
38
  'videos',
39
39
  'audios'
40
- ], multiple = true, initiallySelectedAssets = [] })=>{
40
+ ];
41
+ const EMPTY_INITIALLY_SELECTED_ASSETS = [];
42
+ const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = DEFAULT_ALLOWED_TYPES, multiple = true, initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS })=>{
41
43
  const [step, setStep] = React__namespace.useState(STEPS.AssetSelect);
42
44
  const [folderId, setFolderId] = React__namespace.useState(null);
43
45
  switch(step){
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryDialog.js","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = ['files', 'images', 'videos', 'audios'],\n multiple = true,\n initiallySelectedAssets = [],\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAYO,MAAMC,qBAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAe;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,QAAA;AAAU,IAAA;AAAS,CAAA,EACtDC,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0B,EAAE,EACJ,GAAA;IACxB,MAAM,CAACC,MAAMC,OAAAA,CAAQ,GAAGC,iBAAMC,QAAQ,CAACb,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACa,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKV,MAAMC,WAAW;AACpB,YAAA,qBACEe,cAAA,CAACC,uBAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQX,KAAAA,CAAME,WAAW,CAAA;gBAC3CmB,WAAAA,EAAa,IAAMV,OAAAA,CAAQX,KAAAA,CAAMG,YAAY,CAAA;gBAC7CmB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKR,MAAMG,YAAY;AACrB,YAAA,qBACEa,cAAA,CAACO,iCAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQX,KAAAA,CAAMC,WAAW,CAAA;gBACxCuB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,cAAA,CAACS,mCAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQX,KAAAA,CAAMC,WAAW,CAAA;gBAAGa,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
1
+ {"version":3,"file":"MediaLibraryDialog.js","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst DEFAULT_ALLOWED_TYPES: NonNullable<MediaLibraryDialogProps['allowedTypes']> = [\n 'files',\n 'images',\n 'videos',\n 'audios',\n];\nconst EMPTY_INITIALLY_SELECTED_ASSETS: NonNullable<\n MediaLibraryDialogProps['initiallySelectedAssets']\n> = [];\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = DEFAULT_ALLOWED_TYPES,\n multiple = true,\n initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS,\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","DEFAULT_ALLOWED_TYPES","EMPTY_INITIALLY_SELECTED_ASSETS","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAKA,MAAMC,qBAAAA,GAA8E;AAClF,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA;AACD,CAAA;AACD,MAAMC,kCAEF,EAAE;MASOC,kBAAAA,GAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAeL,qBAAqB,EACpCM,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0BN,+BAA+B,EACjC,GAAA;IACxB,MAAM,CAACO,MAAMC,OAAAA,CAAQ,GAAGC,iBAAMC,QAAQ,CAACf,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACe,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,gBAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKZ,MAAMC,WAAW;AACpB,YAAA,qBACEiB,cAAA,CAACC,uBAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQb,KAAAA,CAAME,WAAW,CAAA;gBAC3CqB,WAAAA,EAAa,IAAMV,OAAAA,CAAQb,KAAAA,CAAMG,YAAY,CAAA;gBAC7CqB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKV,MAAMG,YAAY;AACrB,YAAA,qBACEe,cAAA,CAACO,iCAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBACxCyB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,cAAA,CAACS,mCAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBAAGe,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
@@ -10,12 +10,14 @@ const STEPS = {
10
10
  AssetUpload: 'UploadAsset',
11
11
  FolderCreate: 'FolderCreate'
12
12
  };
13
- const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = [
13
+ const DEFAULT_ALLOWED_TYPES = [
14
14
  'files',
15
15
  'images',
16
16
  'videos',
17
17
  'audios'
18
- ], multiple = true, initiallySelectedAssets = [] })=>{
18
+ ];
19
+ const EMPTY_INITIALLY_SELECTED_ASSETS = [];
20
+ const MediaLibraryDialog = ({ onClose, onSelectAssets, allowedTypes = DEFAULT_ALLOWED_TYPES, multiple = true, initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS })=>{
19
21
  const [step, setStep] = React.useState(STEPS.AssetSelect);
20
22
  const [folderId, setFolderId] = React.useState(null);
21
23
  switch(step){
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryDialog.mjs","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = ['files', 'images', 'videos', 'audios'],\n multiple = true,\n initiallySelectedAssets = [],\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAYO,MAAMC,qBAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAe;AAAC,IAAA,OAAA;AAAS,IAAA,QAAA;AAAU,IAAA,QAAA;AAAU,IAAA;AAAS,CAAA,EACtDC,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0B,EAAE,EACJ,GAAA;IACxB,MAAM,CAACC,MAAMC,OAAAA,CAAQ,GAAGC,MAAMC,QAAQ,CAACb,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACa,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,KAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKV,MAAMC,WAAW;AACpB,YAAA,qBACEe,GAAA,CAACC,WAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQX,KAAAA,CAAME,WAAW,CAAA;gBAC3CmB,WAAAA,EAAa,IAAMV,OAAAA,CAAQX,KAAAA,CAAMG,YAAY,CAAA;gBAC7CmB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKR,MAAMG,YAAY;AACrB,YAAA,qBACEa,GAAA,CAACO,gBAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQX,KAAAA,CAAMC,WAAW,CAAA;gBACxCuB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,GAAA,CAACS,iBAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQX,KAAAA,CAAMC,WAAW,CAAA;gBAAGa,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
1
+ {"version":3,"file":"MediaLibraryDialog.mjs","sources":["../../../../../admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst DEFAULT_ALLOWED_TYPES: NonNullable<MediaLibraryDialogProps['allowedTypes']> = [\n 'files',\n 'images',\n 'videos',\n 'audios',\n];\nconst EMPTY_INITIALLY_SELECTED_ASSETS: NonNullable<\n MediaLibraryDialogProps['initiallySelectedAssets']\n> = [];\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n initiallySelectedAssets?: File[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = DEFAULT_ALLOWED_TYPES,\n multiple = true,\n initiallySelectedAssets = EMPTY_INITIALLY_SELECTED_ASSETS,\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n initiallySelectedAssets={initiallySelectedAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple={multiple}\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","DEFAULT_ALLOWED_TYPES","EMPTY_INITIALLY_SELECTED_ASSETS","MediaLibraryDialog","onClose","onSelectAssets","allowedTypes","multiple","initiallySelectedAssets","step","setStep","React","useState","folderId","setFolderId","_jsx","AssetDialog","open","onValidate","onAddAsset","onAddFolder","onChangeFolder","EditFolderDialog","parentFolderId","UploadAssetDialog"],"mappings":";;;;;;AAAA;AAOA,MAAMA,KAAAA,GAAQ;IACZC,WAAAA,EAAa,aAAA;IACbC,WAAAA,EAAa,aAAA;IACbC,YAAAA,EAAc;AAChB,CAAA;AAKA,MAAMC,qBAAAA,GAA8E;AAClF,IAAA,OAAA;AACA,IAAA,QAAA;AACA,IAAA,QAAA;AACA,IAAA;AACD,CAAA;AACD,MAAMC,kCAEF,EAAE;MASOC,kBAAAA,GAAqB,CAAC,EACjCC,OAAO,EACPC,cAAc,EACdC,YAAAA,GAAeL,qBAAqB,EACpCM,QAAAA,GAAW,IAAI,EACfC,uBAAAA,GAA0BN,+BAA+B,EACjC,GAAA;IACxB,MAAM,CAACO,MAAMC,OAAAA,CAAQ,GAAGC,MAAMC,QAAQ,CAACf,MAAMC,WAAW,CAAA;AACxD,IAAA,MAAM,CAACe,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,KAAAA,CAAMC,QAAQ,CAAgB,IAAA,CAAA;IAE9D,OAAQH,IAAAA;AACN,QAAA,KAAKZ,MAAMC,WAAW;AACpB,YAAA,qBACEiB,GAAA,CAACC,WAAAA,EAAAA;gBACCV,YAAAA,EAAcA,YAAAA;gBACdO,QAAAA,EAAUA,QAAAA;gBACVI,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAASA,OAAAA;gBACTc,UAAAA,EAAYb,cAAAA;gBACZG,uBAAAA,EAAyBA,uBAAAA;gBACzBW,UAAAA,EAAY,IAAMT,OAAAA,CAAQb,KAAAA,CAAME,WAAW,CAAA;gBAC3CqB,WAAAA,EAAa,IAAMV,OAAAA,CAAQb,KAAAA,CAAMG,YAAY,CAAA;gBAC7CqB,cAAAA,EAAgB,CAACR,WAAaC,WAAAA,CAAYD,QAAAA,CAAAA;gBAC1CN,QAAAA,EAAUA;;AAIhB,QAAA,KAAKV,MAAMG,YAAY;AACrB,YAAA,qBACEe,GAAA,CAACO,gBAAAA,EAAAA;gBACCL,IAAI,EAAA,IAAA;gBACJb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBACxCyB,cAAAA,EAAgBV;;AAItB,QAAA;AACE,YAAA,qBACEE,GAAA,CAACS,iBAAAA,EAAAA;gBAAkBP,IAAI,EAAA,IAAA;gBAACb,OAAAA,EAAS,IAAMM,OAAAA,CAAQb,KAAAA,CAAMC,WAAW,CAAA;gBAAGe,QAAAA,EAAUA;;AAEnF;AACF;;;;"}
@@ -36,12 +36,13 @@ function _interopNamespace(e) {
36
36
  var React__namespace = /*#__PURE__*/_interopNamespace(React);
37
37
 
38
38
  // TODO: find a better naming convention for the file that was an index file before
39
+ const EMPTY_ATTRIBUTE = {};
39
40
  const STEPS = {
40
41
  AssetSelect: 'SelectAsset',
41
42
  AssetUpload: 'UploadAsset',
42
43
  FolderCreate: 'FolderCreate'
43
44
  };
44
- const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute: { allowedTypes = null, multiple = false } = {}, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
45
+ const MediaLibraryInput = /*#__PURE__*/ React__namespace.forwardRef(({ attribute: { allowedTypes = null, multiple = false } = EMPTY_ATTRIBUTE, label, hint, disabled = false, labelAction = undefined, name, required = false }, forwardedRef)=>{
45
46
  const { formatMessage } = reactIntl.useIntl();
46
47
  const { onChange, value, error } = strapiAdmin.useField(name);
47
48
  const [uploadedFiles, setUploadedFiles] = React__namespace.useState([]);