@strapi/upload 5.29.0 → 5.30.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +31 -9
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs +25 -3
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  5. package/dist/admin/ai/components/AIUploadModal.js +3 -2
  6. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  7. package/dist/admin/ai/components/AIUploadModal.mjs +3 -2
  8. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  9. package/dist/admin/components/AssetCard/AssetCard.js +5 -4
  10. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
  11. package/dist/admin/components/AssetCard/AssetCard.mjs +2 -1
  12. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
  13. package/dist/admin/components/AssetCard/AssetCardBase.js +1 -1
  14. package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -1
  15. package/dist/admin/components/AssetCard/DocAssetCard.js +3 -7
  16. package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
  17. package/dist/admin/components/AssetCard/DocAssetCard.mjs +3 -7
  18. package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
  19. package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -1
  20. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
  21. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -1
  22. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
  23. package/dist/admin/components/AssetCard/UploadingAssetCard.js +5 -4
  24. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
  25. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +2 -1
  26. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
  27. package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -1
  28. package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -1
  29. package/dist/admin/components/AssetDialog/AssetDialog.js +1 -1
  30. package/dist/admin/components/AssetDialog/AssetDialog.mjs +1 -1
  31. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +2 -0
  32. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  33. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +2 -0
  34. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  35. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -1
  36. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -1
  37. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +3 -3
  38. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  39. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +2 -2
  40. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  41. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -1
  42. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -1
  43. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  44. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  45. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +1 -1
  46. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +1 -1
  47. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -1
  48. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -1
  49. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +1 -1
  50. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +1 -1
  51. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +9 -6
  52. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  53. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +8 -5
  54. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  55. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +15 -34
  56. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  57. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +15 -34
  58. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  59. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -1
  60. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -1
  61. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +5 -4
  62. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  63. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +3 -2
  64. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  65. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +3 -3
  66. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  67. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +2 -2
  68. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  69. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +3 -2
  70. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
  71. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +3 -2
  72. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
  73. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -1
  74. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -1
  75. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
  76. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
  77. package/dist/admin/components/FilterList/FilterList.js.map +1 -1
  78. package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
  79. package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
  80. package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
  81. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
  82. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
  83. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
  84. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
  85. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +8 -10
  86. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
  87. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +5 -7
  88. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
  89. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -1
  90. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -1
  91. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +1 -0
  92. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
  93. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +1 -0
  94. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
  95. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +1 -1
  96. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  97. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +1 -1
  98. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  99. package/dist/admin/components/SelectTree/Option.js.map +1 -1
  100. package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
  101. package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
  102. package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
  103. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
  104. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
  105. package/dist/admin/components/SortPicker/SortPicker.js +1 -0
  106. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
  107. package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
  108. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
  109. package/dist/admin/components/TableList/CellContent.js +1 -1
  110. package/dist/admin/components/TableList/CellContent.mjs +1 -1
  111. package/dist/admin/components/TableList/PreviewCell.js +5 -4
  112. package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
  113. package/dist/admin/components/TableList/PreviewCell.mjs +2 -1
  114. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
  115. package/dist/admin/components/TableList/TableList.js +1 -0
  116. package/dist/admin/components/TableList/TableList.js.map +1 -1
  117. package/dist/admin/components/TableList/TableList.mjs +1 -0
  118. package/dist/admin/components/TableList/TableList.mjs.map +1 -1
  119. package/dist/admin/components/TableList/TableRows.js +1 -0
  120. package/dist/admin/components/TableList/TableRows.js.map +1 -1
  121. package/dist/admin/components/TableList/TableRows.mjs +1 -0
  122. package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
  123. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -1
  124. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -1
  125. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +3 -2
  126. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  127. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +2 -1
  128. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  129. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +3 -3
  130. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  131. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +2 -2
  132. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  133. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +3 -3
  134. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  135. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +2 -2
  136. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  137. package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
  138. package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
  139. package/dist/admin/constants.js +5 -10
  140. package/dist/admin/constants.js.map +1 -1
  141. package/dist/admin/constants.mjs +5 -11
  142. package/dist/admin/constants.mjs.map +1 -1
  143. package/dist/admin/enums.js +20 -0
  144. package/dist/admin/enums.js.map +1 -0
  145. package/dist/admin/enums.mjs +17 -0
  146. package/dist/admin/enums.mjs.map +1 -0
  147. package/dist/admin/hooks/useBulkEdit.js +1 -1
  148. package/dist/admin/hooks/useBulkEdit.mjs +1 -1
  149. package/dist/admin/hooks/useBulkMove.js +1 -1
  150. package/dist/admin/hooks/useBulkMove.mjs +1 -1
  151. package/dist/admin/hooks/useBulkRemove.js +1 -1
  152. package/dist/admin/hooks/useBulkRemove.mjs +1 -1
  153. package/dist/admin/hooks/useConfig.js +2 -1
  154. package/dist/admin/hooks/useConfig.js.map +1 -1
  155. package/dist/admin/hooks/useConfig.mjs +2 -1
  156. package/dist/admin/hooks/useConfig.mjs.map +1 -1
  157. package/dist/admin/hooks/useEditAsset.js +1 -1
  158. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  159. package/dist/admin/hooks/useEditAsset.mjs +1 -1
  160. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  161. package/dist/admin/hooks/useEditFolder.js.map +1 -1
  162. package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
  163. package/dist/admin/hooks/useFolder.js +1 -1
  164. package/dist/admin/hooks/useFolder.js.map +1 -1
  165. package/dist/admin/hooks/useFolder.mjs +1 -1
  166. package/dist/admin/hooks/useFolder.mjs.map +1 -1
  167. package/dist/admin/hooks/useFolderStructure.js +1 -1
  168. package/dist/admin/hooks/useFolderStructure.mjs +1 -1
  169. package/dist/admin/hooks/useModalQueryParams.js +2 -2
  170. package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
  171. package/dist/admin/hooks/useModalQueryParams.mjs +1 -1
  172. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
  173. package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
  174. package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
  175. package/dist/admin/hooks/useTracking.js +24 -0
  176. package/dist/admin/hooks/useTracking.js.map +1 -0
  177. package/dist/admin/hooks/useTracking.mjs +22 -0
  178. package/dist/admin/hooks/useTracking.mjs.map +1 -0
  179. package/dist/admin/hooks/useUpload.js.map +1 -1
  180. package/dist/admin/hooks/useUpload.mjs.map +1 -1
  181. package/dist/admin/index.js +1 -0
  182. package/dist/admin/index.js.map +1 -1
  183. package/dist/admin/index.mjs +1 -0
  184. package/dist/admin/index.mjs.map +1 -1
  185. package/dist/admin/package.json.js +5 -5
  186. package/dist/admin/package.json.mjs +5 -5
  187. package/dist/admin/pages/App/App.js +1 -1
  188. package/dist/admin/pages/App/App.mjs +1 -1
  189. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +1 -1
  190. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  191. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +1 -1
  192. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  193. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
  194. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
  195. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
  196. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
  197. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
  198. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
  199. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +1 -0
  200. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -1
  201. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +1 -0
  202. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -1
  203. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js +1 -1
  204. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs +1 -1
  205. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js +1 -1
  206. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs +1 -1
  207. package/dist/admin/pages/App/MediaLibrary/components/Filters.js +3 -2
  208. package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -1
  209. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +3 -2
  210. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -1
  211. package/dist/admin/pages/App/MediaLibrary/components/Header.js +1 -1
  212. package/dist/admin/pages/App/MediaLibrary/components/Header.js.map +1 -1
  213. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs +1 -1
  214. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs.map +1 -1
  215. package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -0
  216. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  217. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -0
  218. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  219. package/dist/admin/src/components/AssetCard/UploadingAssetCard.d.ts +1 -1
  220. package/dist/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +1 -1
  221. package/dist/admin/src/constants.d.ts +0 -6
  222. package/dist/admin/src/enums.d.ts +12 -0
  223. package/dist/admin/src/hooks/useTracking.d.ts +4 -0
  224. package/dist/admin/src/utils/icons.d.ts +14 -0
  225. package/dist/admin/src/utils/rawFileToAsset.d.ts +1 -1
  226. package/dist/admin/src/utils/typeFromMime.d.ts +2 -2
  227. package/dist/admin/src/utils/urlsToAssets.d.ts +1 -1
  228. package/dist/admin/translations/pt-BR.json.js +75 -7
  229. package/dist/admin/translations/pt-BR.json.js.map +1 -1
  230. package/dist/admin/translations/pt-BR.json.mjs +75 -7
  231. package/dist/admin/translations/pt-BR.json.mjs.map +1 -1
  232. package/dist/admin/utils/formatBytes.js.map +1 -1
  233. package/dist/admin/utils/formatBytes.mjs.map +1 -1
  234. package/dist/admin/utils/formatDuration.js.map +1 -1
  235. package/dist/admin/utils/formatDuration.mjs.map +1 -1
  236. package/dist/admin/utils/getFolderURL.js.map +1 -1
  237. package/dist/admin/utils/getFolderURL.mjs.map +1 -1
  238. package/dist/admin/utils/getTrad.js.map +1 -1
  239. package/dist/admin/utils/getTrad.mjs.map +1 -1
  240. package/dist/admin/utils/icons.js +23 -0
  241. package/dist/admin/utils/icons.js.map +1 -0
  242. package/dist/admin/utils/icons.mjs +19 -0
  243. package/dist/admin/utils/icons.mjs.map +1 -0
  244. package/dist/admin/utils/normalizeAPIError.js.map +1 -1
  245. package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
  246. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
  247. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
  248. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  249. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  250. package/dist/admin/utils/typeFromMime.js +15 -11
  251. package/dist/admin/utils/typeFromMime.js.map +1 -1
  252. package/dist/admin/utils/typeFromMime.mjs +15 -11
  253. package/dist/admin/utils/typeFromMime.mjs.map +1 -1
  254. package/dist/server/controllers/admin-folder-file.js +2 -2
  255. package/dist/server/controllers/admin-folder-file.js.map +1 -1
  256. package/dist/server/controllers/admin-folder-file.mjs +2 -2
  257. package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
  258. package/dist/server/controllers/admin-upload.js +1 -1
  259. package/dist/server/controllers/admin-upload.js.map +1 -1
  260. package/dist/server/controllers/admin-upload.mjs +1 -1
  261. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  262. package/dist/server/controllers/utils/folders.js.map +1 -1
  263. package/dist/server/controllers/utils/folders.mjs.map +1 -1
  264. package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
  265. package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
  266. package/dist/server/controllers/validation/admin/folder.js +1 -1
  267. package/dist/server/controllers/validation/admin/folder.js.map +1 -1
  268. package/dist/server/controllers/validation/admin/folder.mjs +1 -1
  269. package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
  270. package/dist/server/register.js.map +1 -1
  271. package/dist/server/register.mjs.map +1 -1
  272. package/dist/server/services/ai-metadata.js.map +1 -1
  273. package/dist/server/services/ai-metadata.mjs.map +1 -1
  274. package/dist/server/services/api-upload-folder.js.map +1 -1
  275. package/dist/server/services/api-upload-folder.mjs.map +1 -1
  276. package/dist/server/services/folder.js.map +1 -1
  277. package/dist/server/services/folder.mjs.map +1 -1
  278. package/dist/server/services/image-manipulation.js.map +1 -1
  279. package/dist/server/services/image-manipulation.mjs.map +1 -1
  280. package/dist/server/services/metrics.js +14 -1
  281. package/dist/server/services/metrics.js.map +1 -1
  282. package/dist/server/services/metrics.mjs +14 -1
  283. package/dist/server/services/metrics.mjs.map +1 -1
  284. package/dist/server/services/upload.js +8 -8
  285. package/dist/server/services/upload.js.map +1 -1
  286. package/dist/server/services/upload.mjs +8 -8
  287. package/dist/server/services/upload.mjs.map +1 -1
  288. package/dist/server/services/weekly-metrics.js +3 -6
  289. package/dist/server/services/weekly-metrics.js.map +1 -1
  290. package/dist/server/services/weekly-metrics.mjs +3 -6
  291. package/dist/server/services/weekly-metrics.mjs.map +1 -1
  292. package/dist/server/src/index.d.ts +1 -1
  293. package/dist/server/src/services/index.d.ts +1 -1
  294. package/dist/server/src/services/metrics.d.ts +1 -0
  295. package/dist/server/src/services/metrics.d.ts.map +1 -1
  296. package/dist/server/src/services/upload.d.ts.map +1 -1
  297. package/dist/server/src/services/weekly-metrics.d.ts +0 -1
  298. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
  299. package/dist/server/utils/cron.js.map +1 -1
  300. package/dist/server/utils/cron.mjs.map +1 -1
  301. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"FilterList.mjs","sources":["../../../../admin/src/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\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 nextFilters = appliedFilters.filter((prevFilter) => {\n const name = Object.keys(filter)[0];\n const filterName = filter[name];\n if (filterName !== undefined) {\n const filterType = Object.keys(filterName)[0];\n const filterValue = filterName[filterType];\n if (typeof filterValue === 'string') {\n const decodedValue = decodeURIComponent(filterValue);\n return prevFilter[name]?.[filterType] !== decodedValue;\n }\n }\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) {\n // Handle the case where attribute is undefined\n return null;\n }\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n let value = filterObj![operator];\n\n if (Array.isArray(value)) {\n value = value.join(', ');\n } else if (typeof value === 'object') {\n value = Object.values(value).join(', ');\n } else {\n value =\n Array.isArray(value) || typeof value === 'object'\n ? Object.values(value).join(', ')\n : decodeURIComponent(value!);\n }\n\n let displayedOperator = operator;\n\n if (attribute?.name === 'mime') {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n\n // Type is file\n // The filter for the file is the following: { mime: {$not: {$contains: ['image', 'video']}}}\n if (operator === '$not') {\n value = 'file';\n displayedOperator = '$eq';\n }\n\n // Here the type is file and the filter is not file\n // { mime: {$contains: ['image', 'video'] }}\n if (['image', 'video'].includes(value[0]) && ['image', 'video'].includes(value[1])) {\n value = 'file';\n displayedOperator = '$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":["FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","nextFilters","prevFilter","name","Object","keys","filterName","undefined","filterType","filterValue","decodedValue","decodeURIComponent","map","i","attributeName","attribute","find","filterObj","operator","value","Array","isArray","join","values","displayedOperator","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
1
+ {"version":3,"file":"FilterList.mjs","sources":["../../../../admin/src/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\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 nextFilters = appliedFilters.filter((prevFilter) => {\n const name = Object.keys(filter)[0];\n const filterName = filter[name];\n if (filterName !== undefined) {\n const filterType = Object.keys(filterName)[0];\n const filterValue = filterName[filterType];\n if (typeof filterValue === 'string') {\n const decodedValue = decodeURIComponent(filterValue);\n return prevFilter[name]?.[filterType] !== decodedValue;\n }\n }\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) {\n // Handle the case where attribute is undefined\n return null;\n }\n\n const filterObj = filter[attributeName];\n const operator = Object.keys(filterObj!)[0];\n let value = filterObj![operator];\n\n if (Array.isArray(value)) {\n value = value.join(', ');\n } else if (typeof value === 'object') {\n value = Object.values(value).join(', ');\n } else {\n value =\n Array.isArray(value) || typeof value === 'object'\n ? Object.values(value).join(', ')\n : decodeURIComponent(value!);\n }\n\n let displayedOperator = operator;\n\n if (attribute?.name === 'mime') {\n displayedOperator = operator === '$contains' ? '$eq' : '$ne';\n\n // Type is file\n // The filter for the file is the following: { mime: {$not: {$contains: ['image', 'video']}}}\n if (operator === '$not') {\n value = 'file';\n displayedOperator = '$eq';\n }\n\n // Here the type is file and the filter is not file\n // { mime: {$contains: ['image', 'video'] }}\n if (['image', 'video'].includes(value[0]) && ['image', 'video'].includes(value[1])) {\n value = 'file';\n displayedOperator = '$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":["FilterList","appliedFilters","filtersSchema","onRemoveFilter","handleClick","filter","nextFilters","prevFilter","name","Object","keys","filterName","undefined","filterType","filterValue","decodedValue","decodeURIComponent","map","i","attributeName","attribute","find","filterObj","operator","value","Array","isArray","join","values","displayedOperator","includes","_jsx","FilterTag","onClick"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterTag.js","sources":["../../../../admin/src/components/FilterList/FilterTag.tsx"],"sourcesContent":["import { Tag } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { FilterStructure } from './FilterList';\n\ntype FilterTagAttribute = {\n fieldSchema?: {\n type?: string; // \"date\" | \"enumeration\"\n options?: {\n label: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n value: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n }[];\n };\n metadatas?: {\n label?: string; // \"createdAt\" | \"updatedAt\" | \"type\"\n };\n name: string; // \"createdAt\" | \"updatedAt\" | \"mime\"\n};\n\ninterface FilterTagProps {\n attribute: FilterTagAttribute;\n operator: string;\n value: string;\n filter: FilterStructure;\n onClick: (filter: FilterStructure) => void;\n}\n\nexport const FilterTag = ({ attribute, filter, onClick, operator, value }: FilterTagProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const handleClick = () => {\n onClick(filter);\n };\n\n const { fieldSchema } = attribute;\n\n const type = fieldSchema?.type;\n\n let formattedValue = value;\n\n if (type === 'date') {\n formattedValue = formatDate(value, { dateStyle: 'full' });\n }\n\n if (type === 'datetime') {\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n }\n\n if (type === 'time') {\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n }\n\n const content = `${attribute.metadatas?.label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${formattedValue}`;\n\n return (\n <Tag onClick={handleClick} icon={<Cross />} padding={1}>\n {content}\n </Tag>\n );\n};\n"],"names":["FilterTag","attribute","filter","onClick","operator","value","formatMessage","formatDate","formatTime","useIntl","handleClick","fieldSchema","type","formattedValue","dateStyle","timeStyle","hour","minute","split","date","Date","setHours","Number","setMinutes","content","metadatas","label","id","defaultMessage","_jsx","Tag","icon","Cross","padding"],"mappings":";;;;;;;AA4BaA,MAAAA,SAAAA,GAAY,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAkB,GAAA;AACvF,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAElD,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,OAAQD,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,MAAM,EAAES,WAAW,EAAE,GAAGV,SAAAA;AAExB,IAAA,MAAMW,OAAOD,WAAaC,EAAAA,IAAAA;AAE1B,IAAA,IAAIC,cAAiBR,GAAAA,KAAAA;AAErB,IAAA,IAAIO,SAAS,MAAQ,EAAA;AACnBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA;AAAO,SAAA,CAAA;AACzD;AAEA,IAAA,IAAIF,SAAS,UAAY,EAAA;AACvBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA,MAAA;YAAQC,SAAW,EAAA;AAAQ,SAAA,CAAA;AAC7E;AAEA,IAAA,IAAIH,SAAS,MAAQ,EAAA;AACnB,QAAA,MAAM,CAACI,IAAMC,EAAAA,MAAAA,CAAO,GAAGZ,KAAAA,CAAMa,KAAK,CAAC,GAAA,CAAA;AACnC,QAAA,MAAMC,OAAO,IAAIC,IAAAA,EAAAA;QACjBD,IAAKE,CAAAA,QAAQ,CAACC,MAAON,CAAAA,IAAAA,CAAAA,CAAAA;QACrBG,IAAKI,CAAAA,UAAU,CAACD,MAAOL,CAAAA,MAAAA,CAAAA,CAAAA;AAEvBJ,QAAAA,cAAAA,GAAiBL,WAAWW,IAAM,EAAA;YAChCH,IAAM,EAAA,SAAA;YACNC,MAAQ,EAAA;AACV,SAAA,CAAA;AACF;IAEA,MAAMO,OAAAA,GAAU,CAAC,EAAEvB,SAAAA,CAAUwB,SAAS,EAAEC,KAAAA,CAAM,CAAC,EAAEpB,aAAc,CAAA;AAC7DqB,QAAAA,EAAAA,EAAI,CAAC,sCAAsC,EAAEvB,QAAAA,CAAS,CAAC;QACvDwB,cAAgBxB,EAAAA;KACf,CAAA,CAAA,CAAC,EAAES,cAAAA,CAAe,CAAC;AAEtB,IAAA,qBACEgB,cAACC,CAAAA,gBAAAA,EAAAA;QAAI3B,OAASO,EAAAA,WAAAA;AAAaqB,QAAAA,IAAAA,gBAAMF,cAACG,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;QAAUC,OAAS,EAAA,CAAA;AAClDT,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"FilterTag.js","sources":["../../../../admin/src/components/FilterList/FilterTag.tsx"],"sourcesContent":["import { Tag } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { FilterStructure } from './FilterList';\n\ntype FilterTagAttribute = {\n fieldSchema?: {\n type?: string; // \"date\" | \"enumeration\"\n options?: {\n label: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n value: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n }[];\n };\n metadatas?: {\n label?: string; // \"createdAt\" | \"updatedAt\" | \"type\"\n };\n name: string; // \"createdAt\" | \"updatedAt\" | \"mime\"\n};\n\ninterface FilterTagProps {\n attribute: FilterTagAttribute;\n operator: string;\n value: string;\n filter: FilterStructure;\n onClick: (filter: FilterStructure) => void;\n}\n\nexport const FilterTag = ({ attribute, filter, onClick, operator, value }: FilterTagProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const handleClick = () => {\n onClick(filter);\n };\n\n const { fieldSchema } = attribute;\n\n const type = fieldSchema?.type;\n\n let formattedValue = value;\n\n if (type === 'date') {\n formattedValue = formatDate(value, { dateStyle: 'full' });\n }\n\n if (type === 'datetime') {\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n }\n\n if (type === 'time') {\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n }\n\n const content = `${attribute.metadatas?.label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${formattedValue}`;\n\n return (\n <Tag onClick={handleClick} icon={<Cross />} padding={1}>\n {content}\n </Tag>\n );\n};\n"],"names":["FilterTag","attribute","filter","onClick","operator","value","formatMessage","formatDate","formatTime","useIntl","handleClick","fieldSchema","type","formattedValue","dateStyle","timeStyle","hour","minute","split","date","Date","setHours","Number","setMinutes","content","metadatas","label","id","defaultMessage","_jsx","Tag","icon","Cross","padding"],"mappings":";;;;;;;AA4BaA,MAAAA,SAAAA,GAAY,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAkB,GAAA;AACvF,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,iBAAAA,EAAAA;AAElD,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,OAAQD,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,MAAM,EAAES,WAAW,EAAE,GAAGV,SAAAA;AAExB,IAAA,MAAMW,OAAOD,WAAaC,EAAAA,IAAAA;AAE1B,IAAA,IAAIC,cAAiBR,GAAAA,KAAAA;AAErB,IAAA,IAAIO,SAAS,MAAQ,EAAA;AACnBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA;AAAO,SAAA,CAAA;AACzD;AAEA,IAAA,IAAIF,SAAS,UAAY,EAAA;AACvBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA,MAAA;YAAQC,SAAW,EAAA;AAAQ,SAAA,CAAA;AAC7E;AAEA,IAAA,IAAIH,SAAS,MAAQ,EAAA;AACnB,QAAA,MAAM,CAACI,IAAMC,EAAAA,MAAAA,CAAO,GAAGZ,KAAAA,CAAMa,KAAK,CAAC,GAAA,CAAA;AACnC,QAAA,MAAMC,OAAO,IAAIC,IAAAA,EAAAA;QACjBD,IAAKE,CAAAA,QAAQ,CAACC,MAAON,CAAAA,IAAAA,CAAAA,CAAAA;QACrBG,IAAKI,CAAAA,UAAU,CAACD,MAAOL,CAAAA,MAAAA,CAAAA,CAAAA;AAEvBJ,QAAAA,cAAAA,GAAiBL,WAAWW,IAAM,EAAA;YAChCH,IAAM,EAAA,SAAA;YACNC,MAAQ,EAAA;AACV,SAAA,CAAA;AACF;IAEA,MAAMO,OAAAA,GAAU,GAAGvB,SAAUwB,CAAAA,SAAS,EAAEC,KAAM,CAAA,CAAC,EAAEpB,aAAc,CAAA;QAC7DqB,EAAI,EAAA,CAAC,sCAAsC,EAAEvB,QAAU,CAAA,CAAA;QACvDwB,cAAgBxB,EAAAA;KACf,CAAA,CAAA,CAAC,EAAES,cAAgB,CAAA,CAAA;AAEtB,IAAA,qBACEgB,cAACC,CAAAA,gBAAAA,EAAAA;QAAI3B,OAASO,EAAAA,WAAAA;AAAaqB,QAAAA,IAAAA,gBAAMF,cAACG,CAAAA,WAAAA,EAAAA,EAAAA,CAAAA;QAAUC,OAAS,EAAA,CAAA;AAClDT,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FilterTag.mjs","sources":["../../../../admin/src/components/FilterList/FilterTag.tsx"],"sourcesContent":["import { Tag } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { FilterStructure } from './FilterList';\n\ntype FilterTagAttribute = {\n fieldSchema?: {\n type?: string; // \"date\" | \"enumeration\"\n options?: {\n label: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n value: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n }[];\n };\n metadatas?: {\n label?: string; // \"createdAt\" | \"updatedAt\" | \"type\"\n };\n name: string; // \"createdAt\" | \"updatedAt\" | \"mime\"\n};\n\ninterface FilterTagProps {\n attribute: FilterTagAttribute;\n operator: string;\n value: string;\n filter: FilterStructure;\n onClick: (filter: FilterStructure) => void;\n}\n\nexport const FilterTag = ({ attribute, filter, onClick, operator, value }: FilterTagProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const handleClick = () => {\n onClick(filter);\n };\n\n const { fieldSchema } = attribute;\n\n const type = fieldSchema?.type;\n\n let formattedValue = value;\n\n if (type === 'date') {\n formattedValue = formatDate(value, { dateStyle: 'full' });\n }\n\n if (type === 'datetime') {\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n }\n\n if (type === 'time') {\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n }\n\n const content = `${attribute.metadatas?.label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${formattedValue}`;\n\n return (\n <Tag onClick={handleClick} icon={<Cross />} padding={1}>\n {content}\n </Tag>\n );\n};\n"],"names":["FilterTag","attribute","filter","onClick","operator","value","formatMessage","formatDate","formatTime","useIntl","handleClick","fieldSchema","type","formattedValue","dateStyle","timeStyle","hour","minute","split","date","Date","setHours","Number","setMinutes","content","metadatas","label","id","defaultMessage","_jsx","Tag","icon","Cross","padding"],"mappings":";;;;;AA4BaA,MAAAA,SAAAA,GAAY,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAkB,GAAA;AACvF,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAElD,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,OAAQD,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,MAAM,EAAES,WAAW,EAAE,GAAGV,SAAAA;AAExB,IAAA,MAAMW,OAAOD,WAAaC,EAAAA,IAAAA;AAE1B,IAAA,IAAIC,cAAiBR,GAAAA,KAAAA;AAErB,IAAA,IAAIO,SAAS,MAAQ,EAAA;AACnBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA;AAAO,SAAA,CAAA;AACzD;AAEA,IAAA,IAAIF,SAAS,UAAY,EAAA;AACvBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA,MAAA;YAAQC,SAAW,EAAA;AAAQ,SAAA,CAAA;AAC7E;AAEA,IAAA,IAAIH,SAAS,MAAQ,EAAA;AACnB,QAAA,MAAM,CAACI,IAAMC,EAAAA,MAAAA,CAAO,GAAGZ,KAAAA,CAAMa,KAAK,CAAC,GAAA,CAAA;AACnC,QAAA,MAAMC,OAAO,IAAIC,IAAAA,EAAAA;QACjBD,IAAKE,CAAAA,QAAQ,CAACC,MAAON,CAAAA,IAAAA,CAAAA,CAAAA;QACrBG,IAAKI,CAAAA,UAAU,CAACD,MAAOL,CAAAA,MAAAA,CAAAA,CAAAA;AAEvBJ,QAAAA,cAAAA,GAAiBL,WAAWW,IAAM,EAAA;YAChCH,IAAM,EAAA,SAAA;YACNC,MAAQ,EAAA;AACV,SAAA,CAAA;AACF;IAEA,MAAMO,OAAAA,GAAU,CAAC,EAAEvB,SAAAA,CAAUwB,SAAS,EAAEC,KAAAA,CAAM,CAAC,EAAEpB,aAAc,CAAA;AAC7DqB,QAAAA,EAAAA,EAAI,CAAC,sCAAsC,EAAEvB,QAAAA,CAAS,CAAC;QACvDwB,cAAgBxB,EAAAA;KACf,CAAA,CAAA,CAAC,EAAES,cAAAA,CAAe,CAAC;AAEtB,IAAA,qBACEgB,GAACC,CAAAA,GAAAA,EAAAA;QAAI3B,OAASO,EAAAA,WAAAA;AAAaqB,QAAAA,IAAAA,gBAAMF,GAACG,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;QAAUC,OAAS,EAAA,CAAA;AAClDT,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
1
+ {"version":3,"file":"FilterTag.mjs","sources":["../../../../admin/src/components/FilterList/FilterTag.tsx"],"sourcesContent":["import { Tag } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport type { FilterStructure } from './FilterList';\n\ntype FilterTagAttribute = {\n fieldSchema?: {\n type?: string; // \"date\" | \"enumeration\"\n options?: {\n label: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n value: string; // \"audio\" | \"video\" | \"image\" | \"file\"\n }[];\n };\n metadatas?: {\n label?: string; // \"createdAt\" | \"updatedAt\" | \"type\"\n };\n name: string; // \"createdAt\" | \"updatedAt\" | \"mime\"\n};\n\ninterface FilterTagProps {\n attribute: FilterTagAttribute;\n operator: string;\n value: string;\n filter: FilterStructure;\n onClick: (filter: FilterStructure) => void;\n}\n\nexport const FilterTag = ({ attribute, filter, onClick, operator, value }: FilterTagProps) => {\n const { formatMessage, formatDate, formatTime } = useIntl();\n\n const handleClick = () => {\n onClick(filter);\n };\n\n const { fieldSchema } = attribute;\n\n const type = fieldSchema?.type;\n\n let formattedValue = value;\n\n if (type === 'date') {\n formattedValue = formatDate(value, { dateStyle: 'full' });\n }\n\n if (type === 'datetime') {\n formattedValue = formatDate(value, { dateStyle: 'full', timeStyle: 'short' });\n }\n\n if (type === 'time') {\n const [hour, minute] = value.split(':');\n const date = new Date();\n date.setHours(Number(hour));\n date.setMinutes(Number(minute));\n\n formattedValue = formatTime(date, {\n hour: 'numeric',\n minute: 'numeric',\n });\n }\n\n const content = `${attribute.metadatas?.label} ${formatMessage({\n id: `components.FilterOptions.FILTER_TYPES.${operator}`,\n defaultMessage: operator,\n })} ${formattedValue}`;\n\n return (\n <Tag onClick={handleClick} icon={<Cross />} padding={1}>\n {content}\n </Tag>\n );\n};\n"],"names":["FilterTag","attribute","filter","onClick","operator","value","formatMessage","formatDate","formatTime","useIntl","handleClick","fieldSchema","type","formattedValue","dateStyle","timeStyle","hour","minute","split","date","Date","setHours","Number","setMinutes","content","metadatas","label","id","defaultMessage","_jsx","Tag","icon","Cross","padding"],"mappings":";;;;;AA4BaA,MAAAA,SAAAA,GAAY,CAAC,EAAEC,SAAS,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,KAAK,EAAkB,GAAA;AACvF,IAAA,MAAM,EAAEC,aAAa,EAAEC,UAAU,EAAEC,UAAU,EAAE,GAAGC,OAAAA,EAAAA;AAElD,IAAA,MAAMC,WAAc,GAAA,IAAA;QAClBP,OAAQD,CAAAA,MAAAA,CAAAA;AACV,KAAA;IAEA,MAAM,EAAES,WAAW,EAAE,GAAGV,SAAAA;AAExB,IAAA,MAAMW,OAAOD,WAAaC,EAAAA,IAAAA;AAE1B,IAAA,IAAIC,cAAiBR,GAAAA,KAAAA;AAErB,IAAA,IAAIO,SAAS,MAAQ,EAAA;AACnBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA;AAAO,SAAA,CAAA;AACzD;AAEA,IAAA,IAAIF,SAAS,UAAY,EAAA;AACvBC,QAAAA,cAAAA,GAAiBN,WAAWF,KAAO,EAAA;YAAES,SAAW,EAAA,MAAA;YAAQC,SAAW,EAAA;AAAQ,SAAA,CAAA;AAC7E;AAEA,IAAA,IAAIH,SAAS,MAAQ,EAAA;AACnB,QAAA,MAAM,CAACI,IAAMC,EAAAA,MAAAA,CAAO,GAAGZ,KAAAA,CAAMa,KAAK,CAAC,GAAA,CAAA;AACnC,QAAA,MAAMC,OAAO,IAAIC,IAAAA,EAAAA;QACjBD,IAAKE,CAAAA,QAAQ,CAACC,MAAON,CAAAA,IAAAA,CAAAA,CAAAA;QACrBG,IAAKI,CAAAA,UAAU,CAACD,MAAOL,CAAAA,MAAAA,CAAAA,CAAAA;AAEvBJ,QAAAA,cAAAA,GAAiBL,WAAWW,IAAM,EAAA;YAChCH,IAAM,EAAA,SAAA;YACNC,MAAQ,EAAA;AACV,SAAA,CAAA;AACF;IAEA,MAAMO,OAAAA,GAAU,GAAGvB,SAAUwB,CAAAA,SAAS,EAAEC,KAAM,CAAA,CAAC,EAAEpB,aAAc,CAAA;QAC7DqB,EAAI,EAAA,CAAC,sCAAsC,EAAEvB,QAAU,CAAA,CAAA;QACvDwB,cAAgBxB,EAAAA;KACf,CAAA,CAAA,CAAC,EAAES,cAAgB,CAAA,CAAA;AAEtB,IAAA,qBACEgB,GAACC,CAAAA,GAAAA,EAAAA;QAAI3B,OAASO,EAAAA,WAAAA;AAAaqB,QAAAA,IAAAA,gBAAMF,GAACG,CAAAA,KAAAA,EAAAA,EAAAA,CAAAA;QAAUC,OAAS,EAAA,CAAA;AAClDT,QAAAA,QAAAA,EAAAA;;AAGP;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FolderCardBody.js","sources":["../../../../../admin/src/components/FolderCard/FolderCardBody/FolderCardBody.tsx"],"sourcesContent":["import { Flex, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nconst StyledBox = styled(Flex)`\n user-select: none;\n`;\n\nexport const FolderCardBody = (props: FlexProps) => {\n const { id } = useFolderCard();\n\n return (\n <StyledBox\n {...props}\n id={`${id}-title`}\n data-testid={`${id}-title`}\n alignItems=\"flex-start\"\n direction=\"column\"\n maxWidth=\"100%\"\n overflow=\"hidden\"\n position=\"relative\"\n />\n );\n};\n"],"names":["StyledBox","styled","Flex","FolderCardBody","props","id","useFolderCard","_jsx","data-testid","alignItems","direction","maxWidth","overflow","position"],"mappings":";;;;;;;AAKA,MAAMA,SAAAA,GAAYC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAE9B,CAAC;AAEM,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IAC7B,MAAM,EAAEC,EAAE,EAAE,GAAGC,wBAAAA,EAAAA;AAEf,IAAA,qBACEC,cAACP,CAAAA,SAAAA,EAAAA;AACE,QAAA,GAAGI,KAAK;AACTC,QAAAA,EAAAA,EAAI,CAAC,EAAEA,EAAG,CAAA,MAAM,CAAC;AACjBG,QAAAA,aAAAA,EAAa,CAAC,EAAEH,EAAG,CAAA,MAAM,CAAC;QAC1BI,UAAW,EAAA,YAAA;QACXC,SAAU,EAAA,QAAA;QACVC,QAAS,EAAA,MAAA;QACTC,QAAS,EAAA,QAAA;QACTC,QAAS,EAAA;;AAGf;;;;"}
1
+ {"version":3,"file":"FolderCardBody.js","sources":["../../../../../admin/src/components/FolderCard/FolderCardBody/FolderCardBody.tsx"],"sourcesContent":["import { Flex, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nconst StyledBox = styled(Flex)`\n user-select: none;\n`;\n\nexport const FolderCardBody = (props: FlexProps) => {\n const { id } = useFolderCard();\n\n return (\n <StyledBox\n {...props}\n id={`${id}-title`}\n data-testid={`${id}-title`}\n alignItems=\"flex-start\"\n direction=\"column\"\n maxWidth=\"100%\"\n overflow=\"hidden\"\n position=\"relative\"\n />\n );\n};\n"],"names":["StyledBox","styled","Flex","FolderCardBody","props","id","useFolderCard","_jsx","data-testid","alignItems","direction","maxWidth","overflow","position"],"mappings":";;;;;;;AAKA,MAAMA,SAAAA,GAAYC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAE9B,CAAC;AAEM,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IAC7B,MAAM,EAAEC,EAAE,EAAE,GAAGC,wBAAAA,EAAAA;AAEf,IAAA,qBACEC,cAACP,CAAAA,SAAAA,EAAAA;AACE,QAAA,GAAGI,KAAK;QACTC,EAAI,EAAA,CAAA,EAAGA,EAAG,CAAA,MAAM,CAAC;QACjBG,aAAa,EAAA,CAAA,EAAGH,EAAG,CAAA,MAAM,CAAC;QAC1BI,UAAW,EAAA,YAAA;QACXC,SAAU,EAAA,QAAA;QACVC,QAAS,EAAA,MAAA;QACTC,QAAS,EAAA,QAAA;QACTC,QAAS,EAAA;;AAGf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FolderCardBody.mjs","sources":["../../../../../admin/src/components/FolderCard/FolderCardBody/FolderCardBody.tsx"],"sourcesContent":["import { Flex, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nconst StyledBox = styled(Flex)`\n user-select: none;\n`;\n\nexport const FolderCardBody = (props: FlexProps) => {\n const { id } = useFolderCard();\n\n return (\n <StyledBox\n {...props}\n id={`${id}-title`}\n data-testid={`${id}-title`}\n alignItems=\"flex-start\"\n direction=\"column\"\n maxWidth=\"100%\"\n overflow=\"hidden\"\n position=\"relative\"\n />\n );\n};\n"],"names":["StyledBox","styled","Flex","FolderCardBody","props","id","useFolderCard","_jsx","data-testid","alignItems","direction","maxWidth","overflow","position"],"mappings":";;;;;AAKA,MAAMA,SAAAA,GAAYC,MAAOC,CAAAA,IAAAA,CAAK;;AAE9B,CAAC;AAEM,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IAC7B,MAAM,EAAEC,EAAE,EAAE,GAAGC,aAAAA,EAAAA;AAEf,IAAA,qBACEC,GAACP,CAAAA,SAAAA,EAAAA;AACE,QAAA,GAAGI,KAAK;AACTC,QAAAA,EAAAA,EAAI,CAAC,EAAEA,EAAG,CAAA,MAAM,CAAC;AACjBG,QAAAA,aAAAA,EAAa,CAAC,EAAEH,EAAG,CAAA,MAAM,CAAC;QAC1BI,UAAW,EAAA,YAAA;QACXC,SAAU,EAAA,QAAA;QACVC,QAAS,EAAA,MAAA;QACTC,QAAS,EAAA,QAAA;QACTC,QAAS,EAAA;;AAGf;;;;"}
1
+ {"version":3,"file":"FolderCardBody.mjs","sources":["../../../../../admin/src/components/FolderCard/FolderCardBody/FolderCardBody.tsx"],"sourcesContent":["import { Flex, FlexProps } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nconst StyledBox = styled(Flex)`\n user-select: none;\n`;\n\nexport const FolderCardBody = (props: FlexProps) => {\n const { id } = useFolderCard();\n\n return (\n <StyledBox\n {...props}\n id={`${id}-title`}\n data-testid={`${id}-title`}\n alignItems=\"flex-start\"\n direction=\"column\"\n maxWidth=\"100%\"\n overflow=\"hidden\"\n position=\"relative\"\n />\n );\n};\n"],"names":["StyledBox","styled","Flex","FolderCardBody","props","id","useFolderCard","_jsx","data-testid","alignItems","direction","maxWidth","overflow","position"],"mappings":";;;;;AAKA,MAAMA,SAAAA,GAAYC,MAAOC,CAAAA,IAAAA,CAAK;;AAE9B,CAAC;AAEM,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IAC7B,MAAM,EAAEC,EAAE,EAAE,GAAGC,aAAAA,EAAAA;AAEf,IAAA,qBACEC,GAACP,CAAAA,SAAAA,EAAAA;AACE,QAAA,GAAGI,KAAK;QACTC,EAAI,EAAA,CAAA,EAAGA,EAAG,CAAA,MAAM,CAAC;QACjBG,aAAa,EAAA,CAAA,EAAGH,EAAG,CAAA,MAAM,CAAC;QAC1BI,UAAW,EAAA,YAAA;QACXC,SAAU,EAAA,QAAA;QACVC,QAAS,EAAA,MAAA;QACTC,QAAS,EAAA,QAAA;QACTC,QAAS,EAAA;;AAGf;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FolderCardCheckbox.js","sources":["../../../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx"],"sourcesContent":["import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n"],"names":["FolderCardCheckbox","props","id","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby"],"mappings":";;;;;;AAIO,MAAMA,qBAAqB,CAACC,KAAAA,GAAAA;IACjC,MAAM,EAAEC,EAAE,EAAE,GAAGC,wBAAAA,EAAAA;AAEf,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,MAAQ,EAAA,CAAA;AAC/B,QAAA,QAAA,gBAAAH,cAACI,CAAAA,qBAAAA,EAAAA;AAASC,YAAAA,iBAAAA,EAAiB,CAAC,EAAEP,EAAG,CAAA,MAAM,CAAC;AAAG,YAAA,GAAGD;;;AAGpD;;;;"}
1
+ {"version":3,"file":"FolderCardCheckbox.js","sources":["../../../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx"],"sourcesContent":["import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n"],"names":["FolderCardCheckbox","props","id","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby"],"mappings":";;;;;;AAIO,MAAMA,qBAAqB,CAACC,KAAAA,GAAAA;IACjC,MAAM,EAAEC,EAAE,EAAE,GAAGC,wBAAAA,EAAAA;AAEf,IAAA,qBACEC,cAACC,CAAAA,gBAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,MAAQ,EAAA,CAAA;AAC/B,QAAA,QAAA,gBAAAH,cAACI,CAAAA,qBAAAA,EAAAA;YAASC,iBAAiB,EAAA,CAAA,EAAGP,EAAG,CAAA,MAAM,CAAC;AAAG,YAAA,GAAGD;;;AAGpD;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"FolderCardCheckbox.mjs","sources":["../../../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx"],"sourcesContent":["import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n"],"names":["FolderCardCheckbox","props","id","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby"],"mappings":";;;;AAIO,MAAMA,qBAAqB,CAACC,KAAAA,GAAAA;IACjC,MAAM,EAAEC,EAAE,EAAE,GAAGC,aAAAA,EAAAA;AAEf,IAAA,qBACEC,GAACC,CAAAA,GAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,MAAQ,EAAA,CAAA;AAC/B,QAAA,QAAA,gBAAAH,GAACI,CAAAA,QAAAA,EAAAA;AAASC,YAAAA,iBAAAA,EAAiB,CAAC,EAAEP,EAAG,CAAA,MAAM,CAAC;AAAG,YAAA,GAAGD;;;AAGpD;;;;"}
1
+ {"version":3,"file":"FolderCardCheckbox.mjs","sources":["../../../../../admin/src/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.tsx"],"sourcesContent":["import { Checkbox, Box, CheckboxProps } from '@strapi/design-system';\n\nimport { useFolderCard } from '../contexts/FolderCard';\n\nexport const FolderCardCheckbox = (props: CheckboxProps) => {\n const { id } = useFolderCard();\n\n return (\n <Box position=\"relative\" zIndex={2}>\n <Checkbox aria-labelledby={`${id}-title`} {...props} />\n </Box>\n );\n};\n"],"names":["FolderCardCheckbox","props","id","useFolderCard","_jsx","Box","position","zIndex","Checkbox","aria-labelledby"],"mappings":";;;;AAIO,MAAMA,qBAAqB,CAACC,KAAAA,GAAAA;IACjC,MAAM,EAAEC,EAAE,EAAE,GAAGC,aAAAA,EAAAA;AAEf,IAAA,qBACEC,GAACC,CAAAA,GAAAA,EAAAA;QAAIC,QAAS,EAAA,UAAA;QAAWC,MAAQ,EAAA,CAAA;AAC/B,QAAA,QAAA,gBAAAH,GAACI,CAAAA,QAAAA,EAAAA;YAASC,iBAAiB,EAAA,CAAA,EAAGP,EAAG,CAAA,MAAM,CAAC;AAAG,YAAA,GAAGD;;;AAGpD;;;;"}
@@ -2,14 +2,15 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
- var icons = require('@strapi/icons');
6
5
  var styledComponents = require('styled-components');
7
- var constants = require('../../../constants.js');
6
+ var enums = require('../../../enums.js');
8
7
  var createAssetUrl = require('../../../utils/createAssetUrl.js');
9
8
  require('byte-size');
10
9
  require('date-fns');
11
10
  require('qs');
11
+ require('../../../utils/typeFromMime.js');
12
12
  require('../../../utils/urlYupSchema.js');
13
+ var icons = require('../../../utils/icons.js');
13
14
  var AudioPreview = require('../../AssetCard/AudioPreview.js');
14
15
  var VideoPreview = require('../../AssetCard/VideoPreview.js');
15
16
 
@@ -30,7 +31,7 @@ const AudioPreviewWrapper = styledComponents.styled(designSystem.Box)`
30
31
  }
31
32
  `;
32
33
  const CarouselAsset = ({ asset })=>{
33
- if (asset.mime?.includes(constants.AssetType.Video)) {
34
+ if (asset.mime?.includes(enums.AssetType.Video)) {
34
35
  return /*#__PURE__*/ jsxRuntime.jsx(VideoPreviewWrapper, {
35
36
  height: "100%",
36
37
  children: /*#__PURE__*/ jsxRuntime.jsx(VideoPreview.VideoPreview, {
@@ -40,7 +41,7 @@ const CarouselAsset = ({ asset })=>{
40
41
  })
41
42
  });
42
43
  }
43
- if (asset.mime?.includes(constants.AssetType.Audio)) {
44
+ if (asset.mime?.includes(enums.AssetType.Audio)) {
44
45
  return /*#__PURE__*/ jsxRuntime.jsx(AudioPreviewWrapper, {
45
46
  children: /*#__PURE__*/ jsxRuntime.jsx(AudioPreview.AudioPreview, {
46
47
  url: createAssetUrl.createAssetUrl(asset, true),
@@ -48,7 +49,7 @@ const CarouselAsset = ({ asset })=>{
48
49
  })
49
50
  });
50
51
  }
51
- if (asset.mime?.includes(constants.AssetType.Image)) {
52
+ if (asset.mime?.includes(enums.AssetType.Image)) {
52
53
  const assetUrl = createAssetUrl.createAssetUrl(asset, true);
53
54
  if (!assetUrl) return null;
54
55
  // Adding a param to the url to bust the cache and force the refresh of the image when replaced
@@ -62,16 +63,13 @@ const CarouselAsset = ({ asset })=>{
62
63
  alt: asset.alternativeText || asset.name
63
64
  });
64
65
  }
66
+ const IconComponent = icons.getFileIconComponent(asset.ext);
65
67
  return /*#__PURE__*/ jsxRuntime.jsx(DocAsset, {
66
68
  width: "100%",
67
69
  height: "100%",
68
70
  justifyContent: "center",
69
71
  hasRadius: true,
70
- children: asset.ext?.includes('pdf') ? /*#__PURE__*/ jsxRuntime.jsx(icons.FilePdf, {
71
- "aria-label": asset.alternativeText || asset.name,
72
- width: "24px",
73
- height: "32px"
74
- }) : /*#__PURE__*/ jsxRuntime.jsx(icons.File, {
72
+ children: /*#__PURE__*/ jsxRuntime.jsx(IconComponent, {
75
73
  "aria-label": asset.alternativeText || asset.name,
76
74
  width: "24px",
77
75
  height: "32px"
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselAsset.js","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.tsx"],"sourcesContent":["import { Box, Flex } from '@strapi/design-system';\nimport { File, FilePdf } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../../constants';\nimport { createAssetUrl } from '../../../utils';\nimport { AudioPreview } from '../../AssetCard/AudioPreview';\nimport { VideoPreview } from '../../AssetCard/VideoPreview';\n\nimport type { File as FileAsset } from '../../../../../shared/contracts/files';\n\nconst DocAsset = styled(Flex)`\n background: linear-gradient(180deg, #ffffff 0%, #f6f6f9 121.48%);\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n max-width: 100%;\n height: 124px;\n }\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n canvas,\n audio {\n max-width: 100%;\n }\n`;\n\nexport const CarouselAsset = ({ asset }: { asset: FileAsset }) => {\n if (asset.mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper height=\"100%\">\n <VideoPreview\n url={createAssetUrl(asset, true)!}\n mime={asset.mime}\n alt={asset.alternativeText || asset.name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Audio)) {\n return (\n <AudioPreviewWrapper>\n <AudioPreview\n url={createAssetUrl(asset, true)!}\n alt={asset.alternativeText || asset.name}\n />\n </AudioPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Image)) {\n const assetUrl = createAssetUrl(asset, true);\n if (!assetUrl) return null;\n\n // Adding a param to the url to bust the cache and force the refresh of the image when replaced\n // Only add updatedAt parameter if the URL is not signed to prevent signature invalidation\n const cacheBustedUrl = asset.isUrlSigned\n ? assetUrl\n : `${assetUrl}${assetUrl.includes('?') ? '&' : '?'}updatedAt=${asset.updatedAt}`;\n\n return (\n <Box\n tag=\"img\"\n maxHeight=\"100%\"\n maxWidth=\"100%\"\n src={cacheBustedUrl}\n alt={asset.alternativeText || asset.name}\n />\n );\n }\n\n return (\n <DocAsset width=\"100%\" height=\"100%\" justifyContent=\"center\" hasRadius>\n {asset.ext?.includes('pdf') ? (\n <FilePdf aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n ) : (\n <File aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n )}\n </DocAsset>\n );\n};\n"],"names":["DocAsset","styled","Flex","VideoPreviewWrapper","Box","AudioPreviewWrapper","CarouselAsset","asset","mime","includes","AssetType","Video","_jsx","height","VideoPreview","url","createAssetUrl","alt","alternativeText","name","Audio","AudioPreview","Image","assetUrl","cacheBustedUrl","isUrlSigned","updatedAt","tag","maxHeight","maxWidth","src","width","justifyContent","hasRadius","ext","FilePdf","aria-label","File"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAMA,QAAAA,GAAWC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,mBAAAA,GAAsBF,uBAAOG,CAAAA,gBAAAA,CAAI;;;;;;AAMvC,CAAC;AAED,MAAMC,mBAAAA,GAAsBJ,uBAAOG,CAAAA,gBAAAA,CAAI;;;;;AAKvC,CAAC;AAEYE,MAAAA,aAAAA,GAAgB,CAAC,EAAEC,KAAK,EAAwB,GAAA;AAC3D,IAAA,IAAIA,MAAMC,IAAI,EAAEC,QAASC,CAAAA,mBAAAA,CAAUC,KAAK,CAAG,EAAA;AACzC,QAAA,qBACEC,cAACT,CAAAA,mBAAAA,EAAAA;YAAoBU,MAAO,EAAA,MAAA;AAC1B,YAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;AACCC,gBAAAA,GAAAA,EAAKC,8BAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBS,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,mBAAAA,CAAUU,KAAK,CAAG,EAAA;AACzC,QAAA,qBACER,cAACP,CAAAA,mBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAO,cAACS,CAAAA,yBAAAA,EAAAA;AACCN,gBAAAA,GAAAA,EAAKC,8BAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BU,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,mBAAAA,CAAUY,KAAK,CAAG,EAAA;QACzC,MAAMC,QAAAA,GAAWP,8BAAeT,KAAO,EAAA,IAAA,CAAA;QACvC,IAAI,CAACgB,UAAU,OAAO,IAAA;;;QAItB,MAAMC,cAAAA,GAAiBjB,MAAMkB,WAAW,GACpCF,WACA,CAAC,EAAEA,SAAS,EAAEA,QAAAA,CAASd,QAAQ,CAAC,GAAA,CAAA,GAAO,MAAM,GAAI,CAAA,UAAU,EAAEF,KAAMmB,CAAAA,SAAS,CAAC,CAAC;AAElF,QAAA,qBACEd,cAACR,CAAAA,gBAAAA,EAAAA;YACCuB,GAAI,EAAA,KAAA;YACJC,SAAU,EAAA,MAAA;YACVC,QAAS,EAAA,MAAA;YACTC,GAAKN,EAAAA,cAAAA;AACLP,YAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;AAG1C;AAEA,IAAA,qBACEP,cAACZ,CAAAA,QAAAA,EAAAA;QAAS+B,KAAM,EAAA,MAAA;QAAOlB,MAAO,EAAA,MAAA;QAAOmB,cAAe,EAAA,QAAA;QAASC,SAAS,EAAA,IAAA;AACnE1B,QAAAA,QAAAA,EAAAA,KAAAA,CAAM2B,GAAG,EAAEzB,QAAS,CAAA,KAAA,CAAA,iBACnBG,cAACuB,CAAAA,aAAAA,EAAAA;AAAQC,YAAAA,YAAAA,EAAY7B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEY,KAAM,EAAA,MAAA;YAAOlB,MAAO,EAAA;2BAE9ED,cAACyB,CAAAA,UAAAA,EAAAA;AAAKD,YAAAA,YAAAA,EAAY7B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEY,KAAM,EAAA,MAAA;YAAOlB,MAAO,EAAA;;;AAInF;;;;"}
1
+ {"version":3,"file":"CarouselAsset.js","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.tsx"],"sourcesContent":["import { Box, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { createAssetUrl } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\nimport { AudioPreview } from '../../AssetCard/AudioPreview';\nimport { VideoPreview } from '../../AssetCard/VideoPreview';\n\nimport type { File as FileAsset } from '../../../../../shared/contracts/files';\n\nconst DocAsset = styled(Flex)`\n background: linear-gradient(180deg, #ffffff 0%, #f6f6f9 121.48%);\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n max-width: 100%;\n height: 124px;\n }\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n canvas,\n audio {\n max-width: 100%;\n }\n`;\n\nexport const CarouselAsset = ({ asset }: { asset: FileAsset }) => {\n if (asset.mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper height=\"100%\">\n <VideoPreview\n url={createAssetUrl(asset, true)!}\n mime={asset.mime}\n alt={asset.alternativeText || asset.name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Audio)) {\n return (\n <AudioPreviewWrapper>\n <AudioPreview\n url={createAssetUrl(asset, true)!}\n alt={asset.alternativeText || asset.name}\n />\n </AudioPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Image)) {\n const assetUrl = createAssetUrl(asset, true);\n if (!assetUrl) return null;\n\n // Adding a param to the url to bust the cache and force the refresh of the image when replaced\n // Only add updatedAt parameter if the URL is not signed to prevent signature invalidation\n const cacheBustedUrl = asset.isUrlSigned\n ? assetUrl\n : `${assetUrl}${assetUrl.includes('?') ? '&' : '?'}updatedAt=${asset.updatedAt}`;\n\n return (\n <Box\n tag=\"img\"\n maxHeight=\"100%\"\n maxWidth=\"100%\"\n src={cacheBustedUrl}\n alt={asset.alternativeText || asset.name}\n />\n );\n }\n\n const IconComponent = getFileIconComponent(asset.ext);\n\n return (\n <DocAsset width=\"100%\" height=\"100%\" justifyContent=\"center\" hasRadius>\n <IconComponent aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n </DocAsset>\n );\n};\n"],"names":["DocAsset","styled","Flex","VideoPreviewWrapper","Box","AudioPreviewWrapper","CarouselAsset","asset","mime","includes","AssetType","Video","_jsx","height","VideoPreview","url","createAssetUrl","alt","alternativeText","name","Audio","AudioPreview","Image","assetUrl","cacheBustedUrl","isUrlSigned","updatedAt","tag","maxHeight","maxWidth","src","IconComponent","getFileIconComponent","ext","width","justifyContent","hasRadius","aria-label"],"mappings":";;;;;;;;;;;;;;;;AAWA,MAAMA,QAAAA,GAAWC,uBAAOC,CAAAA,iBAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,mBAAAA,GAAsBF,uBAAOG,CAAAA,gBAAAA,CAAI;;;;;;AAMvC,CAAC;AAED,MAAMC,mBAAAA,GAAsBJ,uBAAOG,CAAAA,gBAAAA,CAAI;;;;;AAKvC,CAAC;AAEYE,MAAAA,aAAAA,GAAgB,CAAC,EAAEC,KAAK,EAAwB,GAAA;AAC3D,IAAA,IAAIA,MAAMC,IAAI,EAAEC,QAASC,CAAAA,eAAAA,CAAUC,KAAK,CAAG,EAAA;AACzC,QAAA,qBACEC,cAACT,CAAAA,mBAAAA,EAAAA;YAAoBU,MAAO,EAAA,MAAA;AAC1B,YAAA,QAAA,gBAAAD,cAACE,CAAAA,yBAAAA,EAAAA;AACCC,gBAAAA,GAAAA,EAAKC,8BAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBS,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,eAAAA,CAAUU,KAAK,CAAG,EAAA;AACzC,QAAA,qBACER,cAACP,CAAAA,mBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAO,cAACS,CAAAA,yBAAAA,EAAAA;AACCN,gBAAAA,GAAAA,EAAKC,8BAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BU,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,eAAAA,CAAUY,KAAK,CAAG,EAAA;QACzC,MAAMC,QAAAA,GAAWP,8BAAeT,KAAO,EAAA,IAAA,CAAA;QACvC,IAAI,CAACgB,UAAU,OAAO,IAAA;;;AAItB,QAAA,MAAMC,iBAAiBjB,KAAMkB,CAAAA,WAAW,GACpCF,QAAAA,GACA,GAAGA,QAAWA,CAAAA,EAAAA,QAAAA,CAASd,QAAQ,CAAC,OAAO,GAAM,GAAA,GAAA,CAAI,UAAU,EAAEF,KAAAA,CAAMmB,SAAS,CAAE,CAAA;AAElF,QAAA,qBACEd,cAACR,CAAAA,gBAAAA,EAAAA;YACCuB,GAAI,EAAA,KAAA;YACJC,SAAU,EAAA,MAAA;YACVC,QAAS,EAAA,MAAA;YACTC,GAAKN,EAAAA,cAAAA;AACLP,YAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;AAG1C;IAEA,MAAMY,aAAAA,GAAgBC,0BAAqBzB,CAAAA,KAAAA,CAAM0B,GAAG,CAAA;AAEpD,IAAA,qBACErB,cAACZ,CAAAA,QAAAA,EAAAA;QAASkC,KAAM,EAAA,MAAA;QAAOrB,MAAO,EAAA,MAAA;QAAOsB,cAAe,EAAA,QAAA;QAASC,SAAS,EAAA,IAAA;AACpE,QAAA,QAAA,gBAAAxB,cAACmB,CAAAA,aAAAA,EAAAA;AAAcM,YAAAA,YAAAA,EAAY9B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEe,KAAM,EAAA,MAAA;YAAOrB,MAAO,EAAA;;;AAG1F;;;;"}
@@ -1,13 +1,14 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { Flex, Box } from '@strapi/design-system';
3
- import { FilePdf, File } from '@strapi/icons';
4
3
  import { styled } from 'styled-components';
5
- import { AssetType } from '../../../constants.mjs';
4
+ import { AssetType } from '../../../enums.mjs';
6
5
  import { createAssetUrl } from '../../../utils/createAssetUrl.mjs';
7
6
  import 'byte-size';
8
7
  import 'date-fns';
9
8
  import 'qs';
9
+ import '../../../utils/typeFromMime.mjs';
10
10
  import '../../../utils/urlYupSchema.mjs';
11
+ import { getFileIconComponent } from '../../../utils/icons.mjs';
11
12
  import { AudioPreview } from '../../AssetCard/AudioPreview.mjs';
12
13
  import { VideoPreview } from '../../AssetCard/VideoPreview.mjs';
13
14
 
@@ -60,16 +61,13 @@ const CarouselAsset = ({ asset })=>{
60
61
  alt: asset.alternativeText || asset.name
61
62
  });
62
63
  }
64
+ const IconComponent = getFileIconComponent(asset.ext);
63
65
  return /*#__PURE__*/ jsx(DocAsset, {
64
66
  width: "100%",
65
67
  height: "100%",
66
68
  justifyContent: "center",
67
69
  hasRadius: true,
68
- children: asset.ext?.includes('pdf') ? /*#__PURE__*/ jsx(FilePdf, {
69
- "aria-label": asset.alternativeText || asset.name,
70
- width: "24px",
71
- height: "32px"
72
- }) : /*#__PURE__*/ jsx(File, {
70
+ children: /*#__PURE__*/ jsx(IconComponent, {
73
71
  "aria-label": asset.alternativeText || asset.name,
74
72
  width: "24px",
75
73
  height: "32px"
@@ -1 +1 @@
1
- {"version":3,"file":"CarouselAsset.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.tsx"],"sourcesContent":["import { Box, Flex } from '@strapi/design-system';\nimport { File, FilePdf } from '@strapi/icons';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../../constants';\nimport { createAssetUrl } from '../../../utils';\nimport { AudioPreview } from '../../AssetCard/AudioPreview';\nimport { VideoPreview } from '../../AssetCard/VideoPreview';\n\nimport type { File as FileAsset } from '../../../../../shared/contracts/files';\n\nconst DocAsset = styled(Flex)`\n background: linear-gradient(180deg, #ffffff 0%, #f6f6f9 121.48%);\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n max-width: 100%;\n height: 124px;\n }\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n canvas,\n audio {\n max-width: 100%;\n }\n`;\n\nexport const CarouselAsset = ({ asset }: { asset: FileAsset }) => {\n if (asset.mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper height=\"100%\">\n <VideoPreview\n url={createAssetUrl(asset, true)!}\n mime={asset.mime}\n alt={asset.alternativeText || asset.name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Audio)) {\n return (\n <AudioPreviewWrapper>\n <AudioPreview\n url={createAssetUrl(asset, true)!}\n alt={asset.alternativeText || asset.name}\n />\n </AudioPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Image)) {\n const assetUrl = createAssetUrl(asset, true);\n if (!assetUrl) return null;\n\n // Adding a param to the url to bust the cache and force the refresh of the image when replaced\n // Only add updatedAt parameter if the URL is not signed to prevent signature invalidation\n const cacheBustedUrl = asset.isUrlSigned\n ? assetUrl\n : `${assetUrl}${assetUrl.includes('?') ? '&' : '?'}updatedAt=${asset.updatedAt}`;\n\n return (\n <Box\n tag=\"img\"\n maxHeight=\"100%\"\n maxWidth=\"100%\"\n src={cacheBustedUrl}\n alt={asset.alternativeText || asset.name}\n />\n );\n }\n\n return (\n <DocAsset width=\"100%\" height=\"100%\" justifyContent=\"center\" hasRadius>\n {asset.ext?.includes('pdf') ? (\n <FilePdf aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n ) : (\n <File aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n )}\n </DocAsset>\n );\n};\n"],"names":["DocAsset","styled","Flex","VideoPreviewWrapper","Box","AudioPreviewWrapper","CarouselAsset","asset","mime","includes","AssetType","Video","_jsx","height","VideoPreview","url","createAssetUrl","alt","alternativeText","name","Audio","AudioPreview","Image","assetUrl","cacheBustedUrl","isUrlSigned","updatedAt","tag","maxHeight","maxWidth","src","width","justifyContent","hasRadius","ext","FilePdf","aria-label","File"],"mappings":";;;;;;;;;;;;;AAWA,MAAMA,QAAAA,GAAWC,MAAOC,CAAAA,IAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,mBAAAA,GAAsBF,MAAOG,CAAAA,GAAAA,CAAI;;;;;;AAMvC,CAAC;AAED,MAAMC,mBAAAA,GAAsBJ,MAAOG,CAAAA,GAAAA,CAAI;;;;;AAKvC,CAAC;AAEYE,MAAAA,aAAAA,GAAgB,CAAC,EAAEC,KAAK,EAAwB,GAAA;AAC3D,IAAA,IAAIA,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUC,KAAK,CAAG,EAAA;AACzC,QAAA,qBACEC,GAACT,CAAAA,mBAAAA,EAAAA;YAAoBU,MAAO,EAAA,MAAA;AAC1B,YAAA,QAAA,gBAAAD,GAACE,CAAAA,YAAAA,EAAAA;AACCC,gBAAAA,GAAAA,EAAKC,eAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBS,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUU,KAAK,CAAG,EAAA;AACzC,QAAA,qBACER,GAACP,CAAAA,mBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAO,GAACS,CAAAA,YAAAA,EAAAA;AACCN,gBAAAA,GAAAA,EAAKC,eAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BU,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUY,KAAK,CAAG,EAAA;QACzC,MAAMC,QAAAA,GAAWP,eAAeT,KAAO,EAAA,IAAA,CAAA;QACvC,IAAI,CAACgB,UAAU,OAAO,IAAA;;;QAItB,MAAMC,cAAAA,GAAiBjB,MAAMkB,WAAW,GACpCF,WACA,CAAC,EAAEA,SAAS,EAAEA,QAAAA,CAASd,QAAQ,CAAC,GAAA,CAAA,GAAO,MAAM,GAAI,CAAA,UAAU,EAAEF,KAAMmB,CAAAA,SAAS,CAAC,CAAC;AAElF,QAAA,qBACEd,GAACR,CAAAA,GAAAA,EAAAA;YACCuB,GAAI,EAAA,KAAA;YACJC,SAAU,EAAA,MAAA;YACVC,QAAS,EAAA,MAAA;YACTC,GAAKN,EAAAA,cAAAA;AACLP,YAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;AAG1C;AAEA,IAAA,qBACEP,GAACZ,CAAAA,QAAAA,EAAAA;QAAS+B,KAAM,EAAA,MAAA;QAAOlB,MAAO,EAAA,MAAA;QAAOmB,cAAe,EAAA,QAAA;QAASC,SAAS,EAAA,IAAA;AACnE1B,QAAAA,QAAAA,EAAAA,KAAAA,CAAM2B,GAAG,EAAEzB,QAAS,CAAA,KAAA,CAAA,iBACnBG,GAACuB,CAAAA,OAAAA,EAAAA;AAAQC,YAAAA,YAAAA,EAAY7B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEY,KAAM,EAAA,MAAA;YAAOlB,MAAO,EAAA;2BAE9ED,GAACyB,CAAAA,IAAAA,EAAAA;AAAKD,YAAAA,YAAAA,EAAY7B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEY,KAAM,EAAA,MAAA;YAAOlB,MAAO,EAAA;;;AAInF;;;;"}
1
+ {"version":3,"file":"CarouselAsset.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.tsx"],"sourcesContent":["import { Box, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../../enums';\nimport { createAssetUrl } from '../../../utils';\nimport { getFileIconComponent } from '../../../utils/icons';\nimport { AudioPreview } from '../../AssetCard/AudioPreview';\nimport { VideoPreview } from '../../AssetCard/VideoPreview';\n\nimport type { File as FileAsset } from '../../../../../shared/contracts/files';\n\nconst DocAsset = styled(Flex)`\n background: linear-gradient(180deg, #ffffff 0%, #f6f6f9 121.48%);\n`;\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n max-width: 100%;\n height: 124px;\n }\n`;\n\nconst AudioPreviewWrapper = styled(Box)`\n canvas,\n audio {\n max-width: 100%;\n }\n`;\n\nexport const CarouselAsset = ({ asset }: { asset: FileAsset }) => {\n if (asset.mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper height=\"100%\">\n <VideoPreview\n url={createAssetUrl(asset, true)!}\n mime={asset.mime}\n alt={asset.alternativeText || asset.name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Audio)) {\n return (\n <AudioPreviewWrapper>\n <AudioPreview\n url={createAssetUrl(asset, true)!}\n alt={asset.alternativeText || asset.name}\n />\n </AudioPreviewWrapper>\n );\n }\n\n if (asset.mime?.includes(AssetType.Image)) {\n const assetUrl = createAssetUrl(asset, true);\n if (!assetUrl) return null;\n\n // Adding a param to the url to bust the cache and force the refresh of the image when replaced\n // Only add updatedAt parameter if the URL is not signed to prevent signature invalidation\n const cacheBustedUrl = asset.isUrlSigned\n ? assetUrl\n : `${assetUrl}${assetUrl.includes('?') ? '&' : '?'}updatedAt=${asset.updatedAt}`;\n\n return (\n <Box\n tag=\"img\"\n maxHeight=\"100%\"\n maxWidth=\"100%\"\n src={cacheBustedUrl}\n alt={asset.alternativeText || asset.name}\n />\n );\n }\n\n const IconComponent = getFileIconComponent(asset.ext);\n\n return (\n <DocAsset width=\"100%\" height=\"100%\" justifyContent=\"center\" hasRadius>\n <IconComponent aria-label={asset.alternativeText || asset.name} width=\"24px\" height=\"32px\" />\n </DocAsset>\n );\n};\n"],"names":["DocAsset","styled","Flex","VideoPreviewWrapper","Box","AudioPreviewWrapper","CarouselAsset","asset","mime","includes","AssetType","Video","_jsx","height","VideoPreview","url","createAssetUrl","alt","alternativeText","name","Audio","AudioPreview","Image","assetUrl","cacheBustedUrl","isUrlSigned","updatedAt","tag","maxHeight","maxWidth","src","IconComponent","getFileIconComponent","ext","width","justifyContent","hasRadius","aria-label"],"mappings":";;;;;;;;;;;;;;AAWA,MAAMA,QAAAA,GAAWC,MAAOC,CAAAA,IAAAA,CAAK;;AAE7B,CAAC;AAED,MAAMC,mBAAAA,GAAsBF,MAAOG,CAAAA,GAAAA,CAAI;;;;;;AAMvC,CAAC;AAED,MAAMC,mBAAAA,GAAsBJ,MAAOG,CAAAA,GAAAA,CAAI;;;;;AAKvC,CAAC;AAEYE,MAAAA,aAAAA,GAAgB,CAAC,EAAEC,KAAK,EAAwB,GAAA;AAC3D,IAAA,IAAIA,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUC,KAAK,CAAG,EAAA;AACzC,QAAA,qBACEC,GAACT,CAAAA,mBAAAA,EAAAA;YAAoBU,MAAO,EAAA,MAAA;AAC1B,YAAA,QAAA,gBAAAD,GAACE,CAAAA,YAAAA,EAAAA;AACCC,gBAAAA,GAAAA,EAAKC,eAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BC,gBAAAA,IAAAA,EAAMD,MAAMC,IAAI;AAChBS,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUU,KAAK,CAAG,EAAA;AACzC,QAAA,qBACER,GAACP,CAAAA,mBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAAO,GAACS,CAAAA,YAAAA,EAAAA;AACCN,gBAAAA,GAAAA,EAAKC,eAAeT,KAAO,EAAA,IAAA,CAAA;AAC3BU,gBAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;;AAI5C;AAEA,IAAA,IAAIZ,MAAMC,IAAI,EAAEC,QAASC,CAAAA,SAAAA,CAAUY,KAAK,CAAG,EAAA;QACzC,MAAMC,QAAAA,GAAWP,eAAeT,KAAO,EAAA,IAAA,CAAA;QACvC,IAAI,CAACgB,UAAU,OAAO,IAAA;;;AAItB,QAAA,MAAMC,iBAAiBjB,KAAMkB,CAAAA,WAAW,GACpCF,QAAAA,GACA,GAAGA,QAAWA,CAAAA,EAAAA,QAAAA,CAASd,QAAQ,CAAC,OAAO,GAAM,GAAA,GAAA,CAAI,UAAU,EAAEF,KAAAA,CAAMmB,SAAS,CAAE,CAAA;AAElF,QAAA,qBACEd,GAACR,CAAAA,GAAAA,EAAAA;YACCuB,GAAI,EAAA,KAAA;YACJC,SAAU,EAAA,MAAA;YACVC,QAAS,EAAA,MAAA;YACTC,GAAKN,EAAAA,cAAAA;AACLP,YAAAA,GAAAA,EAAKV,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY;;AAG1C;IAEA,MAAMY,aAAAA,GAAgBC,oBAAqBzB,CAAAA,KAAAA,CAAM0B,GAAG,CAAA;AAEpD,IAAA,qBACErB,GAACZ,CAAAA,QAAAA,EAAAA;QAASkC,KAAM,EAAA,MAAA;QAAOrB,MAAO,EAAA,MAAA;QAAOsB,cAAe,EAAA,QAAA;QAASC,SAAS,EAAA,IAAA;AACpE,QAAA,QAAA,gBAAAxB,GAACmB,CAAAA,aAAAA,EAAAA;AAAcM,YAAAA,YAAAA,EAAY9B,KAAMW,CAAAA,eAAe,IAAIX,KAAAA,CAAMY,IAAI;YAAEe,KAAM,EAAA,MAAA;YAAOrB,MAAO,EAAA;;;AAG1F;;;;"}
@@ -9,7 +9,7 @@ require('byte-size');
9
9
  require('date-fns');
10
10
  var getTrad = require('../../../utils/getTrad.js');
11
11
  require('qs');
12
- require('../../../constants.js');
12
+ require('../../../utils/typeFromMime.js');
13
13
  require('../../../utils/urlYupSchema.js');
14
14
  var CopyLinkButton = require('../../CopyLinkButton/CopyLinkButton.js');
15
15
 
@@ -7,7 +7,7 @@ import 'byte-size';
7
7
  import 'date-fns';
8
8
  import { getTrad } from '../../../utils/getTrad.mjs';
9
9
  import 'qs';
10
- import '../../../constants.mjs';
10
+ import '../../../utils/typeFromMime.mjs';
11
11
  import '../../../utils/urlYupSchema.mjs';
12
12
  import { CopyLinkButton } from '../../CopyLinkButton/CopyLinkButton.mjs';
13
13
 
@@ -12,6 +12,7 @@ require('date-fns');
12
12
  var getTrad = require('../../../utils/getTrad.js');
13
13
  require('qs');
14
14
  var rawFileToAsset = require('../../../utils/rawFileToAsset.js');
15
+ require('../../../utils/typeFromMime.js');
15
16
  require('../../../utils/urlYupSchema.js');
16
17
 
17
18
  function _interopNamespaceDefault(e) {
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyStateAsset.js","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\nconst TextAlignTypography = styled(Typography)`\n align-items: center;\n`;\n\ntype FileWithoutIdHash = Omit<File, 'id' | 'hash'>;\n\ninterface EmptyStateAssetProps {\n disabled?: boolean;\n onClick: (asset?: File, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDropAsset: (assets: FileWithoutIdHash[]) => void;\n}\n\nexport const EmptyStateAsset = ({\n disabled = false,\n onClick,\n onDropAsset,\n}: EmptyStateAssetProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n\n const handleDragEnter = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setDragOver(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const handleDrop = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets: FileWithoutIdHash[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n\n assets.push(asset);\n }\n }\n\n onDropAsset(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <Flex\n borderStyle={dragOver ? 'dashed' : undefined}\n borderWidth={dragOver ? '1px' : undefined}\n borderColor={dragOver ? 'primary600' : undefined}\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height=\"100%\"\n width=\"100%\"\n tag=\"button\"\n type=\"button\"\n disabled={disabled}\n onClick={onClick as unknown as React.MouseEventHandler<HTMLButtonElement>}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n gap={3}\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <PicturePlus\n aria-hidden\n width=\"3.2rem\"\n height=\"3.2rem\"\n fill={disabled ? 'neutral400' : 'primary600'}\n />\n <TextAlignTypography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor=\"neutral600\"\n style={{ textAlign: 'center' }}\n tag=\"span\"\n >\n {formatMessage({\n id: getTrad('mediaLibraryInput.placeholder'),\n defaultMessage: 'Click to add an asset or drag and drop one in this area',\n })}\n </TextAlignTypography>\n </Flex>\n );\n};\n"],"names":["TextAlignTypography","styled","Typography","EmptyStateAsset","disabled","onClick","onDropAsset","formatMessage","useIntl","dragOver","setDragOver","React","useState","handleDragEnter","e","preventDefault","handleDragLeave","currentTarget","contains","relatedTarget","handleDragOver","handleDrop","dataTransfer","files","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","_jsxs","Flex","borderStyle","undefined","borderWidth","borderColor","direction","justifyContent","alignItems","height","width","tag","type","onDragEnter","onDragLeave","onDragOver","onDrop","gap","style","cursor","_jsx","PicturePlus","aria-hidden","fill","variant","fontWeight","textColor","textAlign","id","getTrad","defaultMessage"],"mappings":"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"}
1
+ {"version":3,"file":"EmptyStateAsset.js","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\nconst TextAlignTypography = styled(Typography)`\n align-items: center;\n`;\n\ntype FileWithoutIdHash = Omit<File, 'id' | 'hash'>;\n\ninterface EmptyStateAssetProps {\n disabled?: boolean;\n onClick: (asset?: File, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDropAsset: (assets: FileWithoutIdHash[]) => void;\n}\n\nexport const EmptyStateAsset = ({\n disabled = false,\n onClick,\n onDropAsset,\n}: EmptyStateAssetProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n\n const handleDragEnter = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setDragOver(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const handleDrop = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets: FileWithoutIdHash[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n\n assets.push(asset);\n }\n }\n\n onDropAsset(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <Flex\n borderStyle={dragOver ? 'dashed' : undefined}\n borderWidth={dragOver ? '1px' : undefined}\n borderColor={dragOver ? 'primary600' : undefined}\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height=\"100%\"\n width=\"100%\"\n tag=\"button\"\n type=\"button\"\n disabled={disabled}\n onClick={onClick as unknown as React.MouseEventHandler<HTMLButtonElement>}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n gap={3}\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <PicturePlus\n aria-hidden\n width=\"3.2rem\"\n height=\"3.2rem\"\n fill={disabled ? 'neutral400' : 'primary600'}\n />\n <TextAlignTypography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor=\"neutral600\"\n style={{ textAlign: 'center' }}\n tag=\"span\"\n >\n {formatMessage({\n id: getTrad('mediaLibraryInput.placeholder'),\n defaultMessage: 'Click to add an asset or drag and drop one in this area',\n })}\n </TextAlignTypography>\n </Flex>\n );\n};\n"],"names":["TextAlignTypography","styled","Typography","EmptyStateAsset","disabled","onClick","onDropAsset","formatMessage","useIntl","dragOver","setDragOver","React","useState","handleDragEnter","e","preventDefault","handleDragLeave","currentTarget","contains","relatedTarget","handleDragOver","handleDrop","dataTransfer","files","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","_jsxs","Flex","borderStyle","undefined","borderWidth","borderColor","direction","justifyContent","alignItems","height","width","tag","type","onDragEnter","onDragLeave","onDragOver","onDrop","gap","style","cursor","_jsx","PicturePlus","aria-hidden","fill","variant","fontWeight","textColor","textAlign","id","getTrad","defaultMessage"],"mappings":"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"}
@@ -10,6 +10,7 @@ import 'date-fns';
10
10
  import { getTrad } from '../../../utils/getTrad.mjs';
11
11
  import 'qs';
12
12
  import { rawFileToAsset } from '../../../utils/rawFileToAsset.mjs';
13
+ import '../../../utils/typeFromMime.mjs';
13
14
  import '../../../utils/urlYupSchema.mjs';
14
15
 
15
16
  const TextAlignTypography = styled(Typography)`
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyStateAsset.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\nconst TextAlignTypography = styled(Typography)`\n align-items: center;\n`;\n\ntype FileWithoutIdHash = Omit<File, 'id' | 'hash'>;\n\ninterface EmptyStateAssetProps {\n disabled?: boolean;\n onClick: (asset?: File, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDropAsset: (assets: FileWithoutIdHash[]) => void;\n}\n\nexport const EmptyStateAsset = ({\n disabled = false,\n onClick,\n onDropAsset,\n}: EmptyStateAssetProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n\n const handleDragEnter = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setDragOver(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const handleDrop = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets: FileWithoutIdHash[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n\n assets.push(asset);\n }\n }\n\n onDropAsset(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <Flex\n borderStyle={dragOver ? 'dashed' : undefined}\n borderWidth={dragOver ? '1px' : undefined}\n borderColor={dragOver ? 'primary600' : undefined}\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height=\"100%\"\n width=\"100%\"\n tag=\"button\"\n type=\"button\"\n disabled={disabled}\n onClick={onClick as unknown as React.MouseEventHandler<HTMLButtonElement>}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n gap={3}\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <PicturePlus\n aria-hidden\n width=\"3.2rem\"\n height=\"3.2rem\"\n fill={disabled ? 'neutral400' : 'primary600'}\n />\n <TextAlignTypography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor=\"neutral600\"\n style={{ textAlign: 'center' }}\n tag=\"span\"\n >\n {formatMessage({\n id: getTrad('mediaLibraryInput.placeholder'),\n defaultMessage: 'Click to add an asset or drag and drop one in this area',\n })}\n </TextAlignTypography>\n </Flex>\n );\n};\n"],"names":["TextAlignTypography","styled","Typography","EmptyStateAsset","disabled","onClick","onDropAsset","formatMessage","useIntl","dragOver","setDragOver","React","useState","handleDragEnter","e","preventDefault","handleDragLeave","currentTarget","contains","relatedTarget","handleDragOver","handleDrop","dataTransfer","files","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","_jsxs","Flex","borderStyle","undefined","borderWidth","borderColor","direction","justifyContent","alignItems","height","width","tag","type","onDragEnter","onDragLeave","onDragOver","onDrop","gap","style","cursor","_jsx","PicturePlus","aria-hidden","fill","variant","fontWeight","textColor","textAlign","id","getTrad","defaultMessage"],"mappings":"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"}
1
+ {"version":3,"file":"EmptyStateAsset.mjs","sources":["../../../../../admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\nconst TextAlignTypography = styled(Typography)`\n align-items: center;\n`;\n\ntype FileWithoutIdHash = Omit<File, 'id' | 'hash'>;\n\ninterface EmptyStateAssetProps {\n disabled?: boolean;\n onClick: (asset?: File, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDropAsset: (assets: FileWithoutIdHash[]) => void;\n}\n\nexport const EmptyStateAsset = ({\n disabled = false,\n onClick,\n onDropAsset,\n}: EmptyStateAssetProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n\n const handleDragEnter = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLButtonElement>) => {\n if (!e.currentTarget.contains(e.relatedTarget as Node)) {\n setDragOver(false);\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n };\n\n const handleDrop = (e: React.DragEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets: FileWithoutIdHash[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n\n assets.push(asset);\n }\n }\n\n onDropAsset(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <Flex\n borderStyle={dragOver ? 'dashed' : undefined}\n borderWidth={dragOver ? '1px' : undefined}\n borderColor={dragOver ? 'primary600' : undefined}\n direction=\"column\"\n justifyContent=\"center\"\n alignItems=\"center\"\n height=\"100%\"\n width=\"100%\"\n tag=\"button\"\n type=\"button\"\n disabled={disabled}\n onClick={onClick as unknown as React.MouseEventHandler<HTMLButtonElement>}\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n gap={3}\n style={{ cursor: disabled ? 'not-allowed' : 'pointer' }}\n >\n <PicturePlus\n aria-hidden\n width=\"3.2rem\"\n height=\"3.2rem\"\n fill={disabled ? 'neutral400' : 'primary600'}\n />\n <TextAlignTypography\n variant=\"pi\"\n fontWeight=\"bold\"\n textColor=\"neutral600\"\n style={{ textAlign: 'center' }}\n tag=\"span\"\n >\n {formatMessage({\n id: getTrad('mediaLibraryInput.placeholder'),\n defaultMessage: 'Click to add an asset or drag and drop one in this area',\n })}\n </TextAlignTypography>\n </Flex>\n );\n};\n"],"names":["TextAlignTypography","styled","Typography","EmptyStateAsset","disabled","onClick","onDropAsset","formatMessage","useIntl","dragOver","setDragOver","React","useState","handleDragEnter","e","preventDefault","handleDragLeave","currentTarget","contains","relatedTarget","handleDragOver","handleDrop","dataTransfer","files","assets","i","length","file","item","asset","rawFileToAsset","AssetSource","Computer","push","_jsxs","Flex","borderStyle","undefined","borderWidth","borderColor","direction","justifyContent","alignItems","height","width","tag","type","onDragEnter","onDragLeave","onDragOver","onDrop","gap","style","cursor","_jsx","PicturePlus","aria-hidden","fill","variant","fontWeight","textColor","textAlign","id","getTrad","defaultMessage"],"mappings":"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"}
@@ -9,7 +9,7 @@ require('date-fns');
9
9
  var getAllowedFiles = require('../../utils/getAllowedFiles.js');
10
10
  var getTrad = require('../../utils/getTrad.js');
11
11
  require('qs');
12
- require('../../constants.js');
12
+ require('../../utils/typeFromMime.js');
13
13
  require('../../utils/urlYupSchema.js');
14
14
  var AssetDialog = require('../AssetDialog/AssetDialog.js');
15
15
  var EditFolderDialog = require('../EditFolderDialog/EditFolderDialog.js');
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibraryInput.js","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAgBA,MAAMA,KAAQ,GAAA;IACZC,WAAa,EAAA,aAAA;IACbC,WAAa,EAAA,aAAA;IACbC,YAAc,EAAA;AAChB,CAAA;AAeaC,MAAAA,iBAAAA,iBAAoBC,gBAAMC,CAAAA,UAAU,CAC/C,CACE,EACEC,SAAW,EAAA,EAAEC,eAAe,IAAI,EAAEC,QAAW,GAAA,KAAK,EAAE,GAAG,EAAE,EACzDC,KAAK,EACLC,IAAI,EACJC,WAAW,KAAK,EAChBC,WAAcC,GAAAA,SAAS,EACvBC,IAAI,EACJC,QAAW,GAAA,KAAK,EACjB,EACDC,YAAAA,GAAAA;IAEA,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGC,oBAASR,CAAAA,IAAAA,CAAAA;AAC5C,IAAA,MAAM,CAACS,aAAeC,EAAAA,gBAAAA,CAAiB,GAAGpB,gBAAMqB,CAAAA,QAAQ,CAAmB,EAAE,CAAA;AAC7E,IAAA,MAAM,CAACC,IAAMC,EAAAA,OAAAA,CAAQ,GAAGvB,gBAAAA,CAAMqB,QAAQ,CAAqBZ,SAAAA,CAAAA;AAC3D,IAAA,MAAM,CAACe,aAAeC,EAAAA,gBAAAA,CAAiB,GAAGzB,gBAAAA,CAAMqB,QAAQ,CAAC,CAAA,CAAA;AACzD,IAAA,MAAM,CAACK,aAAAA,EAAeC,gBAAiB,CAAA,GAAG3B,iBAAMqB,QAAQ,EAAA;AACxD,IAAA,MAAM,CAACO,QAAUC,EAAAA,WAAAA,CAAY,GAAG7B,gBAAAA,CAAMqB,QAAQ,CAAgB,IAAA,CAAA;IAC9D,MAAM,EAAES,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;AAE/B/B,IAAAA,gBAAAA,CAAMgC,SAAS,CAAC,IAAA;;AAEd,QAAA,IAAIV,SAASb,SAAW,EAAA;AACtBW,YAAAA,gBAAAA,CAAiB,EAAE,CAAA;AACrB;KACC,EAAA;AAACE,QAAAA;AAAK,KAAA,CAAA;AAET,IAAA,IAAIW,iBAAyB,EAAE;IAE/B,IAAIC,KAAAA,CAAMC,OAAO,CAACnB,KAAQ,CAAA,EAAA;QACxBiB,cAAiBjB,GAAAA,KAAAA;AACnB,KAAA,MAAO,IAAIA,KAAO,EAAA;QAChBiB,cAAiB,GAAA;AAACjB,YAAAA;AAAM,SAAA;AAC1B;AAEA,IAAA,MAAMoB,mBAAmB,CAACC,kBAAAA,GAAAA;AACxB,QAAA,MAAMrB,KAAQZ,GAAAA,QAAAA,GAAWiC,kBAAqBA,GAAAA,kBAAkB,CAAC,CAAE,CAAA;AACnEtB,QAAAA,QAAAA,CAASL,IAAMM,EAAAA,KAAAA,CAAAA;QACfO,OAAQd,CAAAA,SAAAA,CAAAA;AACV,KAAA;AAEA,IAAA,MAAM6B,iCAAoC,GAAA,IAAA;QACxC,IAAIC,SAAAA;AAEJ,QAAA,IAAInC,QAAU,EAAA;AACZ,YAAA,MAAMiC,qBAAqBJ,cAAeO,CAAAA,MAAM,CAC9C,CAACC,CAAAA,EAAGC,aAAeA,UAAelB,KAAAA,aAAAA,CAAAA;AAEpCe,YAAAA,SAAAA,GAAYF,kBAAmBM,CAAAA,MAAM,GAAG,CAAA,GAAIN,kBAAqB,GAAA,IAAA;SAC5D,MAAA;YACLE,SAAY,GAAA,IAAA;AACd;AAEA,QAAA,MAAMvB,KAAQuB,GAAAA,SAAAA;AACdxB,QAAAA,QAAAA,CAASL,IAAMM,EAAAA,KAAAA,CAAAA;QAEfS,gBAAiB,CAAA,CAAA,CAAA;AACnB,KAAA;AAEA,IAAA,MAAMmB,oBAAoB,CAACC,KAAAA,GAAAA;QACzB,IAAIN,SAAAA;AAEJ,QAAA,IAAInC,QAAU,EAAA;YACZ,MAAMiC,kBAAAA,GAAqBJ,cAAeO,CAAAA,MAAM,CAAC,CAACM,YAAcA,SAAUC,CAAAA,EAAE,KAAKF,KAAAA,CAAME,EAAE,CAAA;AAEzFR,YAAAA,SAAAA,GAAYF,kBAAmBM,CAAAA,MAAM,GAAG,CAAA,GAAIN,kBAAqB,GAAA,IAAA;SAC5D,MAAA;YACLE,SAAY,GAAA,IAAA;AACd;AAEAxB,QAAAA,QAAAA,CAASL,IAAM6B,EAAAA,SAAAA,CAAAA;QAEfd,gBAAiB,CAAA,CAAA,CAAA;AACnB,KAAA;AAEA,IAAA,MAAMuB,kBAAkB,CAACH,KAAAA,GAAAA;AACvB,QAAA,MAAMR,kBAAqBJ,GAAAA,cAAAA,CAAegB,GAAG,CAAC,CAACH,SAAAA,GAC7CA,SAAUC,CAAAA,EAAE,KAAKF,KAAAA,CAAME,EAAE,GAAGF,KAAQC,GAAAA,SAAAA,CAAAA;AAGtC/B,QAAAA,QAAAA,CAASL,IAAMN,EAAAA,QAAAA,GAAWiC,kBAAqBA,GAAAA,kBAAkB,CAAC,CAAE,CAAA,CAAA;AACtE,KAAA;IAEA,MAAMa,mBAAAA,GAAsB,CAC1BC,MACAC,EAAAA,QAAAA,GAAAA;QAEA,MAAMC,aAAAA,GAAgBC,gCAAgBnD,YAAcgD,EAAAA,MAAAA,CAAAA;QAEpD,IAAIE,aAAAA,CAAcV,MAAM,GAAG,CAAG,EAAA;YAC5BS,QAASC,CAAAA,aAAAA,CAAAA;SACJ,MAAA;YACLvB,kBAAmB,CAAA;gBACjByB,IAAM,EAAA,QAAA;gBACNC,OAAS,EAAA,IAAA;AACTC,gBAAAA,OAAAA,EAAS5C,aACP,CAAA;AACEkC,oBAAAA,EAAAA,EAAIW,eAAQ,CAAA,kCAAA,CAAA;oBACZC,cAAgB,EAAA,CAAC,mCAAmC;iBAEtD,EAAA;AACEC,oBAAAA,SAAAA,EAAW,CAACzD,YAAAA,IAAgB,EAAE,EAAE0D,IAAI,CAAC,GAAA;AACvC,iBAAA;AAEJ,aAAA,CAAA;AACF;AACF,KAAA;AAEA,IAAA,MAAMC,kBAAkB,CAACX,MAAAA,GAAAA;AACvBD,QAAAA,mBAAAA,CAAoBC,QAAQ,CAACE,aAAAA,GAAAA;YAC3B1B,gBAAiB0B,CAAAA,aAAAA,CAAAA;AACjB9B,YAAAA,OAAAA,CAAQ5B,MAAME,WAAW,CAAA;AAC3B,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,IAAIO,QAAY6B,IAAAA,cAAAA,CAAeU,MAAM,GAAG,CAAG,EAAA;AACzCtC,QAAAA,KAAAA,GAAQ,CAAGA,EAAAA,KAAAA,CAAM,EAAE,EAAEmB,aAAgB,GAAA,CAAA,CAAE,GAAG,EAAES,cAAeU,CAAAA,MAAM,CAAC,CAAC,CAAC;AACtE;AAEA,IAAA,MAAMoB,UAAa,GAAA,IAAA;QACjBtC,gBAAiB,CAAA,CAACuC,UAAaA,OAAU/B,GAAAA,cAAAA,CAAeU,MAAM,GAAG,CAAA,GAAIqB,UAAU,CAAI,GAAA,CAAA,CAAA;AACrF,KAAA;AAEA,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBxC,gBAAiB,CAAA,CAACuC,UAAaA,OAAU,GAAA,CAAA,GAAIA,UAAU,CAAI/B,GAAAA,cAAAA,CAAeU,MAAM,GAAG,CAAA,CAAA;AACrF,KAAA;AAEA,IAAA,MAAMuB,6BAA6B,CAAC/C,aAAAA,GAAAA;AAClCC,QAAAA,gBAAAA,CAAiB,CAAC+C,IAAS,GAAA;AAAIA,gBAAAA,GAAAA,IAAAA;AAAShD,gBAAAA,GAAAA;AAAc,aAAA,CAAA;AACxD,KAAA;AAEA,IAAA,IAAIiD,uBAA0BnC,GAAAA,cAAAA;IAE9B,IAAId,aAAAA,CAAcwB,MAAM,GAAG,CAAG,EAAA;QAC5B,MAAM0B,oBAAAA,GAAuBf,gCAAgBnD,YAAcgB,EAAAA,aAAAA,CAAAA;AAE3DiD,QAAAA,uBAAAA,GAA0BhE,QACtB,GAAA;AAAIiE,YAAAA,GAAAA,oBAAAA;AAAyBpC,YAAAA,GAAAA;SAAe,GAC5C;AAACoC,YAAAA,oBAAoB,CAAC,CAAE;AAAC,SAAA;AAC/B;IAEA,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;0BACEC,cAACC,CAAAA,6BAAAA,EAAAA;gBACCC,GAAK9D,EAAAA,YAAAA;gBACLuC,MAAQlB,EAAAA,cAAAA;gBACR1B,QAAUA,EAAAA,QAAAA;gBACVF,KAAOA,EAAAA,KAAAA;gBACPG,WAAaA,EAAAA,WAAAA;gBACbmE,aAAe/B,EAAAA,iBAAAA;gBACfgC,6BAA+BtC,EAAAA,iCAAAA;gBAC/BuC,UAAY,EAAA,IAAMtD,OAAQ5B,CAAAA,KAAAA,CAAMC,WAAW,CAAA;gBAC3CkF,WAAahB,EAAAA,eAAAA;gBACbiB,WAAa/B,EAAAA,eAAAA;gBACbgC,MAAQjB,EAAAA,UAAAA;gBACRkB,UAAYhB,EAAAA,cAAAA;gBACZhD,KAAOA,EAAAA,KAAAA;gBACPX,IAAMA,EAAAA,IAAAA;gBACNK,QAAUA,EAAAA,QAAAA;gBACVuE,kBAAoB1D,EAAAA,aAAAA;gBACpB2D,eAAgB,EAAA;;YAGjB7D,IAAS3B,KAAAA,KAAAA,CAAMC,WAAW,kBACzB4E,cAACY,CAAAA,uBAAAA,EAAAA;gBACCjF,YAAcA,EAAAA,YAAAA;gBACdiE,uBAAyBA,EAAAA,uBAAAA;gBACzBxC,QAAUA,EAAAA,QAAAA;gBACVyD,OAAS,EAAA,IAAA;oBACP9D,OAAQd,CAAAA,SAAAA,CAAAA;oBACRoB,WAAY,CAAA,IAAA,CAAA;AACd,iBAAA;gBACAyD,IAAMhE,EAAAA,IAAAA,KAAS3B,MAAMC,WAAW;gBAChC2F,UAAYnD,EAAAA,gBAAAA;gBACZhC,QAAUA,EAAAA,QAAAA;gBACVyE,UAAY,EAAA,IAAMtD,OAAQ5B,CAAAA,KAAAA,CAAME,WAAW,CAAA;gBAC3C2F,WAAa,EAAA,IAAMjE,OAAQ5B,CAAAA,KAAAA,CAAMG,YAAY,CAAA;gBAC7C2F,cAAgB,EAAA,CAACC,SAAW7D,WAAY6D,CAAAA,MAAAA,CAAAA;gBACxCP,eAAgB,EAAA;;YAInB7D,IAAS3B,KAAAA,KAAAA,CAAME,WAAW,kBACzB2E,cAACmB,CAAAA,mCAAAA,EAAAA;gBACCL,IAAMhE,EAAAA,IAAAA,KAAS3B,MAAME,WAAW;gBAChCwF,OAAS,EAAA,IAAM9D,OAAQ5B,CAAAA,KAAAA,CAAMC,WAAW,CAAA;gBACxCgG,kBAAoBlE,EAAAA,aAAAA;gBACpBmE,gBAAkB3B,EAAAA,0BAAAA;gBAClBiB,eAAgB,EAAA,iBAAA;gBAChBvD,QAAUA,EAAAA,QAAAA;gBACVsB,mBAAqBA,EAAAA;;YAIxB5B,IAAS3B,KAAAA,KAAAA,CAAMG,YAAY,kBAC1B0E,cAACsB,CAAAA,iCAAAA,EAAAA;gBACCR,IAAMhE,EAAAA,IAAAA,KAAS3B,MAAMG,YAAY;gBACjCuF,OAAS,EAAA,IAAM9D,OAAQ5B,CAAAA,KAAAA,CAAMC,WAAW,CAAA;gBACxCmG,cAAgBnE,EAAAA;;;;AAK1B,CACA;;;;"}
@@ -7,7 +7,7 @@ import 'date-fns';
7
7
  import { getAllowedFiles } from '../../utils/getAllowedFiles.mjs';
8
8
  import { getTrad } from '../../utils/getTrad.mjs';
9
9
  import 'qs';
10
- import '../../constants.mjs';
10
+ import '../../utils/typeFromMime.mjs';
11
11
  import '../../utils/urlYupSchema.mjs';
12
12
  import { AssetDialog } from '../AssetDialog/AssetDialog.mjs';
13
13
  import { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}
1
+ {"version":3,"file":"MediaLibraryInput.mjs","sources":["../../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useField, useNotification } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, getAllowedFiles, AllowedFiles } from '../../utils';\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog, Asset } from '../UploadAssetDialog/UploadAssetDialog';\n\nimport { CarouselAssets, CarouselAssetsProps, FileWithoutIdHash } from './Carousel/CarouselAssets';\n\nimport type { File } from '../../../../shared/contracts/files';\ntype AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nexport interface MediaLibraryInputProps {\n required?: boolean;\n name: string;\n labelAction?: React.ReactNode;\n label?: string;\n hint?: string;\n disabled?: boolean;\n attribute?: {\n allowedTypes?: AllowedTypes[];\n multiple?: boolean;\n };\n}\n\nexport const MediaLibraryInput = React.forwardRef<CarouselAssetsProps, MediaLibraryInputProps>(\n (\n {\n attribute: { allowedTypes = null, multiple = false } = {},\n label,\n hint,\n disabled = false,\n labelAction = undefined,\n name,\n required = false,\n },\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const { onChange, value, error } = useField(name);\n const [uploadedFiles, setUploadedFiles] = React.useState<Asset[] | File[]>([]);\n const [step, setStep] = React.useState<string | undefined>(undefined);\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [droppedAssets, setDroppedAssets] = React.useState<AllowedFiles[]>();\n const [folderId, setFolderId] = React.useState<number | null>(null);\n const { toggleNotification } = useNotification();\n\n React.useEffect(() => {\n // Clear the uploaded files on close\n if (step === undefined) {\n setUploadedFiles([]);\n }\n }, [step]);\n\n let selectedAssets: File[] = [];\n\n if (Array.isArray(value)) {\n selectedAssets = value;\n } else if (value) {\n selectedAssets = [value];\n }\n\n const handleValidation = (nextSelectedAssets: File[]) => {\n const value = multiple ? nextSelectedAssets : nextSelectedAssets[0];\n onChange(name, value);\n setStep(undefined);\n };\n\n const handleDeleteAssetFromMediaLibrary = () => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter(\n (_, assetIndex) => assetIndex !== selectedIndex\n );\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n const value = nextValue;\n onChange(name, value);\n\n setSelectedIndex(0);\n };\n\n const handleDeleteAsset = (asset: File) => {\n let nextValue;\n\n if (multiple) {\n const nextSelectedAssets = selectedAssets.filter((prevAsset) => prevAsset.id !== asset.id);\n\n nextValue = nextSelectedAssets.length > 0 ? nextSelectedAssets : null;\n } else {\n nextValue = null;\n }\n\n onChange(name, nextValue);\n\n setSelectedIndex(0);\n };\n\n const handleAssetEdit = (asset: File) => {\n const nextSelectedAssets = selectedAssets.map((prevAsset) =>\n prevAsset.id === asset.id ? asset : prevAsset\n );\n\n onChange(name, multiple ? nextSelectedAssets : nextSelectedAssets[0]);\n };\n\n const validateAssetsTypes = (\n assets: FileWithoutIdHash[] | Asset[],\n callback: (assets?: AllowedFiles[], error?: string) => void\n ) => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (allowedAssets.length > 0) {\n callback(allowedAssets);\n } else {\n toggleNotification({\n type: 'danger',\n timeout: 4000,\n message: formatMessage(\n {\n id: getTrad('input.notification.not-supported'),\n defaultMessage: `You can't upload this type of file.`,\n },\n {\n fileTypes: (allowedTypes ?? []).join(','),\n }\n ),\n });\n }\n };\n\n const handleAssetDrop = (assets: FileWithoutIdHash[]) => {\n validateAssetsTypes(assets, (allowedAssets?: AllowedFiles[]) => {\n setDroppedAssets(allowedAssets);\n setStep(STEPS.AssetUpload);\n });\n };\n\n if (multiple && selectedAssets.length > 0) {\n label = `${label} (${selectedIndex + 1} / ${selectedAssets.length})`;\n }\n\n const handleNext = () => {\n setSelectedIndex((current) => (current < selectedAssets.length - 1 ? current + 1 : 0));\n };\n\n const handlePrevious = () => {\n setSelectedIndex((current) => (current > 0 ? current - 1 : selectedAssets.length - 1));\n };\n\n const handleFilesUploadSucceeded = (uploadedFiles: Asset[] | File[]) => {\n setUploadedFiles((prev) => [...prev, ...uploadedFiles]);\n };\n\n let initiallySelectedAssets = selectedAssets;\n\n if (uploadedFiles.length > 0) {\n const allowedUploadedFiles = getAllowedFiles(allowedTypes, uploadedFiles as AllowedFiles[]);\n\n initiallySelectedAssets = multiple\n ? [...allowedUploadedFiles, ...selectedAssets]\n : [allowedUploadedFiles[0]];\n }\n\n return (\n <>\n <CarouselAssets\n ref={forwardedRef}\n assets={selectedAssets}\n disabled={disabled}\n label={label!}\n labelAction={labelAction}\n onDeleteAsset={handleDeleteAsset}\n onDeleteAssetFromMediaLibrary={handleDeleteAssetFromMediaLibrary}\n onAddAsset={() => setStep(STEPS.AssetSelect)}\n onDropAsset={handleAssetDrop}\n onEditAsset={handleAssetEdit}\n onNext={handleNext}\n onPrevious={handlePrevious}\n error={error}\n hint={hint}\n required={required}\n selectedAssetIndex={selectedIndex}\n trackedLocation=\"content-manager\"\n />\n\n {step === STEPS.AssetSelect && (\n <AssetDialog\n allowedTypes={allowedTypes as AllowedTypes[]}\n initiallySelectedAssets={initiallySelectedAssets}\n folderId={folderId}\n onClose={() => {\n setStep(undefined);\n setFolderId(null);\n }}\n open={step === STEPS.AssetSelect}\n onValidate={handleValidation}\n multiple={multiple}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folder) => setFolderId(folder)}\n trackedLocation=\"content-manager\"\n />\n )}\n\n {step === STEPS.AssetUpload && (\n <UploadAssetDialog\n open={step === STEPS.AssetUpload}\n onClose={() => setStep(STEPS.AssetSelect)}\n initialAssetsToAdd={droppedAssets as Asset[]}\n addUploadedFiles={handleFilesUploadSucceeded}\n trackedLocation=\"content-manager\"\n folderId={folderId}\n validateAssetsTypes={validateAssetsTypes}\n />\n )}\n\n {step === STEPS.FolderCreate && (\n <EditFolderDialog\n open={step === STEPS.FolderCreate}\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n )}\n </>\n );\n }\n);\n"],"names":["STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryInput","React","forwardRef","attribute","allowedTypes","multiple","label","hint","disabled","labelAction","undefined","name","required","forwardedRef","formatMessage","useIntl","onChange","value","error","useField","uploadedFiles","setUploadedFiles","useState","step","setStep","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","folderId","setFolderId","toggleNotification","useNotification","useEffect","selectedAssets","Array","isArray","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","filter","_","assetIndex","length","handleDeleteAsset","asset","prevAsset","id","handleAssetEdit","map","validateAssetsTypes","assets","callback","allowedAssets","getAllowedFiles","type","timeout","message","getTrad","defaultMessage","fileTypes","join","handleAssetDrop","handleNext","current","handlePrevious","handleFilesUploadSucceeded","prev","initiallySelectedAssets","allowedUploadedFiles","_jsxs","_Fragment","_jsx","CarouselAssets","ref","onDeleteAsset","onDeleteAssetFromMediaLibrary","onAddAsset","onDropAsset","onEditAsset","onNext","onPrevious","selectedAssetIndex","trackedLocation","AssetDialog","onClose","open","onValidate","onAddFolder","onChangeFolder","folder","UploadAssetDialog","initialAssetsToAdd","addUploadedFiles","EditFolderDialog","parentFolderId"],"mappings":"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"}