@strapi/upload 5.52.1 → 5.52.3

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 (326) hide show
  1. package/dist/admin/components/AssetCard/AssetCard.js +1 -0
  2. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
  3. package/dist/admin/components/AssetCard/AssetCard.mjs +1 -0
  4. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
  5. package/dist/admin/components/AssetCard/AssetCardBase.js +1 -0
  6. package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
  7. package/dist/admin/components/AssetCard/AssetCardBase.mjs +1 -0
  8. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
  9. package/dist/admin/components/AssetCard/ImageAssetCard.js +1 -0
  10. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
  11. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +1 -0
  12. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
  13. package/dist/admin/components/AssetCard/UploadingAssetCard.js +1 -0
  14. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
  15. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +1 -0
  16. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
  17. package/dist/admin/components/AssetCard/VideoAssetCard.js +1 -0
  18. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
  19. package/dist/admin/components/AssetCard/VideoAssetCard.mjs +1 -0
  20. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
  21. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -0
  22. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  23. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -0
  24. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  25. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +1 -0
  26. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
  27. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +1 -0
  28. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
  29. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +1 -0
  30. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  31. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +1 -0
  32. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  33. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +1 -0
  34. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
  35. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +1 -0
  36. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
  37. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +1 -0
  38. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  39. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +1 -0
  40. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  41. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +1 -0
  42. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  43. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +1 -0
  44. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  45. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +1 -0
  46. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  47. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +1 -0
  48. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  49. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +1 -0
  50. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
  51. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +1 -0
  52. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
  53. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +1 -0
  54. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
  55. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +1 -0
  56. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
  57. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -0
  58. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  59. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -0
  60. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  61. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +1 -0
  62. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  63. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +1 -0
  64. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  65. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +1 -0
  66. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
  67. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +1 -0
  68. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
  69. package/dist/admin/components/FilterList/FilterList.js +2 -2
  70. package/dist/admin/components/FilterList/FilterList.js.map +1 -1
  71. package/dist/admin/components/FilterList/FilterList.mjs +2 -2
  72. package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
  73. package/dist/admin/components/FilterPopover/FilterPopover.js +4 -4
  74. package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
  75. package/dist/admin/components/FilterPopover/FilterPopover.mjs +4 -4
  76. package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
  77. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +1 -0
  78. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
  79. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +1 -0
  80. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
  81. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +1 -0
  82. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
  83. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +1 -0
  84. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
  85. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +4 -10
  86. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
  87. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +4 -10
  88. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
  89. package/dist/admin/components/SortPicker/SortPicker.js +1 -0
  90. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
  91. package/dist/admin/components/SortPicker/SortPicker.mjs +1 -0
  92. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
  93. package/dist/admin/components/TableList/CellContent.js +1 -0
  94. package/dist/admin/components/TableList/CellContent.js.map +1 -1
  95. package/dist/admin/components/TableList/CellContent.mjs +1 -0
  96. package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
  97. package/dist/admin/components/TableList/PreviewCell.js +1 -0
  98. package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
  99. package/dist/admin/components/TableList/PreviewCell.mjs +1 -0
  100. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
  101. package/dist/admin/components/TableList/TableList.js +1 -0
  102. package/dist/admin/components/TableList/TableList.js.map +1 -1
  103. package/dist/admin/components/TableList/TableList.mjs +1 -0
  104. package/dist/admin/components/TableList/TableList.mjs.map +1 -1
  105. package/dist/admin/components/TableList/TableRows.js +1 -0
  106. package/dist/admin/components/TableList/TableRows.js.map +1 -1
  107. package/dist/admin/components/TableList/TableRows.mjs +1 -0
  108. package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
  109. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +1 -0
  110. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
  111. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +1 -0
  112. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
  113. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +9 -21
  114. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  115. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +9 -21
  116. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  117. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +1 -0
  118. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  119. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +1 -0
  120. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  121. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +1 -0
  122. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  123. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +1 -0
  124. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  125. package/dist/admin/constants.js +1 -0
  126. package/dist/admin/constants.js.map +1 -1
  127. package/dist/admin/constants.mjs +1 -0
  128. package/dist/admin/constants.mjs.map +1 -1
  129. package/dist/admin/future/components/Drawer.js +11 -0
  130. package/dist/admin/future/components/Drawer.js.map +1 -1
  131. package/dist/admin/future/components/Drawer.mjs +11 -0
  132. package/dist/admin/future/components/Drawer.mjs.map +1 -1
  133. package/dist/admin/future/components/UploadProgressDialog.js +82 -13
  134. package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
  135. package/dist/admin/future/components/UploadProgressDialog.mjs +84 -15
  136. package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
  137. package/dist/admin/future/hooks/useApiErrorMessage.js +61 -0
  138. package/dist/admin/future/hooks/useApiErrorMessage.js.map +1 -0
  139. package/dist/admin/future/hooks/useApiErrorMessage.mjs +39 -0
  140. package/dist/admin/future/hooks/useApiErrorMessage.mjs.map +1 -0
  141. package/dist/admin/future/pages/Assets/AssetsPage.js +11 -0
  142. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  143. package/dist/admin/future/pages/Assets/AssetsPage.mjs +11 -0
  144. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  145. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +8 -6
  146. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -1
  147. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +8 -6
  148. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -1
  149. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +70 -59
  150. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
  151. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +72 -61
  152. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
  153. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +7 -5
  154. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  155. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +7 -5
  156. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  157. package/dist/admin/future/pages/Assets/components/AssetsTable.js +47 -28
  158. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  159. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +48 -29
  160. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  161. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +87 -2
  162. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
  163. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +89 -4
  164. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
  165. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js +3 -2
  166. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +1 -1
  167. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs +3 -2
  168. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +1 -1
  169. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +4 -2
  170. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
  171. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +4 -2
  172. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
  173. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +21 -3
  174. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
  175. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +21 -3
  176. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
  177. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +4 -3
  178. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
  179. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +5 -4
  180. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
  181. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +40 -2
  182. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
  183. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +40 -2
  184. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
  185. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.js +30 -0
  186. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +1 -0
  187. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.mjs +26 -0
  188. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.mjs.map +1 -0
  189. package/dist/admin/future/pages/Assets/hooks/useListFilters.js +5 -5
  190. package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -1
  191. package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +6 -6
  192. package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -1
  193. package/dist/admin/future/pages/Assets/hooks/useListSort.js +10 -10
  194. package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -1
  195. package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +11 -11
  196. package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -1
  197. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js +86 -0
  198. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
  199. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs +83 -0
  200. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
  201. package/dist/admin/future/pages/Assets/utils/renderedKeys.js +19 -0
  202. package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +1 -0
  203. package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs +17 -0
  204. package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +1 -0
  205. package/dist/admin/future/services/api.js +131 -13
  206. package/dist/admin/future/services/api.js.map +1 -1
  207. package/dist/admin/future/services/api.mjs +133 -15
  208. package/dist/admin/future/services/api.mjs.map +1 -1
  209. package/dist/admin/future/services/uploadFileViaXHR.js +9 -3
  210. package/dist/admin/future/services/uploadFileViaXHR.js.map +1 -1
  211. package/dist/admin/future/services/uploadFileViaXHR.mjs +9 -3
  212. package/dist/admin/future/services/uploadFileViaXHR.mjs.map +1 -1
  213. package/dist/admin/future/store/uploadProgress.js +98 -6
  214. package/dist/admin/future/store/uploadProgress.js.map +1 -1
  215. package/dist/admin/future/store/uploadProgress.mjs +94 -7
  216. package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
  217. package/dist/admin/future/utils/getApiErrorMessage.js +20 -0
  218. package/dist/admin/future/utils/getApiErrorMessage.js.map +1 -0
  219. package/dist/admin/future/utils/getApiErrorMessage.mjs +18 -0
  220. package/dist/admin/future/utils/getApiErrorMessage.mjs.map +1 -0
  221. package/dist/admin/index.js +1 -0
  222. package/dist/admin/index.js.map +1 -1
  223. package/dist/admin/index.mjs +1 -0
  224. package/dist/admin/index.mjs.map +1 -1
  225. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +1 -0
  226. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
  227. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +1 -0
  228. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
  229. package/dist/admin/pages/App/MediaLibrary.js +7 -9
  230. package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
  231. package/dist/admin/pages/App/MediaLibrary.mjs +8 -10
  232. package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
  233. package/dist/admin/pages/App/components/BulkActions.js +1 -0
  234. package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
  235. package/dist/admin/pages/App/components/BulkActions.mjs +1 -0
  236. package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
  237. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +1 -0
  238. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
  239. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +1 -0
  240. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
  241. package/dist/admin/pages/App/components/Filters.js +8 -8
  242. package/dist/admin/pages/App/components/Filters.js.map +1 -1
  243. package/dist/admin/pages/App/components/Filters.mjs +9 -9
  244. package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
  245. package/dist/admin/pages/App/components/Header.js +1 -1
  246. package/dist/admin/pages/App/components/Header.js.map +1 -1
  247. package/dist/admin/pages/App/components/Header.mjs +2 -2
  248. package/dist/admin/pages/App/components/Header.mjs.map +1 -1
  249. package/dist/admin/src/future/hooks/useApiErrorMessage.d.ts +17 -0
  250. package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +4 -1
  251. package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +4 -1
  252. package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
  253. package/dist/admin/src/future/pages/Assets/hooks/useIsAssetDetailsOpen.d.ts +18 -0
  254. package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
  255. package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +19 -0
  256. package/dist/admin/src/future/services/uploadFileViaXHR.d.ts +6 -1
  257. package/dist/admin/src/future/store/uploadProgress.d.ts +67 -1
  258. package/dist/admin/src/future/utils/getApiErrorMessage.d.ts +1 -0
  259. package/dist/admin/src/utils/index.d.ts +1 -0
  260. package/dist/admin/src/utils/rawFileToAsset.d.ts +2 -2
  261. package/dist/admin/src/utils/resolveFileMime.d.ts +13 -0
  262. package/dist/admin/translations/ca.json.js +1 -1
  263. package/dist/admin/translations/ca.json.mjs +1 -1
  264. package/dist/admin/translations/de.json.js +1 -1
  265. package/dist/admin/translations/de.json.mjs +1 -1
  266. package/dist/admin/translations/en.json.js +6 -2
  267. package/dist/admin/translations/en.json.js.map +1 -1
  268. package/dist/admin/translations/en.json.mjs +6 -2
  269. package/dist/admin/translations/en.json.mjs.map +1 -1
  270. package/dist/admin/translations/es.json.js +1 -1
  271. package/dist/admin/translations/es.json.mjs +1 -1
  272. package/dist/admin/translations/fr.json.js +1 -1
  273. package/dist/admin/translations/fr.json.mjs +1 -1
  274. package/dist/admin/translations/ja.json.js +1 -1
  275. package/dist/admin/translations/ja.json.mjs +1 -1
  276. package/dist/admin/translations/ko.json.js +1 -1
  277. package/dist/admin/translations/ko.json.mjs +1 -1
  278. package/dist/admin/translations/nl.json.js +1 -1
  279. package/dist/admin/translations/nl.json.mjs +1 -1
  280. package/dist/admin/translations/pl.json.js +1 -1
  281. package/dist/admin/translations/pl.json.mjs +1 -1
  282. package/dist/admin/translations/pt-BR.json.js +1 -1
  283. package/dist/admin/translations/pt-BR.json.mjs +1 -1
  284. package/dist/admin/translations/ru.json.js +1 -1
  285. package/dist/admin/translations/ru.json.mjs +1 -1
  286. package/dist/admin/translations/sk.json.js +1 -1
  287. package/dist/admin/translations/sk.json.mjs +1 -1
  288. package/dist/admin/translations/tr.json.js +1 -1
  289. package/dist/admin/translations/tr.json.mjs +1 -1
  290. package/dist/admin/translations/uk.json.js +1 -1
  291. package/dist/admin/translations/uk.json.mjs +1 -1
  292. package/dist/admin/translations/zh-Hans.json.js +1 -1
  293. package/dist/admin/translations/zh-Hans.json.mjs +1 -1
  294. package/dist/admin/translations/zh.json.js +1 -1
  295. package/dist/admin/translations/zh.json.mjs +1 -1
  296. package/dist/admin/utils/getFolderURL.js +2 -1
  297. package/dist/admin/utils/getFolderURL.js.map +1 -1
  298. package/dist/admin/utils/getFolderURL.mjs +2 -1
  299. package/dist/admin/utils/getFolderURL.mjs.map +1 -1
  300. package/dist/admin/utils/rawFileToAsset.js +5 -3
  301. package/dist/admin/utils/rawFileToAsset.js.map +1 -1
  302. package/dist/admin/utils/rawFileToAsset.mjs +5 -3
  303. package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
  304. package/dist/admin/utils/resolveFileMime.js +69 -0
  305. package/dist/admin/utils/resolveFileMime.js.map +1 -0
  306. package/dist/admin/utils/resolveFileMime.mjs +64 -0
  307. package/dist/admin/utils/resolveFileMime.mjs.map +1 -0
  308. package/dist/admin/utils/urlsToAssets.js +8 -4
  309. package/dist/admin/utils/urlsToAssets.js.map +1 -1
  310. package/dist/admin/utils/urlsToAssets.mjs +8 -4
  311. package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
  312. package/dist/server/services/ai-metadata.js +25 -5
  313. package/dist/server/services/ai-metadata.js.map +1 -1
  314. package/dist/server/services/ai-metadata.mjs +1 -1
  315. package/dist/server/services/ai-metadata.mjs.map +1 -1
  316. package/dist/server/services/upload.js +4 -0
  317. package/dist/server/services/upload.js.map +1 -1
  318. package/dist/server/services/upload.mjs +4 -0
  319. package/dist/server/services/upload.mjs.map +1 -1
  320. package/dist/server/src/services/upload.d.ts.map +1 -1
  321. package/package.json +7 -7
  322. package/dist/admin/future/utils/getBulkMoveErrorMessage.js +0 -23
  323. package/dist/admin/future/utils/getBulkMoveErrorMessage.js.map +0 -1
  324. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs +0 -21
  325. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs.map +0 -1
  326. package/dist/admin/src/future/utils/getBulkMoveErrorMessage.d.ts +0 -1
