@strapi/upload 5.12.0 → 5.12.2

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 (866) hide show
  1. package/dist/admin/components/AssetCard/AssetCard.js +59 -0
  2. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -0
  3. package/dist/admin/components/AssetCard/AssetCard.mjs +57 -0
  4. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -0
  5. package/dist/admin/components/AssetCard/AssetCardBase.js +130 -0
  6. package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -0
  7. package/dist/admin/components/AssetCard/AssetCardBase.mjs +128 -0
  8. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -0
  9. package/dist/admin/components/AssetCard/AudioAssetCard.js +40 -0
  10. package/dist/admin/components/AssetCard/AudioAssetCard.js.map +1 -0
  11. package/dist/admin/components/AssetCard/AudioAssetCard.mjs +38 -0
  12. package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +1 -0
  13. package/dist/admin/components/AssetCard/AudioPreview.js +17 -0
  14. package/dist/admin/components/AssetCard/AudioPreview.js.map +1 -0
  15. package/dist/admin/components/AssetCard/AudioPreview.mjs +15 -0
  16. package/dist/admin/components/AssetCard/AudioPreview.mjs.map +1 -0
  17. package/dist/admin/components/AssetCard/DocAssetCard.js +61 -0
  18. package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -0
  19. package/dist/admin/components/AssetCard/DocAssetCard.mjs +59 -0
  20. package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -0
  21. package/dist/admin/components/AssetCard/ImageAssetCard.js +37 -0
  22. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -0
  23. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +35 -0
  24. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -0
  25. package/dist/admin/components/AssetCard/UploadingAssetCard.js +152 -0
  26. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -0
  27. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +131 -0
  28. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -0
  29. package/dist/admin/components/AssetCard/VideoAssetCard.js +72 -0
  30. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -0
  31. package/dist/admin/components/AssetCard/VideoAssetCard.mjs +51 -0
  32. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -0
  33. package/dist/admin/components/AssetCard/VideoPreview.js +50 -0
  34. package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -0
  35. package/dist/admin/components/AssetCard/VideoPreview.mjs +48 -0
  36. package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -0
  37. package/dist/admin/components/AssetDialog/AssetDialog.js +321 -0
  38. package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -0
  39. package/dist/admin/components/AssetDialog/AssetDialog.mjs +299 -0
  40. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -0
  41. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +313 -0
  42. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -0
  43. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +311 -0
  44. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -0
  45. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +70 -0
  46. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -0
  47. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +49 -0
  48. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -0
  49. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js +58 -0
  50. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +1 -0
  51. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs +56 -0
  52. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -0
  53. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +55 -0
  54. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -0
  55. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs +33 -0
  56. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -0
  57. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js +378 -0
  58. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -0
  59. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs +376 -0
  60. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -0
  61. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +102 -0
  62. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -0
  63. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +81 -0
  64. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -0
  65. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js +14 -0
  66. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -0
  67. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs +12 -0
  68. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -0
  69. package/dist/admin/components/AssetDialog/DialogFooter.js +31 -0
  70. package/dist/admin/components/AssetDialog/DialogFooter.js.map +1 -0
  71. package/dist/admin/components/AssetDialog/DialogFooter.mjs +29 -0
  72. package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +1 -0
  73. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +60 -0
  74. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -0
  75. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +58 -0
  76. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -0
  77. package/dist/admin/components/AssetGridList/AssetGridList.js +72 -0
  78. package/dist/admin/components/AssetGridList/AssetGridList.js.map +1 -0
  79. package/dist/admin/components/AssetGridList/AssetGridList.mjs +70 -0
  80. package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +1 -0
  81. package/dist/admin/components/AssetGridList/Draggable.js +65 -0
  82. package/dist/admin/components/AssetGridList/Draggable.js.map +1 -0
  83. package/dist/admin/components/AssetGridList/Draggable.mjs +44 -0
  84. package/dist/admin/components/AssetGridList/Draggable.mjs.map +1 -0
  85. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js +49 -0
  86. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  87. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs +47 -0
  88. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -0
  89. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +89 -0
  90. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -0
  91. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +68 -0
  92. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -0
  93. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +154 -0
  94. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -0
  95. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +152 -0
  96. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -0
  97. package/dist/admin/components/ContextInfo/ContextInfo.js +44 -0
  98. package/dist/admin/components/ContextInfo/ContextInfo.js.map +1 -0
  99. package/dist/admin/components/ContextInfo/ContextInfo.mjs +42 -0
  100. package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +1 -0
  101. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +43 -0
  102. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -0
  103. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +41 -0
  104. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -0
  105. package/dist/admin/components/EditAssetDialog/DialogHeader.js +20 -0
  106. package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +1 -0
  107. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs +18 -0
  108. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +1 -0
  109. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +403 -0
  110. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -0
  111. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +380 -0
  112. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -0
  113. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +127 -0
  114. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -0
  115. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +106 -0
  116. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -0
  117. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +111 -0
  118. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -0
  119. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +109 -0
  120. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -0
  121. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +260 -0
  122. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -0
  123. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +239 -0
  124. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -0
  125. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js +75 -0
  126. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -0
  127. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs +68 -0
  128. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -0
  129. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js +27 -0
  130. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -0
  131. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs +25 -0
  132. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -0
  133. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +79 -0
  134. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -0
  135. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +58 -0
  136. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -0
  137. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +336 -0
  138. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -0
  139. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +313 -0
  140. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -0
  141. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +29 -0
  142. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -0
  143. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +27 -0
  144. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -0
  145. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js +18 -0
  146. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -0
  147. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs +16 -0
  148. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -0
  149. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js +31 -0
  150. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -0
  151. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs +29 -0
  152. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -0
  153. package/dist/admin/components/EmptyAssets/EmptyAssets.js +53 -0
  154. package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +1 -0
  155. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs +51 -0
  156. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +1 -0
  157. package/dist/admin/components/FilterList/FilterList.js +74 -0
  158. package/dist/admin/components/FilterList/FilterList.js.map +1 -0
  159. package/dist/admin/components/FilterList/FilterList.mjs +72 -0
  160. package/dist/admin/components/FilterList/FilterList.mjs.map +1 -0
  161. package/dist/admin/components/FilterList/FilterTag.js +50 -0
  162. package/dist/admin/components/FilterList/FilterTag.js.map +1 -0
  163. package/dist/admin/components/FilterList/FilterTag.mjs +48 -0
  164. package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -0
  165. package/dist/admin/components/FilterPopover/FilterPopover.js +275 -0
  166. package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -0
  167. package/dist/admin/components/FilterPopover/FilterPopover.mjs +254 -0
  168. package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -0
  169. package/dist/admin/components/FilterPopover/FilterValueInput.js +39 -0
  170. package/dist/admin/components/FilterPopover/FilterValueInput.js.map +1 -0
  171. package/dist/admin/components/FilterPopover/FilterValueInput.mjs +37 -0
  172. package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +1 -0
  173. package/dist/admin/components/FilterPopover/utils/getFilterList.js +114 -0
  174. package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +1 -0
  175. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs +112 -0
  176. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +1 -0
  177. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js +125 -0
  178. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -0
  179. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs +104 -0
  180. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -0
  181. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js +26 -0
  182. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -0
  183. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs +24 -0
  184. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -0
  185. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js +40 -0
  186. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -0
  187. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs +38 -0
  188. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -0
  189. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js +20 -0
  190. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -0
  191. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs +18 -0
  192. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -0
  193. package/dist/admin/components/FolderCard/contexts/FolderCard.js +12 -0
  194. package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +1 -0
  195. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs +9 -0
  196. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +1 -0
  197. package/dist/admin/components/FolderGridList/FolderGridList.js +29 -0
  198. package/dist/admin/components/FolderGridList/FolderGridList.js.map +1 -0
  199. package/dist/admin/components/FolderGridList/FolderGridList.mjs +27 -0
  200. package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +1 -0
  201. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js +71 -0
  202. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -0
  203. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs +50 -0
  204. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -0
  205. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +78 -0
  206. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -0
  207. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +76 -0
  208. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -0
  209. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +52 -0
  210. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -0
  211. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +50 -0
  212. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -0
  213. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +112 -0
  214. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -0
  215. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +91 -0
  216. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -0
  217. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +116 -0
  218. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -0
  219. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +95 -0
  220. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -0
  221. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +216 -0
  222. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
  223. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +195 -0
  224. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
  225. package/dist/admin/components/SelectTree/Option.js +70 -0
  226. package/dist/admin/components/SelectTree/Option.js.map +1 -0
  227. package/dist/admin/components/SelectTree/Option.mjs +68 -0
  228. package/dist/admin/components/SelectTree/Option.mjs.map +1 -0
  229. package/dist/admin/components/SelectTree/SelectTree.js +276 -0
  230. package/dist/admin/components/SelectTree/SelectTree.js.map +1 -0
  231. package/dist/admin/components/SelectTree/SelectTree.mjs +255 -0
  232. package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -0
  233. package/dist/admin/components/SelectTree/utils/flattenTree.js +19 -0
  234. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -0
  235. package/dist/admin/components/SelectTree/utils/flattenTree.mjs +17 -0
  236. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -0
  237. package/dist/admin/components/SelectTree/utils/getOpenValues.js +24 -0
  238. package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +1 -0
  239. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs +22 -0
  240. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +1 -0
  241. package/dist/admin/components/SelectTree/utils/getValuesToClose.js +12 -0
  242. package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +1 -0
  243. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs +10 -0
  244. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +1 -0
  245. package/dist/admin/components/SortPicker/SortPicker.js +39 -0
  246. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -0
  247. package/dist/admin/components/SortPicker/SortPicker.mjs +37 -0
  248. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -0
  249. package/dist/admin/components/TableList/CellContent.js +76 -0
  250. package/dist/admin/components/TableList/CellContent.js.map +1 -0
  251. package/dist/admin/components/TableList/CellContent.mjs +74 -0
  252. package/dist/admin/components/TableList/CellContent.mjs.map +1 -0
  253. package/dist/admin/components/TableList/PreviewCell.js +82 -0
  254. package/dist/admin/components/TableList/PreviewCell.js.map +1 -0
  255. package/dist/admin/components/TableList/PreviewCell.mjs +80 -0
  256. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -0
  257. package/dist/admin/components/TableList/TableList.js +99 -0
  258. package/dist/admin/components/TableList/TableList.js.map +1 -0
  259. package/dist/admin/components/TableList/TableList.mjs +97 -0
  260. package/dist/admin/components/TableList/TableList.mjs.map +1 -0
  261. package/dist/admin/components/TableList/TableRows.js +101 -0
  262. package/dist/admin/components/TableList/TableRows.js.map +1 -0
  263. package/dist/admin/components/TableList/TableRows.mjs +99 -0
  264. package/dist/admin/components/TableList/TableRows.mjs.map +1 -0
  265. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +84 -0
  266. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -0
  267. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +82 -0
  268. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -0
  269. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +203 -0
  270. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -0
  271. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +182 -0
  272. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -0
  273. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +127 -0
  274. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -0
  275. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +106 -0
  276. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -0
  277. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +206 -0
  278. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -0
  279. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +185 -0
  280. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -0
  281. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js +129 -0
  282. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -0
  283. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs +108 -0
  284. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -0
  285. package/dist/admin/components/UploadProgress/UploadProgress.js +88 -0
  286. package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -0
  287. package/dist/admin/components/UploadProgress/UploadProgress.mjs +86 -0
  288. package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -0
  289. package/dist/admin/constants.js +205 -0
  290. package/dist/admin/constants.js.map +1 -0
  291. package/dist/admin/constants.mjs +198 -0
  292. package/dist/admin/constants.mjs.map +1 -0
  293. package/dist/admin/hooks/useAssets.js +124 -0
  294. package/dist/admin/hooks/useAssets.js.map +1 -0
  295. package/dist/admin/hooks/useAssets.mjs +103 -0
  296. package/dist/admin/hooks/useAssets.mjs.map +1 -0
  297. package/dist/admin/hooks/useBulkMove.js +79 -0
  298. package/dist/admin/hooks/useBulkMove.js.map +1 -0
  299. package/dist/admin/hooks/useBulkMove.mjs +77 -0
  300. package/dist/admin/hooks/useBulkMove.mjs.map +1 -0
  301. package/dist/admin/hooks/useBulkRemove.js +79 -0
  302. package/dist/admin/hooks/useBulkRemove.js.map +1 -0
  303. package/dist/admin/hooks/useBulkRemove.mjs +77 -0
  304. package/dist/admin/hooks/useBulkRemove.mjs.map +1 -0
  305. package/dist/admin/hooks/useConfig.js +57 -0
  306. package/dist/admin/hooks/useConfig.js.map +1 -0
  307. package/dist/admin/hooks/useConfig.mjs +55 -0
  308. package/dist/admin/hooks/useConfig.mjs.map +1 -0
  309. package/dist/admin/hooks/useCropImg.js +96 -0
  310. package/dist/admin/hooks/useCropImg.js.map +1 -0
  311. package/dist/admin/hooks/useCropImg.mjs +75 -0
  312. package/dist/admin/hooks/useCropImg.mjs.map +1 -0
  313. package/dist/admin/hooks/useEditAsset.js +114 -0
  314. package/dist/admin/hooks/useEditAsset.js.map +1 -0
  315. package/dist/admin/hooks/useEditAsset.mjs +93 -0
  316. package/dist/admin/hooks/useEditAsset.mjs.map +1 -0
  317. package/dist/admin/hooks/useEditFolder.js +44 -0
  318. package/dist/admin/hooks/useEditFolder.js.map +1 -0
  319. package/dist/admin/hooks/useEditFolder.mjs +42 -0
  320. package/dist/admin/hooks/useEditFolder.mjs.map +1 -0
  321. package/dist/admin/hooks/useFolder.js +58 -0
  322. package/dist/admin/hooks/useFolder.js.map +1 -0
  323. package/dist/admin/hooks/useFolder.mjs +56 -0
  324. package/dist/admin/hooks/useFolder.mjs.map +1 -0
  325. package/dist/admin/hooks/useFolderStructure.js +53 -0
  326. package/dist/admin/hooks/useFolderStructure.js.map +1 -0
  327. package/dist/admin/hooks/useFolderStructure.mjs +51 -0
  328. package/dist/admin/hooks/useFolderStructure.mjs.map +1 -0
  329. package/dist/admin/hooks/useFolders.js +107 -0
  330. package/dist/admin/hooks/useFolders.js.map +1 -0
  331. package/dist/admin/hooks/useFolders.mjs +86 -0
  332. package/dist/admin/hooks/useFolders.mjs.map +1 -0
  333. package/dist/admin/hooks/useMediaLibraryPermissions.js +16 -0
  334. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -0
  335. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +14 -0
  336. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -0
  337. package/dist/admin/hooks/useModalQueryParams.js +138 -0
  338. package/dist/admin/hooks/useModalQueryParams.js.map +1 -0
  339. package/dist/admin/hooks/useModalQueryParams.mjs +117 -0
  340. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -0
  341. package/dist/admin/hooks/usePersistentState.js +31 -0
  342. package/dist/admin/hooks/usePersistentState.js.map +1 -0
  343. package/dist/admin/hooks/usePersistentState.mjs +29 -0
  344. package/dist/admin/hooks/usePersistentState.mjs.map +1 -0
  345. package/dist/admin/hooks/useRemoveAsset.js +53 -0
  346. package/dist/admin/hooks/useRemoveAsset.js.map +1 -0
  347. package/dist/admin/hooks/useRemoveAsset.mjs +51 -0
  348. package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -0
  349. package/dist/admin/hooks/useSelectionState.js +85 -0
  350. package/dist/admin/hooks/useSelectionState.js.map +1 -0
  351. package/dist/admin/hooks/useSelectionState.mjs +64 -0
  352. package/dist/admin/hooks/useSelectionState.mjs.map +1 -0
  353. package/dist/admin/hooks/useUpload.js +86 -0
  354. package/dist/admin/hooks/useUpload.js.map +1 -0
  355. package/dist/admin/hooks/useUpload.mjs +65 -0
  356. package/dist/admin/hooks/useUpload.mjs.map +1 -0
  357. package/dist/admin/hooks/utils/renameKeys.js +12 -0
  358. package/dist/admin/hooks/utils/renameKeys.js.map +1 -0
  359. package/dist/admin/hooks/utils/renameKeys.mjs +10 -0
  360. package/dist/admin/hooks/utils/renameKeys.mjs.map +1 -0
  361. package/dist/admin/index.js +104 -22
  362. package/dist/admin/index.js.map +1 -1
  363. package/dist/admin/index.mjs +105 -21
  364. package/dist/admin/index.mjs.map +1 -1
  365. package/dist/admin/package.json.js +161 -0
  366. package/dist/admin/package.json.js.map +1 -0
  367. package/dist/admin/package.json.mjs +143 -0
  368. package/dist/admin/package.json.mjs.map +1 -0
  369. package/dist/admin/pages/App/App.js +94 -0
  370. package/dist/admin/pages/App/App.js.map +1 -0
  371. package/dist/admin/pages/App/App.mjs +73 -0
  372. package/dist/admin/pages/App/App.mjs.map +1 -0
  373. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +142 -0
  374. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -0
  375. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +121 -0
  376. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -0
  377. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +108 -0
  378. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -0
  379. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +106 -0
  380. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -0
  381. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js +10 -0
  382. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -0
  383. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs +7 -0
  384. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -0
  385. package/dist/admin/pages/App/ConfigureTheView/state/actions.js +16 -0
  386. package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +1 -0
  387. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs +13 -0
  388. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +1 -0
  389. package/dist/admin/pages/App/ConfigureTheView/state/init.js +17 -0
  390. package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +1 -0
  391. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs +14 -0
  392. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +1 -0
  393. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js +40 -0
  394. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -0
  395. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs +38 -0
  396. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -0
  397. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js +453 -0
  398. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.js.map +1 -0
  399. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs +432 -0
  400. package/dist/admin/pages/App/MediaLibrary/MediaLibrary.mjs.map +1 -0
  401. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js +49 -0
  402. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.js.map +1 -0
  403. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs +47 -0
  404. package/dist/admin/pages/App/MediaLibrary/components/BulkActions.mjs.map +1 -0
  405. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.js +38 -0
  406. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.js.map +1 -0
  407. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.mjs +36 -0
  408. package/dist/admin/pages/App/MediaLibrary/components/BulkDeleteButton.mjs.map +1 -0
  409. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.js +61 -0
  410. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.js.map +1 -0
  411. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.mjs +40 -0
  412. package/dist/admin/pages/App/MediaLibrary/components/BulkMoveButton.mjs.map +1 -0
  413. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js +66 -0
  414. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.js.map +1 -0
  415. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs +64 -0
  416. package/dist/admin/pages/App/MediaLibrary/components/EmptyOrNoPermissions.mjs.map +1 -0
  417. package/dist/admin/pages/App/MediaLibrary/components/Filters.js +94 -0
  418. package/dist/admin/pages/App/MediaLibrary/components/Filters.js.map +1 -0
  419. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs +73 -0
  420. package/dist/admin/pages/App/MediaLibrary/components/Filters.mjs.map +1 -0
  421. package/dist/admin/pages/App/MediaLibrary/components/Header.js +76 -0
  422. package/dist/admin/pages/App/MediaLibrary/components/Header.js.map +1 -0
  423. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs +74 -0
  424. package/dist/admin/pages/App/MediaLibrary/components/Header.mjs.map +1 -0
  425. package/dist/admin/{chunks/SettingsPage-5TS6R8ax.js → pages/SettingsPage/SettingsPage.js} +18 -67
  426. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -0
  427. package/dist/admin/{chunks/SettingsPage-B7xS0X0V.mjs → pages/SettingsPage/SettingsPage.mjs} +6 -55
  428. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -0
  429. package/dist/admin/pages/SettingsPage/init.js +8 -0
  430. package/dist/admin/pages/SettingsPage/init.js.map +1 -0
  431. package/dist/admin/pages/SettingsPage/init.mjs +6 -0
  432. package/dist/admin/pages/SettingsPage/init.mjs.map +1 -0
  433. package/dist/admin/pages/SettingsPage/reducer.js +43 -0
  434. package/dist/admin/pages/SettingsPage/reducer.js.map +1 -0
  435. package/dist/admin/pages/SettingsPage/reducer.mjs +40 -0
  436. package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -0
  437. package/dist/admin/pluginId.js +8 -0
  438. package/dist/admin/pluginId.js.map +1 -0
  439. package/dist/admin/pluginId.mjs +6 -0
  440. package/dist/admin/pluginId.mjs.map +1 -0
  441. package/dist/admin/{chunks/ca-pCOhKIn8.js → translations/ca.json.js} +2 -2
  442. package/dist/admin/translations/ca.json.js.map +1 -0
  443. package/dist/admin/{chunks/ca-Bi4qskZD.mjs → translations/ca.json.mjs} +1 -1
  444. package/dist/admin/translations/ca.json.mjs.map +1 -0
  445. package/dist/admin/{chunks/de-DUjKLmOP.js → translations/de.json.js} +2 -2
  446. package/dist/admin/translations/de.json.js.map +1 -0
  447. package/dist/admin/{chunks/de-BlbX8Dl_.mjs → translations/de.json.mjs} +1 -1
  448. package/dist/admin/translations/de.json.mjs.map +1 -0
  449. package/dist/admin/{chunks/dk-DSsspA0e.js → translations/dk.json.js} +2 -2
  450. package/dist/admin/translations/dk.json.js.map +1 -0
  451. package/dist/admin/{chunks/dk-C2ydE6A7.mjs → translations/dk.json.mjs} +1 -1
  452. package/dist/admin/translations/dk.json.mjs.map +1 -0
  453. package/dist/admin/{chunks/en-UjETkewz.js → translations/en.json.js} +2 -2
  454. package/dist/admin/translations/en.json.js.map +1 -0
  455. package/dist/admin/{chunks/en-Bw_Cb2IV.mjs → translations/en.json.mjs} +1 -1
  456. package/dist/admin/translations/en.json.mjs.map +1 -0
  457. package/dist/admin/{chunks/es-qAL8YcZz.js → translations/es.json.js} +2 -2
  458. package/dist/admin/translations/es.json.js.map +1 -0
  459. package/dist/admin/{chunks/es-CiEgbw0k.mjs → translations/es.json.mjs} +1 -1
  460. package/dist/admin/translations/es.json.mjs.map +1 -0
  461. package/dist/admin/{chunks/fr-BL0Uyj6j.js → translations/fr.json.js} +2 -2
  462. package/dist/admin/translations/fr.json.js.map +1 -0
  463. package/dist/admin/{chunks/fr-CwRt2FJu.mjs → translations/fr.json.mjs} +1 -1
  464. package/dist/admin/translations/fr.json.mjs.map +1 -0
  465. package/dist/admin/{chunks/he-BAmhVpfZ.js → translations/he.json.js} +2 -2
  466. package/dist/admin/translations/he.json.js.map +1 -0
  467. package/dist/admin/{chunks/he-DdpYNQdt.mjs → translations/he.json.mjs} +1 -1
  468. package/dist/admin/translations/he.json.mjs.map +1 -0
  469. package/dist/admin/{chunks/it-_NQZYepl.js → translations/it.json.js} +2 -2
  470. package/dist/admin/translations/it.json.js.map +1 -0
  471. package/dist/admin/{chunks/it-Be4kgSNB.mjs → translations/it.json.mjs} +1 -1
  472. package/dist/admin/translations/it.json.mjs.map +1 -0
  473. package/dist/admin/{chunks/ja-B75QiyXf.js → translations/ja.json.js} +2 -2
  474. package/dist/admin/translations/ja.json.js.map +1 -0
  475. package/dist/admin/{chunks/ja-U1NhT0bU.mjs → translations/ja.json.mjs} +1 -1
  476. package/dist/admin/translations/ja.json.mjs.map +1 -0
  477. package/dist/admin/{chunks/ko-BOvUcJqv.js → translations/ko.json.js} +2 -2
  478. package/dist/admin/translations/ko.json.js.map +1 -0
  479. package/dist/admin/{chunks/ko-BciqXefq.mjs → translations/ko.json.mjs} +1 -1
  480. package/dist/admin/translations/ko.json.mjs.map +1 -0
  481. package/dist/admin/{chunks/ms-B7Zl6Lm9.js → translations/ms.json.js} +2 -2
  482. package/dist/admin/translations/ms.json.js.map +1 -0
  483. package/dist/admin/{chunks/ms-D-8McNeg.mjs → translations/ms.json.mjs} +1 -1
  484. package/dist/admin/translations/ms.json.mjs.map +1 -0
  485. package/dist/admin/{chunks/pl-cYDYHOEf.js → translations/pl.json.js} +2 -2
  486. package/dist/admin/translations/pl.json.js.map +1 -0
  487. package/dist/admin/{chunks/pl-DdUYocl5.mjs → translations/pl.json.mjs} +1 -1
  488. package/dist/admin/translations/pl.json.mjs.map +1 -0
  489. package/dist/admin/{chunks/pt-BR-D1u_azCM.js → translations/pt-BR.json.js} +2 -2
  490. package/dist/admin/translations/pt-BR.json.js.map +1 -0
  491. package/dist/admin/{chunks/pt-BR-Demjoq41.mjs → translations/pt-BR.json.mjs} +1 -1
  492. package/dist/admin/translations/pt-BR.json.mjs.map +1 -0
  493. package/dist/admin/{chunks/pt-L2DZeTPL.js → translations/pt.json.js} +2 -2
  494. package/dist/admin/translations/pt.json.js.map +1 -0
  495. package/dist/admin/{chunks/pt-D8is2LpS.mjs → translations/pt.json.mjs} +1 -1
  496. package/dist/admin/translations/pt.json.mjs.map +1 -0
  497. package/dist/admin/{chunks/ru-Uxbk_WWv.js → translations/ru.json.js} +2 -2
  498. package/dist/admin/translations/ru.json.js.map +1 -0
  499. package/dist/admin/{chunks/ru-CGgHRTey.mjs → translations/ru.json.mjs} +1 -1
  500. package/dist/admin/translations/ru.json.mjs.map +1 -0
  501. package/dist/admin/{chunks/sk-BlLP5HAX.js → translations/sk.json.js} +2 -2
  502. package/dist/admin/translations/sk.json.js.map +1 -0
  503. package/dist/admin/{chunks/sk-xtSwaPXq.mjs → translations/sk.json.mjs} +1 -1
  504. package/dist/admin/translations/sk.json.mjs.map +1 -0
  505. package/dist/admin/{chunks/th-DNxPLegS.js → translations/th.json.js} +2 -2
  506. package/dist/admin/translations/th.json.js.map +1 -0
  507. package/dist/admin/{chunks/th-BOpLVfmg.mjs → translations/th.json.mjs} +1 -1
  508. package/dist/admin/translations/th.json.mjs.map +1 -0
  509. package/dist/admin/{chunks/tr-DWgXG75k.js → translations/tr.json.js} +2 -2
  510. package/dist/admin/translations/tr.json.js.map +1 -0
  511. package/dist/admin/{chunks/tr-BmAPh-f1.mjs → translations/tr.json.mjs} +1 -1
  512. package/dist/admin/translations/tr.json.mjs.map +1 -0
  513. package/dist/admin/{chunks/uk-Cfm1dM3v.js → translations/uk.json.js} +2 -2
  514. package/dist/admin/translations/uk.json.js.map +1 -0
  515. package/dist/admin/{chunks/uk-DPZD6U8g.mjs → translations/uk.json.mjs} +1 -1
  516. package/dist/admin/translations/uk.json.mjs.map +1 -0
  517. package/dist/admin/{chunks/zh-Hans-B8qxMQIl.js → translations/zh-Hans.json.js} +2 -2
  518. package/dist/admin/{chunks/ca-Bi4qskZD.mjs.map → translations/zh-Hans.json.js.map} +1 -1
  519. package/dist/admin/{chunks/zh-Hans-B1GabBRx.mjs → translations/zh-Hans.json.mjs} +1 -1
  520. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  521. package/dist/admin/{chunks/zh-MemsyMV6.js → translations/zh.json.js} +2 -2
  522. package/dist/admin/translations/zh.json.js.map +1 -0
  523. package/dist/admin/{chunks/zh-BIl0qgBy.mjs → translations/zh.json.mjs} +1 -1
  524. package/dist/admin/translations/zh.json.mjs.map +1 -0
  525. package/dist/admin/utils/appendSearchParamsToUrl.js +17 -0
  526. package/dist/admin/utils/appendSearchParamsToUrl.js.map +1 -0
  527. package/dist/admin/utils/appendSearchParamsToUrl.mjs +15 -0
  528. package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +1 -0
  529. package/dist/admin/utils/containsAssetFilter.js +18 -0
  530. package/dist/admin/utils/containsAssetFilter.js.map +1 -0
  531. package/dist/admin/utils/containsAssetFilter.mjs +16 -0
  532. package/dist/admin/utils/containsAssetFilter.mjs.map +1 -0
  533. package/dist/admin/utils/createAssetUrl.js +14 -0
  534. package/dist/admin/utils/createAssetUrl.js.map +1 -0
  535. package/dist/admin/utils/createAssetUrl.mjs +12 -0
  536. package/dist/admin/utils/createAssetUrl.mjs.map +1 -0
  537. package/dist/admin/utils/displayedFilters.js +52 -0
  538. package/dist/admin/utils/displayedFilters.js.map +1 -0
  539. package/dist/admin/utils/displayedFilters.mjs +50 -0
  540. package/dist/admin/utils/displayedFilters.mjs.map +1 -0
  541. package/dist/admin/utils/downloadFile.js +13 -0
  542. package/dist/admin/utils/downloadFile.js.map +1 -0
  543. package/dist/admin/utils/downloadFile.mjs +11 -0
  544. package/dist/admin/utils/downloadFile.mjs.map +1 -0
  545. package/dist/admin/utils/findRecursiveFolderByValue.js +17 -0
  546. package/dist/admin/utils/findRecursiveFolderByValue.js.map +1 -0
  547. package/dist/admin/utils/findRecursiveFolderByValue.mjs +15 -0
  548. package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +1 -0
  549. package/dist/admin/utils/formatBytes.js +17 -0
  550. package/dist/admin/utils/formatBytes.js.map +1 -0
  551. package/dist/admin/utils/formatBytes.mjs +15 -0
  552. package/dist/admin/utils/formatBytes.mjs.map +1 -0
  553. package/dist/admin/utils/formatDuration.js +15 -0
  554. package/dist/admin/utils/formatDuration.js.map +1 -0
  555. package/dist/admin/utils/formatDuration.mjs +13 -0
  556. package/dist/admin/utils/formatDuration.mjs.map +1 -0
  557. package/dist/admin/utils/getAPIInnerErrors.js +26 -0
  558. package/dist/admin/utils/getAPIInnerErrors.js.map +1 -0
  559. package/dist/admin/utils/getAPIInnerErrors.mjs +24 -0
  560. package/dist/admin/utils/getAPIInnerErrors.mjs.map +1 -0
  561. package/dist/admin/utils/getAllowedFiles.js +25 -0
  562. package/dist/admin/utils/getAllowedFiles.js.map +1 -0
  563. package/dist/admin/utils/getAllowedFiles.mjs +23 -0
  564. package/dist/admin/utils/getAllowedFiles.mjs.map +1 -0
  565. package/dist/admin/utils/getBreadcrumbDataCM.js +36 -0
  566. package/dist/admin/utils/getBreadcrumbDataCM.js.map +1 -0
  567. package/dist/admin/utils/getBreadcrumbDataCM.mjs +34 -0
  568. package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +1 -0
  569. package/dist/admin/utils/getBreadcrumbDataML.js +40 -0
  570. package/dist/admin/utils/getBreadcrumbDataML.js.map +1 -0
  571. package/dist/admin/utils/getBreadcrumbDataML.mjs +38 -0
  572. package/dist/admin/utils/getBreadcrumbDataML.mjs.map +1 -0
  573. package/dist/admin/utils/getFileExtension.js +6 -0
  574. package/dist/admin/utils/getFileExtension.js.map +1 -0
  575. package/dist/admin/utils/getFileExtension.mjs +4 -0
  576. package/dist/admin/utils/getFileExtension.mjs.map +1 -0
  577. package/dist/admin/utils/getFolderParents.js +26 -0
  578. package/dist/admin/utils/getFolderParents.js.map +1 -0
  579. package/dist/admin/utils/getFolderParents.mjs +24 -0
  580. package/dist/admin/utils/getFolderParents.mjs.map +1 -0
  581. package/dist/admin/utils/getFolderURL.js +20 -0
  582. package/dist/admin/utils/getFolderURL.js.map +1 -0
  583. package/dist/admin/utils/getFolderURL.mjs +18 -0
  584. package/dist/admin/utils/getFolderURL.mjs.map +1 -0
  585. package/dist/admin/utils/getTrad.js +8 -0
  586. package/dist/admin/utils/getTrad.js.map +1 -0
  587. package/dist/admin/utils/getTrad.mjs +6 -0
  588. package/dist/admin/utils/getTrad.mjs.map +1 -0
  589. package/dist/admin/utils/moveElement.js +16 -0
  590. package/dist/admin/utils/moveElement.js.map +1 -0
  591. package/dist/admin/utils/moveElement.mjs +14 -0
  592. package/dist/admin/utils/moveElement.mjs.map +1 -0
  593. package/dist/admin/utils/normalizeAPIError.js +55 -0
  594. package/dist/admin/utils/normalizeAPIError.js.map +1 -0
  595. package/dist/admin/utils/normalizeAPIError.mjs +53 -0
  596. package/dist/admin/utils/normalizeAPIError.mjs.map +1 -0
  597. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js +8 -0
  598. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -0
  599. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs +6 -0
  600. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -0
  601. package/dist/admin/utils/prefixPluginTranslations.js +14 -0
  602. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  603. package/dist/admin/utils/prefixPluginTranslations.mjs +12 -0
  604. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  605. package/dist/admin/utils/rawFileToAsset.js +21 -0
  606. package/dist/admin/utils/rawFileToAsset.js.map +1 -0
  607. package/dist/admin/utils/rawFileToAsset.mjs +19 -0
  608. package/dist/admin/utils/rawFileToAsset.mjs.map +1 -0
  609. package/dist/admin/utils/toSingularTypes.js +11 -0
  610. package/dist/admin/utils/toSingularTypes.js.map +1 -0
  611. package/dist/admin/utils/toSingularTypes.mjs +9 -0
  612. package/dist/admin/utils/toSingularTypes.mjs.map +1 -0
  613. package/dist/admin/utils/typeFromMime.js +19 -0
  614. package/dist/admin/utils/typeFromMime.js.map +1 -0
  615. package/dist/admin/utils/typeFromMime.mjs +17 -0
  616. package/dist/admin/utils/typeFromMime.mjs.map +1 -0
  617. package/dist/admin/utils/urlYupSchema.js +72 -0
  618. package/dist/admin/utils/urlYupSchema.js.map +1 -0
  619. package/dist/admin/utils/urlYupSchema.mjs +51 -0
  620. package/dist/admin/utils/urlYupSchema.mjs.map +1 -0
  621. package/dist/admin/utils/urlsToAssets.js +39 -0
  622. package/dist/admin/utils/urlsToAssets.js.map +1 -0
  623. package/dist/admin/utils/urlsToAssets.mjs +37 -0
  624. package/dist/admin/utils/urlsToAssets.mjs.map +1 -0
  625. package/dist/server/bootstrap.js +98 -0
  626. package/dist/server/bootstrap.js.map +1 -0
  627. package/dist/server/bootstrap.mjs +96 -0
  628. package/dist/server/bootstrap.mjs.map +1 -0
  629. package/dist/server/config.js +14 -0
  630. package/dist/server/config.js.map +1 -0
  631. package/dist/server/config.mjs +12 -0
  632. package/dist/server/config.mjs.map +1 -0
  633. package/dist/server/constants.js +35 -0
  634. package/dist/server/constants.js.map +1 -0
  635. package/dist/server/constants.mjs +28 -0
  636. package/dist/server/constants.mjs.map +1 -0
  637. package/dist/server/content-types/file.js +155 -0
  638. package/dist/server/content-types/file.js.map +1 -0
  639. package/dist/server/content-types/file.mjs +153 -0
  640. package/dist/server/content-types/file.mjs.map +1 -0
  641. package/dist/server/content-types/folder.js +78 -0
  642. package/dist/server/content-types/folder.js.map +1 -0
  643. package/dist/server/content-types/folder.mjs +76 -0
  644. package/dist/server/content-types/folder.mjs.map +1 -0
  645. package/dist/server/content-types/index.js +12 -0
  646. package/dist/server/content-types/index.js.map +1 -0
  647. package/dist/server/content-types/index.mjs +10 -0
  648. package/dist/server/content-types/index.mjs.map +1 -0
  649. package/dist/server/controllers/admin-file.js +61 -0
  650. package/dist/server/controllers/admin-file.js.map +1 -0
  651. package/dist/server/controllers/admin-file.mjs +59 -0
  652. package/dist/server/controllers/admin-file.mjs.map +1 -0
  653. package/dist/server/controllers/admin-folder-file.js +189 -0
  654. package/dist/server/controllers/admin-folder-file.js.map +1 -0
  655. package/dist/server/controllers/admin-folder-file.mjs +187 -0
  656. package/dist/server/controllers/admin-folder-file.mjs.map +1 -0
  657. package/dist/server/controllers/admin-folder.js +104 -0
  658. package/dist/server/controllers/admin-folder.js.map +1 -0
  659. package/dist/server/controllers/admin-folder.mjs +102 -0
  660. package/dist/server/controllers/admin-folder.mjs.map +1 -0
  661. package/dist/server/controllers/admin-settings.js +32 -0
  662. package/dist/server/controllers/admin-settings.js.map +1 -0
  663. package/dist/server/controllers/admin-settings.mjs +30 -0
  664. package/dist/server/controllers/admin-settings.mjs.map +1 -0
  665. package/dist/server/controllers/admin-upload.js +88 -0
  666. package/dist/server/controllers/admin-upload.js.map +1 -0
  667. package/dist/server/controllers/admin-upload.mjs +86 -0
  668. package/dist/server/controllers/admin-upload.mjs.map +1 -0
  669. package/dist/server/controllers/content-api.js +122 -0
  670. package/dist/server/controllers/content-api.js.map +1 -0
  671. package/dist/server/controllers/content-api.mjs +120 -0
  672. package/dist/server/controllers/content-api.mjs.map +1 -0
  673. package/dist/server/controllers/index.js +22 -0
  674. package/dist/server/controllers/index.js.map +1 -0
  675. package/dist/server/controllers/index.mjs +20 -0
  676. package/dist/server/controllers/index.mjs.map +1 -0
  677. package/dist/server/controllers/utils/find-entity-and-check-permissions.js +38 -0
  678. package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -0
  679. package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs +36 -0
  680. package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs.map +1 -0
  681. package/dist/server/controllers/utils/folders.js +6 -0
  682. package/dist/server/controllers/utils/folders.js.map +1 -0
  683. package/dist/server/controllers/utils/folders.mjs +4 -0
  684. package/dist/server/controllers/utils/folders.mjs.map +1 -0
  685. package/dist/server/controllers/validation/admin/configureView.js +13 -0
  686. package/dist/server/controllers/validation/admin/configureView.js.map +1 -0
  687. package/dist/server/controllers/validation/admin/configureView.mjs +11 -0
  688. package/dist/server/controllers/validation/admin/configureView.mjs.map +1 -0
  689. package/dist/server/controllers/validation/admin/folder-file.js +88 -0
  690. package/dist/server/controllers/validation/admin/folder-file.js.map +1 -0
  691. package/dist/server/controllers/validation/admin/folder-file.mjs +85 -0
  692. package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -0
  693. package/dist/server/controllers/validation/admin/folder.js +69 -0
  694. package/dist/server/controllers/validation/admin/folder.js.map +1 -0
  695. package/dist/server/controllers/validation/admin/folder.mjs +66 -0
  696. package/dist/server/controllers/validation/admin/folder.mjs.map +1 -0
  697. package/dist/server/controllers/validation/admin/settings.js +13 -0
  698. package/dist/server/controllers/validation/admin/settings.js.map +1 -0
  699. package/dist/server/controllers/validation/admin/settings.mjs +11 -0
  700. package/dist/server/controllers/validation/admin/settings.mjs.map +1 -0
  701. package/dist/server/controllers/validation/admin/upload.js +35 -0
  702. package/dist/server/controllers/validation/admin/upload.js.map +1 -0
  703. package/dist/server/controllers/validation/admin/upload.mjs +33 -0
  704. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -0
  705. package/dist/server/controllers/validation/admin/utils.js +17 -0
  706. package/dist/server/controllers/validation/admin/utils.js.map +1 -0
  707. package/dist/server/controllers/validation/admin/utils.mjs +15 -0
  708. package/dist/server/controllers/validation/admin/utils.mjs.map +1 -0
  709. package/dist/server/controllers/validation/content-api/upload.js +24 -0
  710. package/dist/server/controllers/validation/content-api/upload.js.map +1 -0
  711. package/dist/server/controllers/validation/content-api/upload.mjs +22 -0
  712. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -0
  713. package/dist/server/controllers/view-configuration.js +28 -0
  714. package/dist/server/controllers/view-configuration.js.map +1 -0
  715. package/dist/server/controllers/view-configuration.mjs +26 -0
  716. package/dist/server/controllers/view-configuration.mjs.map +1 -0
  717. package/dist/server/documentation/content-api.json.js +290 -0
  718. package/dist/server/documentation/content-api.json.js.map +1 -0
  719. package/dist/server/documentation/content-api.json.mjs +284 -0
  720. package/dist/server/documentation/content-api.json.mjs.map +1 -0
  721. package/dist/server/{chunks/graphql-CwNPX8zo.js → graphql.js} +3 -16
  722. package/dist/server/graphql.js.map +1 -0
  723. package/dist/server/{chunks/graphql-K9HaGS9d.mjs → graphql.mjs} +2 -15
  724. package/dist/server/graphql.mjs.map +1 -0
  725. package/dist/server/index.js +17 -16
  726. package/dist/server/index.js.map +1 -1
  727. package/dist/server/index.mjs +19 -14
  728. package/dist/server/index.mjs.map +1 -1
  729. package/dist/server/middlewares/upload.js +38 -0
  730. package/dist/server/middlewares/upload.js.map +1 -0
  731. package/dist/server/middlewares/upload.mjs +36 -0
  732. package/dist/server/middlewares/upload.mjs.map +1 -0
  733. package/dist/server/register.js +88 -0
  734. package/dist/server/register.js.map +1 -0
  735. package/dist/server/register.mjs +86 -0
  736. package/dist/server/register.mjs.map +1 -0
  737. package/dist/server/routes/admin.js +236 -0
  738. package/dist/server/routes/admin.js.map +1 -0
  739. package/dist/server/routes/admin.mjs +234 -0
  740. package/dist/server/routes/admin.mjs.map +1 -0
  741. package/dist/server/routes/content-api.js +30 -0
  742. package/dist/server/routes/content-api.js.map +1 -0
  743. package/dist/server/routes/content-api.mjs +28 -0
  744. package/dist/server/routes/content-api.mjs.map +1 -0
  745. package/dist/server/routes/index.js +14 -0
  746. package/dist/server/routes/index.js.map +1 -0
  747. package/dist/server/routes/index.mjs +12 -0
  748. package/dist/server/routes/index.mjs.map +1 -0
  749. package/dist/server/routes/view-configuration.js +40 -0
  750. package/dist/server/routes/view-configuration.js.map +1 -0
  751. package/dist/server/routes/view-configuration.mjs +38 -0
  752. package/dist/server/routes/view-configuration.mjs.map +1 -0
  753. package/dist/server/services/api-upload-folder.js +52 -0
  754. package/dist/server/services/api-upload-folder.js.map +1 -0
  755. package/dist/server/services/api-upload-folder.mjs +50 -0
  756. package/dist/server/services/api-upload-folder.mjs.map +1 -0
  757. package/dist/server/services/extensions/index.js +40 -0
  758. package/dist/server/services/extensions/index.js.map +1 -0
  759. package/dist/server/services/extensions/index.mjs +38 -0
  760. package/dist/server/services/extensions/index.mjs.map +1 -0
  761. package/dist/server/services/extensions/utils.js +53 -0
  762. package/dist/server/services/extensions/utils.js.map +1 -0
  763. package/dist/server/services/extensions/utils.mjs +51 -0
  764. package/dist/server/services/extensions/utils.mjs.map +1 -0
  765. package/dist/server/services/file.js +57 -0
  766. package/dist/server/services/file.js.map +1 -0
  767. package/dist/server/services/file.mjs +55 -0
  768. package/dist/server/services/file.mjs.map +1 -0
  769. package/dist/server/services/folder.js +275 -0
  770. package/dist/server/services/folder.js.map +1 -0
  771. package/dist/server/services/folder.mjs +273 -0
  772. package/dist/server/services/folder.mjs.map +1 -0
  773. package/dist/server/services/image-manipulation.js +255 -0
  774. package/dist/server/services/image-manipulation.js.map +1 -0
  775. package/dist/server/services/image-manipulation.mjs +253 -0
  776. package/dist/server/services/image-manipulation.mjs.map +1 -0
  777. package/dist/server/services/index.js +26 -0
  778. package/dist/server/services/index.js.map +1 -0
  779. package/dist/server/services/index.mjs +24 -0
  780. package/dist/server/services/index.mjs.map +1 -0
  781. package/dist/server/services/metrics.js +19 -0
  782. package/dist/server/services/metrics.js.map +1 -0
  783. package/dist/server/services/metrics.mjs +17 -0
  784. package/dist/server/services/metrics.mjs.map +1 -0
  785. package/dist/server/services/provider.js +33 -0
  786. package/dist/server/services/provider.js.map +1 -0
  787. package/dist/server/services/provider.mjs +31 -0
  788. package/dist/server/services/provider.mjs.map +1 -0
  789. package/dist/server/services/upload.js +445 -0
  790. package/dist/server/services/upload.js.map +1 -0
  791. package/dist/server/services/upload.mjs +443 -0
  792. package/dist/server/services/upload.mjs.map +1 -0
  793. package/dist/server/services/weekly-metrics.js +127 -0
  794. package/dist/server/services/weekly-metrics.js.map +1 -0
  795. package/dist/server/services/weekly-metrics.mjs +125 -0
  796. package/dist/server/services/weekly-metrics.mjs.map +1 -0
  797. package/dist/server/utils/cron.js +6 -0
  798. package/dist/server/utils/cron.js.map +1 -0
  799. package/dist/server/utils/cron.mjs +4 -0
  800. package/dist/server/utils/cron.mjs.map +1 -0
  801. package/dist/server/utils/index.js +8 -0
  802. package/dist/server/utils/index.js.map +1 -0
  803. package/dist/server/utils/index.mjs +6 -0
  804. package/dist/server/utils/index.mjs.map +1 -0
  805. package/package.json +5 -5
  806. package/dist/admin/chunks/App-BBHvDTKY.js +0 -993
  807. package/dist/admin/chunks/App-BBHvDTKY.js.map +0 -1
  808. package/dist/admin/chunks/App-DOvEuP1h.mjs +0 -972
  809. package/dist/admin/chunks/App-DOvEuP1h.mjs.map +0 -1
  810. package/dist/admin/chunks/ConfigureTheView-BZq26A26.js +0 -297
  811. package/dist/admin/chunks/ConfigureTheView-BZq26A26.js.map +0 -1
  812. package/dist/admin/chunks/ConfigureTheView-CzngS3_9.mjs +0 -276
  813. package/dist/admin/chunks/ConfigureTheView-CzngS3_9.mjs.map +0 -1
  814. package/dist/admin/chunks/SettingsPage-5TS6R8ax.js.map +0 -1
  815. package/dist/admin/chunks/SettingsPage-B7xS0X0V.mjs.map +0 -1
  816. package/dist/admin/chunks/ca-pCOhKIn8.js.map +0 -1
  817. package/dist/admin/chunks/de-BlbX8Dl_.mjs.map +0 -1
  818. package/dist/admin/chunks/de-DUjKLmOP.js.map +0 -1
  819. package/dist/admin/chunks/dk-C2ydE6A7.mjs.map +0 -1
  820. package/dist/admin/chunks/dk-DSsspA0e.js.map +0 -1
  821. package/dist/admin/chunks/en-Bw_Cb2IV.mjs.map +0 -1
  822. package/dist/admin/chunks/en-UjETkewz.js.map +0 -1
  823. package/dist/admin/chunks/es-CiEgbw0k.mjs.map +0 -1
  824. package/dist/admin/chunks/es-qAL8YcZz.js.map +0 -1
  825. package/dist/admin/chunks/fr-BL0Uyj6j.js.map +0 -1
  826. package/dist/admin/chunks/fr-CwRt2FJu.mjs.map +0 -1
  827. package/dist/admin/chunks/he-BAmhVpfZ.js.map +0 -1
  828. package/dist/admin/chunks/he-DdpYNQdt.mjs.map +0 -1
  829. package/dist/admin/chunks/index-mrIASzro.js +0 -7406
  830. package/dist/admin/chunks/index-mrIASzro.js.map +0 -1
  831. package/dist/admin/chunks/index-zOCLhXyV.mjs +0 -7349
  832. package/dist/admin/chunks/index-zOCLhXyV.mjs.map +0 -1
  833. package/dist/admin/chunks/it-Be4kgSNB.mjs.map +0 -1
  834. package/dist/admin/chunks/it-_NQZYepl.js.map +0 -1
  835. package/dist/admin/chunks/ja-B75QiyXf.js.map +0 -1
  836. package/dist/admin/chunks/ja-U1NhT0bU.mjs.map +0 -1
  837. package/dist/admin/chunks/ko-BOvUcJqv.js.map +0 -1
  838. package/dist/admin/chunks/ko-BciqXefq.mjs.map +0 -1
  839. package/dist/admin/chunks/ms-B7Zl6Lm9.js.map +0 -1
  840. package/dist/admin/chunks/ms-D-8McNeg.mjs.map +0 -1
  841. package/dist/admin/chunks/pl-DdUYocl5.mjs.map +0 -1
  842. package/dist/admin/chunks/pl-cYDYHOEf.js.map +0 -1
  843. package/dist/admin/chunks/pt-BR-D1u_azCM.js.map +0 -1
  844. package/dist/admin/chunks/pt-BR-Demjoq41.mjs.map +0 -1
  845. package/dist/admin/chunks/pt-D8is2LpS.mjs.map +0 -1
  846. package/dist/admin/chunks/pt-L2DZeTPL.js.map +0 -1
  847. package/dist/admin/chunks/ru-CGgHRTey.mjs.map +0 -1
  848. package/dist/admin/chunks/ru-Uxbk_WWv.js.map +0 -1
  849. package/dist/admin/chunks/sk-BlLP5HAX.js.map +0 -1
  850. package/dist/admin/chunks/sk-xtSwaPXq.mjs.map +0 -1
  851. package/dist/admin/chunks/th-BOpLVfmg.mjs.map +0 -1
  852. package/dist/admin/chunks/th-DNxPLegS.js.map +0 -1
  853. package/dist/admin/chunks/tr-BmAPh-f1.mjs.map +0 -1
  854. package/dist/admin/chunks/tr-DWgXG75k.js.map +0 -1
  855. package/dist/admin/chunks/uk-Cfm1dM3v.js.map +0 -1
  856. package/dist/admin/chunks/uk-DPZD6U8g.mjs.map +0 -1
  857. package/dist/admin/chunks/zh-BIl0qgBy.mjs.map +0 -1
  858. package/dist/admin/chunks/zh-Hans-B1GabBRx.mjs.map +0 -1
  859. package/dist/admin/chunks/zh-Hans-B8qxMQIl.js.map +0 -1
  860. package/dist/admin/chunks/zh-MemsyMV6.js.map +0 -1
  861. package/dist/server/chunks/graphql-CwNPX8zo.js.map +0 -1
  862. package/dist/server/chunks/graphql-K9HaGS9d.mjs.map +0 -1
  863. package/dist/server/chunks/index-BzVus140.mjs +0 -3161
  864. package/dist/server/chunks/index-BzVus140.mjs.map +0 -1
  865. package/dist/server/chunks/index-D2QOphAI.js +0 -3164
  866. package/dist/server/chunks/index-D2QOphAI.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-zOCLhXyV.mjs","sources":["../../../admin/src/pluginId.ts","../../../admin/src/hooks/useAssets.ts","../../../admin/src/hooks/useFolders.ts","../../../admin/src/utils/appendSearchParamsToUrl.ts","../../../admin/src/utils/containsAssetFilter.ts","../../../admin/src/utils/prefixFileUrlWithBackendUrl.ts","../../../admin/src/utils/createAssetUrl.ts","../../../admin/src/utils/displayedFilters.ts","../../../admin/src/utils/downloadFile.ts","../../../admin/src/utils/findRecursiveFolderByValue.ts","../../../admin/src/utils/formatBytes.ts","../../../admin/src/utils/formatDuration.ts","../../../admin/src/utils/toSingularTypes.ts","../../../admin/src/utils/getAllowedFiles.ts","../../../admin/src/utils/normalizeAPIError.ts","../../../admin/src/utils/getAPIInnerErrors.ts","../../../admin/src/utils/getTrad.ts","../../../admin/src/utils/getBreadcrumbDataCM.ts","../../../admin/src/utils/getFolderURL.ts","../../../admin/src/utils/getFileExtension.ts","../../../admin/src/components/SelectTree/utils/flattenTree.ts","../../../admin/src/utils/getFolderParents.ts","../../../admin/src/utils/moveElement.ts","../../../admin/src/utils/prefixPluginTranslations.ts","../../../admin/src/utils/typeFromMime.ts","../../../admin/src/utils/rawFileToAsset.ts","../../../admin/src/utils/urlsToAssets.ts","../../../admin/src/utils/urlYupSchema.ts","../../../admin/src/constants.ts","../../../admin/src/hooks/useMediaLibraryPermissions.ts","../../../admin/src/hooks/useConfig.ts","../../../admin/src/hooks/useModalQueryParams.ts","../../../admin/src/hooks/useSelectionState.ts","../../../admin/src/hooks/useEditAsset.ts","../../../admin/src/hooks/utils/renameKeys.ts","../../../admin/src/hooks/useFolderStructure.ts","../../../admin/src/components/ContextInfo/ContextInfo.tsx","../../../admin/src/components/SelectTree/Option.tsx","../../../admin/src/components/SelectTree/utils/getOpenValues.ts","../../../admin/src/components/SelectTree/utils/getValuesToClose.ts","../../../admin/src/components/SelectTree/SelectTree.tsx","../../../admin/src/components/EditAssetDialog/DialogHeader.tsx","../../../admin/src/hooks/useCropImg.ts","../../../admin/src/hooks/useUpload.ts","../../../admin/src/components/CopyLinkButton/CopyLinkButton.tsx","../../../admin/src/components/UploadProgress/UploadProgress.tsx","../../../admin/src/hooks/useRemoveAsset.ts","../../../admin/src/components/EditAssetDialog/RemoveAssetDialog.tsx","../../../admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.tsx","../../../admin/src/components/EditAssetDialog/PreviewBox/PreviewComponents.tsx","../../../admin/src/components/EditAssetDialog/PreviewBox/CroppingActions.tsx","../../../admin/src/components/EditAssetDialog/PreviewBox/PreviewBox.tsx","../../../admin/src/components/EditAssetDialog/ReplaceMediaButton.tsx","../../../admin/src/components/EditAssetDialog/EditAssetContent.tsx","../../../admin/src/hooks/useBulkRemove.ts","../../../admin/src/hooks/useEditFolder.ts","../../../admin/src/components/EditFolderDialog/ModalHeader/ModalHeader.tsx","../../../admin/src/components/EditFolderDialog/RemoveFolderDialog.tsx","../../../admin/src/components/EditFolderDialog/EditFolderDialog.tsx","../../../admin/src/hooks/useFolder.ts","../../../admin/src/hooks/usePersistentState.ts","../../../admin/src/components/AssetCard/AssetCardBase.tsx","../../../admin/src/components/AssetCard/AudioPreview.tsx","../../../admin/src/components/AssetCard/AudioAssetCard.tsx","../../../admin/src/components/AssetCard/DocAssetCard.tsx","../../../admin/src/components/AssetCard/ImageAssetCard.tsx","../../../admin/src/components/AssetCard/VideoPreview.tsx","../../../admin/src/components/AssetCard/VideoAssetCard.tsx","../../../admin/src/components/AssetCard/AssetCard.tsx","../../../admin/src/components/AssetGridList/Draggable.tsx","../../../admin/src/components/AssetGridList/AssetGridList.tsx","../../../admin/src/components/Breadcrumbs/CrumbSimpleMenuAsync.tsx","../../../admin/src/components/Breadcrumbs/Breadcrumbs.tsx","../../../admin/src/components/EmptyAssets/EmptyAssetGrid.tsx","../../../admin/src/components/EmptyAssets/EmptyAssets.tsx","../../../admin/src/components/FolderCard/contexts/FolderCard.tsx","../../../admin/src/components/FolderCard/FolderCard/FolderCard.tsx","../../../admin/src/components/FolderCard/FolderCardBody/FolderCardBody.tsx","../../../admin/src/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.tsx","../../../admin/src/components/FolderGridList/FolderGridList.tsx","../../../admin/src/components/SortPicker/SortPicker.tsx","../../../admin/src/components/TableList/PreviewCell.tsx","../../../admin/src/components/TableList/CellContent.tsx","../../../admin/src/components/TableList/TableRows.tsx","../../../admin/src/components/TableList/TableList.tsx","../../../admin/src/components/FilterList/FilterTag.tsx","../../../admin/src/components/FilterList/FilterList.tsx","../../../admin/src/components/FilterPopover/FilterValueInput.tsx","../../../admin/src/components/FilterPopover/utils/getFilterList.ts","../../../admin/src/components/FilterPopover/FilterPopover.tsx","../../../admin/src/components/AssetDialog/BrowseStep/Filters.tsx","../../../admin/src/components/AssetDialog/BrowseStep/PageSize.tsx","../../../admin/src/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.tsx","../../../admin/src/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.tsx","../../../admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.tsx","../../../admin/src/components/AssetDialog/BrowseStep/utils/isSelectable.ts","../../../admin/src/components/AssetDialog/BrowseStep/BrowseStep.tsx","../../../admin/src/components/AssetDialog/DialogFooter.tsx","../../../admin/src/components/AssetDialog/SelectedStep/SelectedStep.tsx","../../../admin/src/components/AssetDialog/AssetDialog.tsx","../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromComputerForm.tsx","../../../admin/src/components/UploadAssetDialog/AddAssetStep/FromUrlForm.tsx","../../../admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.tsx","../../../admin/src/components/AssetCard/UploadingAssetCard.tsx","../../../admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.tsx","../../../admin/src/components/UploadAssetDialog/UploadAssetDialog.tsx","../../../admin/src/components/MediaLibraryDialog/MediaLibraryDialog.tsx","../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.tsx","../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAssetActions.tsx","../../../admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.tsx","../../../admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.tsx","../../../admin/src/components/MediaLibraryInput/MediaLibraryInput.tsx","../../../admin/src/index.ts"],"sourcesContent":["import pluginPkg from '../../package.json';\n\nexport const pluginId = pluginPkg.name.replace(/^@strapi\\//i, '');\n","import * as React from 'react';\n\nimport { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { Query, GetFiles } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\n\ninterface UseAssetsOptions {\n skipWhen?: boolean;\n query?: Query;\n}\n\nexport const useAssets = ({ skipWhen = false, query = {} }: UseAssetsOptions = {}) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const { get } = useFetchClient();\n const { folderPath, _q, ...paramsExceptFolderAndQ } = query;\n\n let params: Query;\n\n if (_q) {\n params = {\n ...paramsExceptFolderAndQ,\n _q: encodeURIComponent(_q),\n };\n } else {\n params = {\n ...paramsExceptFolderAndQ,\n filters: {\n $and: [\n ...(paramsExceptFolderAndQ?.filters?.$and ?? []),\n {\n folderPath: { $eq: folderPath ?? '/' },\n },\n ],\n },\n };\n }\n\n const { data, error, isLoading } = useQuery<\n GetFiles.Response['data'],\n GetFiles.Response['error']\n >(\n [pluginId, 'assets', params],\n async () => {\n const { data } = await get('/upload/files', { params });\n\n return data;\n },\n {\n enabled: !skipWhen,\n staleTime: 0,\n cacheTime: 0,\n select(data) {\n if (data?.results && Array.isArray(data.results)) {\n return {\n ...data,\n results: data.results\n /**\n * Filter out assets that don't have a name.\n * So we don't try to render them as assets\n * and get errors.\n */\n .filter((asset) => asset.name)\n .map((asset) => ({\n ...asset,\n /**\n * Mime and ext cannot be null in the front-end because\n * we expect them to be strings and use the `includes` method.\n */\n mime: asset.mime ?? '',\n ext: asset.ext ?? '',\n })),\n };\n }\n\n return data;\n },\n }\n );\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage({\n id: 'list.asset.at.finished',\n defaultMessage: 'The assets have finished loading.',\n })\n );\n }\n }, [data, formatMessage, notifyStatus]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error' }),\n });\n }\n }, [error, formatMessage, toggleNotification]);\n\n return { data, error, isLoading };\n};\n","import * as React from 'react';\n\nimport { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useNotifyAT } from '@strapi/design-system';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { GetFolders } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\n\nimport type { Query } from '../../../shared/contracts/files';\n\ninterface UseFoldersOptions {\n enabled?: boolean;\n query?: Query;\n}\n\nexport const useFolders = ({ enabled = true, query = {} }: UseFoldersOptions = {}) => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { notifyStatus } = useNotifyAT();\n const { folder, _q, ...paramsExceptFolderAndQ } = query;\n const { get } = useFetchClient();\n\n let params: Query;\n\n if (_q) {\n params = {\n ...paramsExceptFolderAndQ,\n pagination: {\n pageSize: -1,\n },\n _q,\n };\n } else {\n params = {\n ...paramsExceptFolderAndQ,\n pagination: {\n pageSize: -1,\n },\n filters: {\n $and: [\n ...(paramsExceptFolderAndQ?.filters?.$and ?? []),\n {\n parent: {\n id: folder ?? {\n $null: true,\n },\n },\n },\n ],\n },\n };\n }\n\n const { data, error, isLoading } = useQuery<\n GetFolders.Response['data'],\n GetFolders.Response['error']\n >(\n [pluginId, 'folders', stringify(params)],\n async () => {\n const {\n data: { data },\n } = await get<GetFolders.Response>('/upload/folders', { params });\n\n return data;\n },\n {\n enabled,\n staleTime: 0,\n cacheTime: 0,\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n React.useEffect(() => {\n if (data) {\n notifyStatus(\n formatMessage({\n id: 'list.asset.at.finished',\n defaultMessage: 'The folders have finished loading.',\n })\n );\n }\n }, [data, formatMessage, notifyStatus]);\n\n return { data, error, isLoading };\n};\n","interface AppendSearchParamsToUrlProps {\n url?: string;\n params?: Record<string, string | null | undefined> | string;\n}\n\nconst appendSearchParamsToUrl = ({ url, params }: AppendSearchParamsToUrlProps) => {\n if (url === undefined || typeof params !== 'object') {\n return url;\n }\n\n const urlObj = new URL(url, window.strapi.backendURL);\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n urlObj.searchParams.append(key, value);\n }\n });\n\n return urlObj.toString();\n};\n\nexport { appendSearchParamsToUrl };\n","import type { Query } from '../../../shared/contracts/files';\n\nconst containsMimeTypeFilter = (query: Query | null) => {\n const filters = query?.filters?.$and;\n\n if (!filters) {\n return false;\n }\n\n const result = filters.find((filter) => {\n return Object.keys(filter).includes('mime');\n });\n\n return !!result;\n};\n\nexport const containsAssetFilter = (query: Query | null) => {\n return containsMimeTypeFilter(query);\n};\n","export const prefixFileUrlWithBackendUrl = (fileURL?: string) => {\n return !!fileURL && fileURL.startsWith('/') ? `${window.strapi.backendURL}${fileURL}` : fileURL;\n};\n","import { prefixFileUrlWithBackendUrl } from './prefixFileUrlWithBackendUrl';\n\nimport type { File } from '../../../shared/contracts/files';\n\nexport const createAssetUrl = (asset: File, forThumbnail = true) => {\n if (asset.isLocal) {\n return asset.url;\n }\n\n const assetUrl = forThumbnail ? asset?.formats?.thumbnail?.url || asset.url : asset.url;\n\n return prefixFileUrlWithBackendUrl(assetUrl);\n};\n","export const displayedFilters = [\n {\n name: 'createdAt',\n fieldSchema: {\n type: 'date',\n },\n metadatas: { label: 'createdAt' },\n },\n {\n name: 'updatedAt',\n fieldSchema: {\n type: 'date',\n },\n metadatas: { label: 'updatedAt' },\n },\n {\n name: 'mime',\n fieldSchema: {\n type: 'enumeration',\n options: [\n { label: 'audio', value: 'audio' },\n { label: 'file', value: 'file' },\n { label: 'image', value: 'image' },\n { label: 'video', value: 'video' },\n ],\n },\n metadatas: { label: 'type' },\n },\n];\n","export const downloadFile = async (url: string, fileName: string) => {\n const fileBlob = await fetch(url).then((res) => res.blob());\n const urlDownload = window.URL.createObjectURL(fileBlob);\n const link = document.createElement('a');\n\n link.href = urlDownload;\n link.setAttribute('download', fileName);\n link.click();\n};\n","import type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value?: string | number | null;\n children?: FolderStructureValue[];\n label?: string;\n}\n\ntype Value = number | null | { value: number | null };\n\nexport function findRecursiveFolderByValue(\n data: FolderStructureValue[],\n value: Value\n): FolderStructureValue | undefined {\n let result: FolderStructureValue | undefined;\n\n function iter(a: FolderStructureValue) {\n if (a.value === value) {\n result = a;\n\n return true;\n }\n\n return Array.isArray(a.children) && a.children.some(iter);\n }\n\n data.some(iter);\n\n return result;\n}\n","import byteSize from 'byte-size';\n\nexport function formatBytes(receivedBytes: number | string, decimals = 0) {\n const realBytes = typeof receivedBytes === 'string' ? Number(receivedBytes) : receivedBytes;\n const { value, unit } = byteSize(realBytes * 1000, { precision: decimals });\n\n if (!unit) {\n return '0B';\n }\n\n return `${value}${unit.toUpperCase()}`;\n}\n","import { intervalToDuration } from 'date-fns';\n\nconst zeroPad = (num?: number) => String(num).padStart(2, '0');\n\nexport const formatDuration = (durationInSecond: number) => {\n const duration = intervalToDuration({ start: 0, end: durationInSecond * 1000 });\n\n return `${zeroPad(duration.hours)}:${zeroPad(duration.minutes)}:${zeroPad(duration.seconds)}`;\n};\n","export const toSingularTypes = (types?: string[]) => {\n if (!types) {\n return [];\n }\n\n return types.map((type) => type.substring(0, type.length - 1));\n};\n","import { toSingularTypes } from './toSingularTypes';\n\nimport type { File } from '../../../shared/contracts/files';\n/**\n * Returns the files that can be added to the media field\n * @param {Object[]} pluralTypes Array of string (allowedTypes)\n * @param {Object[]} files Array of files\n * @returns Object[]\n */\n\nexport interface AllowedFiles extends File {\n documentId: string;\n isSelectable: boolean;\n locale: string | null;\n type: string;\n}\n\nexport const getAllowedFiles = (pluralTypes: string[], files: AllowedFiles[]) => {\n const singularTypes = toSingularTypes(pluralTypes);\n\n const allowedFiles = files.filter((file) => {\n const fileType = file?.mime?.split('/')[0];\n\n if (!fileType) {\n return false;\n }\n\n if (singularTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType)) {\n return true;\n }\n\n return singularTypes.includes(fileType);\n });\n\n return allowedFiles;\n};\n","import type { FetchError } from '@strapi/admin/strapi-admin';\nimport type { errors } from '@strapi/utils';\n\ntype ApiError = InstanceType<(typeof errors)[keyof typeof errors]>;\n\ninterface NormalizeErrorOptions {\n name?: string;\n intlMessagePrefixCallback?: (id: string) => string;\n}\n\ninterface NormalizeErrorReturn {\n id: string;\n defaultMessage: string;\n name?: string;\n values: Record<'path', string> | Record<string, never>;\n}\n\ninterface YupFormattedError {\n path: string[];\n message: string;\n name: string;\n value: string;\n}\n\nfunction getPrefixedId(message: string, callback?: (prefixedMessage: string) => string) {\n const prefixedMessage = `apiError.${message}`;\n\n // if a prefix function has been passed in it is used to\n // prefix the id, e.g. to allow an error message to be\n // set only for a localization namespace\n if (typeof callback === 'function') {\n return callback(prefixedMessage);\n }\n\n return prefixedMessage;\n}\n\nfunction normalizeError(\n error: ApiError | YupFormattedError,\n { name, intlMessagePrefixCallback }: NormalizeErrorOptions\n): NormalizeErrorReturn {\n const { message } = error;\n\n const normalizedError = {\n id: getPrefixedId(message, intlMessagePrefixCallback),\n defaultMessage: message,\n name: error.name ?? name,\n values: {},\n };\n\n if ('path' in error) {\n normalizedError.values = { path: error.path.join('.') };\n }\n\n return normalizedError;\n}\n\nconst validateErrorIsYupValidationError = (\n err: ApiError\n): err is errors.YupValidationError & { details: { errors: YupFormattedError[] } } =>\n typeof err.details === 'object' && err.details !== null && 'errors' in err.details;\n\n/**\n * Normalize the format of `ResponseError`\n * in places where the hook `useAPIErrorHandler` can not called\n * (e.g. outside of a React component).\n */\nexport function normalizeAPIError(\n apiError: FetchError,\n intlMessagePrefixCallback?: NormalizeErrorOptions['intlMessagePrefixCallback']\n):\n | NormalizeErrorReturn\n | { name: string; message: string | null; errors: NormalizeErrorReturn[] }\n | null {\n const error = apiError.response?.data.error;\n\n if (error) {\n // some errors carry multiple errors (such as ValidationError)\n if (validateErrorIsYupValidationError(error)) {\n return {\n name: error.name,\n message: error?.message || null,\n errors: error.details.errors.map((err) =>\n normalizeError(err, { name: error.name, intlMessagePrefixCallback })\n ),\n };\n }\n\n return normalizeError(error, { intlMessagePrefixCallback });\n }\n\n return null;\n}\n","import { normalizeAPIError } from './normalizeAPIError';\n\nimport type { FetchError } from '@strapi/admin/strapi-admin';\nimport type { MessageDescriptor } from 'react-intl';\n\ntype GetAPIInnerErrorsReturn = {\n [key: string]: MessageDescriptor;\n};\n\n/**\n *\n * Returns a normalized error message\n *\n */\nexport function getAPIInnerErrors(\n error: FetchError,\n { getTrad }: { getTrad: (key: string) => string }\n) {\n const normalizedError = normalizeAPIError(error, getTrad);\n\n if (normalizedError && 'errors' in normalizedError) {\n return normalizedError.errors.reduce<GetAPIInnerErrorsReturn>((acc, error) => {\n if ('path' in error.values) {\n acc[error.values.path] = {\n id: error.id,\n defaultMessage: error.defaultMessage,\n };\n }\n\n return acc;\n }, {});\n }\n\n return normalizedError?.defaultMessage;\n}\n","import { pluginId } from '../pluginId';\n\nexport const getTrad = (id: string) => `${pluginId}.${id}`;\n","import { getTrad } from './getTrad';\n\nimport type { Folder } from '../../../shared/contracts/folders';\nimport type { MessageDescriptor } from 'react-intl';\n\nexport interface BreadcrumbDataFolder extends Omit<Folder, 'children' | 'files' | 'parent'> {\n parent?: BreadcrumbDataFolder;\n children?: {\n count: number;\n };\n files?: {\n count: number;\n };\n}\n\ninterface BreadcrumbItem {\n id?: number | null;\n label?: MessageDescriptor | string;\n path?: string;\n}\n\ntype BreadcrumbData = BreadcrumbItem | [];\n\nexport const getBreadcrumbDataCM = (folder: BreadcrumbDataFolder | null) => {\n const data: BreadcrumbData[] = [\n {\n id: null,\n label: { id: getTrad('plugin.name'), defaultMessage: 'Media Library' },\n },\n ];\n\n if (folder?.parent?.parent) {\n data.push([]);\n }\n\n if (folder?.parent) {\n data.push({\n id: folder.parent.id,\n label: folder.parent.name,\n path: folder.parent.path,\n });\n }\n\n if (folder) {\n data.push({\n id: folder.id,\n label: folder.name,\n path: folder.path,\n });\n }\n\n return data;\n};\n","import { stringify } from 'qs';\n\nimport type { Query } from '../../../shared/contracts/files';\n\nexport const getFolderURL = (\n pathname: string,\n currentQuery: Query,\n { folder, folderPath }: { folder?: string; folderPath?: string } = {}\n) => {\n const { _q, ...queryParamsWithoutQ } = currentQuery;\n const queryParamsString = stringify(\n {\n ...queryParamsWithoutQ,\n folder,\n folderPath,\n },\n { encode: false }\n );\n\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n return `${pathname}${queryParamsString ? `?${queryParamsString}` : ''}`;\n};\n","export const getFileExtension = (ext?: string | null) =>\n ext && ext[0] === '.' ? ext.substring(1) : ext;\n","type TreeNode<T> = {\n value: T;\n children?: TreeNode<T>[];\n label?: string;\n};\n\nexport type FlattenedNode<T> = {\n value: T;\n parent?: T;\n depth: number;\n // we need the label in places where flattenTree is used\n label?: string;\n children?: TreeNode<T>[];\n};\n\nexport function flattenTree<T>(\n tree: TreeNode<T>[],\n parent: TreeNode<T> | null = null,\n depth: number = 0\n): FlattenedNode<T>[] {\n return tree.flatMap((item) =>\n item.children\n ? [{ ...item, parent: parent?.value, depth }, ...flattenTree(item.children, item, depth + 1)]\n : { ...item, depth, parent: parent?.value }\n );\n}\n","import { flattenTree } from '../components/SelectTree/utils/flattenTree';\n\nimport type { FolderNode } from '../../../shared/contracts/folders';\n\ninterface FolderStructureValue extends Omit<FolderNode, 'children'> {\n value: string | number | null;\n children?: FolderStructureValue[];\n}\n\ntype Parents = { id?: number | string | null; label?: string; path?: string }[];\n\nexport const getFolderParents = (folders: FolderStructureValue[], currentFolderId: number) => {\n const parents: Parents = [];\n const flatFolders = flattenTree(folders);\n const currentFolder = flatFolders.find((folder) => folder.value === currentFolderId);\n\n if (!currentFolder) {\n return [];\n }\n\n let { parent } = currentFolder;\n\n while (parent !== undefined) {\n // eslint-disable-next-line no-loop-func\n const parentToStore = flatFolders.find(({ value }) => value === parent);\n parents.push({ id: parentToStore?.value, label: parentToStore?.label });\n parent = parentToStore?.parent;\n }\n\n return parents.reverse();\n};\n","const move = <T = number>(array: T[], oldIndex: number, newIndex: number) => {\n if (newIndex >= array.length) {\n newIndex = array.length - 1;\n }\n array.splice(newIndex, 0, array.splice(oldIndex, 1)[0]);\n\n return array;\n};\n\nexport const moveElement = <T = number>(array: T[], index: number, offset: number) => {\n const newIndex = index + offset;\n\n return move(array, index, newIndex);\n};\n","type Translations = {\n [key: string]: string;\n};\n\nexport const prefixPluginTranslations = (trad: Translations, pluginId?: string) => {\n if (!pluginId) {\n throw new TypeError(\"pluginId can't be empty\");\n }\n\n return Object.keys(trad).reduce((acc: Translations, current: string) => {\n acc[`${pluginId}.${current}`] = trad[current];\n\n return acc;\n }, {});\n};\n","import { AssetType } from '../constants';\n\nexport const typeFromMime = (mime: string) => {\n if (mime.includes(AssetType.Image)) {\n return AssetType.Image;\n }\n if (mime.includes(AssetType.Video)) {\n return AssetType.Video;\n }\n if (mime.includes(AssetType.Audio)) {\n return AssetType.Audio;\n }\n\n return AssetType.Document;\n};\n","import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nimport type { RawFile } from '../../../shared/contracts/files';\n\nexport const rawFileToAsset = (rawFile: RawFile, assetSource: AssetSource) => {\n return {\n size: rawFile.size / 1000,\n createdAt: new Date(rawFile.lastModified).toISOString(),\n name: rawFile.name,\n source: assetSource,\n type: typeFromMime(rawFile.type),\n url: URL.createObjectURL(rawFile),\n ext: rawFile.name.split('.').pop(),\n mime: rawFile.type,\n rawFile,\n isLocal: true,\n };\n};\n","import { AssetSource } from '../constants';\n\nimport { typeFromMime } from './typeFromMime';\n\nfunction getFilenameFromURL(url: string) {\n return new URL(url).pathname.split('/').pop();\n}\n\nexport const urlsToAssets = async (urls: string[]) => {\n const assetPromises = urls.map((url) =>\n fetch(url).then(async (res) => {\n const blob = await res.blob();\n\n const loadedFile = new File([blob], getFilenameFromURL(res.url)!, {\n type: res.headers.get('content-type') || undefined,\n });\n\n return {\n name: loadedFile.name,\n url: res.url,\n mime: res.headers.get('content-type'),\n rawFile: loadedFile,\n };\n })\n );\n // Retrieve the assets metadata\n const assetsResults = await Promise.all(assetPromises);\n\n const assets = assetsResults.map((fullFilledAsset) => ({\n source: AssetSource.Url,\n name: fullFilledAsset.name,\n type: typeFromMime(fullFilledAsset.mime!),\n url: fullFilledAsset.url,\n ext: fullFilledAsset.url.split('.').pop(),\n mime: fullFilledAsset.mime ? fullFilledAsset.mime : undefined,\n rawFile: fullFilledAsset.rawFile,\n }));\n\n return assets;\n};\n","import { translatedErrors as errorsTrads } from '@strapi/admin/strapi-admin';\nimport * as yup from 'yup';\n\nimport { getTrad } from './getTrad';\n\nexport const urlSchema = yup.object().shape({\n urls: yup.string().test({\n name: 'isUrlValid',\n // eslint-disable-next-line no-template-curly-in-string\n message: '${path}',\n test(values = '') {\n const urls = values.split(/\\r?\\n/);\n\n if (urls.length === 0) {\n return this.createError({\n path: this.path,\n message: errorsTrads.min.id,\n });\n }\n\n if (urls.length > 20) {\n return this.createError({\n path: this.path,\n message: errorsTrads.max.id,\n });\n }\n\n const filtered = urls.filter((val) => {\n try {\n // eslint-disable-next-line no-new\n new URL(val);\n\n return false;\n } catch (err) {\n // invalid url\n return true;\n }\n });\n\n const filteredLength = filtered.length;\n\n if (filteredLength === 0) {\n return true;\n }\n\n const errorMessage =\n filteredLength > 1\n ? 'form.upload-url.error.url.invalids'\n : 'form.upload-url.error.url.invalid';\n\n return this.createError({\n path: this.path,\n message: getTrad(errorMessage),\n params: { number: filtered.length },\n });\n },\n }),\n});\n","import { getTrad } from './utils';\n\nexport enum AssetType {\n Video = 'video',\n Image = 'image',\n Document = 'doc',\n Audio = 'audio',\n}\n\nexport enum AssetSource {\n Url = 'url',\n Computer = 'computer',\n}\n\nexport const PERMISSIONS = {\n // This permission regards the main component (App) and is used to tell\n // If the plugin link should be displayed in the menu\n // And also if the plugin is accessible. This use case is found when a user types the url of the\n // plugin directly in the browser\n main: [\n { action: 'plugin::upload.read', subject: null },\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n {\n action: 'plugin::upload.assets.update',\n subject: null,\n },\n ],\n copyLink: [\n {\n action: 'plugin::upload.assets.copy-link',\n subject: null,\n },\n ],\n create: [\n {\n action: 'plugin::upload.assets.create',\n subject: null,\n },\n ],\n download: [\n {\n action: 'plugin::upload.assets.download',\n subject: null,\n },\n ],\n read: [{ action: 'plugin::upload.read', subject: null }],\n configureView: [{ action: 'plugin::upload.configure-view', subject: null }],\n settings: [{ action: 'plugin::upload.settings.read', subject: null }],\n update: [{ action: 'plugin::upload.assets.update', subject: null, fields: null }],\n};\n\nexport const tableHeaders = [\n {\n name: 'preview',\n key: 'preview',\n metadatas: {\n label: { id: getTrad('list.table.header.preview'), defaultMessage: 'preview' },\n isSortable: false,\n },\n type: 'image',\n },\n {\n name: 'name',\n key: 'name',\n metadatas: {\n label: { id: getTrad('list.table.header.name'), defaultMessage: 'name' },\n isSortable: true,\n },\n type: 'text',\n },\n {\n name: 'ext',\n key: 'extension',\n metadatas: {\n label: { id: getTrad('list.table.header.ext'), defaultMessage: 'extension' },\n isSortable: false,\n },\n type: 'ext',\n },\n {\n name: 'size',\n key: 'size',\n metadatas: {\n label: { id: getTrad('list.table.header.size'), defaultMessage: 'size' },\n isSortable: false,\n },\n type: 'size',\n },\n {\n name: 'createdAt',\n key: 'createdAt',\n metadatas: {\n label: { id: getTrad('list.table.header.createdAt'), defaultMessage: 'created' },\n isSortable: true,\n },\n type: 'date',\n },\n {\n name: 'updatedAt',\n key: 'updatedAt',\n metadatas: {\n label: { id: getTrad('list.table.header.updatedAt'), defaultMessage: 'last update' },\n isSortable: true,\n },\n type: 'date',\n },\n];\n\nexport const sortOptions = [\n { key: 'sort.created_at_desc', value: 'createdAt:DESC' },\n { key: 'sort.created_at_asc', value: 'createdAt:ASC' },\n { key: 'sort.name_asc', value: 'name:ASC' },\n { key: 'sort.name_desc', value: 'name:DESC' },\n { key: 'sort.updated_at_desc', value: 'updatedAt:DESC' },\n { key: 'sort.updated_at_asc', value: 'updatedAt:ASC' },\n];\n\nexport const pageSizes = [10, 20, 50, 100];\n\nexport const localStorageKeys = {\n modalView: `STRAPI_UPLOAD_MODAL_VIEW`,\n view: `STRAPI_UPLOAD_LIBRARY_VIEW`,\n};\n\nexport const viewOptions = {\n GRID: 0,\n LIST: 1,\n};\n","import { useRBAC, type AllowedActions } from '@strapi/admin/strapi-admin';\n\nimport { PERMISSIONS } from '../constants';\n\nconst { main: _main, ...restPermissions } = PERMISSIONS;\n\nexport const useMediaLibraryPermissions = (): AllowedActions & { isLoading: boolean } => {\n const { allowedActions, isLoading } = useRBAC(restPermissions);\n\n return { ...allowedActions, isLoading };\n};\n","import { useTracking, useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery, UseMutationResult, UseQueryResult } from 'react-query';\n\nimport { GetConfiguration, UpdateConfiguration } from '../../../shared/contracts/configuration';\nimport { pluginId } from '../pluginId';\n\nconst endpoint = `/${pluginId}/configuration`;\nconst queryKey = [pluginId, 'configuration'];\n\nexport const useConfig = () => {\n const { trackUsage } = useTracking();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { get, put } = useFetchClient();\n\n const config: UseQueryResult<\n GetConfiguration.Response['data']['data'] | GetConfiguration.Response['error']\n > = useQuery(\n queryKey,\n async () => {\n const res: GetConfiguration.Response = await get(endpoint);\n\n return res.data.data;\n },\n {\n onError() {\n return toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error' }),\n });\n },\n /**\n * We're cementing that we always expect an object to be returned.\n */\n select: (data) => data || {},\n }\n );\n\n const putMutation: UseMutationResult<\n void,\n UpdateConfiguration.Response['error'],\n UpdateConfiguration.Request['body']\n > = useMutation(\n async (body) => {\n await put<UpdateConfiguration.Response>(endpoint, body);\n },\n {\n onSuccess() {\n trackUsage('didEditMediaLibraryConfig');\n config.refetch();\n },\n onError() {\n return toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n return {\n config,\n mutateConfig: putMutation,\n };\n};\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { stringify } from 'qs';\n\nimport { useConfig } from './useConfig';\n\nimport type { Query, FilterCondition } from '../../../shared/contracts/files';\n\nexport const useModalQueryParams = (initialState?: Partial<Query>) => {\n const { trackUsage } = useTracking();\n const {\n config: { data: config },\n } = useConfig();\n\n const [queryObject, setQueryObject] = React.useState<Query>({\n page: 1,\n sort: 'updatedAt:DESC',\n pageSize: 10,\n filters: {\n $and: [],\n },\n ...initialState,\n });\n\n React.useEffect(() => {\n if (config && 'sort' in config && 'pageSize' in config) {\n setQueryObject((prevQuery) => ({\n ...prevQuery,\n sort: config.sort,\n pageSize: config.pageSize,\n }));\n }\n }, [config]);\n\n const handleChangeFilters = (nextFilters: FilterCondition<string>[]) => {\n if (nextFilters) {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(nextFilters[nextFilters.length - 1])[0],\n });\n setQueryObject((prev) => ({ ...prev, page: 1, filters: { $and: nextFilters } }));\n }\n };\n\n const handleChangePageSize = (pageSize: Query['pageSize']) => {\n setQueryObject((prev) => ({\n ...prev,\n pageSize: typeof pageSize === 'string' ? parseInt(pageSize, 10) : pageSize,\n page: 1,\n }));\n };\n\n const handeChangePage = (page: Query['page']) => {\n setQueryObject((prev) => ({ ...prev, page }));\n };\n\n const handleChangeSort = (sort: Query['sort']) => {\n if (sort) {\n trackUsage('didSortMediaLibraryElements', {\n location: 'content-manager',\n sort,\n });\n setQueryObject((prev) => ({ ...prev, sort }));\n }\n };\n\n const handleChangeSearch = (_q: Query['_q'] | null) => {\n if (_q) {\n setQueryObject((prev) => ({ ...prev, _q, page: 1 }));\n } else {\n const newState: Query = { page: 1 };\n\n Object.keys(queryObject).forEach((key) => {\n if (!['page', '_q'].includes(key)) {\n (newState as Record<string, string | number | undefined>)[key] = (\n queryObject as Record<string, string | number | undefined>\n )[key];\n }\n });\n\n setQueryObject(newState);\n }\n };\n\n const handleChangeFolder = (folder: Query['folder'], folderPath: Query['folderPath']) => {\n setQueryObject((prev) => ({ ...prev, folder: folder ?? null, folderPath }));\n };\n\n return [\n { queryObject, rawQuery: stringify(queryObject, { encode: false }) },\n {\n onChangeFilters: handleChangeFilters,\n onChangeFolder: handleChangeFolder,\n onChangePage: handeChangePage,\n onChangePageSize: handleChangePageSize,\n onChangeSort: handleChangeSort,\n onChangeSearch: handleChangeSearch,\n },\n ];\n};\n","import * as React from 'react';\n\nexport const useSelectionState = <TValues extends object>(\n keys: Array<keyof TValues>,\n initialValue: TValues[]\n) => {\n const [selections, setSelections] = React.useState(initialValue);\n\n const selectOne = (selection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === selection[key])\n );\n\n if (index > -1) {\n setSelections((prevSelected) => [\n ...prevSelected.slice(0, index),\n ...prevSelected.slice(index + 1),\n ]);\n } else {\n setSelections((prevSelected) => [...prevSelected, selection]);\n }\n };\n\n const selectAll = (nextSelections?: TValues[]) => {\n if (selections.length > 0) {\n setSelections([]);\n } else {\n setSelections(nextSelections!);\n }\n };\n\n const selectOnly = (nextSelection: TValues) => {\n const index = selections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n );\n\n if (index > -1) {\n setSelections([]);\n } else {\n setSelections([nextSelection]);\n }\n };\n\n const selectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // already selected items\n ...currSelections,\n // filter out already selected items from nextSelections\n ...nextSelections.filter(\n (nextSelection) =>\n currSelections.findIndex((currentSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n const deselectMultiple = (nextSelections: TValues[]) => {\n setSelections((currSelections) => [\n // filter out items in currSelections that are in nextSelections\n ...currSelections.filter(\n (currentSelection) =>\n nextSelections.findIndex((nextSelection) =>\n keys.every((key) => currentSelection[key] === nextSelection[key])\n ) === -1\n ),\n ]);\n };\n\n return [\n selections,\n { selectOne, selectAll, selectOnly, selectMultiple, deselectMultiple, setSelections },\n ] as const;\n};\n","import * as React from 'react';\n\nimport { useNotification, useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { UpdateFile, File as FileAsset } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport type ErrorMutation = {\n message: string;\n response: {\n status: number;\n data: {\n error: Error;\n };\n };\n} | null;\n\nconst editAssetRequest = (\n asset: FileAsset,\n file: File,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const endpoint = `/${pluginId}?id=${asset.id}`;\n\n const formData = new FormData();\n\n if (file) {\n formData.append('files', file);\n }\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n alternativeText: asset.alternativeText,\n caption: asset.caption,\n folder: asset.folder,\n name: asset.name,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useEditAsset = () => {\n const [progress, setProgress] = React.useState(0);\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFile.Response['data'],\n ErrorMutation,\n { asset: FileAsset; file: File }\n >(({ asset, file }) => editAssetRequest(asset, file, signal, setProgress, post), {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n },\n onError(reason) {\n if (reason?.response?.status === 403) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: getTrad('permissions.not-allowed.update') }),\n });\n } else {\n toggleNotification({ type: 'danger', message: reason?.message });\n }\n },\n });\n\n const editAsset = (asset: FileAsset, file: File) => mutation.mutateAsync({ asset, file });\n\n const cancel = () => abortController.abort();\n\n return { ...mutation, cancel, editAsset, progress, status: mutation.status };\n};\n","type Primitive = string | number | boolean | null | undefined;\n\nexport type DeepRecord<T> = {\n [K in keyof T]: T[K] extends Primitive ? T[K] : DeepRecord<T[K]>;\n};\n\nexport const recursiveRenameKeys = <T extends object>(\n obj: T,\n fn: (key: string) => string\n): DeepRecord<T> =>\n Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n const getValue = (v: unknown): unknown =>\n typeof v === 'object' && v !== null ? recursiveRenameKeys(v, fn) : v;\n\n return [fn(key), Array.isArray(value) ? value.map((val) => getValue(val)) : getValue(value)];\n })\n ) as DeepRecord<T>;\n","import { useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { FolderNode, GetFolderStructure } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nimport { recursiveRenameKeys } from './utils/renameKeys';\n\nconst FIELD_MAPPING: Record<string, string> = {\n name: 'label',\n id: 'value',\n};\n\ninterface FolderNodeWithChildren extends Omit<FolderNode, 'children'> {\n children: FolderNodeWithChildren[];\n label?: string;\n value: string | number | null;\n}\n\nexport const useFolderStructure = ({ enabled = true } = {}) => {\n const { formatMessage } = useIntl();\n const { get } = useFetchClient();\n\n const fetchFolderStructure = async () => {\n const {\n data: { data },\n } = await get<GetFolderStructure.Response['data']>('/upload/folder-structure');\n const children = data.map((f: FolderNodeWithChildren) =>\n recursiveRenameKeys(f, (key) => FIELD_MAPPING?.[key] ?? key)\n );\n\n return [\n {\n value: null,\n label: formatMessage({\n id: getTrad('form.input.label.folder-location-default-label'),\n defaultMessage: 'Media Library',\n }),\n children,\n },\n ];\n };\n\n const { data, error, isLoading } = useQuery(\n [pluginId, 'folder', 'structure'],\n fetchFolderStructure,\n {\n enabled,\n staleTime: 0,\n cacheTime: 0,\n }\n );\n\n return { data, error, isLoading };\n};\n","import { Box, Flex, Grid, Typography } from '@strapi/design-system';\n\ninterface ContextInfoProps {\n blocks: { label: string; value: string | number | null }[];\n}\n\nexport const ContextInfo = ({ blocks }: ContextInfoProps) => {\n return (\n <Box\n hasRadius\n paddingLeft={6}\n paddingRight={6}\n paddingTop={4}\n paddingBottom={4}\n background=\"neutral100\"\n >\n <Grid.Root gap={4}>\n {blocks.map(({ label, value }) => (\n <Grid.Item col={6} xs={12} key={label} direction=\"column\" alignItems=\"stretch\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {label}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral700\">\n {value}\n </Typography>\n </Flex>\n </Grid.Item>\n ))}\n </Grid.Root>\n </Box>\n );\n};\n","import * as React from 'react';\n\nimport { Flex, Typography } from '@strapi/design-system';\nimport { ChevronDown, ChevronUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { components, OptionProps as ReactSelectOptionProps } from 'react-select';\nimport { styled } from 'styled-components';\n\nimport type { Folder } from '../../../../shared/contracts/folders';\n\nconst ToggleButton = styled(Flex)`\n align-self: flex-end;\n height: 2.2rem;\n width: 2.8rem;\n\n &:hover,\n &:focus {\n background-color: ${({ theme }) => theme.colors.primary200};\n }\n`;\n\ninterface SelectProps {\n maxDisplayDepth: number;\n openValues: string[];\n onOptionToggle: (value: string) => void;\n}\n\ninterface FolderWithDepth extends Folder {\n depth: number;\n value: string;\n}\n\ninterface OptionProps extends ReactSelectOptionProps<FolderWithDepth, false> {\n selectProps: SelectProps & ReactSelectOptionProps<FolderWithDepth, false>['selectProps'];\n}\n\nexport const Option = ({ children, data, selectProps, ...props }: OptionProps) => {\n const { formatMessage } = useIntl();\n const { depth, value, children: options } = data;\n const { maxDisplayDepth, openValues, onOptionToggle } = selectProps;\n const isOpen = openValues.includes(value);\n\n const Icon = isOpen ? ChevronUp : ChevronDown;\n\n return (\n <components.Option data={data} selectProps={selectProps} {...props}>\n <Flex alignItems=\"start\">\n <Typography textColor=\"neutral800\" ellipsis>\n <span style={{ paddingLeft: `${Math.min(depth, maxDisplayDepth) * 14}px` }}>\n {children}\n </span>\n </Typography>\n\n {options && options?.length > 0 && (\n <ToggleButton\n aria-label={formatMessage({\n id: 'app.utils.toggle',\n defaultMessage: 'Toggle',\n })}\n tag=\"button\"\n alignItems=\"center\"\n hasRadius\n justifyContent=\"center\"\n marginLeft=\"auto\"\n onClick={(event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n onOptionToggle(value);\n }}\n >\n <Icon width=\"1.4rem\" fill=\"neutral500\" />\n </ToggleButton>\n )}\n </Flex>\n </components.Option>\n );\n};\n","interface Option {\n value: number | string | null;\n parent?: number | string | null;\n}\n\ninterface DefaultValue {\n value?: number | string | null;\n}\n\nexport function getOpenValues(options: Option[], defaultValue: DefaultValue = {}) {\n const values: Option['value'][] = [];\n const { value } = defaultValue;\n const option = options.find((option) => option.value === value);\n\n if (!option) {\n return values;\n }\n\n values.push(option.value);\n\n let { parent } = option;\n\n while (parent !== undefined) {\n const option = options.find(({ value }) => value === parent);\n\n if (!option) {\n break;\n }\n\n values.push(option.value);\n parent = option.parent;\n }\n\n return values.reverse();\n}\n","interface Option {\n value: string | number | null;\n depth: number;\n}\n\nexport function getValuesToClose(options: Option[], value: number | string | null) {\n const optionForValue = options.find((option) => option.value === value);\n\n if (!optionForValue) {\n return [];\n }\n\n return options\n .filter((option) => option.depth >= optionForValue.depth)\n .map((option) => option.value);\n}\n","import * as React from 'react';\n\nimport { Box } from '@strapi/design-system';\nimport { Cross, CaretDown } from '@strapi/icons';\nimport ReactSelect, {\n components,\n GroupBase,\n StylesConfig,\n ClearIndicatorProps,\n} from 'react-select';\nimport { styled, useTheme, DefaultTheme } from 'styled-components';\n\nimport { Option } from './Option';\nimport { flattenTree, FlattenedNode } from './utils/flattenTree';\nimport { getOpenValues } from './utils/getOpenValues';\nimport { getValuesToClose } from './utils/getValuesToClose';\n\nconst hasParent = (option: FlattenedNode<string | number | null>) => !option.parent;\n\nexport type OptionSelectTree = {\n value: string | number | null;\n label?: string;\n children?: OptionSelectTree[];\n};\n\nexport interface SelectTreeProps<\n Option = unknown,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IsMulti extends boolean = false,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n maxDisplayDepth?: number;\n defaultValue?: {\n value?: string | number | null;\n };\n options: OptionSelectTree[];\n onChange?: (value: Record<string, string | number>) => void;\n name?: string;\n menuPortalTarget?: HTMLElement | null;\n inputId?: string;\n error?: string;\n ariaErrorMessage?: string;\n isDisabled?: boolean;\n disabled?: boolean;\n}\n\nexport const SelectTree = ({\n options: defaultOptions,\n maxDisplayDepth = 5,\n defaultValue,\n ...props\n}: SelectTreeProps) => {\n const flatDefaultOptions = React.useMemo(() => flattenTree(defaultOptions), [defaultOptions]);\n const optionsFiltered = React.useMemo(\n () => flatDefaultOptions.filter(hasParent),\n [flatDefaultOptions]\n );\n const [options, setOptions] = React.useState(optionsFiltered);\n const [openValues, setOpenValues] = React.useState(\n getOpenValues(flatDefaultOptions, defaultValue)\n );\n\n React.useEffect(() => {\n if (openValues.length === 0) {\n setOptions(flatDefaultOptions.filter((option) => option.parent === undefined));\n } else {\n const allOpenValues = openValues.reduce<(string | number | null)[]>((acc, value) => {\n const options = flatDefaultOptions.filter(\n (option) => option.value === value || option.parent === value\n );\n\n options.forEach((option) => {\n const values = getOpenValues(flatDefaultOptions, option);\n acc = [...acc, ...values];\n });\n\n return acc;\n }, []);\n\n const nextOptions = flatDefaultOptions.filter((option) =>\n allOpenValues.includes(option.value)\n );\n\n setOptions(nextOptions);\n }\n }, [openValues, flatDefaultOptions, optionsFiltered]);\n\n const handleToggle = (value: string | number | null) => {\n if (openValues.includes(value)) {\n const valuesToClose = getValuesToClose(flatDefaultOptions, value);\n setOpenValues((prev) => prev.filter((prevData) => !valuesToClose.includes(prevData)));\n } else {\n setOpenValues((prev) => [...prev, value]);\n }\n };\n\n return (\n <Select\n components={{ Option }}\n options={options}\n defaultValue={defaultValue}\n isSearchable={false}\n /* -- custom props, used by the Option component */\n maxDisplayDepth={maxDisplayDepth}\n openValues={openValues}\n onOptionToggle={handleToggle}\n /* -- / custom props */\n {...props}\n />\n );\n};\n\ntype SelectOption = { value?: string | number | null; label?: string };\n\ninterface SelectProps<\n Option = SelectOption,\n IsMulti extends boolean = false,\n Group extends GroupBase<Option> = GroupBase<Option>,\n> {\n components?: object;\n styles?: StylesConfig<Option, IsMulti, Group>;\n error?: string;\n ariaErrorMessage?: string;\n options: OptionSelectTree[];\n defaultValue?: {\n value?: string | number | null;\n };\n isSearchable?: boolean;\n maxDisplayDepth?: number;\n openValues?: (string | number | null)[];\n onOptionToggle?: (value: string | number | null) => void;\n}\n\nconst Select = ({\n components = {},\n styles = {},\n error,\n ariaErrorMessage,\n ...props\n}: SelectProps) => {\n const theme = useTheme();\n const customStyles = getSelectStyles(theme, error);\n\n return (\n <ReactSelect\n menuPosition=\"fixed\"\n components={{\n ...components,\n ClearIndicator,\n DropdownIndicator,\n IndicatorSeparator: () => null,\n LoadingIndicator: () => null,\n }}\n aria-errormessage={error && ariaErrorMessage}\n aria-invalid={!!error}\n styles={\n { ...customStyles, ...styles } as StylesConfig<SelectOption, false, GroupBase<SelectOption>>\n }\n {...props}\n />\n );\n};\n\nconst IconBox = styled(Box)`\n background: transparent;\n border: none;\n position: relative;\n z-index: 1;\n\n svg {\n height: 1.1rem;\n width: 1.1rem;\n }\n\n svg path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n`;\n\nconst ClearIndicator = (\n props: ClearIndicatorProps<SelectOption, false, GroupBase<SelectOption>>\n) => {\n const Component = components.ClearIndicator;\n\n return (\n <Component {...props}>\n <IconBox tag=\"button\" type=\"button\">\n <Cross />\n </IconBox>\n </Component>\n );\n};\n\nconst CarretBox = styled(IconBox)`\n display: flex;\n background: none;\n border: none;\n\n svg {\n width: 0.9rem;\n }\n`;\n\nconst DropdownIndicator = ({ innerProps }: { innerProps: object }) => {\n return (\n <CarretBox paddingRight={3} {...innerProps}>\n <CaretDown />\n </CarretBox>\n );\n};\n\nconst getSelectStyles = (\n theme: DefaultTheme,\n error?: string\n): StylesConfig<SelectOption, false, GroupBase<SelectOption>> => {\n return {\n clearIndicator: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n container: (base: object) => ({\n ...base,\n background: theme.colors.neutral0,\n lineHeight: 'normal',\n }),\n control(base: object, state: { isFocused: boolean; isDisabled: boolean }) {\n let borderColor = theme.colors.neutral200;\n let boxShadowColor: string | undefined = undefined;\n let backgroundColor: string | undefined = undefined;\n\n if (state.isFocused) {\n borderColor = theme.colors.primary600;\n boxShadowColor = theme.colors.primary600;\n } else if (error) {\n borderColor = theme.colors.danger600;\n }\n\n if (state.isDisabled) {\n backgroundColor = `${theme.colors.neutral150} !important`;\n }\n\n return {\n ...base,\n fontSize: theme.fontSizes[2],\n height: 40,\n border: `1px solid ${borderColor} !important`,\n outline: 0,\n backgroundColor,\n borderRadius: theme.borderRadius,\n boxShadow: boxShadowColor ? `${boxShadowColor} 0px 0px 0px 2px` : '',\n };\n },\n indicatorsContainer: (base: object) => ({ ...base, padding: 0, paddingRight: theme.spaces[3] }),\n input: (base: object) => ({\n ...base,\n margin: 0,\n padding: 0,\n color: theme.colors.neutral800,\n gridTemplateColumns: '0 100%',\n }),\n menuPortal: (base: object) => ({\n ...base,\n zIndex: theme.zIndices.dialog,\n pointerEvents: 'auto',\n }),\n menu(base: object) {\n return {\n ...base,\n width: '100%',\n marginTop: theme.spaces[1],\n backgroundColor: theme.colors.neutral0,\n color: theme.colors.neutral800,\n borderRadius: theme.borderRadius,\n border: `1px solid ${theme.colors.neutral200}`,\n boxShadow: theme.shadows.tableShadow,\n fontSize: theme.fontSizes[2],\n zIndex: 2,\n };\n },\n menuList: (base: object) => ({\n ...base,\n paddingLeft: theme.spaces[1],\n paddingTop: theme.spaces[1],\n paddingRight: theme.spaces[1],\n paddingBottom: theme.spaces[1],\n }),\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n option(base: any, state: { isFocused: boolean; isSelected: boolean }) {\n let backgroundColor = base?.backgroundColor as string;\n\n if (state.isFocused || state.isSelected) {\n backgroundColor = theme.colors.primary100;\n }\n\n return {\n ...base,\n color: theme.colors.neutral800,\n lineHeight: theme.spaces[5],\n backgroundColor,\n borderRadius: theme.borderRadius,\n '&:active': {\n backgroundColor: theme.colors.primary100,\n },\n };\n },\n placeholder: (base: object) => ({\n ...base,\n color: theme.colors.neutral600,\n marginLeft: 0,\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n maxWidth: '80%',\n }),\n singleValue(base: object, state: { isDisabled: boolean }) {\n let color = theme.colors.neutral800;\n\n if (state.isDisabled) {\n color = theme.colors.neutral600;\n }\n\n return { ...base, marginLeft: 0, color };\n },\n valueContainer: (base: object) => ({\n ...base,\n cursor: 'pointer',\n padding: 0,\n paddingLeft: theme.spaces[4],\n marginLeft: 0,\n marginRight: 0,\n }),\n };\n};\n","import { Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nexport const DialogHeader = () => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Header>\n <Modal.Title>\n {formatMessage({ id: 'global.details', defaultMessage: 'Details' })}\n </Modal.Title>\n </Modal.Header>\n );\n};\n","import * as React from 'react';\n\nimport Cropper from 'cropperjs';\n\nconst QUALITY = 1;\n\ntype Size = {\n width?: number;\n height?: number;\n};\n\ntype Resize = {\n detail: {\n height: number;\n width: number;\n };\n};\n\nexport const useCropImg = () => {\n const cropperRef = React.useRef<Cropper>();\n const [isCropping, setIsCropping] = React.useState(false);\n const [size, setSize] = React.useState<Size>({ width: undefined, height: undefined });\n\n React.useEffect(() => {\n return () => {\n if (cropperRef.current) {\n cropperRef.current.destroy();\n }\n };\n }, []);\n\n const handleResize = ({ detail: { height, width } }: Resize) => {\n const roundedDataWidth = Math.round(width);\n const roundedDataHeight = Math.round(height);\n\n setSize({ width: roundedDataWidth, height: roundedDataHeight });\n };\n\n const crop = (image: HTMLImageElement) => {\n if (!cropperRef.current) {\n cropperRef.current = new Cropper(image, {\n modal: true,\n initialAspectRatio: 16 / 9,\n movable: true,\n zoomable: false,\n cropBoxResizable: true,\n background: false,\n checkCrossOrigin: false,\n crop: handleResize,\n });\n\n setIsCropping(true);\n }\n };\n\n const stopCropping = () => {\n if (cropperRef.current) {\n cropperRef.current.destroy();\n cropperRef.current = undefined;\n setIsCropping(false);\n }\n };\n\n const produceFile = (name: string, mimeType: string, lastModifiedDate: string) =>\n new Promise((resolve, reject) => {\n if (!cropperRef.current) {\n reject(\n new Error(\n 'The cropper has not been instantiated: make sure to call the crop() function before calling produceFile().'\n )\n );\n } else {\n const canvas = cropperRef.current.getCroppedCanvas();\n\n canvas.toBlob(\n (blob) => {\n resolve(\n new File([blob!], name, {\n type: mimeType,\n lastModified: new Date(lastModifiedDate).getTime(),\n })\n );\n },\n mimeType,\n QUALITY\n );\n }\n });\n\n return {\n crop,\n produceFile,\n stopCropping,\n isCropping,\n isCropperReady: Boolean(cropperRef.current),\n ...size,\n };\n};\n","import * as React from 'react';\n\nimport { useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { File, RawFile, CreateFile } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\n\nconst endpoint = `/${pluginId}`;\n\ninterface Asset extends Omit<File, 'id' | 'hash'> {\n rawFile?: RawFile;\n id?: File['id'];\n hash?: File['hash'];\n}\n\nconst uploadAsset = (\n asset: Asset,\n folderId: number | null,\n signal: AbortSignal,\n onProgress: (progress: number) => void,\n post: FetchClient['post']\n) => {\n const { rawFile, caption, name, alternativeText } = asset;\n const formData = new FormData();\n\n formData.append('files', rawFile!);\n\n formData.append(\n 'fileInfo',\n JSON.stringify({\n name,\n caption,\n alternativeText,\n folder: folderId,\n })\n );\n\n /**\n * onProgress is not possible using native fetch\n * need to look into an alternative to make it work\n * perhaps using xhr like Axios does\n */\n return post(endpoint, formData, {\n signal,\n }).then((res) => res.data);\n};\n\nexport const useUpload = () => {\n const [progress, setProgress] = React.useState(0);\n const queryClient = useQueryClient();\n const abortController = new AbortController();\n const signal = abortController.signal;\n const { post } = useFetchClient();\n\n const mutation = useMutation<\n CreateFile.Response['data'],\n CreateFile.Response['error'],\n { asset: Asset; folderId: number | null }\n >(\n ({ asset, folderId }) => {\n return uploadAsset(asset, folderId, signal, setProgress, post);\n },\n {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n },\n }\n );\n\n const upload = (asset: Asset, folderId: number | null) =>\n mutation.mutateAsync({ asset, folderId });\n\n const cancel = () => abortController.abort();\n\n return {\n upload,\n isLoading: mutation.isLoading,\n cancel,\n error: mutation.error,\n progress,\n status: mutation.status,\n };\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { useNotification, useClipboard } from '@strapi/admin/strapi-admin';\nimport { IconButton } from '@strapi/design-system';\nimport { Link as LinkIcon } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils';\n\nexport const CopyLinkButton = ({ url }: { url: string }) => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const { copy } = useClipboard();\n\n const handleClick = async () => {\n const didCopy = await copy(url);\n\n if (didCopy) {\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.link-copied',\n defaultMessage: 'Link copied into the clipboard',\n }),\n });\n }\n };\n\n return (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.copy-link'),\n defaultMessage: 'Copy link',\n })}\n onClick={handleClick}\n >\n <LinkIcon />\n </IconButton>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, ProgressBar, Typography } from '@strapi/design-system';\nimport { Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { UpdateFile } from '../../../../shared/contracts/files';\n\nconst BoxWrapper = styled(Flex)`\n border-radius: ${({ theme }) => `${theme.borderRadius} ${theme.borderRadius} 0 0`};\n width: 100%;\n height: 100%;\n\n svg {\n path {\n fill: ${({ theme, error }) => (error ? theme.colors.danger600 : undefined)};\n }\n }\n`;\n\nconst CancelButton = styled.button`\n border: none;\n background: none;\n width: min-content;\n color: ${({ theme }) => theme.colors.neutral600};\n\n &:hover,\n &:focus {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n svg {\n height: 10px;\n width: 10px;\n\n path {\n fill: currentColor;\n }\n }\n`;\n\nexport interface UploadProgressProps {\n error?: UpdateFile.Response['error'] | Error | null;\n onCancel: () => void;\n progress?: number;\n}\n\nexport const UploadProgress = ({ onCancel, progress = 0, error }: UploadProgressProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <BoxWrapper alignItems=\"center\" background={error ? 'danger100' : 'neutral150'} error={error}>\n {error ? (\n <Cross aria-label={error?.message} />\n ) : (\n <Flex direction=\"column\" alignItems=\"center\" gap={2} width=\"100%\">\n <ProgressBar value={progress} />\n <Typography>{`${progress}/100%`}</Typography>\n\n <CancelButton type=\"button\" onClick={onCancel}>\n <Flex gap={2}>\n <Typography variant=\"pi\" tag=\"span\" textColor=\"inherit\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'Cancel',\n })}\n </Typography>\n\n <Cross aria-hidden />\n </Flex>\n </CancelButton>\n </Flex>\n )}\n </BoxWrapper>\n );\n};\n","import { useNotification, useFetchClient, FetchResponse } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient, UseMutationResult } from 'react-query';\n\nimport { pluginId } from '../pluginId';\n\nimport type { DeleteFile } from '../../../shared/contracts/files';\n\ntype UseRemoveAsset = {\n removeAsset: (assetId: number) => Promise<void>;\n} & UseMutationResult<FetchResponse<DeleteFile.Response>, Error, number>;\n\nexport const useRemoveAsset = (onSuccess: () => void): UseRemoveAsset => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const queryClient = useQueryClient();\n const { del } = useFetchClient();\n\n const mutation = useMutation(\n (assetId: number) => del<DeleteFile.Response>(`/upload/files/${assetId}`),\n {\n onSuccess() {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'modal.remove.success-label',\n defaultMessage: 'Elements have been successfully deleted.',\n }),\n });\n\n onSuccess();\n },\n onError(error: Error) {\n toggleNotification({ type: 'danger', message: error.message });\n },\n }\n );\n\n const removeAsset = async (assetId: number) => {\n await mutation.mutateAsync(assetId);\n };\n\n return { ...mutation, removeAsset };\n};\n","import { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Dialog } from '@strapi/design-system';\n\nimport { useRemoveAsset } from '../../hooks/useRemoveAsset';\n\nimport type { File } from '../../../../shared/contracts/files';\n\ninterface RemoveAssetDialogProps {\n open: boolean;\n onClose: (open: boolean | null) => void;\n asset: File;\n}\n\nexport const RemoveAssetDialog = ({ open, onClose, asset }: RemoveAssetDialogProps) => {\n // `null` means asset is deleted\n const { removeAsset } = useRemoveAsset(() => {\n onClose(null);\n });\n\n const handleConfirm = async (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n event?.preventDefault();\n await removeAsset(asset.id);\n };\n\n return (\n <Dialog.Root open={open} onOpenChange={onClose}>\n <ConfirmDialog onConfirm={handleConfirm} />\n </Dialog.Root>\n );\n};\n","/* eslint-disable jsx-a11y/media-has-caption */\nimport * as React from 'react';\n\nimport MuxPlayer from '@mux/mux-player-react';\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { File, FilePdf } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { AssetType } from '../../../constants';\n\nconst CardAsset = styled(Flex)`\n min-height: 26.4rem;\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface AssetPreviewProps {\n mime: string;\n name: string;\n url: string;\n onLoad?: () => void;\n}\n\nexport const AssetPreview = React.forwardRef<\n HTMLImageElement | HTMLVideoElement | HTMLAudioElement,\n AssetPreviewProps\n>(({ mime, url, name, ...props }, ref) => {\n const theme = useTheme();\n\n const { formatMessage } = useIntl();\n\n if (mime.includes(AssetType.Image)) {\n return (\n <img ref={ref as React.ForwardedRef<HTMLImageElement>} src={url} alt={name} {...props} />\n );\n }\n\n if (mime.includes(AssetType.Video)) {\n return <MuxPlayer src={url} accentColor={theme.colors.primary500} />;\n }\n\n if (mime.includes(AssetType.Audio)) {\n return (\n <Box margin=\"5\">\n <audio controls src={url} ref={ref as React.ForwardedRef<HTMLAudioElement>} {...props}>\n {name}\n </audio>\n </Box>\n );\n }\n\n if (mime.includes('pdf')) {\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <FilePdf aria-label={name} fill=\"neutral500\" width={24} height={24} />\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n }\n\n return (\n <CardAsset width=\"100%\" justifyContent=\"center\" {...props}>\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n <File aria-label={name} fill=\"neutral500\" width={24} height={24} />\n\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n );\n});\n\nAssetPreview.displayName = 'AssetPreview';\n","// TODO: find a better naming convention for the file that was an index file before\nimport { Badge, Box, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nexport const RelativeBox = styled(Box)`\n position: relative;\n`;\n\nexport const Wrapper = styled.div`\n position: relative;\n display: flex;\n justify-content: center;\n background: repeating-conic-gradient(\n ${({ theme }) => theme.colors.neutral100} 0% 25%,\n transparent 0% 50%\n )\n 50% / 20px 20px;\n\n svg {\n height: 26px;\n }\n\n img,\n mux-player {\n margin: 0;\n padding: 0;\n max-height: 26.4rem;\n max-width: 100%;\n }\n\n mux-player {\n --play-button: inline-flex;\n --mute-button: inline-flex;\n --pip-button: inline-flex;\n --fullscreen-button: inline-flex;\n --playback-rate-button: inline-flex;\n --volume-range: inline-flex;\n --time-range: inline-flex;\n --time-display: inline-flex;\n --duration-display: inline-flex;\n }\n`;\n\nexport const ActionRow = styled(Flex)`\n height: 5.2rem;\n background-color: ${({ $blurry }) => ($blurry ? `rgba(33, 33, 52, 0.4)` : undefined)};\n`;\n\nexport const CroppingActionRow = styled(Flex)`\n z-index: 1;\n height: 5.2rem;\n position: absolute;\n background-color: rgba(33, 33, 52, 0.4);\n width: 100%;\n`;\n\n// TODO: fix in parts, this shouldn't happen\nexport const BadgeOverride = styled(Badge)`\n span {\n color: inherit;\n font-weight: ${({ theme }) => theme.fontWeights.regular};\n }\n`;\n\nexport const UploadProgressWrapper = styled.div`\n position: absolute;\n z-index: 2;\n height: 100%;\n width: 100%;\n`;\n","import { Flex, FocusTrap, IconButton, Menu } from '@strapi/design-system';\nimport { Check, Cross } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, useTheme } from 'styled-components';\n\nimport { getTrad } from '../../../utils';\n\nimport { CroppingActionRow } from './PreviewComponents';\n\ninterface CroppingActionsProps {\n onCancel: () => void;\n onValidate: () => void;\n onDuplicate?: () => void;\n}\n\nexport const CroppingActions = ({ onCancel, onValidate, onDuplicate }: CroppingActionsProps) => {\n const { formatMessage } = useIntl();\n const theme = useTheme();\n\n return (\n <FocusTrap onEscape={onCancel}>\n <CroppingActionRow justifyContent=\"flex-end\" paddingLeft={3} paddingRight={3}>\n <Flex gap={1}>\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.stop-crop'),\n defaultMessage: 'Stop cropping',\n })}\n onClick={onCancel}\n >\n <Cross />\n </IconButton>\n\n <Menu.Root>\n <Trigger\n aria-label={formatMessage({\n id: getTrad('control-card.crop'),\n defaultMessage: 'Crop',\n })}\n variant=\"tertiary\"\n paddingLeft={2}\n paddingRight={2}\n endIcon={null}\n >\n <Check\n aria-hidden\n focusable={false}\n style={{ position: 'relative', top: 2 }}\n fill=\"#C0C0D0\"\n />\n </Trigger>\n <Menu.Content zIndex={theme.zIndices.dialog}>\n <Menu.Item onSelect={onValidate}>\n {formatMessage({\n id: getTrad('checkControl.crop-original'),\n defaultMessage: 'Crop the original asset',\n })}\n </Menu.Item>\n\n {onDuplicate && (\n <Menu.Item onSelect={onDuplicate}>\n {formatMessage({\n id: getTrad('checkControl.crop-duplicate'),\n defaultMessage: 'Duplicate & crop the asset',\n })}\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu.Root>\n </Flex>\n </CroppingActionRow>\n </FocusTrap>\n );\n};\n\nconst Trigger = styled(Menu.Trigger)`\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n\n &:hover {\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral600};\n }\n }\n }\n\n &:active {\n svg {\n > g,\n path {\n fill: ${({ theme }) => theme.colors.neutral400};\n }\n }\n }\n`;\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Flex, IconButton } from '@strapi/design-system';\nimport { Crop as Resize, Download as DownloadIcon, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { useCropImg } from '../../../hooks/useCropImg';\nimport { useEditAsset } from '../../../hooks/useEditAsset';\nimport { useUpload } from '../../../hooks/useUpload';\nimport { createAssetUrl, getTrad, downloadFile } from '../../../utils';\nimport { CopyLinkButton } from '../../CopyLinkButton/CopyLinkButton';\nimport { UploadProgress } from '../../UploadProgress/UploadProgress';\nimport { RemoveAssetDialog } from '../RemoveAssetDialog';\n\nimport { AssetPreview } from './AssetPreview';\nimport { CroppingActions } from './CroppingActions';\nimport {\n ActionRow,\n BadgeOverride,\n RelativeBox,\n UploadProgressWrapper,\n Wrapper,\n} from './PreviewComponents';\n\nimport type { File as FileDefinition, RawFile } from '../../../../../shared/contracts/files';\n\nimport 'cropperjs/dist/cropper.css';\n\ninterface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface PreviewBoxProps {\n asset: Asset;\n canUpdate: boolean;\n canCopyLink: boolean;\n canDownload: boolean;\n replacementFile?: File;\n onDelete: (asset?: Asset | null) => void;\n onCropFinish: () => void;\n onCropStart: () => void;\n onCropCancel: () => void;\n trackedLocation?: string;\n}\n\nexport const PreviewBox = ({\n asset,\n canUpdate,\n canCopyLink,\n canDownload,\n onDelete,\n onCropFinish,\n onCropStart,\n onCropCancel,\n replacementFile,\n trackedLocation,\n}: PreviewBoxProps) => {\n const { trackUsage } = useTracking();\n const previewRef = React.useRef(null);\n const [isCropImageReady, setIsCropImageReady] = React.useState(false);\n const [hasCropIntent, setHasCropIntent] = React.useState<boolean | null>(null);\n const [assetUrl, setAssetUrl] = React.useState(createAssetUrl(asset, false));\n const [thumbnailUrl, setThumbnailUrl] = React.useState(createAssetUrl(asset, true));\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { crop, produceFile, stopCropping, isCropping, isCropperReady, width, height } =\n useCropImg();\n const { editAsset, error, isLoading, progress, cancel } = useEditAsset();\n\n const {\n upload,\n isLoading: isLoadingUpload,\n cancel: cancelUpload,\n error: uploadError,\n progress: progressUpload,\n } = useUpload();\n\n React.useEffect(() => {\n // Whenever a replacementUrl is set, make sure to permutate the real asset.url by\n // the locally generated one\n if (replacementFile) {\n const fileLocalUrl = URL.createObjectURL(replacementFile);\n\n if (asset.isLocal) {\n asset.url = fileLocalUrl;\n }\n\n setAssetUrl(fileLocalUrl);\n setThumbnailUrl(fileLocalUrl);\n }\n }, [replacementFile, asset]);\n\n React.useEffect(() => {\n if (hasCropIntent === false) {\n stopCropping();\n onCropCancel();\n }\n }, [hasCropIntent, stopCropping, onCropCancel, onCropFinish]);\n\n React.useEffect(() => {\n if (hasCropIntent && isCropImageReady) {\n crop(previewRef.current!);\n onCropStart();\n }\n }, [isCropImageReady, hasCropIntent, onCropStart, crop]);\n\n const handleCropping = async () => {\n const nextAsset = { ...asset, width, height, folder: asset.folder?.id };\n const file = (await produceFile(nextAsset.name, nextAsset.mime!, nextAsset.updatedAt!)) as File;\n\n // Making sure that when persisting the new asset, the URL changes with width and height\n // So that the browser makes a request and handle the image caching correctly at the good size\n let optimizedCachingImage;\n let optimizedCachingThumbnailImage;\n\n if (asset.isLocal) {\n optimizedCachingImage = URL.createObjectURL(file);\n optimizedCachingThumbnailImage = optimizedCachingImage;\n asset.url = optimizedCachingImage;\n asset.rawFile = file;\n\n trackUsage('didCropFile', { duplicatedFile: null, location: trackedLocation! });\n } else {\n const updatedAsset = await editAsset(nextAsset, file);\n optimizedCachingImage = createAssetUrl(updatedAsset, false);\n optimizedCachingThumbnailImage = createAssetUrl(updatedAsset, true);\n\n trackUsage('didCropFile', { duplicatedFile: false, location: trackedLocation! });\n }\n\n setAssetUrl(optimizedCachingImage);\n setThumbnailUrl(optimizedCachingThumbnailImage);\n setHasCropIntent(false);\n };\n\n const isInCroppingMode = isCropping && !isLoading;\n\n const handleDuplication = async () => {\n const nextAsset = { ...asset, width, height };\n const file = (await produceFile(\n nextAsset.name,\n nextAsset.mime!,\n nextAsset.updatedAt!\n )) as RawFile;\n\n await upload({ name: file.name, rawFile: file }, asset.folder?.id ? asset.folder.id : null);\n\n trackUsage('didCropFile', { duplicatedFile: true, location: trackedLocation! });\n\n setHasCropIntent(false);\n onCropFinish();\n };\n\n const handleCropCancel = () => {\n setHasCropIntent(false);\n };\n\n const handleCropStart = () => {\n setHasCropIntent(true);\n };\n\n return (\n <>\n <RelativeBox hasRadius background=\"neutral150\" borderColor=\"neutral200\">\n {isCropperReady && isInCroppingMode && (\n <CroppingActions\n onValidate={handleCropping}\n onDuplicate={asset.isLocal ? undefined : handleDuplication}\n onCancel={handleCropCancel}\n />\n )}\n\n <ActionRow paddingLeft={3} paddingRight={3} justifyContent=\"flex-end\">\n <Flex gap={1}>\n {canUpdate && !asset.isLocal && (\n <IconButton\n label={formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n onClick={() => setShowConfirmDialog(true)}\n >\n <Trash />\n </IconButton>\n )}\n\n {canDownload && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.download'),\n defaultMessage: 'Download',\n })}\n onClick={() => downloadFile(assetUrl!, asset.name)}\n >\n <DownloadIcon />\n </IconButton>\n )}\n\n {canCopyLink && <CopyLinkButton url={assetUrl!} />}\n\n {canUpdate && asset.mime?.includes(AssetType.Image) && (\n <IconButton\n label={formatMessage({ id: getTrad('control-card.crop'), defaultMessage: 'Crop' })}\n onClick={handleCropStart}\n >\n <Resize />\n </IconButton>\n )}\n </Flex>\n </ActionRow>\n\n <Wrapper>\n {/* This one is for editting an asset */}\n {isLoading && (\n <UploadProgressWrapper>\n <UploadProgress error={error} onCancel={cancel} progress={progress} />\n </UploadProgressWrapper>\n )}\n\n {/* This one is for duplicating an asset after cropping */}\n {isLoadingUpload && (\n <UploadProgressWrapper>\n <UploadProgress\n error={uploadError}\n onCancel={cancelUpload}\n progress={progressUpload}\n />\n </UploadProgressWrapper>\n )}\n\n <AssetPreview\n ref={previewRef}\n mime={asset.mime!}\n name={asset.name}\n url={hasCropIntent ? assetUrl! : thumbnailUrl!}\n onLoad={() => {\n if (asset.isLocal || hasCropIntent) {\n setIsCropImageReady(true);\n }\n }}\n />\n </Wrapper>\n\n <ActionRow\n paddingLeft={2}\n paddingRight={2}\n justifyContent=\"flex-end\"\n $blurry={isInCroppingMode}\n >\n {isInCroppingMode && width && height && (\n <BadgeOverride background=\"neutral900\" color=\"neutral0\">\n {width && height ? `${height}✕${width}` : 'N/A'}\n </BadgeOverride>\n )}\n </ActionRow>\n </RelativeBox>\n\n <RemoveAssetDialog\n open={showConfirmDialog}\n onClose={() => {\n setShowConfirmDialog(false);\n onDelete(null);\n }}\n asset={asset}\n />\n </>\n );\n};\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Button, VisuallyHidden, ButtonProps } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../utils';\n\ninterface ReplaceMediaButtonProps extends ButtonProps {\n acceptedMime: string;\n onSelectMedia: (file?: File) => void;\n trackedLocation?: string;\n}\n\nexport const ReplaceMediaButton = ({\n onSelectMedia,\n acceptedMime,\n trackedLocation,\n ...props\n}: ReplaceMediaButtonProps) => {\n const { formatMessage } = useIntl();\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n\n if (trackedLocation) {\n trackUsage('didReplaceMedia', { location: trackedLocation });\n }\n\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const file = inputRef.current?.files?.[0];\n\n onSelectMedia(file);\n };\n\n return (\n <>\n <Button variant=\"secondary\" onClick={handleClick} {...props}>\n {formatMessage({\n id: getTrad('control-card.replace-media'),\n defaultMessage: 'Replace media',\n })}\n </Button>\n <VisuallyHidden>\n <input\n accept={acceptedMime}\n type=\"file\"\n name=\"file\"\n data-testid=\"file-input\"\n tabIndex={-1}\n ref={inputRef}\n onChange={handleChange}\n aria-hidden\n />\n </VisuallyHidden>\n </>\n );\n};\n","/**\n *\n * EditAssetDialog\n *\n */\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\nimport * as yup from 'yup';\n\nimport { useEditAsset } from '../../hooks/useEditAsset';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { findRecursiveFolderByValue, getTrad, getFileExtension, formatBytes } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { DialogHeader } from './DialogHeader';\nimport { PreviewBox } from './PreviewBox/PreviewBox';\nimport { ReplaceMediaButton } from './ReplaceMediaButton';\n\nimport type { File as FileDefinition, RawFile } from '../../../../shared/contracts/files';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60vh + 8rem)`};\n`;\n\nconst fileInfoSchema = yup.object({\n name: yup.string().required(),\n alternativeText: yup.string(),\n caption: yup.string(),\n folder: yup.number(),\n});\n\nexport interface Asset extends Omit<FileDefinition, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileDefinition['folder'] & { id: number };\n}\n\ninterface EditAssetContentProps {\n asset?: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\ninterface FormInitialData {\n name?: string;\n alternativeText?: string;\n caption?: string;\n parent?: {\n value?: number;\n label: string;\n };\n}\n\nexport const EditAssetContent = ({\n onClose,\n asset,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n trackedLocation,\n}: EditAssetContentProps) => {\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const submitButtonRef = React.useRef<HTMLButtonElement>(null);\n const [isCropping, setIsCropping] = React.useState(false);\n const [replacementFile, setReplacementFile] = React.useState<File | undefined>();\n const { editAsset, isLoading } = useEditAsset();\n\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n\n const handleSubmit = async (values: FormInitialData) => {\n const nextAsset = { ...asset, ...values, folder: values.parent?.value } as Asset;\n\n if (asset?.isLocal) {\n onClose(nextAsset);\n } else {\n const editedAsset = (await editAsset(nextAsset, replacementFile!)) as Asset;\n\n const assetType = asset?.mime?.split('/')[0];\n // if the folder parent was the root of Media Library, its id is null\n // we know it changed location if the new parent value exists\n const didChangeLocation = asset?.folder?.id\n ? asset.folder.id !== values.parent?.value\n : asset?.folder === null && !!values.parent?.value;\n\n trackUsage('didEditMediaLibraryElements', {\n location: trackedLocation,\n type: assetType,\n changeLocation: didChangeLocation,\n });\n\n onClose(editedAsset);\n }\n };\n\n const handleStartCropping = () => {\n setIsCropping(true);\n };\n\n const handleCancelCropping = () => {\n setIsCropping(false);\n };\n\n const handleFinishCropping = () => {\n setIsCropping(false);\n onClose();\n };\n\n const formDisabled = !canUpdate || isCropping;\n\n const handleConfirmClose = () => {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.file',\n defaultMessage: 'Are you sure? Your changes will be lost.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n };\n\n const activeFolderId = asset?.folder?.id;\n const initialFormData = !folderStructureIsLoading && {\n name: asset?.name,\n alternativeText: asset?.alternativeText ?? undefined,\n caption: asset?.caption ?? undefined,\n parent: {\n value: activeFolderId ?? undefined,\n label:\n findRecursiveFolderByValue(folderStructure!, activeFolderId!)?.label ??\n folderStructure![0].label,\n },\n };\n\n const handleClose = (values?: { [key: string]: unknown }) => {\n if (!isEqual(initialFormData, values)) {\n handleConfirmClose();\n } else {\n onClose();\n }\n };\n\n if (folderStructureIsLoading) {\n return (\n <>\n <DialogHeader />\n <LoadingBody minHeight=\"60vh\" justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <Modal.Footer>\n <Button onClick={() => handleClose()} variant=\"tertiary\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n </Modal.Footer>\n </>\n );\n }\n\n return (\n <Formik\n validationSchema={fileInfoSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <>\n <DialogHeader />\n <Modal.Body>\n <Grid.Root gap={4}>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <PreviewBox\n asset={asset!}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n onDelete={onClose}\n onCropFinish={handleFinishCropping}\n onCropStart={handleStartCropping}\n onCropCancel={handleCancelCropping}\n replacementFile={replacementFile}\n trackedLocation={trackedLocation}\n />\n </Grid.Item>\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Form noValidate>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={3}>\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.file-details.size'),\n defaultMessage: 'Size',\n }),\n value: formatBytes(asset?.size ? asset.size : 0),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.dimensions'),\n defaultMessage: 'Dimensions',\n }),\n value:\n asset?.height && asset.width ? `${asset.width}✕${asset.height}` : null,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.date'),\n defaultMessage: 'Date',\n }),\n value: formatDate(new Date(asset?.createdAt ? asset.createdAt : '')),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.extension'),\n defaultMessage: 'Extension',\n }),\n value: getFileExtension(asset?.ext)!,\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.file-details.id'),\n defaultMessage: 'Asset ID',\n }),\n value: asset?.id ? asset.id : null,\n },\n ]}\n />\n <Field.Root name=\"name\" error={errors.name}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-name'),\n defaultMessage: 'File name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n\n <Field.Root\n name=\"alternativeText\"\n hint={formatMessage({\n id: getTrad('form.input.description.file-alt'),\n defaultMessage: 'This text will be displayed if the asset can’t be shown.',\n })}\n error={errors.alternativeText}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-alt'),\n defaultMessage: 'Alternative text',\n })}\n </Field.Label>\n <TextInput\n value={values.alternativeText}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n\n <Field.Root name=\"caption\" error={errors.caption}>\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-caption'),\n defaultMessage: 'Caption',\n })}\n </Field.Label>\n <TextInput\n value={values.caption}\n onChange={handleChange}\n disabled={formDisabled}\n />\n </Field.Root>\n\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Field.Root name=\"parent\" id=\"asset-folder\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.file-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n name=\"parent\"\n defaultValue={values.parent}\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n menuPortalTarget={document.querySelector('body')}\n inputId=\"asset-folder\"\n isDisabled={formDisabled}\n error={errors?.parent}\n ariaErrorMessage=\"folder-parent-error\"\n />\n </Field.Root>\n </Flex>\n </Flex>\n\n <VisuallyHidden>\n <button\n type=\"submit\"\n tabIndex={-1}\n ref={submitButtonRef}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'submit', defaultMessage: 'Submit' })}\n </button>\n </VisuallyHidden>\n </Form>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => handleClose({ ...values })} variant=\"tertiary\">\n {formatMessage({ id: 'global.cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n <ReplaceMediaButton\n onSelectMedia={setReplacementFile}\n acceptedMime={asset?.mime ?? ''}\n disabled={formDisabled}\n trackedLocation={trackedLocation}\n />\n\n <Button\n onClick={() => submitButtonRef.current?.click()}\n loading={isLoading}\n disabled={formDisabled}\n >\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n </Flex>\n </Modal.Footer>\n </>\n )}\n </Formik>\n );\n};\n\ninterface EditAssetDialogProps {\n asset: Asset;\n canUpdate?: boolean;\n canCopyLink?: boolean;\n canDownload?: boolean;\n trackedLocation?: string;\n open: boolean;\n onClose: (arg?: Asset | null | boolean) => void;\n}\n\nexport const EditAssetDialog = ({\n open,\n onClose,\n canUpdate = false,\n canCopyLink = false,\n canDownload = false,\n ...restProps\n}: EditAssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditAssetContent\n onClose={onClose}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n {...restProps}\n />\n </Modal.Content>\n </Modal.Root>\n );\n};\n","import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { BulkDeleteFiles, File } from '../../../shared/contracts/files';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nimport type { BulkDeleteFolders, FolderDefinition } from '../../../shared/contracts/folders';\n\nexport interface FileWithType extends File {\n type: string;\n}\n\ntype BulkRemovePayload = Partial<BulkDeleteFiles.Request['body']> &\n Partial<BulkDeleteFolders.Request['body']>;\n\nexport const useBulkRemove = () => {\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n const queryClient = useQueryClient();\n const { post } = useFetchClient();\n\n const bulkRemoveQuery = (filesAndFolders: Array<FileWithType | FolderDefinition>) => {\n const payload = filesAndFolders.reduce<BulkRemovePayload>((acc, selected) => {\n const { id, type } = selected;\n const key = type === 'asset' ? 'fileIds' : 'folderIds';\n\n if (!acc[key]) {\n acc[key] = [];\n }\n\n acc[key]!.push(id);\n\n return acc;\n }, {});\n\n return post('/upload/actions/bulk-delete', payload);\n };\n\n const mutation = useMutation<\n BulkDeleteFiles.Response | BulkDeleteFolders.Response,\n BulkDeleteFiles.Response['error'] | BulkDeleteFolders.Response['error'],\n Array<FileWithType | FolderDefinition>\n >(bulkRemoveQuery, {\n onSuccess(res) {\n const {\n data: { data },\n } = res;\n\n if (data?.files?.length > 0) {\n queryClient.refetchQueries([pluginId, 'assets'], { active: true });\n queryClient.refetchQueries([pluginId, 'asset-count'], { active: true });\n }\n\n if (data?.folders?.length > 0) {\n queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: getTrad('modal.remove.success-label'),\n defaultMessage: 'Elements have been successfully deleted.',\n }),\n });\n },\n onError(error) {\n toggleNotification({ type: 'danger', message: error?.message });\n },\n });\n\n const remove = (...args: Parameters<typeof mutation.mutateAsync>) =>\n mutation.mutateAsync(...args);\n\n return { ...mutation, remove };\n};\n","import { useFetchClient, FetchClient } from '@strapi/admin/strapi-admin';\nimport { useMutation, useQueryClient } from 'react-query';\n\nimport { CreateFolders, UpdateFolder } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\n\ninterface EditFolderRequestParams {\n attrs: CreateFolders.Request['body'] | UpdateFolder.Request['body'];\n id?: UpdateFolder.Request['params']['id'];\n}\n\nconst editFolderRequest = (\n put: FetchClient['put'],\n post: FetchClient['post'],\n { attrs, id }: EditFolderRequestParams\n): Promise<UpdateFolder.Response['data'] | CreateFolders.Response['data']> => {\n const isEditing = !!id;\n const method = isEditing ? put : post;\n\n return method(`/upload/folders/${id ?? ''}`, attrs).then((res) => res.data);\n};\n\nexport const useEditFolder = () => {\n const queryClient = useQueryClient();\n const { put, post } = useFetchClient();\n\n const mutation = useMutation<\n UpdateFolder.Response['data'] | CreateFolders.Response['data'],\n UpdateFolder.Response['error'] | CreateFolders.Response['error'],\n EditFolderRequestParams\n >((...args) => editFolderRequest(put, post, ...args), {\n async onSuccess() {\n await queryClient.refetchQueries([pluginId, 'folders'], { active: true });\n await queryClient.refetchQueries([pluginId, 'folder', 'structure'], { active: true });\n },\n });\n\n const editFolder = (\n attrs: EditFolderRequestParams['attrs'],\n id?: EditFolderRequestParams['id']\n ) => mutation.mutateAsync({ attrs, id });\n\n return { ...mutation, editFolder, status: mutation.status };\n};\n","import { Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\ninterface EditFolderModalHeaderProps {\n isEditing?: boolean;\n}\n\nexport const EditFolderModalHeader = ({ isEditing = false }: EditFolderModalHeaderProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Header>\n <Modal.Title>\n {formatMessage(\n isEditing\n ? {\n id: getTrad('modal.folder.edit.title'),\n defaultMessage: 'Edit folder',\n }\n : {\n id: getTrad('modal.folder.create.title'),\n defaultMessage: 'Add new folder',\n }\n )}\n </Modal.Title>\n </Modal.Header>\n );\n};\n","import { ConfirmDialog } from '@strapi/admin/strapi-admin';\nimport { Dialog } from '@strapi/design-system';\n\ninterface RemoveFolderDialogProps {\n onClose: () => void;\n onConfirm: () => void;\n open: boolean;\n}\n\nexport const RemoveFolderDialog = ({ onClose, onConfirm, open }: RemoveFolderDialogProps) => {\n return (\n <Dialog.Root open={open} onOpenChange={onClose}>\n <ConfirmDialog onConfirm={onConfirm} />\n </Dialog.Root>\n );\n};\n","import * as React from 'react';\n\nimport { useTracking, useNotification } from '@strapi/admin/strapi-admin';\nimport {\n Button,\n Field,\n Flex,\n Grid,\n Loader,\n Modal,\n TextInput,\n Typography,\n} from '@strapi/design-system';\nimport { Form, Formik, FormikErrors } from 'formik';\nimport isEmpty from 'lodash/isEmpty';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { useBulkRemove } from '../../hooks/useBulkRemove';\nimport { useEditFolder } from '../../hooks/useEditFolder';\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { findRecursiveFolderByValue, getTrad, getAPIInnerErrors } from '../../utils';\nimport { ContextInfo } from '../ContextInfo/ContextInfo';\nimport { SelectTree } from '../SelectTree/SelectTree';\n\nimport { EditFolderModalHeader } from './ModalHeader/ModalHeader';\nimport { RemoveFolderDialog } from './RemoveFolderDialog';\n\nimport type { FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { FetchError } from '@strapi/admin/strapi-admin';\n\nconst folderSchema = yup.object({\n name: yup.string().required(),\n parent: yup\n .object({\n label: yup.string(),\n value: yup.number().nullable(true),\n })\n .nullable(true),\n});\n\ninterface ValuesSubmit {\n name: string;\n parent: null | { label?: string; value?: number };\n}\n\nexport interface EditFolderDialogProps {\n parentFolderId?: string | number | null;\n location?: string;\n folder?: FolderDefinition;\n open?: boolean;\n onClose: (payload?: { created?: boolean | undefined } | boolean) => void;\n}\n\nexport const EditFolderContent = ({\n onClose,\n folder,\n location,\n parentFolderId,\n}: EditFolderDialogProps) => {\n const { data: folderStructure, isLoading: folderStructureIsLoading } = useFolderStructure({\n enabled: true,\n });\n const { canCreate, isLoading: isLoadingPermissions, canUpdate } = useMediaLibraryPermissions();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n const { formatMessage, formatDate } = useIntl();\n const { trackUsage } = useTracking();\n const { editFolder, isLoading: isEditFolderLoading } = useEditFolder();\n const { remove } = useBulkRemove();\n const { toggleNotification } = useNotification();\n const isLoading = isLoadingPermissions || folderStructureIsLoading;\n const isEditing = !!folder;\n const formDisabled = (folder && !canUpdate) || (!folder && !canCreate);\n const initialFormData: ValuesSubmit = !folderStructureIsLoading\n ? {\n name: folder?.name ?? '',\n parent: {\n /* ideally we would use folderStructure[0].value, but since it is null\n react complains about rendering null as field value */\n value: parentFolderId ? parseInt(parentFolderId.toString(), 10) : undefined,\n label: parentFolderId\n ? folderStructure &&\n findRecursiveFolderByValue(folderStructure, parseInt(parentFolderId.toString(), 10))\n ?.label\n : folderStructure?.[0].label,\n },\n }\n : {\n name: '',\n parent: null,\n };\n\n const handleSubmit = async (\n values: ValuesSubmit,\n { setErrors }: { setErrors: (errors: FormikErrors<ValuesSubmit>) => void }\n ) => {\n try {\n await editFolder(\n {\n ...values,\n parent: values.parent?.value ?? null,\n },\n folder?.id\n );\n\n toggleNotification({\n type: 'success',\n message: isEditing\n ? formatMessage({\n id: getTrad('modal.folder-notification-edited-success'),\n defaultMessage: 'Folder successfully edited',\n })\n : formatMessage({\n id: getTrad('modal.folder-notification-created-success'),\n defaultMessage: 'Folder successfully created',\n }),\n });\n\n if (isEditing) {\n const didChangeLocation = parentFolderId\n ? parseInt(parentFolderId.toString(), 10) !== values.parent?.value\n : parentFolderId === null && !!values.parent?.value;\n trackUsage('didEditMediaLibraryElements', {\n location,\n type: 'folder',\n changeLocation: didChangeLocation,\n });\n } else {\n trackUsage('didAddMediaLibraryFolders', { location: location! });\n }\n\n onClose({ created: true });\n } catch (err) {\n const errors = getAPIInnerErrors(err as FetchError, { getTrad });\n const formikErrors = Object.entries(errors!).reduce(\n (acc: Record<string, string>, [key, error]) => {\n acc[key] = error.defaultMessage;\n\n return acc;\n },\n {}\n );\n\n if (!isEmpty(formikErrors)) {\n setErrors(formikErrors);\n }\n }\n };\n\n const handleDelete = async () => {\n if (folder) {\n await remove([folder]);\n }\n\n setShowConfirmDialog(false);\n onClose();\n };\n\n if (isLoading) {\n return (\n <>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Flex justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </Flex>\n </Modal.Body>\n </>\n );\n }\n\n return (\n <>\n <Formik\n validationSchema={folderSchema}\n validateOnChange={false}\n onSubmit={handleSubmit}\n initialValues={initialFormData}\n >\n {({ values, errors, handleChange, setFieldValue }) => (\n <Form noValidate>\n <EditFolderModalHeader isEditing={isEditing} />\n <Modal.Body>\n <Grid.Root gap={4}>\n {isEditing && (\n <Grid.Item xs={12} col={12} direction=\"column\" alignItems=\"stretch\">\n <ContextInfo\n blocks={[\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.elements'),\n defaultMessage: 'Elements',\n }),\n value: formatMessage(\n {\n id: getTrad('modal.folder.elements.count'),\n defaultMessage: '{folderCount} folders, {assetCount} assets',\n },\n {\n assetCount: folder?.files?.count ?? 0,\n folderCount: folder?.children?.count ?? 0,\n }\n ),\n },\n\n {\n label: formatMessage({\n id: getTrad('modal.folder.create.creation-date'),\n defaultMessage: 'Creation Date',\n }),\n value: formatDate(new Date(folder.createdAt!)),\n },\n ]}\n />\n </Grid.Item>\n )}\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n name=\"name\"\n error={typeof errors.name === 'string' ? errors.name : undefined}\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-name'),\n defaultMessage: 'Name',\n })}\n </Field.Label>\n <TextInput\n value={values.name}\n onChange={handleChange}\n disabled={formDisabled}\n />\n <Field.Error />\n </Field.Root>\n </Grid.Item>\n\n <Grid.Item xs={12} col={6} direction=\"column\" alignItems=\"stretch\">\n <Field.Root id=\"folder-parent\">\n <Field.Label>\n {formatMessage({\n id: getTrad('form.input.label.folder-location'),\n defaultMessage: 'Location',\n })}\n </Field.Label>\n\n <SelectTree\n options={folderStructure!}\n onChange={(value) => {\n setFieldValue('parent', value);\n }}\n isDisabled={formDisabled}\n defaultValue={values.parent!}\n name=\"parent\"\n menuPortalTarget={document.querySelector('body')}\n inputId=\"folder-parent\"\n disabled={formDisabled}\n error={typeof errors.parent === 'string' ? errors.parent : undefined}\n ariaErrorMessage=\"folder-parent-error\"\n />\n\n {errors.parent && (\n <Typography\n variant=\"pi\"\n tag=\"p\"\n id=\"folder-parent-error\"\n textColor=\"danger600\"\n >\n {typeof errors.parent === 'string' ? errors.parent : undefined}\n </Typography>\n )}\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={() => onClose()} variant=\"tertiary\" name=\"cancel\">\n {formatMessage({ id: 'cancel', defaultMessage: 'Cancel' })}\n </Button>\n <Flex gap={2}>\n {isEditing && canUpdate && (\n <Button\n type=\"button\"\n variant=\"danger-light\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"delete\"\n disabled={!canUpdate || isEditFolderLoading}\n >\n {formatMessage({\n id: getTrad('modal.folder.create.delete'),\n defaultMessage: 'Delete folder',\n })}\n </Button>\n )}\n\n <Button\n name=\"submit\"\n loading={isEditFolderLoading}\n disabled={formDisabled}\n type=\"submit\"\n >\n {formatMessage(\n isEditing\n ? { id: getTrad('modal.folder.edit.submit'), defaultMessage: 'Save' }\n : { id: getTrad('modal.folder.create.submit'), defaultMessage: 'Create' }\n )}\n </Button>\n </Flex>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n <RemoveFolderDialog\n open={showConfirmDialog}\n onClose={() => setShowConfirmDialog(false)}\n onConfirm={handleDelete}\n />\n </>\n );\n};\n\nexport const EditFolderDialog = ({ open, onClose, ...restProps }: EditFolderDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <EditFolderContent {...restProps} onClose={onClose} open={open} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n","import { useNotification, useFetchClient } from '@strapi/admin/strapi-admin';\nimport { useIntl } from 'react-intl';\nimport { useQuery } from 'react-query';\n\nimport { GetFolder } from '../../../shared/contracts/folders';\nimport { pluginId } from '../pluginId';\nimport { getTrad } from '../utils';\n\nexport const useFolder = (id: number | null | undefined, { enabled = true } = {}) => {\n const { toggleNotification } = useNotification();\n const { get } = useFetchClient();\n const { formatMessage } = useIntl();\n\n const { data, error, isLoading } = useQuery<\n GetFolder.Response['data'],\n GetFolder.Response['error']\n >(\n [pluginId, 'folder', id],\n async () => {\n const {\n data: { data },\n } = await get(`/upload/folders/${id}`, {\n params: {\n populate: {\n parent: {\n populate: {\n parent: '*',\n },\n },\n },\n },\n });\n\n return data;\n },\n {\n retry: false,\n enabled,\n staleTime: 0,\n cacheTime: 0,\n onError() {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: getTrad('notification.warning.404'),\n defaultMessage: 'Not found',\n }),\n });\n },\n }\n );\n\n return { data, error, isLoading };\n};\n","import { useEffect, useState } from 'react';\n\nconst usePersistentState = <T>(key: string, defaultValue: T) => {\n const [value, setValue] = useState<T>(() => {\n const stickyValue = window.localStorage.getItem(key);\n\n if (stickyValue !== null) {\n try {\n return JSON.parse(stickyValue);\n } catch {\n // JSON.parse fails when the stored value is a primitive\n return stickyValue;\n }\n }\n\n return defaultValue;\n });\n\n useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n\n return [value, setValue] as const;\n};\n\nexport { usePersistentState };\n","import * as React from 'react';\n\nimport {\n Box,\n Card,\n CardAction,\n CardBadge,\n CardBody,\n CardCheckbox,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n Flex,\n IconButton,\n Typography,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { getTrad } from '../../utils';\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\nconst CardActionsContainer = styled(CardAction)`\n opacity: 0;\n\n &:focus-within {\n opacity: 1;\n }\n`;\n\nconst CardContainer = styled(Card)`\n cursor: pointer;\n\n &:hover {\n ${CardActionsContainer} {\n opacity: 1;\n }\n }\n`;\n\nexport interface AssetCardBaseProps {\n children?: React.ReactNode;\n extension: string;\n isSelectable?: boolean;\n name: string;\n onSelect?: () => void;\n onRemove?: () => void;\n onEdit?: (\n event:\n | React.MouseEvent<HTMLButtonElement, MouseEvent>\n | React.MouseEvent<HTMLDivElement, MouseEvent>\n ) => void;\n selected?: boolean;\n subtitle?: string;\n variant: 'Image' | 'Video' | 'Audio' | 'Doc';\n}\n\nexport const AssetCardBase = ({\n children,\n extension,\n isSelectable = false,\n name,\n onSelect,\n onRemove,\n onEdit,\n selected = false,\n subtitle = '',\n variant = 'Image',\n}: AssetCardBaseProps) => {\n const { formatMessage } = useIntl();\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (onEdit) {\n onEdit(e);\n }\n };\n\n /**\n * This is required because we need to stop the propagation of the event\n * bubbling to the `CardContainer`, however the `CardCheckbox` only returns\n * the `boolean` value as opposed to the event itself.\n */\n const handlePropagationClick = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n e.stopPropagation();\n };\n\n return (\n <CardContainer role=\"button\" height=\"100%\" tabIndex={-1} onClick={handleClick}>\n <CardHeader>\n {isSelectable && (\n <div onClick={handlePropagationClick}>\n <CardCheckbox checked={selected} onCheckedChange={onSelect} />\n </div>\n )}\n {(onRemove || onEdit) && (\n <CardActionsContainer onClick={handlePropagationClick} position=\"end\">\n {onRemove && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.remove-selection'),\n defaultMessage: 'Remove from selection',\n })}\n onClick={onRemove}\n >\n <Trash />\n </IconButton>\n )}\n\n {onEdit && (\n <IconButton\n label={formatMessage({ id: getTrad('control-card.edit'), defaultMessage: 'Edit' })}\n onClick={onEdit}\n >\n <Pencil />\n </IconButton>\n )}\n </CardActionsContainer>\n )}\n {children}\n </CardHeader>\n <CardBody>\n <CardContent>\n <Box paddingTop={1}>\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{name}</CardTitle>\n </Typography>\n </Box>\n <CardSubtitle>\n <Extension>{extension}</Extension>\n {subtitle}\n </CardSubtitle>\n </CardContent>\n <Flex paddingTop={1} grow={1}>\n <CardBadge>\n {formatMessage({\n id: getTrad(`settings.section.${variant.toLowerCase()}.label`),\n defaultMessage: variant,\n })}\n </CardBadge>\n </Flex>\n </CardBody>\n </CardContainer>\n );\n};\n","/* eslint-disable jsx-a11y/media-has-caption */\nimport { Box } from '@strapi/design-system';\n\ninterface AudioPreviewProps {\n alt: string;\n url: string;\n}\n\nexport const AudioPreview = ({ url, alt }: AudioPreviewProps) => {\n return (\n <Box>\n <audio controls src={url}>\n {alt}\n </audio>\n </Box>\n );\n};\n","import { Box, CardAsset, Flex } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\nimport { AudioPreview } from './AudioPreview';\n\nconst AudioPreviewWrapper = styled(Box)`\n canvas,\n audio {\n display: block;\n max-width: 100%;\n max-height: ${({ size }) => (size === 'M' ? 16.4 : 8.8)}rem;\n }\n`;\n\ninterface AudioAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n size?: 'S' | 'M';\n url: string;\n}\n\nexport const AudioAssetCard = ({\n name,\n url,\n size = 'M',\n selected = false,\n ...restProps\n}: AudioAssetCardProps) => {\n return (\n <AssetCardBase name={name} selected={selected} {...restProps} variant=\"Audio\">\n <CardAsset size={size}>\n <Flex alignItems=\"center\">\n <AudioPreviewWrapper size={size}>\n <AudioPreview url={url} alt={name} />\n </AudioPreviewWrapper>\n </Flex>\n </CardAsset>\n </AssetCardBase>\n );\n};\n","import { Flex, Typography } from '@strapi/design-system';\nimport { File, FilePdf } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\n\nconst CardAsset = styled(Flex)`\n border-radius: ${({ theme }) => theme.borderRadius} ${({ theme }) => theme.borderRadius} 0 0;\n background: linear-gradient(\n 180deg,\n ${({ theme }) => theme.colors.neutral0} 0%,\n ${({ theme }) => theme.colors.neutral100} 121.48%\n );\n`;\n\ninterface DocAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n size?: 'S' | 'M';\n extension: string;\n}\n\nexport const DocAssetCard = ({\n name,\n extension,\n size = 'M',\n selected = false,\n ...restProps\n}: DocAssetCardProps) => {\n const { formatMessage } = useIntl();\n return (\n <AssetCardBase\n name={name}\n extension={extension}\n selected={selected}\n {...restProps}\n variant=\"Doc\"\n >\n <CardAsset width=\"100%\" height={size === 'S' ? `8.8rem` : `16.4rem`} justifyContent=\"center\">\n <Flex gap={2} direction=\"column\" alignItems=\"center\">\n {extension === 'pdf' ? (\n <FilePdf aria-label={name} fill=\"neutral500\" width={24} height={24} />\n ) : (\n <File aria-label={name} fill=\"neutral500\" width={24} height={24} />\n )}\n\n <Typography textColor=\"neutral500\" variant=\"pi\">\n {formatMessage({\n id: 'noPreview',\n defaultMessage: 'No preview available',\n })}\n </Typography>\n </Flex>\n </CardAsset>\n </AssetCardBase>\n );\n};\n","import { CardAsset } from '@strapi/design-system';\n\nimport { appendSearchParamsToUrl } from '../../utils';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\n\ninterface ImageAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n height?: number;\n width?: number;\n size?: 'S' | 'M';\n thumbnail: string;\n alt: string;\n updatedAt?: string;\n isUrlSigned: boolean;\n}\n\nexport const ImageAssetCard = ({\n height,\n width,\n thumbnail,\n size = 'M',\n alt,\n isUrlSigned,\n selected = false,\n ...props\n}: ImageAssetCardProps) => {\n // appending the updatedAt param to the thumbnail URL prevents it from being cached by the browser (cache busting)\n // applied only if the url is not signed to prevent the signature from being invalidated\n const thumbnailUrl = isUrlSigned\n ? thumbnail\n : appendSearchParamsToUrl({\n url: thumbnail,\n params: { updatedAt: props.updatedAt },\n });\n const subtitle = height && width ? ` - ${width}✕${height}` : undefined;\n\n return (\n <AssetCardBase {...props} selected={selected} subtitle={subtitle} variant=\"Image\">\n <CardAsset src={thumbnailUrl} size={size} alt={alt} />\n </AssetCardBase>\n );\n};\n","import * as React from 'react';\n\nimport { Box, VisuallyHidden } from '@strapi/design-system';\n\n// According to MDN\n// https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState#value\nconst HAVE_FUTURE_DATA = 3;\n\ninterface VideoPreviewProps {\n alt: string;\n url: string;\n mime: string;\n onLoadDuration?: (duration?: number) => void;\n size?: 'S' | 'M';\n}\n\nexport const VideoPreview = ({\n url,\n mime,\n onLoadDuration = () => {},\n alt,\n ...props\n}: VideoPreviewProps) => {\n const handleTimeUpdate = (e: React.SyntheticEvent<HTMLVideoElement>) => {\n if (e.currentTarget.currentTime > 0) {\n const video = e.currentTarget;\n const canvas = document.createElement('canvas');\n\n canvas.height = video.videoHeight;\n canvas.width = video.videoWidth;\n canvas.getContext('2d')?.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);\n\n video.replaceWith(canvas);\n onLoadDuration && onLoadDuration(video.duration);\n }\n };\n\n const handleThumbnailVisibility = (e: React.SyntheticEvent<HTMLVideoElement>) => {\n const video = e.currentTarget;\n\n if (video.readyState < HAVE_FUTURE_DATA) return;\n\n video.play();\n };\n\n return (\n <Box tag=\"figure\" key={url} {...props}>\n <video\n muted\n onLoadedData={handleThumbnailVisibility}\n src={url}\n crossOrigin=\"anonymous\"\n onTimeUpdate={handleTimeUpdate}\n >\n <source type={mime} />\n </video>\n <VisuallyHidden tag=\"figcaption\">{alt}</VisuallyHidden>\n </Box>\n );\n};\n","import * as React from 'react';\n\nimport { Box, CardAsset, CardTimer } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nimport { formatDuration } from '../../utils';\n\nimport { AssetCardBase, AssetCardBaseProps } from './AssetCardBase';\nimport { VideoPreview } from './VideoPreview';\n\nconst VideoPreviewWrapper = styled(Box)`\n canvas,\n video {\n display: block;\n pointer-events: none;\n max-width: 100%;\n max-height: ${({ size }) => (size === 'M' ? 16.4 : 8.8)}rem;\n }\n`;\n\ninterface VideoAssetCardProps extends Omit<AssetCardBaseProps, 'variant' | 'children'> {\n mime: string;\n url: string;\n size?: 'S' | 'M';\n}\n\nexport const VideoAssetCard = ({\n name,\n url,\n mime,\n size = 'M',\n selected = false,\n ...props\n}: VideoAssetCardProps) => {\n const [duration, setDuration] = React.useState<number>();\n\n const formattedDuration = duration && formatDuration(duration);\n\n return (\n <AssetCardBase selected={selected} name={name} {...props} variant=\"Video\">\n <CardAsset size={size}>\n <VideoPreviewWrapper size={size}>\n <VideoPreview url={url} mime={mime} onLoadDuration={setDuration} alt={name} />\n </VideoPreviewWrapper>\n </CardAsset>\n <CardTimer>{formattedDuration || '...'}</CardTimer>\n </AssetCardBase>\n );\n};\n","import { AssetType } from '../../constants';\nimport { createAssetUrl, getFileExtension, prefixFileUrlWithBackendUrl } from '../../utils';\n\nimport { AudioAssetCard } from './AudioAssetCard';\nimport { DocAssetCard } from './DocAssetCard';\nimport { ImageAssetCard } from './ImageAssetCard';\nimport { VideoAssetCard } from './VideoAssetCard';\n\nimport type { File } from '../../../../shared/contracts/files';\n\ntype FileSelectable = File & { isSelectable?: boolean };\n\nexport type AllowedTypes = 'files' | 'images' | 'videos' | 'audios';\n\ninterface AssetCardProps {\n asset: FileSelectable;\n local?: boolean;\n onSelect?: (asset: FileSelectable) => void;\n onEdit?: (asset: FileSelectable) => void;\n onRemove?: (asset: FileSelectable) => void;\n isSelected?: boolean;\n size?: 'S' | 'M';\n allowedTypes?: AllowedTypes[];\n alt?: string;\n}\n\nexport const AssetCard = ({\n asset,\n isSelected = false,\n onSelect,\n onEdit,\n onRemove,\n size = 'M',\n local = false,\n}: AssetCardProps) => {\n const handleSelect = onSelect ? () => onSelect(asset) : undefined;\n\n const commonAssetCardProps = {\n id: asset.id,\n isSelectable: asset.isSelectable,\n extension: getFileExtension(asset.ext)!,\n name: asset.name,\n url: local ? asset.url! : createAssetUrl(asset, true)!,\n mime: asset.mime!,\n onEdit: onEdit ? () => onEdit(asset) : undefined,\n onSelect: handleSelect,\n onRemove: onRemove ? () => onRemove(asset) : undefined,\n selected: isSelected,\n size,\n };\n\n if (asset.mime?.includes(AssetType.Video)) {\n return <VideoAssetCard {...commonAssetCardProps} />;\n }\n\n if (asset.mime?.includes(AssetType.Image)) {\n return (\n <ImageAssetCard\n alt={asset.alternativeText || asset.name}\n height={asset.height!}\n thumbnail={prefixFileUrlWithBackendUrl(asset?.formats?.thumbnail?.url || asset.url)!}\n width={asset.width!}\n updatedAt={asset.updatedAt}\n isUrlSigned={asset?.isUrlSigned || false}\n {...commonAssetCardProps}\n />\n );\n }\n\n if (asset.mime?.includes(AssetType.Audio)) {\n return <AudioAssetCard {...commonAssetCardProps} />;\n }\n\n return <DocAssetCard {...commonAssetCardProps} />;\n};\n","import * as React from 'react';\n\nimport { useDrag, useDrop } from 'react-dnd';\n\ninterface DraggableProps {\n id: string | number;\n index: number;\n children: React.ReactNode;\n moveItem: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const Draggable = ({ children, id, index, moveItem }: DraggableProps) => {\n const ref = React.useRef(null);\n\n const [, drop] = useDrop({\n accept: 'draggable',\n hover(hoveredOverItem: { id: number; index: number }) {\n if (!ref.current) {\n return;\n }\n\n if (hoveredOverItem.id !== id) {\n moveItem(hoveredOverItem.index, index);\n\n hoveredOverItem.index = index;\n }\n },\n });\n\n const [{ isDragging }, drag] = useDrag({\n type: 'draggable',\n item() {\n return { index, id };\n },\n collect: (monitor) => ({\n isDragging: monitor.isDragging(),\n }),\n });\n\n const opacity = isDragging ? 0.2 : 1;\n\n drag(drop(ref));\n\n return (\n <div ref={ref} style={{ opacity, cursor: 'move' }}>\n {children}\n </div>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { Box, Grid, KeyboardNavigable, Typography } from '@strapi/design-system';\n\nimport { AssetCard } from '../AssetCard/AssetCard';\n\nimport { Draggable } from './Draggable';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface AssetGridListProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n onEditAsset?: (asset: File) => void;\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n size?: 'S' | 'M';\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n title?: string | null;\n}\n\nexport const AssetGridList = ({\n allowedTypes = ['files', 'images', 'videos', 'audios'],\n assets,\n onEditAsset,\n onSelectAsset,\n selectedAssets,\n size = 'M',\n onReorderAsset,\n title = null,\n}: AssetGridListProps) => {\n return (\n <KeyboardNavigable tagName=\"article\">\n {title && (\n <Box paddingTop={2} paddingBottom={2}>\n <Typography tag=\"h2\" variant=\"delta\" fontWeight=\"semiBold\">\n {title}\n </Typography>\n </Box>\n )}\n\n <Grid.Root gap={4}>\n {assets.map((asset, index) => {\n const isSelected = !!selectedAssets.find((currentAsset) => currentAsset.id === asset.id);\n\n if (onReorderAsset) {\n return (\n <Grid.Item key={asset.id} col={3} height=\"100%\">\n <Draggable index={index} moveItem={onReorderAsset} id={asset.id}>\n <AssetCard\n allowedTypes={allowedTypes}\n asset={asset}\n isSelected={isSelected}\n onEdit={onEditAsset ? () => onEditAsset(asset) : undefined}\n onSelect={() => onSelectAsset(asset)}\n size={size}\n />\n </Draggable>\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={3} key={asset.id} height=\"100%\" direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n key={asset.id}\n allowedTypes={allowedTypes}\n asset={asset}\n isSelected={isSelected}\n onEdit={onEditAsset ? () => onEditAsset(asset) : undefined}\n onSelect={() => onSelectAsset(asset)}\n size={size}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n );\n};\n","import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { CrumbSimpleMenu, Loader, MenuItem } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { useLocation } from 'react-router-dom';\n\nimport { useFolderStructure } from '../../hooks/useFolderStructure';\nimport { getFolderParents, getFolderURL, getTrad } from '../../utils';\n\ninterface CrumbSimpleMenuAsyncProps {\n parentsToOmit?: number[];\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const CrumbSimpleMenuAsync = ({\n parentsToOmit = [],\n currentFolderId,\n onChangeFolder,\n}: CrumbSimpleMenuAsyncProps) => {\n const [shouldFetch, setShouldFetch] = React.useState(false);\n const { data, isLoading } = useFolderStructure({ enabled: shouldFetch });\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const { formatMessage } = useIntl();\n\n const allAscendants = data && getFolderParents(data, currentFolderId!);\n const filteredAscendants =\n allAscendants &&\n allAscendants.filter(\n (ascendant) =>\n typeof ascendant.id === 'number' &&\n !parentsToOmit.includes(ascendant.id) &&\n ascendant.id !== null\n );\n\n return (\n <CrumbSimpleMenu\n onOpen={() => setShouldFetch(true)}\n onClose={() => setShouldFetch(false)}\n aria-label={formatMessage({\n id: getTrad('header.breadcrumbs.menu.label'),\n defaultMessage: 'Get more ascendants folders',\n })}\n label=\"...\"\n >\n {isLoading && (\n <MenuItem>\n <Loader small>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </MenuItem>\n )}\n {filteredAscendants &&\n filteredAscendants.map((ascendant) => {\n if (onChangeFolder) {\n return (\n <MenuItem\n tag=\"button\"\n type=\"button\"\n onClick={() => onChangeFolder(Number(ascendant.id), ascendant.path)}\n key={ascendant.id}\n >\n {ascendant.label}\n </MenuItem>\n );\n }\n\n const url = getFolderURL(pathname, query, {\n folder: typeof ascendant?.id === 'string' ? ascendant.id : undefined,\n folderPath: ascendant?.path,\n });\n\n return (\n <MenuItem isLink href={url} key={ascendant.id}>\n {ascendant.label}\n </MenuItem>\n );\n })}\n </CrumbSimpleMenu>\n );\n};\n","import {\n Breadcrumbs as BaseBreadcrumbs,\n Crumb,\n CrumbLink,\n BreadcrumbsProps as BaseBreadcrumbsProps,\n} from '@strapi/design-system';\nimport { useIntl, MessageDescriptor } from 'react-intl';\nimport { Link as ReactRouterLink } from 'react-router-dom';\n\nimport { CrumbSimpleMenuAsync } from './CrumbSimpleMenuAsync';\n\nexport type CrumbDefinition = {\n id?: number | null;\n label?: MessageDescriptor | string;\n href?: string;\n path?: string;\n};\n\nexport interface BreadcrumbsProps extends BaseBreadcrumbsProps {\n breadcrumbs: Array<CrumbDefinition>;\n currentFolderId?: number;\n onChangeFolder?: (id: number, path?: string) => void;\n}\n\nexport const Breadcrumbs = ({\n breadcrumbs,\n onChangeFolder,\n currentFolderId,\n ...props\n}: BreadcrumbsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <BaseBreadcrumbs {...props}>\n {breadcrumbs.map((crumb, index) => {\n if (Array.isArray(crumb)) {\n return (\n <CrumbSimpleMenuAsync\n parentsToOmit={[...breadcrumbs]\n .splice(index + 1, breadcrumbs.length - 1)\n .map((parent) => parent.id!)}\n key={`breadcrumb-${crumb?.id ?? 'menu'}`}\n currentFolderId={currentFolderId}\n onChangeFolder={onChangeFolder}\n />\n );\n }\n\n const isCurrentFolderMediaLibrary = crumb.id === null && currentFolderId === undefined;\n\n if (currentFolderId !== crumb.id && !isCurrentFolderMediaLibrary) {\n if (onChangeFolder) {\n return (\n <CrumbLink\n key={`breadcrumb-${crumb?.id ?? 'root'}`}\n type=\"button\"\n onClick={() => onChangeFolder(crumb.id!, crumb.path)}\n >\n {typeof crumb.label !== 'string' && crumb.label?.id\n ? formatMessage(crumb.label)\n : (crumb.label as string)}\n </CrumbLink>\n );\n }\n return (\n <CrumbLink\n key={`breadcrumb-${crumb?.id ?? 'root'}`}\n to={crumb.href}\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore - `tag` prop is not defined in the `BaseLinkProps` type\n tag={ReactRouterLink}\n >\n {typeof crumb.label !== 'string' && crumb.label?.id\n ? formatMessage(crumb.label)\n : (crumb.label as string)}\n </CrumbLink>\n );\n }\n\n return (\n <Crumb\n key={`breadcrumb-${crumb?.id ?? 'root'}`}\n isCurrent={index + 1 === breadcrumbs.length}\n >\n {typeof crumb.label !== 'string' && crumb.label?.id\n ? formatMessage(crumb.label)\n : (crumb.label as string)}\n </Crumb>\n );\n })}\n </BaseBreadcrumbs>\n );\n};\n","import { Layouts } from '@strapi/admin/strapi-admin';\nimport { Box } from '@strapi/design-system';\nimport { styled } from 'styled-components';\n\nconst EmptyAssetCard = styled(Box)`\n background: linear-gradient(\n 180deg,\n rgba(234, 234, 239, 0) 0%,\n ${({ theme }) => theme.colors.neutral200} 100%\n );\n opacity: 0.33;\n`;\n\nconst PlaceholderSize = {\n S: 138,\n M: 234,\n};\n\ninterface EmptyAssetGridProps {\n count: number;\n size: 'S' | 'M';\n}\n\nexport const EmptyAssetGrid = ({ count, size }: EmptyAssetGridProps) => {\n return (\n <Layouts.Grid size={size}>\n {Array(count)\n .fill(null)\n .map((_, idx) => (\n <EmptyAssetCard\n // eslint-disable-next-line react/no-array-index-key\n key={`empty-asset-card-${idx}`}\n height={`${PlaceholderSize[size]}px`}\n hasRadius\n />\n ))}\n </Layouts.Grid>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { Box, Flex, Typography } from '@strapi/design-system';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\n\nimport { EmptyAssetGrid } from './EmptyAssetGrid';\n\ninterface EmptyAssetsProps {\n action?: React.ReactNode;\n icon?: React.ElementType;\n content: string;\n size?: 'S' | 'M';\n count?: number;\n}\n\nexport const EmptyAssets = ({\n icon: Icon = EmptyDocuments,\n content,\n action,\n size = 'M',\n count = 12,\n}: EmptyAssetsProps) => {\n return (\n <Box position=\"relative\">\n <EmptyAssetGrid size={size} count={count} />\n\n <Box position=\"absolute\" top={11} width=\"100%\">\n <Flex direction=\"column\" alignItems=\"center\" gap={4} textAlign=\"center\">\n <Flex direction=\"column\" alignItems=\"center\" gap={6}>\n <Icon width=\"160px\" height=\"88px\" />\n\n <Typography variant=\"delta\" tag=\"p\" textColor=\"neutral600\">\n {content}\n </Typography>\n </Flex>\n\n {action}\n </Flex>\n </Box>\n </Box>\n );\n};\n","import { createContext, useContext } from 'react';\n\nexport const FolderCardContext = createContext<{\n id?: string;\n}>({});\n\nexport function useFolderCard() {\n return useContext(FolderCardContext);\n}\n","import * as React from 'react';\n\nimport { Box, CardAction, Flex, BoxProps } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { NavLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { FolderCardContext } from '../contexts/FolderCard';\n\nconst FauxClickWrapper = styled.button`\n height: 100%;\n left: 0;\n position: absolute;\n opacity: 0;\n top: 0;\n width: 100%;\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n`;\n\nconst StyledFolder = styled(Folder)`\n path {\n fill: currentColor;\n }\n`;\n\nconst CardActionDisplay = styled(Box)`\n display: none;\n`;\n\nconst Card = styled(Box)`\n &:hover,\n &:focus-within {\n ${CardActionDisplay} {\n display: ${({ $isCardActions }) => ($isCardActions ? 'block' : '')};\n }\n }\n`;\n\nexport interface FolderCardProps extends Omit<BoxProps, 'id'> {\n ariaLabel: string;\n children: React.ReactNode;\n id?: string;\n startAction?: React.ReactNode;\n cardActions?: React.ReactNode;\n onClick?: () => void;\n to?: LinkProps['to'];\n}\n\nexport const FolderCard = React.forwardRef(\n (\n {\n children,\n startAction = null,\n cardActions = null,\n ariaLabel,\n onClick,\n to,\n ...props\n }: FolderCardProps,\n ref\n ) => {\n const generatedId = React.useId();\n const fodlerCtxValue = React.useMemo(() => ({ id: generatedId }), [generatedId]);\n\n return (\n <FolderCardContext.Provider value={fodlerCtxValue}>\n <Card position=\"relative\" tabIndex={0} $isCardActions={!!cardActions} ref={ref} {...props}>\n <FauxClickWrapper\n to={to || undefined}\n as={to ? NavLink : 'button'}\n type={to ? undefined : 'button'}\n onClick={onClick}\n tabIndex={-1}\n aria-label={ariaLabel}\n aria-hidden\n />\n\n <Flex\n hasRadius\n borderStyle=\"solid\"\n borderWidth=\"1px\"\n borderColor=\"neutral150\"\n background=\"neutral0\"\n shadow=\"tableShadow\"\n padding={3}\n gap={2}\n cursor=\"pointer\"\n >\n {startAction}\n\n <Box\n hasRadius\n background=\"secondary100\"\n color=\"secondary500\"\n paddingBottom={2}\n paddingLeft={3}\n paddingRight={3}\n paddingTop={2}\n >\n <StyledFolder width=\"2.4rem\" height=\"2.4rem\" />\n </Box>\n\n {children}\n\n <CardActionDisplay>\n <CardAction right={4} position=\"end\">\n {cardActions}\n </CardAction>\n </CardActionDisplay>\n </Flex>\n </Card>\n </FolderCardContext.Provider>\n );\n }\n);\n","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","// TODO: find a better naming convention for the file that was an index file before\nimport { Box, BoxProps } from '@strapi/design-system';\nimport { NavLink, LinkProps } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nconst BoxOutline = styled(Box)`\n &:focus {\n outline: 2px solid ${({ theme }) => theme.colors.primary600};\n outline-offset: -2px;\n }\n`;\n\nconst BoxTextDecoration = styled(BoxOutline)`\n text-decoration: none;\n`;\n\ninterface FolderCardBodyActionProps extends BoxProps {\n to?: LinkProps['to'];\n}\n\nexport const FolderCardBodyAction = ({ to, ...props }: FolderCardBodyActionProps) => {\n if (to) {\n return (\n <BoxTextDecoration\n // padding needed to give outline space to appear\n // since FolderCardBody needs overflow hidden property\n padding={1}\n tag={NavLink}\n maxWidth=\"100%\"\n to={to}\n {...props}\n />\n );\n }\n\n return <BoxOutline padding={1} tag=\"button\" type=\"button\" maxWidth=\"100%\" {...props} />;\n};\n","import * as React from 'react';\n\nimport { Box, Grid, KeyboardNavigable, Typography } from '@strapi/design-system';\n\nexport interface FolderGridListProps {\n children: React.ReactNode;\n title?: string | null;\n}\n\nexport const FolderGridList = ({ title = null, children }: FolderGridListProps) => {\n return (\n <KeyboardNavigable tagName=\"article\">\n {title && (\n <Box paddingBottom={2}>\n <Typography tag=\"h2\" variant=\"delta\" fontWeight=\"semiBold\">\n {title}\n </Typography>\n </Box>\n )}\n\n <Grid.Root gap={4}>{children}</Grid.Root>\n </KeyboardNavigable>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { SingleSelect, SingleSelectOption } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { sortOptions } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport type { Query } from '../../../../shared/contracts/files';\n\ninterface SortPickerProps {\n onChangeSort: (value: Query['sort'] | string) => void;\n value?: string;\n}\n\nexport const SortPicker = ({ onChangeSort, value }: SortPickerProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <SingleSelect\n size=\"S\"\n value={value}\n onChange={(value) => onChangeSort(value.toString())}\n aria-label={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n placeholder={formatMessage({\n id: getTrad('sort.label'),\n defaultMessage: 'Sort by',\n })}\n >\n {sortOptions.map((filter) => (\n <SingleSelectOption key={filter.key} value={filter.value}>\n {formatMessage({ id: getTrad(filter.key), defaultMessage: `${filter.value}` })}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n );\n};\n","import { Avatar, Box, Flex } from '@strapi/design-system';\nimport { Folder } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../constants';\nimport {\n createAssetUrl,\n getFileExtension,\n getTrad,\n prefixFileUrlWithBackendUrl,\n} from '../../utils';\nimport { VideoPreview } from '../AssetCard/VideoPreview';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nconst VideoPreviewWrapper = styled(Box)`\n figure {\n width: ${({ theme }) => theme.spaces[7]};\n height: ${({ theme }) => theme.spaces[7]};\n }\n\n canvas,\n video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n }\n`;\n\ninterface PreviewCellProps {\n content: File;\n type?: string;\n}\n\nexport const PreviewCell = ({ type, content }: PreviewCellProps) => {\n const { formatMessage } = useIntl();\n if (type === 'folder') {\n return (\n <Flex\n justifyContent=\"center\"\n background=\"secondary100\"\n width=\"3.2rem\"\n height=\"3.2rem\"\n borderRadius=\"50%\"\n >\n <Folder\n aria-label={formatMessage({\n id: getTrad('header.actions.add-assets.folder'),\n defaultMessage: 'folder',\n })}\n fill=\"secondary500\"\n width=\"1.6rem\"\n height=\"1.6rem\"\n />\n </Flex>\n );\n }\n\n const { alternativeText, ext, formats, mime, name, url } = content;\n\n if (mime?.includes(AssetType.Image)) {\n const mediaURL =\n prefixFileUrlWithBackendUrl(formats?.thumbnail?.url) ?? prefixFileUrlWithBackendUrl(url);\n\n return (\n <Avatar.Item\n src={mediaURL}\n alt={alternativeText || undefined}\n preview\n fallback={alternativeText}\n />\n );\n }\n\n if (mime?.includes(AssetType.Video)) {\n return (\n <VideoPreviewWrapper>\n <VideoPreview\n url={createAssetUrl(content, true) || ''}\n mime={mime}\n alt={alternativeText ?? name}\n />\n </VideoPreviewWrapper>\n );\n }\n\n return (\n <Box background=\"secondary100\" color=\"secondary600\" width=\"3.2rem\" height=\"3.2rem\">\n {getFileExtension(ext)}\n </Box>\n );\n};\n","import { Typography } from '@strapi/design-system';\nimport parseISO from 'date-fns/parseISO';\nimport { useIntl } from 'react-intl';\n\nimport { formatBytes, getFileExtension } from '../../utils';\n\nimport { PreviewCell } from './PreviewCell';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nexport interface CellContentProps {\n cellType: string;\n contentType?: string;\n content: File;\n name: string;\n}\n\nexport const CellContent = ({ cellType, contentType, content, name }: CellContentProps) => {\n const { formatDate, formatMessage } = useIntl();\n const contentValue = content[name as Extract<keyof File, string>];\n\n switch (cellType) {\n case 'image':\n return <PreviewCell type={contentType} content={content} />;\n\n case 'date':\n if (typeof contentValue === 'string') {\n return <Typography>{formatDate(parseISO(contentValue), { dateStyle: 'full' })}</Typography>;\n }\n\n case 'size':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n if (typeof contentValue === 'string' || typeof contentValue === 'number') {\n return <Typography>{formatBytes(contentValue)}</Typography>;\n }\n\n case 'ext':\n if (contentType === 'folder')\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n\n if (typeof contentValue === 'string') {\n return <Typography>{getFileExtension(contentValue)?.toUpperCase()}</Typography>;\n }\n case 'text':\n if (typeof contentValue === 'string') {\n return <Typography>{contentValue}</Typography>;\n }\n\n default:\n return (\n <Typography\n aria-label={formatMessage({\n id: 'list.table.content.empty-label',\n defaultMessage: 'This field is empty',\n })}\n >\n -\n </Typography>\n );\n }\n};\n","import { Checkbox, Flex, IconButton, Tbody, Td, Tr } from '@strapi/design-system';\nimport { Eye, Pencil } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { Link } from 'react-router-dom';\n\nimport { tableHeaders as cells } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { CellContent } from './CellContent';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\n\ninterface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableRowsProps {\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset: (asset: FileRow) => void;\n onEditFolder: (folder: FolderRow) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows: FileRow[] | FolderRow[];\n selected: FileRow[] | FolderRow[];\n}\n\nexport const TableRows = ({\n onChangeFolder = null,\n onEditAsset,\n onEditFolder,\n onSelectOne,\n rows = [],\n selected = [],\n}: TableRowsProps) => {\n const { formatMessage } = useIntl();\n\n const handleRowClickFn = (\n element: FileRow | FolderRow,\n id: number,\n path: FolderRow['path'],\n elementType?: string\n ) => {\n if (elementType === 'asset') {\n onEditAsset(element as FileRow);\n } else {\n if (onChangeFolder) {\n onChangeFolder(id, path);\n }\n }\n };\n\n return (\n <Tbody>\n {rows.map((element) => {\n const { path, id, isSelectable, name, folderURL, type: contentType } = element;\n\n const isSelected = !!selected.find(\n (currentRow) => currentRow.id === id && currentRow.type === contentType\n );\n\n return (\n <Tr\n key={id}\n onClick={() => handleRowClickFn(element, id, path || undefined, contentType)}\n >\n <Td onClick={(e) => e.stopPropagation()}>\n <Checkbox\n aria-label={formatMessage(\n {\n id: contentType === 'asset' ? 'list-assets-select' : 'list.folder.select',\n defaultMessage:\n contentType === 'asset' ? 'Select {name} asset' : 'Select {name} folder',\n },\n { name }\n )}\n disabled={!isSelectable}\n onCheckedChange={() => onSelectOne(element)}\n checked={isSelected}\n />\n </Td>\n {cells.map(({ name, type: cellType }) => {\n return (\n <Td key={name}>\n <CellContent\n content={element as FileRow}\n cellType={cellType}\n contentType={contentType}\n name={name}\n />\n </Td>\n );\n })}\n\n <Td onClick={(e) => e.stopPropagation()}>\n <Flex justifyContent=\"flex-end\">\n {contentType === 'folder' &&\n (folderURL ? (\n <IconButton\n tag={Link}\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n to={folderURL}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ) : (\n <IconButton\n tag=\"button\"\n label={formatMessage({\n id: getTrad('list.folders.link-label'),\n defaultMessage: 'Access folder',\n })}\n onClick={() => onChangeFolder && onChangeFolder(id)}\n variant=\"ghost\"\n >\n <Eye />\n </IconButton>\n ))}\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'Edit',\n })}\n onClick={() =>\n contentType === 'asset'\n ? onEditAsset(element as FileRow)\n : onEditFolder(element as FolderRow)\n }\n variant=\"ghost\"\n >\n <Pencil />\n </IconButton>\n </Flex>\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n IconButton,\n Table,\n Th,\n Thead,\n Tooltip,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { CaretDown, CaretUp } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { tableHeaders } from '../../constants';\nimport { getTrad } from '../../utils';\n\nimport { TableRows } from './TableRows';\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { Folder } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nexport interface FileRow extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface TableListProps {\n isFolderSelectionAllowed?: boolean;\n allowedTypes?: AllowedTypes[];\n assetCount?: number;\n folderCount?: number;\n indeterminate?: boolean;\n onChangeSort?: ((sortQuery: string) => void) | null;\n onChangeFolder?: ((folderId: number, folderPath?: string) => void) | null;\n onEditAsset?: ((asset: FileRow) => void) | null;\n onEditFolder?: ((folder: FolderRow) => void) | null;\n onSelectAll: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n onSelectOne: (element: FileRow | FolderRow) => void;\n rows?: FileRow[] | FolderRow[];\n selected?: FileRow[] | FolderRow[];\n shouldDisableBulkSelect?: boolean;\n sortQuery?: string;\n}\n\nexport const TableList = ({\n assetCount = 0,\n folderCount = 0,\n indeterminate = false,\n onChangeSort = null,\n onChangeFolder = null,\n onEditAsset = null,\n onEditFolder = null,\n onSelectAll,\n onSelectOne,\n rows = [],\n selected = [],\n shouldDisableBulkSelect = false,\n sortQuery = '',\n}: TableListProps) => {\n const { formatMessage } = useIntl();\n const [sortBy, sortOrder] = sortQuery.split(':');\n\n const handleClickSort = (isSorted: boolean, name: string) => {\n const nextSortOrder = isSorted && sortOrder === 'ASC' ? 'DESC' : 'ASC';\n const nextSort = `${name}:${nextSortOrder}`;\n\n onChangeSort && onChangeSort(nextSort);\n };\n\n return (\n <Table colCount={tableHeaders.length + 2} rowCount={assetCount + folderCount + 1}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all folders & assets',\n })}\n disabled={shouldDisableBulkSelect}\n onCheckedChange={(checked) => onSelectAll(checked, rows)}\n checked={\n indeterminate && !shouldDisableBulkSelect\n ? 'indeterminate'\n : (assetCount > 0 || folderCount > 0) &&\n selected.length === assetCount + folderCount\n }\n />\n </Th>\n {tableHeaders.map(({ metadatas: { label, isSortable }, name, key }) => {\n const isSorted = sortBy === name;\n const isUp = sortOrder === 'ASC';\n const tableHeaderLabel = formatMessage(label);\n const sortLabel = formatMessage(\n { id: 'list.table.header.sort', defaultMessage: 'Sort on {label}' },\n { label: tableHeaderLabel }\n );\n\n return (\n <Th\n action={\n isSorted && (\n <IconButton\n label={sortLabel}\n onClick={() => handleClickSort(isSorted, name)}\n variant=\"ghost\"\n >\n {isUp ? <CaretUp /> : <CaretDown />}\n </IconButton>\n )\n }\n key={key}\n >\n <Tooltip label={isSortable ? sortLabel : tableHeaderLabel}>\n {isSortable ? (\n <Typography\n onClick={() => handleClickSort(isSorted, name)}\n tag={isSorted ? 'span' : 'button'}\n textColor=\"neutral600\"\n variant=\"sigma\"\n >\n {tableHeaderLabel}\n </Typography>\n ) : (\n <Typography textColor=\"neutral600\" variant=\"sigma\">\n {tableHeaderLabel}\n </Typography>\n )}\n </Tooltip>\n </Th>\n );\n })}\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: getTrad('list.table.header.actions'),\n defaultMessage: 'actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <TableRows\n onChangeFolder={onChangeFolder}\n onEditAsset={onEditAsset!}\n onEditFolder={onEditFolder!}\n rows={rows}\n onSelectOne={onSelectOne}\n selected={selected}\n />\n </Table>\n );\n};\n","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","// 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","import { DateTimePicker, SingleSelectOption, SingleSelect } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface FilterValueInputProps {\n label?: string;\n onChange: (value: string) => void;\n options?: { label?: string; value: string }[];\n type?: string;\n value?: string;\n}\n\nexport const FilterValueInput = ({\n label = '',\n onChange,\n options = [],\n type,\n value = '',\n}: FilterValueInputProps) => {\n const { formatMessage } = useIntl();\n\n if (type === 'date') {\n return (\n <DateTimePicker\n clearLabel={formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n aria-label={label}\n name=\"datetimepicker\"\n onChange={(date) => {\n const formattedDate = date ? new Date(date).toISOString() : '';\n\n onChange(formattedDate);\n }}\n onClear={() => onChange('')}\n value={value ? new Date(value) : undefined}\n />\n );\n }\n\n return (\n <SingleSelect\n aria-label={label}\n onChange={(value: string | number) => onChange(value.toString())}\n value={value}\n >\n {options?.map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {option.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n );\n};\n","interface GetFilterListProps {\n fieldSchema: {\n type: string;\n options?: { value: string }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n}\n\nexport const getFilterList = ({\n fieldSchema: { type: fieldType, mainField },\n}: GetFilterListProps) => {\n const type = mainField?.schema.type ? mainField.schema.type : fieldType;\n\n switch (type) {\n case 'enumeration': {\n return [\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$eq',\n defaultMessage: 'is',\n },\n value: '$contains',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$ne',\n defaultMessage: 'is not',\n },\n value: '$notContains',\n },\n ];\n }\n\n case 'date': {\n return [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$gt',\n defaultMessage: 'is greater than',\n },\n value: '$gt',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$gte',\n defaultMessage: 'is greater than or equal to',\n },\n value: '$gte',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$lt',\n defaultMessage: 'is less than',\n },\n value: '$lt',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$lte',\n defaultMessage: 'is less than or equal to',\n },\n value: '$lte',\n },\n ];\n }\n\n default:\n return [\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$eq', defaultMessage: 'is' },\n value: '$eq',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$eqi',\n defaultMessage: 'is (case insensitive)',\n },\n value: '$eqi',\n },\n {\n intlLabel: { id: 'components.FilterOptions.FILTER_TYPES.$ne', defaultMessage: 'is not' },\n value: '$ne',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$null',\n defaultMessage: 'is null',\n },\n value: '$null',\n },\n {\n intlLabel: {\n id: 'components.FilterOptions.FILTER_TYPES.$notNull',\n defaultMessage: 'is not null',\n },\n value: '$notNull',\n },\n ];\n }\n};\n","// TODO: find a better naming convention for the file that was an index file before\n/**\n *\n * FilterPopover\n *\n */\nimport * as React from 'react';\n\nimport {\n Box,\n Button,\n Flex,\n SingleSelectOption,\n Popover,\n SingleSelect,\n} from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterValueInput } from './FilterValueInput';\nimport { getFilterList } from './utils/getFilterList';\n\ntype Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FilterPopoverProps {\n displayedFilters: {\n name: string;\n metadatas?: {\n label?: string;\n };\n fieldSchema: {\n type: string;\n options?: {\n value: string;\n }[];\n mainField?: {\n schema: {\n type: string;\n };\n };\n };\n }[];\n filters: Filter[];\n onSubmit: (filters: Filter[]) => void;\n onToggle: () => void;\n}\n\nexport const FilterPopover = ({\n displayedFilters,\n filters,\n onSubmit,\n onToggle,\n}: FilterPopoverProps) => {\n const { formatMessage } = useIntl();\n\n const [modifiedData, setModifiedData] = React.useState({\n name: 'createdAt',\n filter: '$eq',\n value: '',\n });\n\n const handleChangeFilterField = (value: string | number) => {\n const nextField = displayedFilters.find((f) => f.name === value);\n if (!nextField) {\n return;\n }\n const {\n fieldSchema: { type, options },\n } = nextField;\n let filterValue = '';\n\n if (type === 'enumeration') {\n filterValue = options?.[0].value || '';\n }\n\n const filter = getFilterList(nextField)[0].value;\n\n setModifiedData({ name: value.toString(), filter, value: filterValue });\n };\n\n const handleChangeOperator = (operator: string | number) => {\n if (modifiedData.name === 'mime') {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: 'image' }));\n } else {\n setModifiedData((prev) => ({ ...prev, filter: operator.toString(), value: '' }));\n }\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const encodedValue = encodeURIComponent(modifiedData.value);\n\n if (encodedValue) {\n if (modifiedData.name === 'mime') {\n const alreadyAppliedFilters = filters.filter((filter) => {\n return Object.keys(filter)[0] === 'mime';\n });\n\n if (modifiedData.value === 'file') {\n const filtersWithoutMimeType = filters.filter((filter) => {\n return Object.keys(filter)[0] !== 'mime';\n });\n\n let hasCurrentFilter = false;\n\n let filterToAdd: Filter;\n\n if (modifiedData.filter === '$contains') {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n if (typeof filter.mime?.$not !== 'string' && !Array.isArray(filter.mime?.$not)) {\n return filter.mime?.$not?.$contains !== undefined;\n }\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $not: {\n $contains: ['image', 'video'],\n },\n },\n };\n } else {\n hasCurrentFilter =\n alreadyAppliedFilters.find((filter) => {\n return Array.isArray(filter.mime?.$contains);\n }) !== undefined;\n\n filterToAdd = {\n mime: {\n $contains: ['image', 'video'],\n },\n };\n }\n\n if (hasCurrentFilter) {\n onToggle();\n\n return;\n }\n\n const nextFilters = [...filtersWithoutMimeType, filterToAdd];\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n const hasFilter =\n alreadyAppliedFilters.find((filter) => {\n const modifiedDataFilter = modifiedData.filter;\n return (\n filter.mime &&\n filter.mime[modifiedDataFilter as keyof typeof filter.mime] === modifiedData.value\n );\n }) !== undefined;\n\n // Don't apply the same filter twice\n if (hasFilter) {\n onToggle();\n\n return;\n }\n\n const filtersWithoutFile = filters.filter((filter) => {\n const filterType = Object.keys(filter)[0];\n\n if (filterType !== 'mime') {\n return true;\n }\n\n if (\n typeof filter.mime?.$not !== 'string' &&\n !Array.isArray(filter.mime?.$not) &&\n filter.mime?.$not?.$contains !== undefined\n ) {\n return false;\n }\n\n if (Array.isArray(filter?.mime?.$contains)) {\n return false;\n }\n\n return true;\n });\n\n const oppositeFilter = modifiedData.filter === '$contains' ? '$notContains' : '$contains';\n\n const oppositeFilterIndex = filtersWithoutFile.findIndex((filter) => {\n return filter.mime?.[oppositeFilter] === modifiedData.value;\n });\n const hasOppositeFilter = oppositeFilterIndex !== -1;\n\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: modifiedData.value } };\n\n if (!hasOppositeFilter) {\n const nextFilters = [...filtersWithoutFile, filterToAdd];\n\n onSubmit(nextFilters);\n\n onToggle();\n\n return;\n }\n\n if (hasOppositeFilter) {\n const nextFilters = filtersWithoutFile.slice();\n nextFilters.splice(oppositeFilterIndex, 1, filterToAdd);\n onSubmit(nextFilters);\n\n onToggle();\n }\n\n return;\n }\n\n const hasFilter =\n filters.find((filter) => {\n const modifiedDataName = modifiedData.name as\n | 'mime'\n | 'createdAt'\n | 'updatedAt'\n | '$contains'\n | '$notContains'\n | '$eq'\n | '$not';\n return (\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt'] &&\n filter[modifiedDataName as 'mime' | 'createdAt' | 'updatedAt']?.[\n modifiedDataName as '$contains' | '$notContains' | '$eq' | '$not'\n ] === encodedValue\n );\n }) !== undefined;\n\n if (!hasFilter) {\n const filterToAdd = { [modifiedData.name]: { [modifiedData.filter]: encodedValue } };\n\n const nextFilters = [...filters, filterToAdd];\n\n onSubmit(nextFilters);\n }\n }\n\n onToggle();\n };\n\n const appliedFilter = displayedFilters.find((filter) => filter.name === modifiedData.name);\n\n return (\n <Popover.Content sideOffset={4}>\n <form onSubmit={handleSubmit}>\n <Flex padding={3} direction=\"column\" alignItems=\"stretch\" gap={1} style={{ minWidth: 184 }}>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-field',\n defaultMessage: 'Select field',\n })}\n name=\"name\"\n size=\"M\"\n onChange={handleChangeFilterField}\n value={modifiedData.name}\n >\n {displayedFilters.map((filter) => {\n return (\n <SingleSelectOption key={filter.name} value={filter.name}>\n {filter.metadatas?.label}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <SingleSelect\n aria-label={formatMessage({\n id: 'app.utils.select-filter',\n defaultMessage: 'Select filter',\n })}\n name=\"filter\"\n size=\"M\"\n value={modifiedData.filter}\n onChange={handleChangeOperator}\n >\n {getFilterList(appliedFilter!).map((option) => {\n return (\n <SingleSelectOption key={option.value} value={option.value}>\n {formatMessage(option.intlLabel)}\n </SingleSelectOption>\n );\n })}\n </SingleSelect>\n </Box>\n <Box>\n <FilterValueInput\n {...appliedFilter?.metadatas}\n {...appliedFilter?.fieldSchema}\n value={modifiedData.value}\n onChange={(value) => setModifiedData((prev) => ({ ...prev, value }))}\n />\n </Box>\n <Box>\n <Button size=\"L\" variant=\"secondary\" startIcon={<Plus />} type=\"submit\" fullWidth>\n {formatMessage({ id: 'app.utils.add-filter', defaultMessage: 'Add filter' })}\n </Button>\n </Box>\n </Flex>\n </form>\n </Popover.Content>\n );\n};\n","import * as React from 'react';\n\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { displayedFilters } from '../../../utils';\nimport { FilterList } from '../../FilterList/FilterList';\nimport { FilterPopover } from '../../FilterPopover/FilterPopover';\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 type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\ninterface FiltersProps {\n appliedFilters: FilterStructure[];\n onChangeFilters: (filters: Filter[]) => void;\n}\n\nexport const Filters = ({ appliedFilters, onChangeFilters }: FiltersProps) => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger>\n <Button variant=\"tertiary\" startIcon={<Filter />} size=\"S\">\n {formatMessage({ id: 'app.utils.filters', defaultMessage: 'Filters' })}\n </Button>\n </Popover.Trigger>\n <FilterPopover\n onToggle={() => setOpen((prev) => !prev)}\n displayedFilters={displayedFilters}\n filters={appliedFilters}\n onSubmit={onChangeFilters}\n />\n\n {appliedFilters && (\n <FilterList\n appliedFilters={appliedFilters}\n filtersSchema={displayedFilters}\n onRemoveFilter={onChangeFilters}\n />\n )}\n </Popover.Root>\n );\n};\n","import { Box, Flex, SingleSelectOption, SingleSelect, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface PageSizeProps {\n onChangePageSize: (value: number) => void;\n pageSize: number;\n}\n\nexport const PageSize = ({ onChangePageSize, pageSize }: PageSizeProps) => {\n const { formatMessage } = useIntl();\n\n const handleChange = (value: string | number) => {\n onChangePageSize(Number(value));\n };\n\n return (\n <Flex>\n <SingleSelect\n size=\"S\"\n aria-label={formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n onChange={handleChange}\n value={pageSize.toString()}\n >\n <SingleSelectOption value=\"10\">10</SingleSelectOption>\n <SingleSelectOption value=\"20\">20</SingleSelectOption>\n <SingleSelectOption value=\"50\">50</SingleSelectOption>\n <SingleSelectOption value=\"100\">100</SingleSelectOption>\n </SingleSelect>\n <Box paddingLeft={2}>\n <Typography textColor=\"neutral600\" tag=\"label\" htmlFor=\"page-size\">\n {formatMessage({\n id: 'components.PageFooter.select',\n defaultMessage: 'Entries per page',\n })}\n </Typography>\n </Box>\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { Box, Flex } from '@strapi/design-system';\n\nconst PaginationContext = React.createContext({ activePage: 1, pageCount: 1 });\nexport const usePagination = () => React.useContext(PaginationContext);\n\ninterface PaginationProps {\n activePage: number;\n children: React.ReactNode;\n label?: string;\n pageCount: number;\n}\n\nexport const Pagination = ({\n children,\n activePage,\n pageCount,\n label = 'pagination',\n}: PaginationProps) => {\n const paginationValue = React.useMemo(() => ({ activePage, pageCount }), [activePage, pageCount]);\n\n return (\n <PaginationContext.Provider value={paginationValue}>\n <Box tag=\"nav\" aria-label={label}>\n <Flex tag=\"ul\" gap={1}>\n {children}\n </Flex>\n </Box>\n </PaginationContext.Provider>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\n/**\n * The component works as follows: this is a duplicate of the helper-plugin one but without the router\n * `1` , 2, 3, ... 10\n * 1, `2`, 3, ... 10\n * 1, 2, `3`, 4, ... 10\n * 1, 2, 3, `4`, 5, ... 10\n * 1, ..,4, `5`, 6, ... 10\n *\n * 1, ...., 8, 9, `10`\n * 1, ...., 8, `9`, 10\n * 1, ...., 7, `8`, 9, 10\n * 1, ... 6, `7`, 8, 9, 10\n */\nimport { Typography, VisuallyHidden } from '@strapi/design-system';\nimport { ChevronLeft, ChevronRight } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, css } from 'styled-components';\n\nimport { Pagination, usePagination } from './Pagination';\n\nconst PaginationText = styled(Typography)`\n line-height: revert;\n`;\n\nconst linkWrapperStyles = css<{ $active?: boolean }>`\n padding: ${({ theme }) => theme.spaces[3]};\n border-radius: ${({ theme }) => theme.borderRadius};\n box-shadow: ${({ $active, theme }) => ($active ? theme.shadows.filterShadow : undefined)};\n text-decoration: none;\n display: flex;\n position: relative;\n outline: none;\n\n &:after {\n transition-property: all;\n transition-duration: 0.2s;\n border-radius: 8px;\n content: '';\n position: absolute;\n top: -4px;\n bottom: -4px;\n left: -4px;\n right: -4px;\n border: 2px solid transparent;\n }\n\n &:focus-visible {\n outline: none;\n\n &:after {\n border-radius: 8px;\n content: '';\n position: absolute;\n top: -5px;\n bottom: -5px;\n left: -5px;\n right: -5px;\n border: 2px solid ${(props) => props.theme.colors.primary600};\n }\n }\n`;\n\nconst LinkWrapperButton = styled.button<{ $active?: boolean }>`\n ${linkWrapperStyles}\n`;\n\nconst LinkWrapperDiv = styled.div<{ $active?: boolean }>`\n ${linkWrapperStyles}\n`;\n\nLinkWrapperButton.defaultProps = { type: 'button' };\n\nconst PageLinkWrapper = styled(LinkWrapperButton)`\n color: ${({ theme, $active }) => ($active ? theme.colors.primary700 : theme.colors.neutral800)};\n background: ${({ theme, $active }) => ($active ? theme.colors.neutral0 : undefined)};\n\n &:hover {\n box-shadow: ${({ theme }) => theme.shadows.filterShadow};\n }\n`;\n\nconst ActionLinkWrapper = styled(LinkWrapperButton)`\n font-size: 1.1rem;\n svg path {\n fill: ${(p) => (p['aria-disabled'] ? p.theme.colors.neutral300 : p.theme.colors.neutral600)};\n }\n\n &:focus,\n &:hover {\n svg path {\n fill: ${(p) => (p['aria-disabled'] ? p.theme.colors.neutral300 : p.theme.colors.neutral700)};\n }\n }\n\n ${(p) =>\n p['aria-disabled']\n ? `\n pointer-events: none;\n `\n : undefined}\n`;\n\nconst DotsWrapper = styled(LinkWrapperDiv)`\n color: ${({ theme }) => theme.colors.neutral800};\n`;\n\ninterface PaginationLinkProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n children: React.ReactNode;\n}\n\ninterface PageLinkProps extends PaginationLinkProps {\n number: number;\n}\n\nconst PreviousLink = ({ children, ...props }: PaginationLinkProps) => {\n const { activePage } = usePagination();\n\n const disabled = activePage === 1;\n\n return (\n <li>\n <ActionLinkWrapper aria-disabled={disabled} tabIndex={disabled ? -1 : undefined} {...props}>\n <VisuallyHidden>{children}</VisuallyHidden>\n <ChevronLeft aria-hidden />\n </ActionLinkWrapper>\n </li>\n );\n};\n\nconst NextLink = ({ children, ...props }: PaginationLinkProps) => {\n const { activePage, pageCount } = usePagination();\n\n const disabled = activePage === pageCount;\n\n return (\n <li>\n <ActionLinkWrapper aria-disabled={disabled} tabIndex={disabled ? -1 : undefined} {...props}>\n <VisuallyHidden>{children}</VisuallyHidden>\n <ChevronRight aria-hidden />\n </ActionLinkWrapper>\n </li>\n );\n};\n\nconst PageLink = ({ number, children, ...props }: PageLinkProps) => {\n const { activePage } = usePagination();\n\n const isActive = activePage === number;\n\n return (\n <li>\n <PageLinkWrapper {...props} $active={isActive}>\n <VisuallyHidden>{children}</VisuallyHidden>\n <PaginationText aria-hidden variant=\"pi\" fontWeight={isActive ? 'bold' : ''}>\n {number}\n </PaginationText>\n </PageLinkWrapper>\n </li>\n );\n};\n\ninterface DotsProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n}\n\nconst Dots = ({ children, ...props }: DotsProps) => (\n <li>\n <DotsWrapper {...props} as=\"div\">\n <VisuallyHidden>{children}</VisuallyHidden>\n <PaginationText aria-hidden small>\n …\n </PaginationText>\n </DotsWrapper>\n </li>\n);\n\ninterface PaginationFooterProps {\n activePage: number;\n onChangePage: (page: number) => void;\n pagination: {\n pageCount: number;\n };\n}\n\nexport const PaginationFooter = ({\n activePage,\n onChangePage,\n pagination: { pageCount },\n}: PaginationFooterProps) => {\n const { formatMessage } = useIntl();\n\n const previousActivePage = activePage - 1;\n const nextActivePage = activePage + 1;\n\n const firstLinks = [\n <PageLink\n key={1}\n number={1}\n onClick={() => {\n onChangePage(1);\n }}\n >\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: 1 }\n )}\n </PageLink>,\n ];\n\n if (pageCount <= 4) {\n const links = Array.from({ length: pageCount })\n .map((_, i) => i + 1)\n .map((number) => {\n return (\n <PageLink key={number} number={number} onClick={() => onChangePage(number)}>\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: number }\n )}\n </PageLink>\n );\n });\n\n return (\n <Pagination activePage={activePage} pageCount={pageCount}>\n <PreviousLink onClick={() => onChangePage(previousActivePage)}>\n {formatMessage({\n id: 'components.pagination.go-to-previous',\n defaultMessage: 'Go to previous page',\n })}\n </PreviousLink>\n {links}\n <NextLink onClick={() => onChangePage(nextActivePage)}>\n {formatMessage({\n id: 'components.pagination.go-to-next',\n defaultMessage: 'Go to next page',\n })}\n </NextLink>\n </Pagination>\n );\n }\n\n let firstLinksToCreate: number[] = [];\n const lastLinks: JSX.Element[] = [];\n let lastLinksToCreate: number[] = [];\n const middleLinks: JSX.Element[] = [];\n\n if (pageCount > 1) {\n lastLinks.push(\n <PageLink key={pageCount} number={pageCount} onClick={() => onChangePage(pageCount)}>\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: pageCount }\n )}\n </PageLink>\n );\n }\n\n if (activePage === 1 && pageCount >= 3) {\n firstLinksToCreate = [2];\n }\n\n if (activePage === 2 && pageCount >= 3) {\n if (pageCount === 5) {\n firstLinksToCreate = [2, 3, 4];\n } else if (pageCount === 3) {\n firstLinksToCreate = [2];\n } else {\n firstLinksToCreate = [2, 3];\n }\n }\n\n if (activePage === 4 && pageCount >= 3) {\n firstLinksToCreate = [2];\n }\n\n if (activePage === pageCount && pageCount >= 3) {\n lastLinksToCreate = [pageCount - 1];\n }\n\n if (activePage === pageCount - 2 && pageCount > 3) {\n lastLinksToCreate = [activePage + 1, activePage, activePage - 1];\n }\n\n if (activePage === pageCount - 3 && pageCount > 3 && activePage > 5) {\n lastLinksToCreate = [activePage + 2, activePage + 1, activePage, activePage - 1];\n }\n\n if (activePage === pageCount - 1 && pageCount > 3) {\n lastLinksToCreate = [activePage, activePage - 1];\n }\n\n lastLinksToCreate.forEach((number) => {\n lastLinks.unshift(\n <PageLink key={number} number={number} onClick={() => onChangePage(number)}>\n Go to page {number}\n </PageLink>\n );\n });\n\n firstLinksToCreate.forEach((number) => {\n firstLinks.push(\n <PageLink key={number} number={number} onClick={() => onChangePage(number)}>\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: number }\n )}\n </PageLink>\n );\n });\n\n if (\n ![1, 2].includes(activePage) &&\n activePage <= pageCount - 3 &&\n firstLinks.length + lastLinks.length < 6\n ) {\n const middleLinksToCreate = [activePage - 1, activePage, activePage + 1];\n\n middleLinksToCreate.forEach((number) => {\n middleLinks.push(\n <PageLink key={number} number={number} onClick={() => onChangePage(number)}>\n {formatMessage(\n { id: 'components.pagination.go-to', defaultMessage: 'Go to page {page}' },\n { page: number }\n )}\n </PageLink>\n );\n });\n }\n\n const shouldShowDotsAfterFirstLink =\n pageCount > 5 || (pageCount === 5 && (activePage === 1 || activePage === 5));\n const shouldShowMiddleDots = middleLinks.length > 2 && activePage > 4 && pageCount > 5;\n\n const beforeDotsLinksLength = shouldShowMiddleDots\n ? pageCount - activePage - 1\n : pageCount - firstLinks.length - lastLinks.length;\n const afterDotsLength = shouldShowMiddleDots\n ? pageCount - firstLinks.length - lastLinks.length\n : pageCount - activePage - 1;\n\n return (\n <Pagination activePage={activePage} pageCount={pageCount}>\n <PreviousLink onClick={() => onChangePage(previousActivePage)}>\n {formatMessage({\n id: 'components.pagination.go-to-previous',\n defaultMessage: 'Go to previous page',\n })}\n </PreviousLink>\n {firstLinks}\n {shouldShowMiddleDots && (\n <Dots>\n {formatMessage(\n {\n id: 'components.pagination.remaining-links',\n defaultMessage: 'And {number} other links',\n },\n { number: beforeDotsLinksLength }\n )}\n </Dots>\n )}\n {middleLinks}\n {shouldShowDotsAfterFirstLink && (\n <Dots>\n {formatMessage(\n {\n id: 'components.pagination.remaining-links',\n defaultMessage: 'And {number} other links',\n },\n { number: afterDotsLength }\n )}\n </Dots>\n )}\n {lastLinks}\n <NextLink onClick={() => onChangePage(nextActivePage)}>\n {formatMessage({\n id: 'components.pagination.go-to-next',\n defaultMessage: 'Go to next page',\n })}\n </NextLink>\n </Pagination>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { IconButton, Searchbar, SearchForm } from '@strapi/design-system';\nimport { Search } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../../utils';\n\nimport type { Query } from '../../../../../../shared/contracts/files';\n\ninterface SearchAssetProps {\n onChangeSearch: (_q: Query['_q'] | null) => void;\n queryValue?: Query['_q'] | null;\n}\n\nexport const SearchAsset = ({ onChangeSearch, queryValue = null }: SearchAssetProps) => {\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [isOpen, setIsOpen] = React.useState(!!queryValue);\n const [value, setValue] = React.useState(queryValue || '');\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n setTimeout(() => {\n wrapperRef.current?.querySelector('input')?.focus();\n }, 0);\n }\n }, [isOpen]);\n\n const handleToggle = () => {\n setIsOpen((prev) => !prev);\n };\n\n const handleClear = () => {\n handleToggle();\n onChangeSearch(null);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n trackUsage('didSearchMediaLibraryElements', { location: 'content-manager' });\n onChangeSearch(value);\n };\n\n if (isOpen) {\n return (\n <div ref={wrapperRef}>\n <SearchForm onSubmit={handleSubmit}>\n <Searchbar\n name=\"search\"\n onClear={handleClear}\n onChange={(e) => setValue(e.target.value)}\n clearLabel={formatMessage({\n id: getTrad('search.clear.label'),\n defaultMessage: 'Clear the search',\n })}\n aria-label=\"search\"\n size=\"S\"\n value={value}\n placeholder={formatMessage({\n id: getTrad('search.placeholder'),\n defaultMessage: 'e.g: the first dog on the moon',\n })}\n >\n {formatMessage({ id: getTrad('search.label'), defaultMessage: 'Search for an asset' })}\n </Searchbar>\n </SearchForm>\n </div>\n );\n }\n\n return (\n <IconButton label=\"Search\" onClick={handleToggle}>\n <Search />\n </IconButton>\n );\n};\n","export const isSelectable = (allowedTypes: string[], mime = '') => {\n if (!mime) return false;\n\n const fileType = mime.split('/')[0];\n\n return (\n allowedTypes.includes(fileType) ||\n (allowedTypes.includes('file') && !['video', 'image', 'audio'].includes(fileType))\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport {\n Checkbox,\n Box,\n Button,\n Divider,\n Flex,\n IconButton,\n Typography,\n VisuallyHidden,\n Grid,\n} from '@strapi/design-system';\nimport { GridFour as GridIcon, List, Pencil, Plus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { localStorageKeys, viewOptions } from '../../../constants';\nimport { useFolder } from '../../../hooks/useFolder';\nimport { usePersistentState } from '../../../hooks/usePersistentState';\nimport {\n getBreadcrumbDataCM,\n toSingularTypes,\n getTrad,\n getAllowedFiles,\n BreadcrumbDataFolder,\n AllowedFiles,\n} from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\nimport { Breadcrumbs } from '../../Breadcrumbs/Breadcrumbs';\nimport { EmptyAssets } from '../../EmptyAssets/EmptyAssets';\nimport { FolderCard } from '../../FolderCard/FolderCard/FolderCard';\nimport { FolderCardBody } from '../../FolderCard/FolderCardBody/FolderCardBody';\nimport { FolderCardBodyAction } from '../../FolderCard/FolderCardBodyAction/FolderCardBodyAction';\nimport { FolderGridList } from '../../FolderGridList/FolderGridList';\nimport { SortPicker } from '../../SortPicker/SortPicker';\nimport { TableList, FolderRow, FileRow } from '../../TableList/TableList';\n\nimport { Filters, FilterStructure as ImportedFilterStructure } from './Filters';\nimport { PageSize } from './PageSize';\nimport { PaginationFooter } from './PaginationFooter/PaginationFooter';\nimport { SearchAsset } from './SearchAsset/SearchAsset';\nimport { isSelectable } from './utils/isSelectable';\n\nimport type { File, Query, FilterCondition } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../../AssetCard/AssetCard';\n\nconst TypographyMaxWidth = styled(Typography)`\n max-width: 100%;\n`;\n\nconst ActionContainer = styled(Box)`\n svg {\n path {\n fill: ${({ theme }) => theme.colors.neutral500};\n }\n }\n`;\n\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 type Filter = {\n [key in 'mime' | 'createdAt' | 'updatedAt']?:\n | {\n [key in '$contains' | '$notContains' | '$eq' | '$not']?:\n | string[]\n | string\n | { $contains: string[] };\n }\n | undefined;\n};\n\nexport interface FolderWithType extends Omit<Folder, 'children' | 'files'> {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n children?: Folder['children'] & {\n count: number;\n };\n files?: Folder['files'] & {\n count: number;\n };\n}\n\nexport interface FileWithType extends File {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface BrowseStepProps {\n allowedTypes?: AllowedTypes[];\n assets: File[];\n canCreate: boolean;\n canRead: boolean;\n folders?: FolderWithType[];\n multiple?: boolean;\n onAddAsset: () => void;\n onChangeFilters: (filters: FilterCondition<string>[] | Filter[]) => void;\n onChangeFolder: (id: number, path?: string) => void;\n onChangePage: (page: number) => void;\n onChangePageSize: (value: number) => void;\n onChangeSort: (value: Query['sort'] | string) => void;\n onChangeSearch: (_q?: Query['_q'] | null) => void;\n onEditAsset: ((asset: FileWithType) => void) | null;\n onEditFolder: ((folder: FolderRow) => void) | null;\n onSelectAsset: (element: FileRow | FolderRow) => void;\n onSelectAllAsset?: (checked: boolean | string, rows?: FolderRow[] | FileRow[]) => void;\n queryObject: Query;\n pagination: { pageCount: number };\n selectedAssets: FileWithType[] | FolderWithType[];\n}\n\nexport const BrowseStep = ({\n allowedTypes = [],\n assets: rawAssets,\n canCreate,\n canRead,\n folders = [],\n multiple = false,\n onAddAsset,\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSearch,\n onChangeSort,\n onChangeFolder,\n onEditAsset,\n onEditFolder,\n onSelectAllAsset,\n onSelectAsset,\n pagination,\n queryObject,\n selectedAssets,\n}: BrowseStepProps) => {\n const { formatMessage } = useIntl();\n const [view, setView] = usePersistentState(localStorageKeys.modalView, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n const { data: currentFolder, isLoading: isCurrentFolderLoading } = useFolder(\n queryObject?.folder as number | null | undefined,\n {\n enabled: canRead && !!queryObject?.folder,\n }\n );\n\n const singularTypes = toSingularTypes(allowedTypes);\n const assets = rawAssets.map((asset) => ({\n ...asset,\n isSelectable: isSelectable(singularTypes, asset?.mime),\n type: 'asset',\n }));\n\n const breadcrumbs = !isCurrentFolderLoading\n ? getBreadcrumbDataCM(currentFolder as BreadcrumbDataFolder)\n : undefined;\n\n const allAllowedAsset = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n const areAllAssetSelected =\n allAllowedAsset.length > 0 &&\n selectedAssets.length > 0 &&\n allAllowedAsset.every(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const hasSomeAssetSelected = allAllowedAsset.some(\n (asset) => selectedAssets.findIndex((currAsset) => currAsset.id === asset.id) !== -1\n );\n const isSearching = !!queryObject?._q;\n const isFiltering = !!queryObject?.filters?.$and?.length && queryObject.filters.$and.length > 0;\n const isSearchingOrFiltering = isSearching || isFiltering;\n const assetCount = assets.length;\n const folderCount = folders.length;\n const handleClickFolderCard = (...args: Parameters<typeof onChangeFolder>) => {\n // Search query will always fetch the same results\n // we remove it here to allow navigating in a folder and see the result of this navigation\n onChangeSearch('');\n onChangeFolder(...args);\n };\n\n return (\n <Box>\n {onSelectAllAsset && (\n <Box paddingBottom={4}>\n <Flex justifyContent=\"space-between\" alignItems=\"flex-start\">\n {(assetCount > 0 || folderCount > 0 || isFiltering) && (\n <Flex gap={2} wrap=\"wrap\">\n {multiple && isGridView && (\n <Flex\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n hasRadius\n borderColor=\"neutral200\"\n height=\"3.2rem\"\n >\n <Checkbox\n aria-label={formatMessage({\n id: getTrad('bulk.select.label'),\n defaultMessage: 'Select all assets',\n })}\n checked={\n !areAllAssetSelected && hasSomeAssetSelected\n ? 'indeterminate'\n : areAllAssetSelected\n }\n onCheckedChange={onSelectAllAsset}\n />\n </Flex>\n )}\n {isGridView && <SortPicker onChangeSort={onChangeSort} value={queryObject?.sort} />}\n <Filters\n appliedFilters={queryObject?.filters?.$and as ImportedFilterStructure[]}\n onChangeFilters={onChangeFilters}\n />\n </Flex>\n )}\n\n {(assetCount > 0 || folderCount > 0 || isSearching) && (\n <Flex marginLeft=\"auto\" shrink={0} gap={2}>\n <ActionContainer paddingTop={1} paddingBottom={1}>\n <IconButton\n label={\n isGridView\n ? formatMessage({\n id: 'view-switch.list',\n defaultMessage: 'List View',\n })\n : formatMessage({\n id: 'view-switch.grid',\n defaultMessage: 'Grid View',\n })\n }\n onClick={() => setView(isGridView ? viewOptions.LIST : viewOptions.GRID)}\n >\n {isGridView ? <List /> : <GridIcon />}\n </IconButton>\n </ActionContainer>\n <SearchAsset onChangeSearch={onChangeSearch} queryValue={queryObject._q || ''} />\n </Flex>\n )}\n </Flex>\n </Box>\n )}\n\n {canRead && breadcrumbs?.length && breadcrumbs.length > 0 && currentFolder && (\n <Box paddingTop={3}>\n <Breadcrumbs\n onChangeFolder={onChangeFolder}\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs as BreadcrumbDataFolder[]}\n currentFolderId={queryObject?.folder as number | undefined}\n />\n </Box>\n )}\n\n {assetCount === 0 && folderCount === 0 && (\n <Box paddingBottom={6}>\n <EmptyAssets\n size=\"S\"\n count={6}\n action={\n canCreate &&\n !isFiltering &&\n !isSearching && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={\n // eslint-disable-next-line no-nested-ternary\n isSearchingOrFiltering\n ? formatMessage({\n id: getTrad('list.assets-empty.title-withSearch'),\n defaultMessage: 'There are no assets with the applied filters',\n })\n : canCreate && !isSearching\n ? formatMessage({\n id: getTrad('list.assets.empty'),\n defaultMessage: 'Upload your first assets...',\n })\n : formatMessage({\n id: getTrad('list.assets.empty.no-permissions'),\n defaultMessage: 'The asset list is empty',\n })\n }\n />\n </Box>\n )}\n\n {!isGridView && (folderCount > 0 || assetCount > 0) && (\n <TableList\n allowedTypes={allowedTypes}\n assetCount={assetCount}\n folderCount={folderCount}\n indeterminate={!areAllAssetSelected && hasSomeAssetSelected}\n isFolderSelectionAllowed={false}\n onChangeSort={onChangeSort}\n onChangeFolder={handleClickFolderCard}\n onEditAsset={onEditAsset}\n onEditFolder={onEditFolder}\n onSelectOne={onSelectAsset}\n onSelectAll={onSelectAllAsset!}\n rows={\n [...folders.map((folder) => ({ ...folder, type: 'folder' })), ...assets] as\n | FolderRow[]\n | FileRow[]\n }\n selected={selectedAssets}\n shouldDisableBulkSelect={!multiple}\n sortQuery={queryObject?.sort ?? ''}\n />\n )}\n\n {isGridView && (\n <>\n {folderCount > 0 && (\n <FolderGridList\n title={\n (((isSearchingOrFiltering && assetCount > 0) || !isSearchingOrFiltering) &&\n formatMessage(\n {\n id: getTrad('list.folders.title'),\n defaultMessage: 'Folders ({count})',\n },\n { count: folderCount }\n )) ||\n ''\n }\n >\n {folders.map((folder) => {\n return (\n <Grid.Item\n col={3}\n key={`folder-${folder.id}`}\n direction=\"column\"\n alignItems=\"stretch\"\n >\n <FolderCard\n ariaLabel={folder.name}\n id={`folder-${folder.id}`}\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n cardActions={\n onEditFolder && (\n <IconButton\n withTooltip={false}\n label={formatMessage({\n id: getTrad('list.folder.edit'),\n defaultMessage: 'Edit folder',\n })}\n onClick={() => onEditFolder(folder)}\n >\n <Pencil />\n </IconButton>\n )\n }\n >\n <FolderCardBody>\n <FolderCardBodyAction\n onClick={() => handleClickFolderCard(folder.id, folder.path)}\n >\n <Flex tag=\"h2\" direction=\"column\" alignItems=\"start\" maxWidth=\"100%\">\n <TypographyMaxWidth\n fontWeight=\"semiBold\"\n ellipsis\n textColor=\"neutral800\"\n >\n {folder.name}\n {/* VisuallyHidden dash here allows to separate folder title and count informations\n for voice reading structure purpose */}\n <VisuallyHidden>-</VisuallyHidden>\n </TypographyMaxWidth>\n <TypographyMaxWidth\n tag=\"span\"\n textColor=\"neutral600\"\n variant=\"pi\"\n ellipsis\n >\n {formatMessage(\n {\n id: getTrad('list.folder.subtitle'),\n defaultMessage:\n '{folderCount, plural, =0 {# folder} one {# folder} other {# folders}}, {filesCount, plural, =0 {# asset} one {# asset} other {# assets}}',\n },\n {\n folderCount: folder.children?.count,\n filesCount: folder.files?.count,\n }\n )}\n </TypographyMaxWidth>\n </Flex>\n </FolderCardBodyAction>\n </FolderCardBody>\n </FolderCard>\n </Grid.Item>\n );\n })}\n </FolderGridList>\n )}\n\n {assetCount > 0 && folderCount > 0 && (\n <Box paddingTop={6}>\n <Divider />\n </Box>\n )}\n\n {assetCount > 0 && (\n <Box paddingTop={6}>\n <AssetGridList\n allowedTypes={allowedTypes}\n size=\"S\"\n assets={assets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets as FileWithType[]}\n onEditAsset={onEditAsset!}\n title={\n ((!isSearchingOrFiltering || (isSearchingOrFiltering && folderCount > 0)) &&\n queryObject.page === 1 &&\n formatMessage(\n {\n id: getTrad('list.assets.title'),\n defaultMessage: 'Assets ({count})',\n },\n { count: assetCount }\n )) ||\n ''\n }\n />\n </Box>\n )}\n </>\n )}\n\n {pagination.pageCount > 0 && (\n <Flex justifyContent=\"space-between\" paddingTop={4}>\n <PageSize\n pageSize={queryObject.pageSize! as number}\n onChangePageSize={onChangePageSize}\n />\n <PaginationFooter\n activePage={queryObject.page as number}\n onChangePage={onChangePage}\n pagination={pagination}\n />\n </Flex>\n )}\n </Box>\n );\n};\n","import { Button, Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\ninterface DialogFooterProps {\n onClose: () => void;\n onValidate?: () => void;\n}\n\nexport const DialogFooter = ({ onClose, onValidate }: DialogFooterProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'Cancel' })}\n </Button>\n {onValidate && (\n <Button onClick={onValidate}>\n {formatMessage({ id: 'global.finish', defaultMessage: 'Finish' })}\n </Button>\n )}\n </Modal.Footer>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\nimport { AssetGridList } from '../../AssetGridList/AssetGridList';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface SelectedStepProps {\n onSelectAsset: (asset: File) => void;\n selectedAssets: File[];\n onReorderAsset?: (fromIndex: number, toIndex: number) => void;\n}\n\nexport const SelectedStep = ({\n selectedAssets,\n onSelectAsset,\n onReorderAsset,\n}: SelectedStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex gap={0} direction=\"column\" alignItems=\"start\">\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: selectedAssets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n\n <AssetGridList\n size=\"S\"\n assets={selectedAssets}\n onSelectAsset={onSelectAsset}\n selectedAssets={selectedAssets}\n onReorderAsset={onReorderAsset}\n />\n </Flex>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { Page } from '@strapi/admin/strapi-admin';\nimport { Badge, Button, Divider, Flex, Loader, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAssets } from '../../hooks/useAssets';\nimport { useFolders } from '../../hooks/useFolders';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useModalQueryParams } from '../../hooks/useModalQueryParams';\nimport { useSelectionState } from '../../hooks/useSelectionState';\nimport {\n containsAssetFilter,\n getTrad,\n getAllowedFiles,\n moveElement,\n AllowedFiles,\n} from '../../utils';\nimport { EditAssetContent, Asset as EditAsset } from '../EditAssetDialog/EditAssetContent';\nimport { EditFolderContent } from '../EditFolderDialog/EditFolderDialog';\n\nimport {\n BrowseStep,\n FolderWithType,\n FileWithType,\n Filter as BrowseFilter,\n} from './BrowseStep/BrowseStep';\nimport { DialogFooter } from './DialogFooter';\nimport { SelectedStep } from './SelectedStep/SelectedStep';\n\nimport type { File as Asset, FilterCondition, Query } from '../../../../shared/contracts/files';\nimport type { Folder, FolderDefinition } from '../../../../shared/contracts/folders';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\n\nconst LoadingBody = styled(Flex)`\n /* 80px are coming from the Tabs component that is not included in the ModalBody */\n min-height: ${() => `calc(60vh + 8rem)`};\n`;\n\nexport interface FileRow extends Asset {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\nexport interface FolderRow extends Folder {\n folderURL?: string;\n isSelectable?: boolean;\n type?: string;\n}\n\ninterface AssetContentProps {\n allowedTypes?: AllowedTypes[];\n folderId?: number | null;\n onClose: () => void;\n onAddAsset: (arg?: { folderId: number | { id: number } | null | undefined }) => void;\n onAddFolder: ({ folderId }: { folderId: number | { id: number } | null | undefined }) => void;\n onChangeFolder: (folderId: number | null) => void;\n onValidate: (selectedAssets: Asset[]) => void;\n multiple?: boolean;\n trackedLocation?: string;\n initiallySelectedAssets?: Asset[];\n}\n\nexport const AssetContent = ({\n allowedTypes = [],\n folderId = null,\n onClose,\n onAddAsset,\n onAddFolder,\n onChangeFolder,\n onValidate,\n multiple = false,\n initiallySelectedAssets = [],\n trackedLocation,\n}: AssetContentProps) => {\n const [assetToEdit, setAssetToEdit] = React.useState<FileWithType | undefined>(undefined);\n const [folderToEdit, setFolderToEdit] = React.useState<FolderRow | undefined>(undefined);\n const { formatMessage } = useIntl();\n const {\n canRead,\n canCreate,\n isLoading: isLoadingPermissions,\n canUpdate,\n canCopyLink,\n canDownload,\n } = useMediaLibraryPermissions();\n\n const [\n { queryObject },\n {\n onChangeFilters,\n onChangePage,\n onChangePageSize,\n onChangeSort,\n onChangeSearch,\n onChangeFolder: onChangeFolderParam,\n },\n ] = useModalQueryParams({ folder: folderId });\n\n const {\n data: { pagination, results: assets } = {},\n isLoading: isLoadingAssets,\n error: errorAssets,\n } = useAssets({ skipWhen: !canRead, query: queryObject });\n\n const {\n data: folders,\n isLoading: isLoadingFolders,\n error: errorFolders,\n } = useFolders({\n enabled: canRead && !containsAssetFilter(queryObject!) && pagination?.page === 1,\n query: queryObject,\n });\n\n const [\n selectedAssets,\n { selectOne, selectOnly, setSelections, selectMultiple, deselectMultiple },\n ] = useSelectionState(['id'], initiallySelectedAssets);\n\n const handleSelectAllAssets = () => {\n const allowedAssets = getAllowedFiles(allowedTypes, assets as AllowedFiles[]);\n\n if (!multiple) {\n return undefined;\n }\n\n // selected files in current folder\n const alreadySelected = allowedAssets.filter(\n (asset) => selectedAssets.findIndex((selectedAsset) => selectedAsset.id === asset.id) !== -1\n );\n\n if (alreadySelected.length > 0) {\n deselectMultiple(alreadySelected);\n } else {\n selectMultiple(allowedAssets);\n }\n };\n\n const handleSelectAsset = (asset: Asset | FileRow | FolderRow) => {\n return multiple ? selectOne(asset as Asset) : selectOnly(asset as Asset);\n };\n\n const isLoading = isLoadingPermissions || isLoadingAssets || isLoadingFolders;\n const hasError = errorAssets || errorFolders;\n\n if (isLoading) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <LoadingBody justifyContent=\"center\" paddingTop={4} paddingBottom={4}>\n <Loader>\n {formatMessage({\n id: getTrad('content.isLoading'),\n defaultMessage: 'Content is loading.',\n })}\n </Loader>\n </LoadingBody>\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (hasError) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.Error />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (!canRead) {\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Page.NoPermissions />\n <DialogFooter onClose={onClose} />\n </>\n );\n }\n\n if (assetToEdit) {\n return (\n <EditAssetContent\n onClose={() => setAssetToEdit(undefined)}\n asset={assetToEdit as EditAsset}\n canUpdate={canUpdate}\n canCopyLink={canCopyLink}\n canDownload={canDownload}\n trackedLocation={trackedLocation}\n />\n );\n }\n\n if (folderToEdit) {\n return (\n <EditFolderContent\n folder={folderToEdit as FolderDefinition}\n onClose={() => setFolderToEdit(undefined)}\n location=\"content-manager\"\n parentFolderId={queryObject?.folder as string | number | null | undefined}\n />\n );\n }\n\n const handleMoveItem = (hoverIndex: number, destIndex: number) => {\n const offset = destIndex - hoverIndex;\n const orderedAssetsClone = selectedAssets.slice();\n const nextAssets = moveElement<Asset>(orderedAssetsClone, hoverIndex, offset);\n setSelections(nextAssets);\n };\n\n const handleFolderChange = (folderId: number, folderPath?: string) => {\n onChangeFolder(folderId);\n if (onChangeFolderParam) {\n onChangeFolderParam(folderId, folderPath);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <TabsRoot variant=\"simple\" defaultValue={selectedAssets.length > 0 ? 'selected' : 'browse'}>\n <Flex paddingLeft={8} paddingRight={8} paddingTop={6} justifyContent=\"space-between\">\n <Tabs.List>\n <Tabs.Trigger value=\"browse\">\n {formatMessage({\n id: getTrad('modal.nav.browse'),\n defaultMessage: 'Browse',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"selected\">\n {formatMessage({\n id: getTrad('modal.header.select-files'),\n defaultMessage: 'Selected files',\n })}\n <Badge marginLeft={2}>{selectedAssets.length}</Badge>\n </Tabs.Trigger>\n </Tabs.List>\n <Flex gap={2}>\n <Button\n variant=\"secondary\"\n onClick={() => onAddFolder({ folderId: queryObject?.folder })}\n >\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.add-folder'),\n defaultMessage: 'Add folder',\n })}\n </Button>\n <Button onClick={() => onAddAsset({ folderId: queryObject?.folder })}>\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header.button'),\n defaultMessage: 'Add more assets',\n })}\n </Button>\n </Flex>\n </Flex>\n <Divider />\n <Modal.Body>\n <Tabs.Content value=\"browse\">\n <BrowseStep\n allowedTypes={allowedTypes}\n assets={assets!}\n canCreate={canCreate}\n canRead={canRead}\n folders={folders as FolderWithType[]}\n onSelectAsset={handleSelectAsset}\n selectedAssets={selectedAssets}\n multiple={multiple}\n onSelectAllAsset={handleSelectAllAssets}\n onEditAsset={setAssetToEdit}\n onEditFolder={setFolderToEdit}\n pagination={pagination!}\n queryObject={queryObject!}\n onAddAsset={onAddAsset}\n onChangeFilters={(filters: FilterCondition<string>[] | BrowseFilter[]) =>\n onChangeFilters!(filters as FilterCondition<string>[])\n }\n onChangeFolder={handleFolderChange}\n onChangePage={onChangePage!}\n onChangePageSize={onChangePageSize!}\n onChangeSort={(sort: string | undefined) => onChangeSort!(sort as Query['sort'])}\n onChangeSearch={onChangeSearch!}\n />\n </Tabs.Content>\n <Tabs.Content value=\"selected\">\n <SelectedStep\n selectedAssets={selectedAssets}\n onSelectAsset={handleSelectAsset}\n onReorderAsset={handleMoveItem}\n />\n </Tabs.Content>\n </Modal.Body>\n </TabsRoot>\n <DialogFooter onClose={onClose} onValidate={() => onValidate(selectedAssets)} />\n </>\n );\n};\n\ninterface AssetDialogProps extends AssetContentProps {\n open?: boolean;\n}\n\nexport const AssetDialog = ({ open = false, onClose, ...restProps }: AssetDialogProps) => {\n return (\n <Modal.Root open={open} onOpenChange={onClose}>\n <Modal.Content>\n <AssetContent onClose={onClose} {...restProps} />\n </Modal.Content>\n </Modal.Root>\n );\n};\n\nconst TabsRoot = styled(Tabs.Root)`\n display: flex;\n flex-direction: column;\n overflow: hidden;\n`;\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Flex, Modal, Typography } from '@strapi/design-system';\nimport { PlusCircle as PicturePlus } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetSource } from '../../../constants';\nimport { getTrad, rawFileToAsset } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\nconst Wrapper = styled(Flex)`\n flex-direction: column;\n`;\n\nconst IconWrapper = styled.div`\n font-size: 6rem;\n\n svg path {\n fill: ${({ theme }) => theme.colors.primary600};\n }\n`;\n\nconst MediaBox = styled(Box)`\n border-style: dashed;\n`;\n\nconst OpaqueBox = styled(Box)`\n opacity: 0;\n cursor: pointer;\n`;\n\ninterface FromComputerFormProps {\n onClose: () => void;\n onAddAssets: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromComputerForm = ({\n onClose,\n onAddAssets,\n trackedLocation,\n}: FromComputerFormProps) => {\n const { formatMessage } = useIntl();\n const [dragOver, setDragOver] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const { trackUsage } = useTracking();\n\n const handleDragOver = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n };\n\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault();\n setDragOver(true);\n };\n\n const handleDragLeave = () => setDragOver(false);\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files;\n const assets: FileWithRawFile[] = [];\n\n if (files) {\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n }\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'computer', location: trackedLocation });\n }\n\n onAddAssets(assets);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n\n if (e?.dataTransfer?.files) {\n const files = e.dataTransfer.files;\n const assets = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files.item(i);\n if (file) {\n const asset = rawFileToAsset(file, AssetSource.Computer);\n assets.push(asset);\n }\n }\n\n onAddAssets(assets);\n }\n\n setDragOver(false);\n };\n\n return (\n <form>\n <Box paddingLeft={8} paddingRight={8} paddingTop={6} paddingBottom={6}>\n <label>\n <MediaBox\n paddingTop={11}\n paddingBottom={11}\n hasRadius\n justifyContent=\"center\"\n borderColor={dragOver ? 'primary500' : 'neutral300'}\n background={dragOver ? 'primary100' : 'neutral100'}\n position=\"relative\"\n onDragEnter={handleDragEnter}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <Flex justifyContent=\"center\">\n <Wrapper>\n <IconWrapper>\n <PicturePlus aria-hidden width=\"3.2rem\" height=\"3.2rem\" />\n </IconWrapper>\n\n <Box paddingTop={3} paddingBottom={5}>\n <Typography variant=\"delta\" textColor=\"neutral600\" tag=\"span\">\n {formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n </Typography>\n </Box>\n\n <OpaqueBox\n tag=\"input\"\n position=\"absolute\"\n left={0}\n right={0}\n bottom={0}\n top={0}\n width=\"100%\"\n type=\"file\"\n multiple\n name=\"files\"\n aria-label={formatMessage({\n id: getTrad('input.label'),\n defaultMessage: 'Drag & Drop here or',\n })}\n tabIndex={-1}\n ref={inputRef}\n zIndex={1}\n onChange={handleChange}\n />\n\n <Box position=\"relative\">\n <Button type=\"button\" onClick={handleClick}>\n {formatMessage({\n id: getTrad('input.button.label'),\n defaultMessage: 'Browse files',\n })}\n </Button>\n </Box>\n </Wrapper>\n </Flex>\n </MediaBox>\n </label>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({\n id: 'app.components.Button.cancel',\n defaultMessage: 'cancel',\n })}\n </Button>\n </Modal.Footer>\n </form>\n );\n};\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Box, Button, Field, Modal, Textarea } from '@strapi/design-system';\nimport { Form, Formik } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, urlsToAssets, urlSchema } from '../../../utils';\n\nimport type { FileWithRawFile } from './AddAssetStep';\n\ninterface FromUrlFormProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const FromUrlForm = ({ onClose, onAddAsset, trackedLocation }: FromUrlFormProps) => {\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n\n const handleSubmit = async ({ urls }: { urls: string }) => {\n setLoading(true);\n const urlArray = urls.split(/\\r?\\n/);\n try {\n const assets: FileWithRawFile[] = await urlsToAssets(urlArray);\n\n if (trackedLocation) {\n trackUsage('didSelectFile', { source: 'url', location: trackedLocation });\n }\n\n // no need to set the loading to false since the component unmounts\n onAddAsset(assets);\n } catch (e: unknown) {\n setError(e as Error);\n setLoading(false);\n }\n };\n\n return (\n <Formik\n enableReinitialize\n initialValues={{\n urls: '',\n }}\n onSubmit={handleSubmit}\n validationSchema={urlSchema}\n validateOnChange={false}\n >\n {({ values, errors, handleChange }) => (\n <Form noValidate>\n <Box paddingLeft={8} paddingRight={8} paddingBottom={6} paddingTop={6}>\n <Field.Root\n hint={formatMessage({\n id: getTrad('input.url.description'),\n defaultMessage: 'Separate your URL links by a carriage return.',\n })}\n error={\n error?.message ||\n (errors.urls\n ? formatMessage({ id: errors.urls, defaultMessage: 'An error occured' })\n : undefined)\n }\n >\n <Field.Label>\n {formatMessage({ id: getTrad('input.url.label'), defaultMessage: 'URL' })}\n </Field.Label>\n <Textarea name=\"urls\" onChange={handleChange} value={values.urls} />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n </Box>\n\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button type=\"submit\" loading={loading}>\n {formatMessage({\n id: getTrad('button.next'),\n defaultMessage: 'Next',\n })}\n </Button>\n </Modal.Footer>\n </Form>\n )}\n </Formik>\n );\n};\n","import { Box, Divider, Modal, Tabs } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { FromComputerForm } from './FromComputerForm';\nimport { FromUrlForm } from './FromUrlForm';\n\nimport type { RawFile, File } from '../../../../../shared/contracts/files';\n\nexport interface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ninterface AddAssetStepProps {\n onClose: () => void;\n onAddAsset: (assets: FileWithRawFile[]) => void;\n trackedLocation?: string;\n}\n\nexport const AddAssetStep = ({ onClose, onAddAsset, trackedLocation }: AddAssetStepProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n <Tabs.Root variant=\"simple\" defaultValue=\"computer\">\n <Box paddingLeft={8} paddingRight={8} paddingTop={6}>\n <Tabs.List\n aria-label={formatMessage({\n id: getTrad('tabs.title'),\n defaultMessage: 'How do you want to upload your assets?',\n })}\n >\n <Tabs.Trigger value=\"computer\">\n {formatMessage({\n id: getTrad('modal.nav.computer'),\n defaultMessage: 'From computer',\n })}\n </Tabs.Trigger>\n <Tabs.Trigger value=\"url\">\n {formatMessage({\n id: getTrad('modal.nav.url'),\n defaultMessage: 'From URL',\n })}\n </Tabs.Trigger>\n </Tabs.List>\n\n <Divider />\n </Box>\n <Tabs.Content value=\"computer\">\n <FromComputerForm\n onClose={onClose}\n onAddAssets={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n <Tabs.Content value=\"url\">\n <FromUrlForm\n onClose={onClose}\n onAddAsset={onAddAsset}\n trackedLocation={trackedLocation}\n />\n </Tabs.Content>\n </Tabs.Root>\n </>\n );\n};\n","import * as React from 'react';\n\nimport {\n Box,\n Card,\n CardBadge,\n CardBody,\n CardContent,\n CardHeader,\n CardSubtitle,\n CardTitle,\n Flex,\n Typography,\n} from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { AssetType } from '../../constants';\nimport { useUpload } from '../../hooks/useUpload';\nimport { getTrad } from '../../utils';\nimport { UploadProgress } from '../UploadProgress/UploadProgress';\n\nimport type { RawFile, File } from '../../../../shared/contracts/files';\n\nconst UploadProgressWrapper = styled.div`\n height: 8.8rem;\n width: 100%;\n`;\n\nconst Extension = styled.span`\n text-transform: uppercase;\n`;\n\ninterface UploadingAssetCardProps {\n onCancel: (rawFile: RawFile) => void;\n onStatusChange: (status: string) => void;\n addUploadedFiles: (files: File[]) => void;\n folderId?: string | number | null;\n asset: Asset;\n id?: string;\n size?: 'S' | 'M';\n}\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\nexport const UploadingAssetCard = ({\n asset,\n onCancel,\n onStatusChange,\n addUploadedFiles,\n folderId = null,\n}: UploadingAssetCardProps) => {\n const { upload, cancel, error, progress, status } = useUpload();\n const { formatMessage } = useIntl();\n\n let badgeContent = formatMessage({\n id: getTrad('settings.section.doc.label'),\n defaultMessage: 'Doc',\n });\n\n if (asset.type === AssetType.Image) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.image.label'),\n defaultMessage: 'Image',\n });\n } else if (asset.type === AssetType.Video) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.video.label'),\n defaultMessage: 'Video',\n });\n } else if (asset.type === AssetType.Audio) {\n badgeContent = formatMessage({\n id: getTrad('settings.section.audio.label'),\n defaultMessage: 'Audio',\n });\n }\n\n React.useEffect(() => {\n const uploadFile = async () => {\n const files = await upload(asset, folderId ? Number(folderId) : null);\n\n if (addUploadedFiles) {\n addUploadedFiles(files);\n }\n };\n\n uploadFile();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n React.useEffect(() => {\n onStatusChange(status);\n }, [status, onStatusChange]);\n\n const handleCancel = () => {\n cancel();\n onCancel(asset.rawFile!);\n };\n\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Card borderColor={error ? 'danger600' : 'neutral150'}>\n <CardHeader>\n <UploadProgressWrapper>\n <UploadProgress\n error={error || undefined}\n onCancel={handleCancel}\n progress={progress}\n />\n </UploadProgressWrapper>\n </CardHeader>\n <CardBody>\n <CardContent>\n <Box paddingTop={1}>\n <Typography tag=\"h2\">\n <CardTitle tag=\"span\">{asset.name}</CardTitle>\n </Typography>\n </Box>\n <CardSubtitle>\n <Extension>{asset.ext}</Extension>\n </CardSubtitle>\n </CardContent>\n <Flex paddingTop={1} grow={1}>\n <CardBadge>{badgeContent}</CardBadge>\n </Flex>\n </CardBody>\n </Card>\n {error ? (\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"danger600\">\n {formatMessage(\n error?.message\n ? {\n id: getTrad(`apiError.${error.message}`),\n defaultMessage: error.message,\n /* See issue: https://github.com/strapi/strapi/issues/13867\n A proxy might return an error, before the request reaches Strapi\n and therefore we need to handle errors gracefully.\n */\n }\n : {\n id: getTrad('upload.generic-error'),\n defaultMessage: 'An error occured while uploading the file.',\n }\n )}\n </Typography>\n ) : undefined}\n </Flex>\n );\n};\n","import * as React from 'react';\n\nimport { useTracking } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Grid, KeyboardNavigable, Modal, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { AssetType } from '../../../constants';\nimport { getTrad } from '../../../utils';\nimport { AssetCard } from '../../AssetCard/AssetCard';\nimport { UploadingAssetCard } from '../../AssetCard/UploadingAssetCard';\n\nimport type { File, RawFile } from '../../../../../shared/contracts/files';\n\nconst Status = {\n Idle: 'IDLE',\n Uploading: 'UPLOADING',\n Intermediate: 'INTERMEDIATE',\n};\n\ninterface Asset extends File {\n rawFile?: RawFile;\n type?: AssetType;\n}\n\ninterface PendingAssetStepProps {\n addUploadedFiles?: (files: File[]) => void;\n folderId?: string | number | null;\n onClose: () => void;\n onEditAsset: (asset: File) => void;\n onRemoveAsset: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n assets: Asset[];\n onClickAddAsset: () => void;\n onCancelUpload: (rawFile: RawFile) => void;\n onUploadSucceed: (file: RawFile) => void;\n trackedLocation?: string;\n initialAssetsToAdd?: File[];\n}\n\nexport const PendingAssetStep = ({\n addUploadedFiles,\n folderId,\n onClose,\n onEditAsset,\n onRemoveAsset,\n assets,\n onClickAddAsset,\n onCancelUpload,\n onUploadSucceed,\n trackedLocation,\n}: PendingAssetStepProps) => {\n const assetCountRef = React.useRef(0);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [uploadStatus, setUploadStatus] = React.useState(Status.Idle);\n\n const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n const assetsCountByType = assets.reduce(\n (acc: Record<AssetType, string | number>, asset) => {\n const { type } = asset;\n\n if (type !== undefined && !acc[type]) {\n acc[type] = 0;\n }\n\n if (type !== undefined) {\n const accType = acc[type];\n const currentCount = typeof accType === 'string' ? accType : accType.toString();\n acc[type] = `${parseInt(currentCount, 10) + 1}`;\n }\n\n return acc;\n },\n {} as Record<AssetType, string | number>\n );\n\n trackUsage('willAddMediaLibraryAssets', {\n location: trackedLocation!,\n ...assetsCountByType,\n });\n\n setUploadStatus(Status.Uploading);\n };\n\n const handleStatusChange = (status: string, file: RawFile) => {\n if (status === 'success' || status === 'error') {\n assetCountRef.current++;\n\n // There's no \"terminated\" status. When all the files have called their\n // onUploadSucceed callback, the parent component filters the asset list\n // and closes the modal when the asset list is empty\n if (assetCountRef.current === assets.length) {\n assetCountRef.current = 0;\n setUploadStatus(Status.Intermediate);\n }\n }\n\n if (status === 'success') {\n onUploadSucceed(file);\n }\n };\n\n return (\n <>\n <Modal.Header>\n <Modal.Title>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Modal.Title>\n </Modal.Header>\n\n <Modal.Body>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={7}>\n <Flex justifyContent=\"space-between\">\n <Flex direction=\"column\" alignItems=\"stretch\" gap={0}>\n <Typography variant=\"pi\" fontWeight=\"bold\" textColor=\"neutral800\">\n {formatMessage(\n {\n id: getTrad('list.assets.to-upload'),\n defaultMessage:\n '{number, plural, =0 {No asset} one {1 asset} other {# assets}} ready to upload',\n },\n { number: assets.length }\n )}\n </Typography>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('modal.upload-list.sub-header-subtitle'),\n defaultMessage: 'Manage the assets before adding them to the Media Library',\n })}\n </Typography>\n </Flex>\n <Button size=\"S\" onClick={onClickAddAsset}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n <KeyboardNavigable tagName=\"article\">\n <Grid.Root gap={4}>\n {assets.map((asset) => {\n const assetKey = asset.url;\n\n if (uploadStatus === Status.Uploading || uploadStatus === Status.Intermediate) {\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <UploadingAssetCard\n // Props used to store the newly uploaded files\n addUploadedFiles={addUploadedFiles!}\n asset={asset}\n id={assetKey}\n onCancel={onCancelUpload}\n onStatusChange={(status) => handleStatusChange(status, asset.rawFile!)}\n size=\"S\"\n folderId={folderId}\n />\n </Grid.Item>\n );\n }\n\n return (\n <Grid.Item col={4} key={assetKey} direction=\"column\" alignItems=\"stretch\">\n <AssetCard\n asset={asset}\n size=\"S\"\n key={assetKey}\n local\n alt={asset.name}\n onEdit={onEditAsset}\n onRemove={onRemoveAsset}\n />\n </Grid.Item>\n );\n })}\n </Grid.Root>\n </KeyboardNavigable>\n </Flex>\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={onClose} variant=\"tertiary\">\n {formatMessage({ id: 'app.components.Button.cancel', defaultMessage: 'cancel' })}\n </Button>\n <Button onClick={handleSubmit} loading={uploadStatus === Status.Uploading}>\n {formatMessage(\n {\n id: getTrad('modal.upload-list.footer.button'),\n defaultMessage:\n 'Upload {number, plural, one {# asset} other {# assets}} to the library',\n },\n { number: assets.length }\n )}\n </Button>\n </Modal.Footer>\n </>\n );\n};\n","import * as React from 'react';\n\nimport { Modal } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { EditAssetContent } from '../EditAssetDialog/EditAssetContent';\n\nimport { AddAssetStep } from './AddAssetStep/AddAssetStep';\nimport { PendingAssetStep } from './PendingAssetStep/PendingAssetStep';\n\nimport type { File, RawFile } from '../../../../shared/contracts/files';\nimport type { AllowedFiles } from '../../utils';\n\nconst Steps = {\n AddAsset: 'AddAsset',\n PendingAsset: 'PendingAsset',\n};\n\ninterface FileWithRawFile extends Omit<File, 'id' | 'hash'> {\n id?: string;\n hash?: string;\n rawFile: RawFile;\n}\n\ntype FileWithoutIdHash = Omit<File, 'id' | 'hash'>;\n\nexport interface Asset extends Omit<File, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: File['folder'] & { id: number };\n}\n\nexport interface UploadAssetDialogProps {\n addUploadedFiles?: (files: Asset[] | File[]) => void;\n folderId?: string | number | null;\n initialAssetsToAdd?: Asset[];\n onClose: () => void;\n open: boolean;\n trackedLocation?: string;\n validateAssetsTypes?: (\n assets: FileWithoutIdHash[] | Asset[],\n cb: (assets?: AllowedFiles[], error?: string) => void\n ) => void;\n}\n\nexport const UploadAssetDialog = ({\n initialAssetsToAdd,\n folderId = null,\n onClose = () => {},\n addUploadedFiles,\n trackedLocation,\n open,\n validateAssetsTypes = (_, cb) => cb(),\n}: UploadAssetDialogProps) => {\n const { formatMessage } = useIntl();\n const [step, setStep] = React.useState(initialAssetsToAdd ? Steps.PendingAsset : Steps.AddAsset);\n const [assets, setAssets] = React.useState(initialAssetsToAdd || []);\n const [assetToEdit, setAssetToEdit] = React.useState<File | Asset | undefined>(undefined);\n\n const handleAddToPendingAssets = (nextAssets: Asset[]) => {\n validateAssetsTypes(nextAssets, () => {\n setAssets((prevAssets) => prevAssets.concat(nextAssets));\n setStep(Steps.PendingAsset);\n });\n };\n\n const moveToAddAsset = () => {\n setStep(Steps.AddAsset);\n };\n\n const handleCancelUpload = (file: RawFile) => {\n const nextAssets = assets.filter((asset) => asset.rawFile !== file);\n setAssets(nextAssets);\n\n // When there's no asset, transition to the AddAsset step\n if (nextAssets.length === 0) {\n moveToAddAsset();\n }\n };\n\n const handleUploadSuccess = (file: RawFile) => {\n const nextAssets = assets.filter((asset) => asset.rawFile !== file);\n setAssets(nextAssets);\n\n if (nextAssets.length === 0) {\n onClose();\n }\n };\n\n const handleAssetEditValidation = (nextAsset?: Asset | boolean | null) => {\n if (nextAsset && typeof nextAsset !== 'boolean') {\n const nextAssets = assets.map((asset) => (asset === assetToEdit ? nextAsset : asset));\n setAssets(nextAssets);\n }\n\n setAssetToEdit(undefined);\n };\n\n const handleClose = () => {\n if (step === Steps.PendingAsset && assets.length > 0) {\n // eslint-disable-next-line no-alert\n const confirm = window.confirm(\n formatMessage({\n id: 'window.confirm.close-modal.files',\n defaultMessage: 'Are you sure? You have some files that have not been uploaded yet.',\n })\n );\n\n if (confirm) {\n onClose();\n }\n } else {\n onClose();\n }\n };\n\n const handleRemoveAsset = (assetToRemove: File) => {\n const nextAssets = assets.filter((asset) => asset !== assetToRemove);\n setAssets(nextAssets);\n };\n\n return (\n <Modal.Root open={open} onOpenChange={handleClose}>\n {step === Steps.AddAsset && (\n <Modal.Content>\n <AddAssetStep\n onClose={onClose}\n onAddAsset={(assets: FileWithRawFile[]) =>\n handleAddToPendingAssets(assets as unknown as Asset[])\n }\n trackedLocation={trackedLocation}\n />\n </Modal.Content>\n )}\n\n {step === Steps.PendingAsset && (\n <Modal.Content>\n <PendingAssetStep\n onClose={handleClose}\n assets={assets}\n onEditAsset={setAssetToEdit}\n onRemoveAsset={handleRemoveAsset}\n onClickAddAsset={moveToAddAsset}\n onCancelUpload={handleCancelUpload}\n onUploadSucceed={handleUploadSuccess}\n initialAssetsToAdd={initialAssetsToAdd}\n addUploadedFiles={addUploadedFiles}\n folderId={folderId}\n trackedLocation={trackedLocation}\n />\n </Modal.Content>\n )}\n\n {assetToEdit && (\n <Modal.Content>\n <EditAssetContent\n onClose={handleAssetEditValidation}\n asset={assetToEdit as Asset}\n canUpdate\n canCopyLink={false}\n canDownload={false}\n trackedLocation={trackedLocation}\n />\n </Modal.Content>\n )}\n </Modal.Root>\n );\n};\n","// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport { AssetDialog } from '../AssetDialog/AssetDialog';\nimport { EditFolderDialog } from '../EditFolderDialog/EditFolderDialog';\nimport { UploadAssetDialog } from '../UploadAssetDialog/UploadAssetDialog';\n\nconst STEPS = {\n AssetSelect: 'SelectAsset',\n AssetUpload: 'UploadAsset',\n FolderCreate: 'FolderCreate',\n};\n\nimport type { File } from '../../../../shared/contracts/files';\nimport type { AllowedTypes } from '../AssetCard/AssetCard';\nexport interface MediaLibraryDialogProps {\n allowedTypes?: AllowedTypes[];\n onClose: () => void;\n onSelectAssets: (selectedAssets: File[]) => void;\n}\n\nexport const MediaLibraryDialog = ({\n onClose,\n onSelectAssets,\n allowedTypes = ['files', 'images', 'videos', 'audios'],\n}: MediaLibraryDialogProps) => {\n const [step, setStep] = React.useState(STEPS.AssetSelect);\n const [folderId, setFolderId] = React.useState<number | null>(null);\n\n switch (step) {\n case STEPS.AssetSelect:\n return (\n <AssetDialog\n allowedTypes={allowedTypes}\n folderId={folderId}\n open\n onClose={onClose}\n onValidate={onSelectAssets}\n onAddAsset={() => setStep(STEPS.AssetUpload)}\n onAddFolder={() => setStep(STEPS.FolderCreate)}\n onChangeFolder={(folderId) => setFolderId(folderId)}\n multiple\n />\n );\n\n case STEPS.FolderCreate:\n return (\n <EditFolderDialog\n open\n onClose={() => setStep(STEPS.AssetSelect)}\n parentFolderId={folderId}\n />\n );\n\n default:\n return (\n <UploadAssetDialog open onClose={() => setStep(STEPS.AssetSelect)} folderId={folderId} />\n );\n }\n};\n","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 return (\n <Box\n tag=\"img\"\n maxHeight=\"100%\"\n maxWidth=\"100%\"\n src={createAssetUrl(asset, true)}\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","import { CarouselActions, IconButton } from '@strapi/design-system';\nimport { Pencil, Plus, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad, prefixFileUrlWithBackendUrl } from '../../../utils';\nimport { CopyLinkButton } from '../../CopyLinkButton/CopyLinkButton';\n\nimport type { File } from '../../../../../shared/contracts/files';\n\ninterface CarouselAssetActionsProps {\n asset: File;\n onDeleteAsset?: (asset: File) => void;\n onAddAsset?: (asset: File) => void;\n onEditAsset?: () => void;\n}\n\nexport const CarouselAssetActions = ({\n asset,\n onDeleteAsset,\n onAddAsset,\n onEditAsset,\n}: CarouselAssetActionsProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <CarouselActions>\n {onAddAsset && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.add'),\n defaultMessage: 'Add',\n })}\n onClick={() => onAddAsset(asset)}\n >\n <Plus />\n </IconButton>\n )}\n\n <CopyLinkButton url={prefixFileUrlWithBackendUrl(asset.url)!} />\n\n {onDeleteAsset && (\n <IconButton\n label={formatMessage({\n id: 'global.delete',\n defaultMessage: 'Delete',\n })}\n onClick={() => onDeleteAsset(asset)}\n >\n <Trash />\n </IconButton>\n )}\n\n {onEditAsset && (\n <IconButton\n label={formatMessage({\n id: getTrad('control-card.edit'),\n defaultMessage: 'edit',\n })}\n onClick={onEditAsset}\n >\n <Pencil />\n </IconButton>\n )}\n </CarouselActions>\n );\n};\n","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","import * as React from 'react';\n\nimport { CarouselInput, CarouselSlide } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils/getTrad';\nimport { EditAssetDialog } from '../../EditAssetDialog/EditAssetContent';\n\nimport { CarouselAsset } from './CarouselAsset';\nimport { CarouselAssetActions } from './CarouselAssetActions';\nimport { EmptyStateAsset } from './EmptyStateAsset';\n\nimport type { File as FileAsset, RawFile } from '../../../../../shared/contracts/files';\n\nexport type FileWithoutIdHash = Omit<FileAsset, 'id' | 'hash'>;\n\ninterface Asset extends Omit<FileAsset, 'folder'> {\n isLocal?: boolean;\n rawFile?: RawFile;\n folder?: FileAsset['folder'] & { id: number };\n}\n\nexport interface CarouselAssetsProps {\n assets: FileAsset[];\n disabled?: boolean;\n error?: string;\n hint?: string;\n label: string;\n labelAction?: React.ReactNode;\n onAddAsset: (asset?: FileAsset, event?: React.MouseEventHandler<HTMLButtonElement>) => void;\n onDeleteAsset: (asset: FileAsset) => void;\n onDeleteAssetFromMediaLibrary: () => void;\n onDropAsset?: (assets: FileWithoutIdHash[]) => void;\n onEditAsset?: (asset: FileAsset) => void;\n onNext: () => void;\n onPrevious: () => void;\n required?: boolean;\n selectedAssetIndex: number;\n trackedLocation?: string;\n}\n\nexport const CarouselAssets = React.forwardRef(\n (\n {\n assets,\n disabled = false,\n error,\n hint,\n label,\n labelAction,\n onAddAsset,\n onDeleteAsset,\n onDeleteAssetFromMediaLibrary,\n onDropAsset,\n onEditAsset,\n onNext,\n onPrevious,\n required = false,\n selectedAssetIndex,\n trackedLocation,\n }: CarouselAssetsProps,\n forwardedRef\n ) => {\n const { formatMessage } = useIntl();\n const [isEditingAsset, setIsEditingAsset] = React.useState(false);\n\n const currentAsset = assets[selectedAssetIndex];\n\n return (\n <>\n <CarouselInput\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n label={label}\n labelAction={labelAction}\n secondaryLabel={currentAsset?.name}\n selectedSlide={selectedAssetIndex}\n previousLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.previousSlide'),\n defaultMessage: 'Previous slide',\n })}\n nextLabel={formatMessage({\n id: getTrad('mediaLibraryInput.actions.nextSlide'),\n defaultMessage: 'Next slide',\n })}\n onNext={onNext}\n onPrevious={onPrevious}\n hint={hint}\n error={error}\n required={required}\n actions={\n currentAsset ? (\n <CarouselAssetActions\n asset={currentAsset}\n onDeleteAsset={disabled ? undefined : onDeleteAsset}\n onAddAsset={disabled ? undefined : onAddAsset}\n onEditAsset={onEditAsset ? () => setIsEditingAsset(true) : undefined}\n />\n ) : undefined\n }\n >\n {assets.length === 0 ? (\n <CarouselSlide\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: 1, m: 1 }\n )}\n >\n <EmptyStateAsset\n disabled={disabled}\n onClick={onAddAsset}\n onDropAsset={onDropAsset!}\n />\n </CarouselSlide>\n ) : (\n assets.map((asset, index) => (\n <CarouselSlide\n key={asset.id}\n label={formatMessage(\n {\n id: getTrad('mediaLibraryInput.slideCount'),\n defaultMessage: '{n} of {m} slides',\n },\n { n: index + 1, m: assets.length }\n )}\n >\n <CarouselAsset asset={asset} />\n </CarouselSlide>\n ))\n )}\n </CarouselInput>\n <EditAssetDialog\n open={isEditingAsset}\n onClose={(editedAsset) => {\n setIsEditingAsset(false);\n\n // The asset has been deleted\n if (editedAsset === null) {\n onDeleteAssetFromMediaLibrary();\n }\n if (editedAsset && typeof editedAsset !== 'boolean') {\n onEditAsset?.(editedAsset);\n }\n }}\n asset={currentAsset as Asset}\n canUpdate\n canCopyLink\n canDownload\n trackedLocation={trackedLocation}\n />\n </>\n );\n }\n);\n","// 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 = ['videos', 'files', 'images', 'audios'], 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 fieldAllowedTypes = allowedTypes || ['files', 'images', 'videos', 'audios'];\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(fieldAllowedTypes, 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: fieldAllowedTypes.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(\n fieldAllowedTypes,\n uploadedFiles as AllowedFiles[]\n );\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={fieldAllowedTypes 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","import { Images } from '@strapi/icons';\n\nimport pluginPkg from '../../package.json';\n\nimport { MediaLibraryDialog } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport { MediaLibraryInput } from './components/MediaLibraryInput/MediaLibraryInput';\nimport { PERMISSIONS } from './constants';\nimport { pluginId } from './pluginId';\nimport { getTrad, prefixPluginTranslations } from './utils';\n\nimport type { MediaLibraryDialogProps } from './components/MediaLibraryDialog/MediaLibraryDialog';\nimport type { MediaLibraryInputProps } from './components/MediaLibraryInput/MediaLibraryInput';\nimport type { StrapiApp } from '@strapi/admin/strapi-admin';\nimport type { Plugin } from '@strapi/types';\n\nconst name = pluginPkg.strapi.name;\n\nconst admin: Plugin.Config.AdminInput = {\n register(app: StrapiApp) {\n app.addMenuLink({\n to: `plugins/${pluginId}`,\n icon: Images,\n intlLabel: {\n id: `${pluginId}.plugin.name`,\n defaultMessage: 'Media Library',\n },\n permissions: PERMISSIONS.main,\n Component: () => import('./pages/App/App').then((mod) => ({ default: mod.Upload })),\n position: 4,\n });\n\n app.addSettingsLink('global', {\n id: 'media-library-settings',\n to: 'media-library',\n intlLabel: {\n id: getTrad('plugin.name'),\n defaultMessage: 'Media Library',\n },\n async Component() {\n const { ProtectedSettingsPage } = await import('./pages/SettingsPage/SettingsPage');\n return { default: ProtectedSettingsPage };\n },\n permissions: PERMISSIONS.settings,\n });\n\n app.addFields({\n type: 'media',\n Component: MediaLibraryInput as React.FC<Partial<MediaLibraryInputProps>>,\n });\n app.addComponents([\n {\n name: 'media-library',\n Component: MediaLibraryDialog as React.FC<Partial<MediaLibraryDialogProps>>,\n },\n ]);\n\n app.registerPlugin({\n id: pluginId,\n name,\n });\n },\n async registerTrads({ locales }: { locales: string[] }) {\n const importedTrads = await Promise.all(\n locales.map((locale) => {\n return import(`./translations/${locale}.json`)\n .then(({ default: data }) => {\n return {\n data: prefixPluginTranslations(data, pluginId),\n locale,\n };\n })\n .catch(() => {\n return {\n data: {},\n locale,\n };\n });\n })\n );\n\n return Promise.resolve(importedTrads);\n },\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default admin;\n"],"names":["pluginId","pluginPkg","name","replace","useAssets","skipWhen","query","formatMessage","useIntl","toggleNotification","useNotification","notifyStatus","useNotifyAT","get","useFetchClient","folderPath","_q","paramsExceptFolderAndQ","params","encodeURIComponent","filters","$and","$eq","data","error","isLoading","useQuery","enabled","staleTime","cacheTime","select","results","Array","isArray","filter","asset","map","mime","ext","React","useEffect","id","defaultMessage","type","message","useFolders","folder","pagination","pageSize","parent","$null","stringify","onError","appendSearchParamsToUrl","url","undefined","urlObj","URL","window","strapi","backendURL","Object","entries","forEach","key","value","searchParams","append","toString","containsMimeTypeFilter","result","find","keys","includes","containsAssetFilter","prefixFileUrlWithBackendUrl","fileURL","startsWith","createAssetUrl","forThumbnail","isLocal","assetUrl","formats","thumbnail","displayedFilters","fieldSchema","metadatas","label","options","downloadFile","fileName","fileBlob","fetch","then","res","blob","urlDownload","createObjectURL","link","document","createElement","href","setAttribute","click","findRecursiveFolderByValue","iter","a","children","some","formatBytes","receivedBytes","decimals","realBytes","Number","unit","byteSize","precision","toUpperCase","zeroPad","num","String","padStart","formatDuration","durationInSecond","duration","intervalToDuration","start","end","hours","minutes","seconds","toSingularTypes","types","substring","length","getAllowedFiles","pluralTypes","files","singularTypes","allowedFiles","file","fileType","split","getPrefixedId","callback","prefixedMessage","normalizeError","intlMessagePrefixCallback","normalizedError","values","path","join","validateErrorIsYupValidationError","err","details","normalizeAPIError","apiError","response","errors","getAPIInnerErrors","getTrad","reduce","acc","getBreadcrumbDataCM","push","getFolderURL","pathname","currentQuery","queryParamsWithoutQ","queryParamsString","encode","getFileExtension","flattenTree","tree","depth","flatMap","item","getFolderParents","folders","currentFolderId","parents","flatFolders","currentFolder","parentToStore","reverse","move","array","oldIndex","newIndex","splice","moveElement","index","offset","prefixPluginTranslations","trad","TypeError","current","typeFromMime","AssetType","Image","Video","Audio","Document","rawFileToAsset","rawFile","assetSource","size","createdAt","Date","lastModified","toISOString","source","pop","getFilenameFromURL","urlsToAssets","urls","assetPromises","loadedFile","File","headers","assetsResults","Promise","all","assets","fullFilledAsset","AssetSource","Url","urlSchema","yup","object","shape","string","test","createError","errorsTrads","min","max","filtered","val","filteredLength","errorMessage","number","PERMISSIONS","main","action","subject","copyLink","create","download","read","configureView","settings","update","fields","tableHeaders","isSortable","sortOptions","pageSizes","localStorageKeys","modalView","view","viewOptions","GRID","LIST","_main","restPermissions","useMediaLibraryPermissions","allowedActions","useRBAC","endpoint","queryKey","useConfig","trackUsage","useTracking","put","config","putMutation","useMutation","body","onSuccess","refetch","mutateConfig","useModalQueryParams","initialState","queryObject","setQueryObject","useState","page","sort","prevQuery","handleChangeFilters","nextFilters","location","prev","handleChangePageSize","parseInt","handeChangePage","handleChangeSort","handleChangeSearch","newState","handleChangeFolder","rawQuery","onChangeFilters","onChangeFolder","onChangePage","onChangePageSize","onChangeSort","onChangeSearch","useSelectionState","initialValue","selections","setSelections","selectOne","selection","findIndex","currentSelection","every","prevSelected","slice","selectAll","nextSelections","selectOnly","nextSelection","selectMultiple","currSelections","deselectMultiple","editAssetRequest","signal","onProgress","post","formData","FormData","JSON","alternativeText","caption","useEditAsset","progress","setProgress","queryClient","useQueryClient","abortController","AbortController","mutation","refetchQueries","active","reason","status","editAsset","mutateAsync","cancel","abort","recursiveRenameKeys","obj","fn","fromEntries","getValue","v","FIELD_MAPPING","useFolderStructure","fetchFolderStructure","f","ContextInfo","blocks","_jsx","Box","hasRadius","paddingLeft","paddingRight","paddingTop","paddingBottom","background","Grid","Root","gap","Item","col","xs","direction","alignItems","_jsxs","Flex","Typography","variant","textColor","ToggleButton","styled","theme","colors","primary200","Option","selectProps","props","maxDisplayDepth","openValues","onOptionToggle","isOpen","Icon","ChevronUp","ChevronDown","components","ellipsis","span","style","Math","aria-label","tag","justifyContent","marginLeft","onClick","event","preventDefault","stopPropagation","width","fill","getOpenValues","defaultValue","option","getValuesToClose","optionForValue","hasParent","SelectTree","defaultOptions","flatDefaultOptions","useMemo","optionsFiltered","setOptions","setOpenValues","allOpenValues","nextOptions","handleToggle","valuesToClose","prevData","Select","isSearchable","styles","ariaErrorMessage","useTheme","customStyles","getSelectStyles","ReactSelect","menuPosition","ClearIndicator","DropdownIndicator","IndicatorSeparator","LoadingIndicator","aria-errormessage","aria-invalid","IconBox","neutral600","Component","Cross","CarretBox","innerProps","CaretDown","clearIndicator","base","padding","spaces","container","neutral0","lineHeight","control","state","borderColor","neutral200","boxShadowColor","backgroundColor","isFocused","primary600","danger600","isDisabled","neutral150","fontSize","fontSizes","height","border","outline","borderRadius","boxShadow","indicatorsContainer","input","margin","color","neutral800","gridTemplateColumns","menuPortal","zIndex","zIndices","dialog","pointerEvents","menu","marginTop","shadows","tableShadow","menuList","isSelected","primary100","placeholder","overflow","textOverflow","whiteSpace","maxWidth","singleValue","valueContainer","cursor","marginRight","DialogHeader","Modal","Header","Title","QUALITY","useCropImg","cropperRef","useRef","isCropping","setIsCropping","setSize","destroy","handleResize","detail","roundedDataWidth","round","roundedDataHeight","crop","image","Cropper","modal","initialAspectRatio","movable","zoomable","cropBoxResizable","checkCrossOrigin","stopCropping","produceFile","mimeType","lastModifiedDate","resolve","reject","Error","canvas","getCroppedCanvas","toBlob","getTime","isCropperReady","Boolean","uploadAsset","folderId","useUpload","upload","CopyLinkButton","copy","useClipboard","handleClick","didCopy","IconButton","LinkIcon","BoxWrapper","CancelButton","button","neutral700","UploadProgress","onCancel","ProgressBar","aria-hidden","useRemoveAsset","del","assetId","removeAsset","RemoveAssetDialog","open","onClose","handleConfirm","Dialog","onOpenChange","ConfirmDialog","onConfirm","CardAsset","neutral100","AssetPreview","forwardRef","ref","img","src","alt","MuxPlayer","accentColor","primary500","audio","controls","FilePdf","displayName","RelativeBox","Wrapper","div","ActionRow","$blurry","CroppingActionRow","BadgeOverride","Badge","fontWeights","regular","UploadProgressWrapper","CroppingActions","onValidate","onDuplicate","FocusTrap","onEscape","Menu","Trigger","endIcon","Check","focusable","position","top","Content","onSelect","neutral500","neutral400","PreviewBox","canUpdate","canCopyLink","canDownload","onDelete","onCropFinish","onCropStart","onCropCancel","replacementFile","trackedLocation","previewRef","isCropImageReady","setIsCropImageReady","hasCropIntent","setHasCropIntent","setAssetUrl","thumbnailUrl","setThumbnailUrl","showConfirmDialog","setShowConfirmDialog","isLoadingUpload","cancelUpload","uploadError","progressUpload","fileLocalUrl","handleCropping","nextAsset","updatedAt","optimizedCachingImage","optimizedCachingThumbnailImage","duplicatedFile","updatedAsset","isInCroppingMode","handleDuplication","handleCropCancel","handleCropStart","_Fragment","Trash","DownloadIcon","Resize","onLoad","ReplaceMediaButton","onSelectMedia","acceptedMime","inputRef","e","handleChange","Button","VisuallyHidden","accept","data-testid","tabIndex","onChange","LoadingBody","fileInfoSchema","required","EditAssetContent","formatDate","submitButtonRef","setReplacementFile","folderStructure","folderStructureIsLoading","handleSubmit","editedAsset","assetType","didChangeLocation","changeLocation","handleStartCropping","handleCancelCropping","handleFinishCropping","formDisabled","handleConfirmClose","confirm","activeFolderId","initialFormData","handleClose","isEqual","minHeight","Loader","Footer","Formik","validationSchema","validateOnChange","onSubmit","initialValues","setFieldValue","Body","Form","noValidate","Field","Label","TextInput","disabled","hint","Hint","menuPortalTarget","querySelector","inputId","loading","EditAssetDialog","restProps","useBulkRemove","bulkRemoveQuery","filesAndFolders","payload","selected","remove","args","editFolderRequest","attrs","isEditing","method","useEditFolder","editFolder","EditFolderModalHeader","RemoveFolderDialog","folderSchema","nullable","EditFolderContent","parentFolderId","canCreate","isLoadingPermissions","isEditFolderLoading","setErrors","created","formikErrors","isEmpty","handleDelete","assetCount","count","folderCount","EditFolderDialog","useFolder","populate","retry","usePersistentState","setValue","stickyValue","localStorage","getItem","parse","setItem","Extension","CardActionsContainer","CardAction","CardContainer","Card","AssetCardBase","extension","isSelectable","onRemove","onEdit","subtitle","handlePropagationClick","role","CardHeader","CardCheckbox","checked","onCheckedChange","Pencil","CardBody","CardContent","CardTitle","CardSubtitle","grow","CardBadge","toLowerCase","AudioPreview","AudioPreviewWrapper","AudioAssetCard","DocAssetCard","ImageAssetCard","isUrlSigned","HAVE_FUTURE_DATA","VideoPreview","onLoadDuration","handleTimeUpdate","currentTarget","currentTime","video","videoHeight","videoWidth","getContext","drawImage","replaceWith","handleThumbnailVisibility","readyState","play","muted","onLoadedData","crossOrigin","onTimeUpdate","VideoPreviewWrapper","VideoAssetCard","setDuration","formattedDuration","CardTimer","AssetCard","local","handleSelect","commonAssetCardProps","Draggable","moveItem","drop","useDrop","hover","hoveredOverItem","isDragging","drag","useDrag","collect","monitor","opacity","AssetGridList","allowedTypes","onEditAsset","onSelectAsset","selectedAssets","onReorderAsset","title","KeyboardNavigable","tagName","fontWeight","currentAsset","CrumbSimpleMenuAsync","parentsToOmit","shouldFetch","setShouldFetch","useLocation","useQueryParams","allAscendants","filteredAscendants","ascendant","CrumbSimpleMenu","onOpen","MenuItem","small","isLink","Breadcrumbs","breadcrumbs","BaseBreadcrumbs","crumb","isCurrentFolderMediaLibrary","CrumbLink","to","ReactRouterLink","Crumb","isCurrent","EmptyAssetCard","PlaceholderSize","S","M","EmptyAssetGrid","Layouts","_","idx","EmptyAssets","icon","EmptyDocuments","content","textAlign","FolderCardContext","createContext","useFolderCard","useContext","FauxClickWrapper","StyledFolder","Folder","CardActionDisplay","$isCardActions","FolderCard","startAction","cardActions","ariaLabel","generatedId","useId","fodlerCtxValue","Provider","as","NavLink","borderStyle","borderWidth","shadow","right","StyledBox","FolderCardBody","BoxOutline","BoxTextDecoration","FolderCardBodyAction","FolderGridList","SortPicker","SingleSelect","SingleSelectOption","PreviewCell","mediaURL","Avatar","preview","fallback","CellContent","cellType","contentType","contentValue","parseISO","dateStyle","TableRows","onEditFolder","onSelectOne","rows","handleRowClickFn","element","elementType","Tbody","folderURL","currentRow","Tr","Td","Checkbox","cells","Link","Eye","TableList","indeterminate","onSelectAll","shouldDisableBulkSelect","sortQuery","sortBy","sortOrder","handleClickSort","isSorted","nextSortOrder","nextSort","Table","colCount","rowCount","Thead","Th","isUp","tableHeaderLabel","sortLabel","CaretUp","Tooltip","FilterTag","attribute","operator","formatTime","formattedValue","timeStyle","hour","minute","date","setHours","setMinutes","Tag","FilterList","appliedFilters","filtersSchema","onRemoveFilter","prevFilter","filterName","filterType","filterValue","decodedValue","decodeURIComponent","i","attributeName","filterObj","displayedOperator","FilterValueInput","DateTimePicker","clearLabel","formattedDate","onClear","getFilterList","fieldType","mainField","schema","intlLabel","FilterPopover","onToggle","modifiedData","setModifiedData","handleChangeFilterField","nextField","handleChangeOperator","encodedValue","alreadyAppliedFilters","filtersWithoutMimeType","hasCurrentFilter","filterToAdd","$not","$contains","hasFilter","modifiedDataFilter","filtersWithoutFile","oppositeFilter","oppositeFilterIndex","hasOppositeFilter","modifiedDataName","appliedFilter","Popover","sideOffset","form","minWidth","startIcon","Plus","fullWidth","Filters","setOpen","Filter","PageSize","htmlFor","PaginationContext","activePage","pageCount","usePagination","Pagination","paginationValue","PaginationText","linkWrapperStyles","css","$active","filterShadow","LinkWrapperButton","LinkWrapperDiv","defaultProps","PageLinkWrapper","primary700","ActionLinkWrapper","p","neutral300","DotsWrapper","PreviousLink","li","aria-disabled","ChevronLeft","NextLink","ChevronRight","PageLink","isActive","Dots","PaginationFooter","previousActivePage","nextActivePage","firstLinks","links","from","firstLinksToCreate","lastLinks","lastLinksToCreate","middleLinks","unshift","middleLinksToCreate","shouldShowDotsAfterFirstLink","shouldShowMiddleDots","beforeDotsLinksLength","afterDotsLength","SearchAsset","queryValue","setIsOpen","wrapperRef","useLayoutEffect","setTimeout","focus","handleClear","SearchForm","Searchbar","target","Search","TypographyMaxWidth","ActionContainer","BrowseStep","rawAssets","canRead","multiple","onAddAsset","onSelectAllAsset","setView","isGridView","isCurrentFolderLoading","allAllowedAsset","areAllAssetSelected","currAsset","hasSomeAssetSelected","isSearching","isFiltering","isSearchingOrFiltering","handleClickFolderCard","wrap","shrink","List","GridIcon","isFolderSelectionAllowed","withTooltip","filesCount","Divider","DialogFooter","SelectedStep","AssetContent","onAddFolder","initiallySelectedAssets","assetToEdit","setAssetToEdit","folderToEdit","setFolderToEdit","onChangeFolderParam","isLoadingAssets","errorAssets","isLoadingFolders","errorFolders","handleSelectAllAssets","allowedAssets","alreadySelected","selectedAsset","handleSelectAsset","hasError","Page","NoPermissions","handleMoveItem","hoverIndex","destIndex","orderedAssetsClone","nextAssets","handleFolderChange","TabsRoot","Tabs","AssetDialog","IconWrapper","MediaBox","OpaqueBox","FromComputerForm","onAddAssets","dragOver","setDragOver","handleDragOver","handleDragEnter","handleDragLeave","Computer","handleDrop","dataTransfer","onDragEnter","onDragLeave","onDragOver","onDrop","PicturePlus","left","bottom","FromUrlForm","setLoading","setError","urlArray","enableReinitialize","Textarea","AddAssetStep","UploadingAssetCard","onStatusChange","addUploadedFiles","badgeContent","uploadFile","handleCancel","Status","Idle","Uploading","Intermediate","PendingAssetStep","onRemoveAsset","onClickAddAsset","onCancelUpload","onUploadSucceed","assetCountRef","uploadStatus","setUploadStatus","assetsCountByType","accType","currentCount","handleStatusChange","assetKey","Steps","AddAsset","PendingAsset","UploadAssetDialog","initialAssetsToAdd","validateAssetsTypes","cb","step","setStep","setAssets","handleAddToPendingAssets","prevAssets","concat","moveToAddAsset","handleCancelUpload","handleUploadSuccess","handleAssetEditValidation","handleRemoveAsset","assetToRemove","STEPS","AssetSelect","AssetUpload","FolderCreate","MediaLibraryDialog","onSelectAssets","setFolderId","DocAsset","CarouselAsset","maxHeight","CarouselAssetActions","onDeleteAsset","CarouselActions","TextAlignTypography","EmptyStateAsset","onDropAsset","contains","relatedTarget","CarouselAssets","labelAction","onDeleteAssetFromMediaLibrary","onNext","onPrevious","selectedAssetIndex","forwardedRef","isEditingAsset","setIsEditingAsset","CarouselInput","secondaryLabel","selectedSlide","previousLabel","nextLabel","actions","CarouselSlide","n","m","MediaLibraryInput","useField","fieldAllowedTypes","uploadedFiles","setUploadedFiles","selectedIndex","setSelectedIndex","droppedAssets","setDroppedAssets","handleValidation","nextSelectedAssets","handleDeleteAssetFromMediaLibrary","nextValue","assetIndex","handleDeleteAsset","prevAsset","handleAssetEdit","timeout","fileTypes","handleAssetDrop","handleNext","handlePrevious","handleFilesUploadSucceeded","allowedUploadedFiles","admin","register","app","addMenuLink","Images","permissions","mod","default","Upload","addSettingsLink","ProtectedSettingsPage","addFields","addComponents","registerPlugin","registerTrads","locales","importedTrads","locale","catch"],"mappings":"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"}