@@ -6,6 +6,7 @@ var reactIntl = require('react-intl');
6
6
  require('byte-size');
7
7
  require('date-fns');
8
8
  var getTrad = require('../../../utils/getTrad.js');
9
+ require('@strapi/admin/strapi-admin');
9
10
  require('qs');
10
11
  require('../../../utils/urlYupSchema.js');
11
12
  var BulkDeleteButton = require('./BulkDeleteButton.js');
@@ -1 +1 @@
1
- {"version":3,"file":"BulkActions.js","sources":["../../../../../admin/src/pages/App/components/BulkActions.tsx"],"sourcesContent":["import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n"],"names":["BulkActions","selected","onSuccess","currentFolder","formatMessage","useIntl","numberAssets","reduce","_this","val","type","files","count","_jsxs","Flex","gap","paddingBottom","_jsx","Typography","variant","textColor","id","getTrad","defaultMessage","numberFolders","filter","length","BulkDeleteButton","BulkMoveButton"],"mappings":";;;;;;;;;;;;;AA4BO,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAAA,GAAW,EAAE,EAAEC,SAAS,EAAEC,aAAa,EAAoB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,eAAeL,QAAAA,EAAUM,MAAAA,CAAO,SAAUC,KAAK,EAAEC,GAAG,EAAA;AACxD,QAAA,OAAOA,GAAAA,EAAKC,IAAAA,KAAS,QAAA,IAAY,OAAA,IAAWD,OAAOA,GAAAA,EAAKE,KAAAA,IAAS,OAAA,IAAWF,GAAAA,CAAIE,KAAK,GACjFH,KAAAA,GAAQC,GAAAA,EAAKE,KAAAA,EAAOC,QACpBJ,KAAAA,GAAQ,CAAA;IACd,CAAA,EAAG,CAAA,CAAA;AAEH,IAAA,qBACEK,eAAA,CAACC,iBAAAA,EAAAA;QAAKC,GAAAA,EAAK,CAAA;QAAGC,aAAAA,EAAe,CAAA;;0BAC3BC,cAAA,CAACC,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,SAAA;gBAAUC,SAAAA,EAAU,YAAA;0BACrChB,aAAAA,CACC;AACEiB,oBAAAA,EAAAA,EAAIC,eAAAA,CAAQ,sBAAA,CAAA;oBACZC,cAAAA,EACE;iBACJ,EACA;oBACEC,aAAAA,EAAevB,QAAAA,EAAUwB,OAAO,CAAC,EAAEf,IAAI,EAAE,GAAKA,SAAS,QAAA,CAAA,CAAUgB,MAAAA;AACjEpB,oBAAAA;AACF,iBAAA;;0BAIJW,cAAA,CAACU,iCAAAA,EAAAA;gBACC1B,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;0BAEbe,cAAA,CAACW,6BAAAA,EAAAA;gBACCzB,aAAAA,EAAeA,aAAAA;gBACfF,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;;;AAInB;;;;"}
1
+ {"version":3,"file":"BulkActions.js","sources":["../../../../../admin/src/pages/App/components/BulkActions.tsx"],"sourcesContent":["import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n"],"names":["BulkActions","selected","onSuccess","currentFolder","formatMessage","useIntl","numberAssets","reduce","_this","val","type","files","count","_jsxs","Flex","gap","paddingBottom","_jsx","Typography","variant","textColor","id","getTrad","defaultMessage","numberFolders","filter","length","BulkDeleteButton","BulkMoveButton"],"mappings":";;;;;;;;;;;;;;AA4BO,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAAA,GAAW,EAAE,EAAEC,SAAS,EAAEC,aAAa,EAAoB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,eAAeL,QAAAA,EAAUM,MAAAA,CAAO,SAAUC,KAAK,EAAEC,GAAG,EAAA;AACxD,QAAA,OAAOA,GAAAA,EAAKC,IAAAA,KAAS,QAAA,IAAY,OAAA,IAAWD,OAAOA,GAAAA,EAAKE,KAAAA,IAAS,OAAA,IAAWF,GAAAA,CAAIE,KAAK,GACjFH,KAAAA,GAAQC,GAAAA,EAAKE,KAAAA,EAAOC,QACpBJ,KAAAA,GAAQ,CAAA;IACd,CAAA,EAAG,CAAA,CAAA;AAEH,IAAA,qBACEK,eAAA,CAACC,iBAAAA,EAAAA;QAAKC,GAAAA,EAAK,CAAA;QAAGC,aAAAA,EAAe,CAAA;;0BAC3BC,cAAA,CAACC,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,SAAA;gBAAUC,SAAAA,EAAU,YAAA;0BACrChB,aAAAA,CACC;AACEiB,oBAAAA,EAAAA,EAAIC,eAAAA,CAAQ,sBAAA,CAAA;oBACZC,cAAAA,EACE;iBACJ,EACA;oBACEC,aAAAA,EAAevB,QAAAA,EAAUwB,OAAO,CAAC,EAAEf,IAAI,EAAE,GAAKA,SAAS,QAAA,CAAA,CAAUgB,MAAAA;AACjEpB,oBAAAA;AACF,iBAAA;;0BAIJW,cAAA,CAACU,iCAAAA,EAAAA;gBACC1B,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;0BAEbe,cAAA,CAACW,6BAAAA,EAAAA;gBACCzB,aAAAA,EAAeA,aAAAA;gBACfF,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;;;AAInB;;;;"}
@@ -4,6 +4,7 @@ import { useIntl } from 'react-intl';
4
4
  import 'byte-size';
5
5
  import 'date-fns';
6
6
  import { getTrad } from '../../../utils/getTrad.mjs';
7
+ import '@strapi/admin/strapi-admin';
7
8
  import 'qs';
8
9
  import '../../../utils/urlYupSchema.mjs';
9
10
  import { BulkDeleteButton } from './BulkDeleteButton.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"BulkActions.mjs","sources":["../../../../../admin/src/pages/App/components/BulkActions.tsx"],"sourcesContent":["import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n"],"names":["BulkActions","selected","onSuccess","currentFolder","formatMessage","useIntl","numberAssets","reduce","_this","val","type","files","count","_jsxs","Flex","gap","paddingBottom","_jsx","Typography","variant","textColor","id","getTrad","defaultMessage","numberFolders","filter","length","BulkDeleteButton","BulkMoveButton"],"mappings":";;;;;;;;;;;AA4BO,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAAA,GAAW,EAAE,EAAEC,SAAS,EAAEC,aAAa,EAAoB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,eAAeL,QAAAA,EAAUM,MAAAA,CAAO,SAAUC,KAAK,EAAEC,GAAG,EAAA;AACxD,QAAA,OAAOA,GAAAA,EAAKC,IAAAA,KAAS,QAAA,IAAY,OAAA,IAAWD,OAAOA,GAAAA,EAAKE,KAAAA,IAAS,OAAA,IAAWF,GAAAA,CAAIE,KAAK,GACjFH,KAAAA,GAAQC,GAAAA,EAAKE,KAAAA,EAAOC,QACpBJ,KAAAA,GAAQ,CAAA;IACd,CAAA,EAAG,CAAA,CAAA;AAEH,IAAA,qBACEK,IAAA,CAACC,IAAAA,EAAAA;QAAKC,GAAAA,EAAK,CAAA;QAAGC,aAAAA,EAAe,CAAA;;0BAC3BC,GAAA,CAACC,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,SAAA;gBAAUC,SAAAA,EAAU,YAAA;0BACrChB,aAAAA,CACC;AACEiB,oBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,sBAAA,CAAA;oBACZC,cAAAA,EACE;iBACJ,EACA;oBACEC,aAAAA,EAAevB,QAAAA,EAAUwB,OAAO,CAAC,EAAEf,IAAI,EAAE,GAAKA,SAAS,QAAA,CAAA,CAAUgB,MAAAA;AACjEpB,oBAAAA;AACF,iBAAA;;0BAIJW,GAAA,CAACU,gBAAAA,EAAAA;gBACC1B,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;0BAEbe,GAAA,CAACW,cAAAA,EAAAA;gBACCzB,aAAAA,EAAeA,aAAAA;gBACfF,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;;;AAInB;;;;"}
1
+ {"version":3,"file":"BulkActions.mjs","sources":["../../../../../admin/src/pages/App/components/BulkActions.tsx"],"sourcesContent":["import { Flex, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { getTrad } from '../../../utils';\n\nimport { BulkDeleteButton } from './BulkDeleteButton';\nimport { BulkMoveButton } from './BulkMoveButton';\n\nimport type { File } from '../../../../../shared/contracts/files';\nimport type {\n FolderDefinition,\n Folder as FolderInitial,\n} from '../../../../../shared/contracts/folders';\n\ninterface FolderWithType extends FolderInitial {\n type: string;\n}\n\nexport interface FileWithType extends File {\n type: string;\n}\n\nexport interface BulkActionsProps {\n selected: Array<FileWithType | FolderDefinition> | Array<FolderWithType | FileWithType>;\n onSuccess: () => void;\n currentFolder?: FolderWithType;\n}\n\nexport const BulkActions = ({ selected = [], onSuccess, currentFolder }: BulkActionsProps) => {\n const { formatMessage } = useIntl();\n const numberAssets = selected?.reduce(function (_this, val) {\n return val?.type === 'folder' && 'files' in val && val?.files && 'count' in val.files\n ? _this + val?.files?.count\n : _this + 1;\n }, 0);\n\n return (\n <Flex gap={2} paddingBottom={5}>\n <Typography variant=\"epsilon\" textColor=\"neutral600\">\n {formatMessage(\n {\n id: getTrad('list.assets.selected'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}} selected',\n },\n {\n numberFolders: selected?.filter(({ type }) => type === 'folder').length,\n numberAssets,\n }\n )}\n </Typography>\n\n <BulkDeleteButton\n selected={selected as Array<FileWithType | FolderDefinition>}\n onSuccess={onSuccess}\n />\n <BulkMoveButton\n currentFolder={currentFolder}\n selected={selected as Array<FolderWithType | FileWithType>}\n onSuccess={onSuccess}\n />\n </Flex>\n );\n};\n"],"names":["BulkActions","selected","onSuccess","currentFolder","formatMessage","useIntl","numberAssets","reduce","_this","val","type","files","count","_jsxs","Flex","gap","paddingBottom","_jsx","Typography","variant","textColor","id","getTrad","defaultMessage","numberFolders","filter","length","BulkDeleteButton","BulkMoveButton"],"mappings":";;;;;;;;;;;;AA4BO,MAAMA,WAAAA,GAAc,CAAC,EAAEC,QAAAA,GAAW,EAAE,EAAEC,SAAS,EAAEC,aAAa,EAAoB,GAAA;IACvF,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,eAAeL,QAAAA,EAAUM,MAAAA,CAAO,SAAUC,KAAK,EAAEC,GAAG,EAAA;AACxD,QAAA,OAAOA,GAAAA,EAAKC,IAAAA,KAAS,QAAA,IAAY,OAAA,IAAWD,OAAOA,GAAAA,EAAKE,KAAAA,IAAS,OAAA,IAAWF,GAAAA,CAAIE,KAAK,GACjFH,KAAAA,GAAQC,GAAAA,EAAKE,KAAAA,EAAOC,QACpBJ,KAAAA,GAAQ,CAAA;IACd,CAAA,EAAG,CAAA,CAAA;AAEH,IAAA,qBACEK,IAAA,CAACC,IAAAA,EAAAA;QAAKC,GAAAA,EAAK,CAAA;QAAGC,aAAAA,EAAe,CAAA;;0BAC3BC,GAAA,CAACC,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,SAAA;gBAAUC,SAAAA,EAAU,YAAA;0BACrChB,aAAAA,CACC;AACEiB,oBAAAA,EAAAA,EAAIC,OAAAA,CAAQ,sBAAA,CAAA;oBACZC,cAAAA,EACE;iBACJ,EACA;oBACEC,aAAAA,EAAevB,QAAAA,EAAUwB,OAAO,CAAC,EAAEf,IAAI,EAAE,GAAKA,SAAS,QAAA,CAAA,CAAUgB,MAAAA;AACjEpB,oBAAAA;AACF,iBAAA;;0BAIJW,GAAA,CAACU,gBAAAA,EAAAA;gBACC1B,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;0BAEbe,GAAA,CAACW,cAAAA,EAAAA;gBACCzB,aAAAA,EAAeA,aAAAA;gBACfF,QAAAA,EAAUA,QAAAA;gBACVC,SAAAA,EAAWA;;;;AAInB;;;;"}
@@ -9,6 +9,7 @@ var EmptyAssets = require('../../../components/EmptyAssets/EmptyAssets.js');
9
9
  require('byte-size');
10
10
  require('date-fns');
11
11
  var getTrad = require('../../../utils/getTrad.js');
12
+ require('@strapi/admin/strapi-admin');
12
13
  require('qs');
13
14
  require('../../../utils/urlYupSchema.js');
14
15
 
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyOrNoPermissions.js","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,cAAA,CAACC,uBAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,wBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,cAAA,CAACM,mBAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,cAAA,CAACS,UAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,eAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,eAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
1
+ {"version":3,"file":"EmptyOrNoPermissions.js","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,cAAA,CAACC,uBAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,wBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,cAAA,CAACM,mBAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,cAAA,CAACS,UAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,eAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,eAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
@@ -7,6 +7,7 @@ import { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets.mjs';
7
7
  import 'byte-size';
8
8
  import 'date-fns';
9
9
  import { getTrad } from '../../../utils/getTrad.mjs';
10
+ import '@strapi/admin/strapi-admin';
10
11
  import 'qs';
11
12
  import '../../../utils/urlYupSchema.mjs';
12
13
 
@@ -1 +1 @@
1
- {"version":3,"file":"EmptyOrNoPermissions.mjs","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,GAAA,CAACC,WAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,gBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,GAAA,CAACM,MAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,GAAA,CAACS,IAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,OAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,OAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
1
+ {"version":3,"file":"EmptyOrNoPermissions.mjs","sources":["../../../../../admin/src/pages/App/components/EmptyOrNoPermissions.tsx"],"sourcesContent":["import { Button } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyPermissions } from '@strapi/icons/symbols';\nimport { useIntl } from 'react-intl';\n\nimport { EmptyAssets } from '../../../components/EmptyAssets/EmptyAssets';\nimport { getTrad } from '../../../utils';\n\nexport interface EmptyOrNoPermissionsProps {\n canCreate: boolean;\n canRead: boolean;\n isFiltering: boolean;\n onActionClick: () => void;\n}\n\nconst getContentIntlMessage = ({\n isFiltering,\n canCreate,\n canRead,\n}: Omit<EmptyOrNoPermissionsProps, 'onActionClick'>) => {\n if (isFiltering) {\n return {\n id: 'list.assets-empty.title-withSearch',\n defaultMessage: 'There are no elements with the applied filters',\n };\n }\n\n if (canRead) {\n if (canCreate) {\n return {\n id: 'list.assets.empty-upload',\n defaultMessage: 'Upload your first assets...',\n };\n }\n\n return {\n id: 'list.assets.empty',\n defaultMessage: 'Media Library is empty',\n };\n }\n\n return {\n id: 'header.actions.no-permissions',\n defaultMessage: 'No permissions to view',\n };\n};\n\nexport const EmptyOrNoPermissions = ({\n canCreate,\n isFiltering,\n canRead,\n onActionClick,\n}: EmptyOrNoPermissionsProps) => {\n const { formatMessage } = useIntl();\n const content = getContentIntlMessage({ isFiltering, canCreate, canRead });\n\n return (\n <EmptyAssets\n icon={!canRead ? EmptyPermissions : undefined}\n action={\n canCreate &&\n !isFiltering && (\n <Button variant=\"secondary\" startIcon={<Plus />} onClick={onActionClick}>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n )\n }\n content={formatMessage({\n ...content,\n id: getTrad(content.id),\n })}\n />\n );\n};\n"],"names":["getContentIntlMessage","isFiltering","canCreate","canRead","id","defaultMessage","EmptyOrNoPermissions","onActionClick","formatMessage","useIntl","content","_jsx","EmptyAssets","icon","EmptyPermissions","undefined","action","Button","variant","startIcon","Plus","onClick","getTrad"],"mappings":";;;;;;;;;;;;;AAeA,MAAMA,qBAAAA,GAAwB,CAAC,EAC7BC,WAAW,EACXC,SAAS,EACTC,OAAO,EAC0C,GAAA;AACjD,IAAA,IAAIF,WAAAA,EAAa;QACf,OAAO;YACLG,EAAAA,EAAI,oCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;AAEA,IAAA,IAAIF,OAAAA,EAAS;AACX,QAAA,IAAID,SAAAA,EAAW;YACb,OAAO;gBACLE,EAAAA,EAAI,0BAAA;gBACJC,cAAAA,EAAgB;AAClB,aAAA;AACF,QAAA;QAEA,OAAO;YACLD,EAAAA,EAAI,mBAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;AACF,IAAA;IAEA,OAAO;QACLD,EAAAA,EAAI,+BAAA;QACJC,cAAAA,EAAgB;AAClB,KAAA;AACF,CAAA;AAEO,MAAMC,oBAAAA,GAAuB,CAAC,EACnCJ,SAAS,EACTD,WAAW,EACXE,OAAO,EACPI,aAAa,EACa,GAAA;IAC1B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,UAAUV,qBAAAA,CAAsB;AAAEC,QAAAA,WAAAA;AAAaC,QAAAA,SAAAA;AAAWC,QAAAA;AAAQ,KAAA,CAAA;AAExE,IAAA,qBACEQ,GAAA,CAACC,WAAAA,EAAAA;QACCC,IAAAA,EAAM,CAACV,UAAUW,gBAAAA,GAAmBC,SAAAA;QACpCC,MAAAA,EACEd,SAAAA,IACA,CAACD,WAAAA,kBACCU,GAAA,CAACM,MAAAA,EAAAA;YAAOC,OAAAA,EAAQ,WAAA;AAAYC,YAAAA,SAAAA,gBAAWR,GAAA,CAACS,IAAAA,EAAAA,EAAAA,CAAAA;YAASC,OAAAA,EAASd,aAAAA;sBACvDC,aAAAA,CAAc;AACbJ,gBAAAA,EAAAA,EAAIkB,OAAAA,CAAQ,2BAAA,CAAA;gBACZjB,cAAAA,EAAgB;AAClB,aAAA;;AAINK,QAAAA,OAAAA,EAASF,aAAAA,CAAc;AACrB,YAAA,GAAGE,OAAO;YACVN,EAAAA,EAAIkB,OAAAA,CAAQZ,QAAQN,EAAE;AACxB,SAAA;;AAGN;;;;"}
@@ -42,24 +42,24 @@ const Filters = ()=>{
42
42
  const [{ query }, setQuery] = strapiAdmin.useQueryParams();
43
43
  const filters = query?.filters?.$and || [];
44
44
  const handleRemoveFilter = (nextFilters)=>{
45
- setQuery({
46
- filters: {
45
+ setQuery(strapiAdmin.withEncodedUserParams(query, {
46
+ filters: strapiAdmin.deepEncodeQueryValues({
47
47
  $and: nextFilters
48
- },
48
+ }),
49
49
  page: 1
50
- });
50
+ }));
51
51
  };
52
52
  const handleSubmit = (filters)=>{
53
53
  trackUsage('didFilterMediaLibraryElements', {
54
54
  location: 'content-manager',
55
55
  filter: Object.keys(filters[filters.length - 1])[0]
56
56
  });
57
- setQuery({
58
- filters: {
57
+ setQuery(strapiAdmin.withEncodedUserParams(query, {
58
+ filters: strapiAdmin.deepEncodeQueryValues({
59
59
  $and: filters
60
- },
60
+ }),
61
61
  page: 1
62
- });
62
+ }));
63
63
  };
64
64
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Popover.Root, {
65
65
  open: open,
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\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 displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;QAC7DL,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAME;AAAY,aAAA;YAAGC,IAAAA,EAAM;AAAE,SAAA,CAAA;AACrD,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACL,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1CW,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACT,OAAO,CAACA,OAAAA,CAAQU,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;QACAZ,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAMD;AAAQ,aAAA;YAAGI,IAAAA,EAAM;AAAE,SAAA,CAAA;AACjD,IAAA,CAAA;IAEA,qBACEO,eAAA,CAACC,qBAAQC,IAAI,EAAA;QAACxB,IAAAA,EAAMA,IAAAA;QAAMyB,YAAAA,EAAcxB,OAAAA;;AACtC,0BAAAyB,cAAA,CAACH,qBAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,cAAA,CAACE,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,cAAA,CAACK,YAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD5B,aAAAA,CAAc;wBAAE6B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,cAAA,CAACS,2BAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,iCAAAA;gBAClBzB,OAAAA,EAASA,OAAAA;gBACT0B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUrC;;0BAEZyB,cAAA,CAACa,qBAAAA,EAAAA;gBACCC,cAAAA,EAAgB7B,OAAAA;gBAChB8B,aAAAA,EAAeL,iCAAAA;gBACfM,cAAAA,EAAgB7B;;;;AAIxB;;;;"}
1
+ {"version":3,"file":"Filters.js","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n deepEncodeQueryValues,\n useQueryParams,\n withEncodedUserParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery(\n withEncodedUserParams(query, {\n filters: deepEncodeQueryValues({ $and: nextFilters }),\n page: 1,\n }) as Query\n );\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery(\n withEncodedUserParams(query, {\n filters: deepEncodeQueryValues({ $and: filters }),\n page: 1,\n }) as Query\n );\n };\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 displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","withEncodedUserParams","deepEncodeQueryValues","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAoBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,uBAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,0BAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;AAC7DL,QAAAA,QAAAA,CACEM,kCAAsBP,KAAAA,EAAO;AAC3BG,YAAAA,OAAAA,EAASK,iCAAAA,CAAsB;gBAAEJ,IAAAA,EAAME;AAAY,aAAA,CAAA;YACnDG,IAAAA,EAAM;AACR,SAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACP,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1Ca,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACX,OAAO,CAACA,OAAAA,CAAQY,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;AACAd,QAAAA,QAAAA,CACEM,kCAAsBP,KAAAA,EAAO;AAC3BG,YAAAA,OAAAA,EAASK,iCAAAA,CAAsB;gBAAEJ,IAAAA,EAAMD;AAAQ,aAAA,CAAA;YAC/CM,IAAAA,EAAM;AACR,SAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;IAEA,qBACEO,eAAA,CAACC,qBAAQC,IAAI,EAAA;QAAC1B,IAAAA,EAAMA,IAAAA;QAAM2B,YAAAA,EAAc1B,OAAAA;;AACtC,0BAAA2B,cAAA,CAACH,qBAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,cAAA,CAACE,mBAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,cAAA,CAACK,YAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD9B,aAAAA,CAAc;wBAAE+B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,cAAA,CAACS,2BAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,iCAAAA;gBAClB3B,OAAAA,EAASA,OAAAA;gBACT4B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUvC;;0BAEZ2B,cAAA,CAACa,qBAAAA,EAAAA;gBACCC,cAAAA,EAAgB/B,OAAAA;gBAChBgC,aAAAA,EAAeL,iCAAAA;gBACfM,cAAAA,EAAgB/B;;;;AAIxB;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
- import { useQueryParams } from '@strapi/admin/strapi-admin';
3
+ import { useQueryParams, withEncodedUserParams, deepEncodeQueryValues } from '@strapi/admin/strapi-admin';
4
4
  import { Popover, Button } from '@strapi/design-system';
5
5
  import { Filter } from '@strapi/icons';
6
6
  import { useIntl } from 'react-intl';
@@ -20,24 +20,24 @@ const Filters = ()=>{
20
20
  const [{ query }, setQuery] = useQueryParams();
21
21
  const filters = query?.filters?.$and || [];
22
22
  const handleRemoveFilter = (nextFilters)=>{
23
- setQuery({
24
- filters: {
23
+ setQuery(withEncodedUserParams(query, {
24
+ filters: deepEncodeQueryValues({
25
25
  $and: nextFilters
26
- },
26
+ }),
27
27
  page: 1
28
- });
28
+ }));
29
29
  };
30
30
  const handleSubmit = (filters)=>{
31
31
  trackUsage('didFilterMediaLibraryElements', {
32
32
  location: 'content-manager',
33
33
  filter: Object.keys(filters[filters.length - 1])[0]
34
34
  });
35
- setQuery({
36
- filters: {
35
+ setQuery(withEncodedUserParams(query, {
36
+ filters: deepEncodeQueryValues({
37
37
  $and: filters
38
- },
38
+ }),
39
39
  page: 1
40
- });
40
+ }));
41
41
  };
42
42
  return /*#__PURE__*/ jsxs(Popover.Root, {
43
43
  open: open,
@@ -1 +1 @@
1
- {"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery({ filters: { $and: nextFilters }, page: 1 } as Query);\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery({ filters: { $and: filters }, page: 1 } as Query);\n };\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 displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;MAgBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;QAC7DL,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAME;AAAY,aAAA;YAAGC,IAAAA,EAAM;AAAE,SAAA,CAAA;AACrD,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACL,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1CW,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACT,OAAO,CAACA,OAAAA,CAAQU,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;QACAZ,QAAAA,CAAS;YAAEE,OAAAA,EAAS;gBAAEC,IAAAA,EAAMD;AAAQ,aAAA;YAAGI,IAAAA,EAAM;AAAE,SAAA,CAAA;AACjD,IAAA,CAAA;IAEA,qBACEO,IAAA,CAACC,QAAQC,IAAI,EAAA;QAACxB,IAAAA,EAAMA,IAAAA;QAAMyB,YAAAA,EAAcxB,OAAAA;;AACtC,0BAAAyB,GAAA,CAACH,QAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,GAAA,CAACE,MAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,GAAA,CAACK,MAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD5B,aAAAA,CAAc;wBAAE6B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,GAAA,CAACS,aAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,gBAAAA;gBAClBzB,OAAAA,EAASA,OAAAA;gBACT0B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUrC;;0BAEZyB,GAAA,CAACa,UAAAA,EAAAA;gBACCC,cAAAA,EAAgB7B,OAAAA;gBAChB8B,aAAAA,EAAeL,gBAAAA;gBACfM,cAAAA,EAAgB7B;;;;AAIxB;;;;"}
1
+ {"version":3,"file":"Filters.mjs","sources":["../../../../../admin/src/pages/App/components/Filters.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n deepEncodeQueryValues,\n useQueryParams,\n withEncodedUserParams,\n} from '@strapi/admin/strapi-admin';\nimport { Button, Popover } from '@strapi/design-system';\nimport { Filter } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\n\nimport { FilterList } from '../../../components/FilterList/FilterList';\nimport { FilterPopover } from '../../../components/FilterPopover/FilterPopover';\nimport { useTracking } from '../../../hooks/useTracking';\nimport { displayedFilters } from '../../../utils';\n\nimport type { Query } from '../../../../../shared/contracts/files';\nimport type { FilterListProps } from '../../../components/FilterList/FilterList';\nimport type { FilterPopoverProps } from '../../../components/FilterPopover/FilterPopover';\n\nexport const Filters = () => {\n const [open, setOpen] = React.useState(false);\n const { formatMessage } = useIntl();\n const { trackUsage } = useTracking();\n const [{ query }, setQuery] = useQueryParams<Query>();\n const filters = query?.filters?.$and || [];\n\n const handleRemoveFilter: FilterListProps['onRemoveFilter'] = (nextFilters) => {\n setQuery(\n withEncodedUserParams(query, {\n filters: deepEncodeQueryValues({ $and: nextFilters }),\n page: 1,\n }) as Query\n );\n };\n\n const handleSubmit: FilterPopoverProps['onSubmit'] = (filters) => {\n trackUsage('didFilterMediaLibraryElements', {\n location: 'content-manager',\n filter: Object.keys(filters[filters.length - 1])[0],\n });\n setQuery(\n withEncodedUserParams(query, {\n filters: deepEncodeQueryValues({ $and: filters }),\n page: 1,\n }) as Query\n );\n };\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 displayedFilters={displayedFilters}\n filters={filters}\n onSubmit={handleSubmit}\n onToggle={setOpen as FilterPopoverProps['onToggle']}\n />\n <FilterList\n appliedFilters={filters as FilterListProps['appliedFilters']}\n filtersSchema={displayedFilters}\n onRemoveFilter={handleRemoveFilter}\n />\n </Popover.Root>\n );\n};\n"],"names":["Filters","open","setOpen","React","useState","formatMessage","useIntl","trackUsage","useTracking","query","setQuery","useQueryParams","filters","$and","handleRemoveFilter","nextFilters","withEncodedUserParams","deepEncodeQueryValues","page","handleSubmit","location","filter","Object","keys","length","_jsxs","Popover","Root","onOpenChange","_jsx","Trigger","Button","variant","startIcon","Filter","size","id","defaultMessage","FilterPopover","displayedFilters","onSubmit","onToggle","FilterList","appliedFilters","filtersSchema","onRemoveFilter"],"mappings":";;;;;;;;;;;;;;;MAoBaA,OAAAA,GAAU,IAAA;AACrB,IAAA,MAAM,CAACC,IAAAA,EAAMC,OAAAA,CAAQ,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACvC,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEC,UAAU,EAAE,GAAGC,WAAAA,EAAAA;AACvB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;AAC9B,IAAA,MAAMC,OAAAA,GAAUH,KAAAA,EAAOG,OAAAA,EAASC,IAAAA,IAAQ,EAAE;AAE1C,IAAA,MAAMC,qBAAwD,CAACC,WAAAA,GAAAA;AAC7DL,QAAAA,QAAAA,CACEM,sBAAsBP,KAAAA,EAAO;AAC3BG,YAAAA,OAAAA,EAASK,qBAAAA,CAAsB;gBAAEJ,IAAAA,EAAME;AAAY,aAAA,CAAA;YACnDG,IAAAA,EAAM;AACR,SAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;AAEA,IAAA,MAAMC,eAA+C,CAACP,OAAAA,GAAAA;AACpDL,QAAAA,UAAAA,CAAW,+BAAA,EAAiC;YAC1Ca,QAAAA,EAAU,iBAAA;YACVC,MAAAA,EAAQC,MAAAA,CAAOC,IAAI,CAACX,OAAO,CAACA,OAAAA,CAAQY,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CAAA;AACnD,SAAA,CAAA;AACAd,QAAAA,QAAAA,CACEM,sBAAsBP,KAAAA,EAAO;AAC3BG,YAAAA,OAAAA,EAASK,qBAAAA,CAAsB;gBAAEJ,IAAAA,EAAMD;AAAQ,aAAA,CAAA;YAC/CM,IAAAA,EAAM;AACR,SAAA,CAAA,CAAA;AAEJ,IAAA,CAAA;IAEA,qBACEO,IAAA,CAACC,QAAQC,IAAI,EAAA;QAAC1B,IAAAA,EAAMA,IAAAA;QAAM2B,YAAAA,EAAc1B,OAAAA;;AACtC,0BAAA2B,GAAA,CAACH,QAAQI,OAAO,EAAA;AACd,gBAAA,QAAA,gBAAAD,GAAA,CAACE,MAAAA,EAAAA;oBAAOC,OAAAA,EAAQ,UAAA;AAAWC,oBAAAA,SAAAA,gBAAWJ,GAAA,CAACK,MAAAA,EAAAA,EAAAA,CAAAA;oBAAWC,IAAAA,EAAK,GAAA;8BACpD9B,aAAAA,CAAc;wBAAE+B,EAAAA,EAAI,mBAAA;wBAAqBC,cAAAA,EAAgB;AAAU,qBAAA;;;0BAGxER,GAAA,CAACS,aAAAA,EAAAA;gBACCC,gBAAAA,EAAkBA,gBAAAA;gBAClB3B,OAAAA,EAASA,OAAAA;gBACT4B,QAAAA,EAAUrB,YAAAA;gBACVsB,QAAAA,EAAUvC;;0BAEZ2B,GAAA,CAACa,UAAAA,EAAAA;gBACCC,cAAAA,EAAgB/B,OAAAA;gBAChBgC,aAAAA,EAAeL,gBAAAA;gBACfM,cAAAA,EAAgB/B;;;;AAIxB;;;;"}
@@ -18,7 +18,7 @@ const Header = ({ breadcrumbs = null, canCreate, folder = null, onToggleEditFold
18
18
  const { pathname } = reactRouterDom.useLocation();
19
19
  const [{ query }] = strapiAdmin.useQueryParams();
20
20
  const backQuery = {
21
- ...query,
21
+ ...strapiAdmin.deepEncodeQueryValues(query),
22
22
  folder: folder?.parent && typeof folder.parent !== 'number' && folder.parent.id ? folder.parent.id : undefined,
23
23
  folderPath: folder?.parent && typeof folder.parent !== 'number' && folder.parent.path ? folder.parent.path : undefined
24
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"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"}
1
+ {"version":3,"file":"Header.js","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { deepEncodeQueryValues, useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...deepEncodeQueryValues(query),\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","deepEncodeQueryValues","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';
2
+ import { useQueryParams, deepEncodeQueryValues, Layouts } from '@strapi/admin/strapi-admin';
3
3
  import { Flex, Button, Link } from '@strapi/design-system';
4
4
  import { Plus, ArrowLeft } from '@strapi/icons';
5
5
  import { stringify } from 'qs';
@@ -16,7 +16,7 @@ const Header = ({ breadcrumbs = null, canCreate, folder = null, onToggleEditFold
16
16
  const { pathname } = useLocation();
17
17
  const [{ query }] = useQueryParams();
18
18
  const backQuery = {
19
- ...query,
19
+ ...deepEncodeQueryValues(query),
20
20
  folder: folder?.parent && typeof folder.parent !== 'number' && folder.parent.id ? folder.parent.id : undefined,
21
21
  folderPath: folder?.parent && typeof folder.parent !== 'number' && folder.parent.path ? folder.parent.path : undefined
22
22
  };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...query,\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"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"}
1
+ {"version":3,"file":"Header.mjs","sources":["../../../../../admin/src/pages/App/components/Header.tsx"],"sourcesContent":["import { deepEncodeQueryValues, useQueryParams, Layouts } from '@strapi/admin/strapi-admin';\nimport { Button, Flex, Link } from '@strapi/design-system';\nimport { ArrowLeft, Plus } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useLocation, NavLink } from 'react-router-dom';\n\nimport { Breadcrumbs } from '../../../components/Breadcrumbs/Breadcrumbs';\nimport { getTrad } from '../../../utils';\n\nimport type { Folder } from '../../../../../shared/contracts/folders';\nimport type { CrumbDefinition } from '../../../components/Breadcrumbs/Breadcrumbs';\n\ninterface FolderDefinition extends Omit<Folder, 'children' | 'files' | 'parent'> {\n children: {\n count: number;\n };\n files: {\n count: number;\n };\n parent?: FolderDefinition;\n}\n\nexport interface HeaderProps {\n breadcrumbs?: Array<CrumbDefinition> | null;\n canCreate: boolean;\n folder?: FolderDefinition | null;\n onToggleEditFolderDialog: (args?: { created?: boolean }) => void;\n onToggleUploadAssetDialog: () => void;\n}\n\nexport const Header = ({\n breadcrumbs = null,\n canCreate,\n folder = null,\n onToggleEditFolderDialog,\n onToggleUploadAssetDialog,\n}: HeaderProps) => {\n const { formatMessage } = useIntl();\n const { pathname } = useLocation();\n const [{ query }] = useQueryParams();\n const backQuery = {\n ...deepEncodeQueryValues(query),\n folder:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.id\n ? folder.parent.id\n : undefined,\n folderPath:\n folder?.parent && typeof folder.parent !== 'number' && folder.parent.path\n ? folder.parent.path\n : undefined,\n };\n\n return (\n <Layouts.Header\n title={formatMessage({\n id: getTrad('plugin.name'),\n defaultMessage: `Media Library`,\n })}\n subtitle={\n breadcrumbs &&\n typeof breadcrumbs !== 'boolean' &&\n folder && (\n <Breadcrumbs\n label={formatMessage({\n id: getTrad('header.breadcrumbs.nav.label'),\n defaultMessage: 'Folders navigation',\n })}\n breadcrumbs={breadcrumbs}\n currentFolderId={folder?.id}\n />\n )\n }\n navigationAction={\n folder && (\n <Link\n tag={NavLink}\n startIcon={<ArrowLeft />}\n to={`${pathname}?${stringify(backQuery, { encode: false })}`}\n >\n {formatMessage({\n id: getTrad('header.actions.folder-level-up'),\n defaultMessage: 'Back',\n })}\n </Link>\n )\n }\n primaryAction={\n canCreate && (\n <Flex gap={2} width=\"100%\">\n <Button\n startIcon={<Plus />}\n variant=\"secondary\"\n onClick={onToggleEditFolderDialog}\n fullWidth\n >\n {formatMessage({\n id: getTrad('header.actions.add-folder'),\n defaultMessage: 'Add new folder',\n })}\n </Button>\n\n <Button startIcon={<Plus />} onClick={onToggleUploadAssetDialog} fullWidth>\n {formatMessage({\n id: getTrad('header.actions.add-assets'),\n defaultMessage: 'Add new assets',\n })}\n </Button>\n </Flex>\n )\n }\n />\n );\n};\n"],"names":["Header","breadcrumbs","canCreate","folder","onToggleEditFolderDialog","onToggleUploadAssetDialog","formatMessage","useIntl","pathname","useLocation","query","useQueryParams","backQuery","deepEncodeQueryValues","parent","id","undefined","folderPath","path","_jsx","Layouts","title","getTrad","defaultMessage","subtitle","Breadcrumbs","label","currentFolderId","navigationAction","Link","tag","NavLink","startIcon","ArrowLeft","to","stringify","encode","primaryAction","_jsxs","Flex","gap","width","Button","Plus","variant","onClick","fullWidth"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Turns an API error into something displayable, falling back to the caller's
3
+ * own localized copy when the error carries nothing usable.
4
+ *
5
+ * The server sends either a bare code (`body.ts`'s `FileTooBig`) or a ready-made
6
+ * sentence, and the same button can produce either. A code with a
7
+ * `upload.apiError.*` entry resolves to it; anything else is returned untouched.
8
+ *
9
+ * Checking `messages` rather than passing the text as `defaultMessage` keeps
10
+ * untrusted server text away from the ICU parser, where a stray `{` (a
11
+ * validation message echoing a field name) fails to parse — silent in
12
+ * production, but a throw under Jest, which patches `console.error`.
13
+ *
14
+ * Memoized because consumers hold the result in their own `useCallback`
15
+ * dependency arrays.
16
+ */
17
+ export declare const useApiErrorMessage: () => (error: unknown, fallback: string) => string;
@@ -1,9 +1,12 @@
1
+ import { type ItemKey } from '../utils/selection';
1
2
  import type { File } from '../../../../../../shared/contracts/files';
2
3
  import type { Folder } from '../../../../../../shared/contracts/folders';
3
4
  interface AssetsGridProps {
4
5
  assets: File[];
5
6
  folders?: Folder[];
7
+ /** Keys of the rendered items, in render order. Owned by the view. */
8
+ renderedKeys?: ItemKey[];
6
9
  onAssetItemClick: (assetId: number) => void;
7
10
  }
8
- export declare const AssetsGrid: ({ assets, folders, onAssetItemClick }: AssetsGridProps) => import("react/jsx-runtime").JSX.Element | null;
11
+ export declare const AssetsGrid: ({ assets, folders, renderedKeys, onAssetItemClick, }: AssetsGridProps) => import("react/jsx-runtime").JSX.Element | null;
9
12
  export {};
@@ -1,4 +1,5 @@
1
1
  import { type MixedItem } from '../utils/mergeMixedList';
2
+ import { type ItemKey } from '../utils/selection';
2
3
  import type { File } from '../../../../../../shared/contracts/files';
3
4
  import type { Folder } from '../../../../../../shared/contracts/folders';
4
5
  interface AssetsTableProps {
@@ -9,7 +10,9 @@ interface AssetsTableProps {
9
10
  * order instead of folders-first. Range selection follows the same order.
10
11
  */
11
12
  mixedItems?: MixedItem[] | null;
13
+ /** Keys of the rendered rows, in render order. Owned by the view. */
14
+ renderedKeys?: ItemKey[];
12
15
  onAssetItemClick: (assetId: number) => void;
13
16
  }
14
- export declare const AssetsTable: ({ assets, folders, mixedItems, onAssetItemClick, }: AssetsTableProps) => import("react/jsx-runtime").JSX.Element | null;
17
+ export declare const AssetsTable: ({ assets, folders, mixedItems, renderedKeys, onAssetItemClick, }: AssetsTableProps) => import("react/jsx-runtime").JSX.Element | null;
15
18
  export {};
@@ -1,4 +1,5 @@
1
1
  import { type ItemLocations } from '../../../utils/itemLocations';
2
+ import { type ItemKey } from '../utils/selection';
2
3
  import type { File } from '../../../../../../shared/contracts/files';
3
4
  interface BulkActionsBarProps {
4
5
  /**
@@ -16,6 +17,12 @@ interface BulkActionsBarProps {
16
17
  * everything, which falls back to the folder currently open.
17
18
  */
18
19
  locations?: ItemLocations;
20
+ /**
21
+ * Keys of the items on screen, in render order. Owned by the view so
22
+ * select-all covers exactly what the user can see — in mixed mode that is not
23
+ * every folder.
24
+ */
25
+ renderedKeys?: ItemKey[];
19
26
  }
20
- export declare const BulkActionsBar: ({ assets, locations, }: BulkActionsBarProps) => import("react/jsx-runtime").JSX.Element | null;
27
+ export declare const BulkActionsBar: ({ assets, locations, renderedKeys, }: BulkActionsBarProps) => import("react/jsx-runtime").JSX.Element | null;
21
28
  export {};
@@ -0,0 +1,18 @@
1
+ /** Name of the parameter to look for in the URL to open the asset details drawer. */
2
+ export declare const ASSET_DETAILS_URL_PARAM = "assetId";
3
+ /**
4
+ * The asset id in the URL, or `null` when the param is absent or unparseable.
5
+ *
6
+ * One definition shared by the drawer (which needs the id) and the "is it open?"
7
+ * hook below, so the two can never disagree about what counts as open.
8
+ */
9
+ export declare const parseAssetDetailsId: (raw: string | undefined) => number | null;
10
+ /**
11
+ * Whether the asset details drawer is open, derived purely from the URL.
12
+ *
13
+ * Deliberately separate from `useAssetDetailsParam`, which additionally owns the
14
+ * drawer's mount lifecycle: its `shouldRenderDrawer` only stays correct in the
15
+ * component wired to the close animation, so a second caller would strand it at
16
+ * `true`. Anything that just needs the answer reads this instead.
17
+ */
18
+ export declare const useIsAssetDetailsOpen: () => boolean;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Merges just-uploaded assets into the loaded asset list so each one appears as
3
+ * soon as its own upload finishes, rather than when the whole batch settles.
4
+ *
5
+ * The upload is one mutation per batch, so its cache invalidation fires once at
6
+ * the end. These helpers bridge that gap purely client-side: the completed
7
+ * uploads already sit in the progress store as full `File` objects, so they can
8
+ * be placed into the list at their sort position with no extra request.
9
+ *
10
+ * The server list stays authoritative — merging never reorders it, and an id it
11
+ * already contains wins over the local copy, so the end-of-batch refetch
12
+ * silently takes over.
13
+ */
14
+ import type { File } from '../../../../../../shared/contracts/files';
15
+ /**
16
+ * Comparator matching a `<field>:<ASC|DESC>` sort rule, as sent to the API.
17
+ *
18
+ * Ties break on id so the order is total: without it, two files sharing a
19
+ * timestamp could swap places between renders.
20
+ */
21
+ export declare const getAssetComparator: (rule?: string) => (a: File, b: File) => number;
22
+ /**
23
+ * Places `uploaded` into `assets` at their sort position.
24
+ *
25
+ * An upload that sorts past everything loaded is dropped unless the list is
26
+ * fully loaded: it belongs on a page the user has not reached, and appending it
27
+ * would show it adjacent to the last loaded item instead of at its real place.
28
+ */
29
+ export declare const mergeUploadedAssets: ({ assets, uploaded, sort, hasNextPage, }: {
30
+ assets: File[];
31
+ uploaded: File[];
32
+ sort?: string;
33
+ /** Whether more pages remain, i.e. the tail of the list is not loaded. */
34
+ hasNextPage: boolean;
35
+ }) => File[];
@@ -0,0 +1,19 @@
1
+ import { type ItemKey } from './selection';
2
+ import type { MixedItem } from './mergeMixedList';
3
+ import type { File } from '../../../../../../shared/contracts/files';
4
+ import type { Folder } from '../../../../../../shared/contracts/folders';
5
+ /**
6
+ * The keys of the items actually on screen, in render order.
7
+ *
8
+ * Single source for every consumer of the rendered set — range selection,
9
+ * select-all and the bulk action bar. Derived once so they cannot disagree:
10
+ * in "Folders: Mixed with files" the rows come from `mergeMixedList`, which
11
+ * withholds folders sorting after the last loaded asset, so `folders` is not
12
+ * the rendered folder set.
13
+ */
14
+ export declare const buildRenderedKeys: ({ folders, assets, mixedItems, }: {
15
+ folders: Folder[];
16
+ assets: File[];
17
+ /** The interleaved rows, when the table is in mixed mode. */
18
+ mixedItems?: MixedItem[] | null;
19
+ }) => ItemKey[];
@@ -12,7 +12,12 @@ export declare class UploadAbortedError extends Error {
12
12
  */
13
13
  export declare class UploadFileError extends Error {
14
14
  status?: number;
15
- constructor(message: string, status?: number);
15
+ /**
16
+ * Whether `message` came from the response body. The fallbacks this module
17
+ * invents are hardcoded English; callers with localized text should use theirs.
18
+ */
19
+ isServerMessage: boolean;
20
+ constructor(message: string, status?: number, isServerMessage?: boolean);
16
21
  }
17
22
  export type UploadProgressCallback = (bytes: number, total: number) => void;
18
23
  export declare const uploadFileViaXHR: <T = File>(url: string, token: string | null | undefined, formData: FormData, signal: AbortSignal, onProgress?: UploadProgressCallback) => Promise<T>;