@strapi/upload 5.51.0 → 5.51.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/dist/admin/components/AssetCard/VideoPreview.js +1 -1
  2. package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -1
  3. package/dist/admin/components/AssetCard/VideoPreview.mjs +1 -1
  4. package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -1
  5. package/dist/admin/components/TableList/TableList.js +1 -1
  6. package/dist/admin/components/TableList/TableList.js.map +1 -1
  7. package/dist/admin/components/TableList/TableList.mjs +1 -1
  8. package/dist/admin/components/TableList/TableList.mjs.map +1 -1
  9. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +21 -4
  10. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  11. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +21 -4
  12. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  13. package/dist/admin/future/components/Drawer.js +3 -1
  14. package/dist/admin/future/components/Drawer.js.map +1 -1
  15. package/dist/admin/future/components/Drawer.mjs +3 -1
  16. package/dist/admin/future/components/Drawer.mjs.map +1 -1
  17. package/dist/admin/future/components/UploadProgressDialog.js +200 -27
  18. package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
  19. package/dist/admin/future/components/UploadProgressDialog.mjs +203 -30
  20. package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
  21. package/dist/admin/future/hooks/useMediaLibraryPermissions.js +35 -0
  22. package/dist/admin/future/hooks/useMediaLibraryPermissions.js.map +1 -0
  23. package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs +33 -0
  24. package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs.map +1 -0
  25. package/dist/admin/future/pages/Assets/AssetsPage.js +344 -150
  26. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  27. package/dist/admin/future/pages/Assets/AssetsPage.mjs +343 -149
  28. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  29. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +75 -32
  30. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
  31. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +75 -32
  32. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
  33. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +46 -19
  34. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
  35. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +47 -20
  36. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
  37. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +161 -19
  38. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  39. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +162 -20
  40. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  41. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js +100 -0
  42. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +1 -0
  43. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs +98 -0
  44. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +1 -0
  45. package/dist/admin/future/pages/Assets/components/AssetsTable.js +218 -37
  46. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  47. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +219 -38
  48. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  49. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +370 -0
  50. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -0
  51. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +368 -0
  52. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -0
  53. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js +209 -0
  54. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +1 -0
  55. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs +207 -0
  56. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +1 -0
  57. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js +193 -0
  58. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js.map +1 -0
  59. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs +191 -0
  60. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs.map +1 -0
  61. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +129 -37
  62. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
  63. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +131 -39
  64. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
  65. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js +120 -13
  66. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -1
  67. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs +120 -13
  68. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -1
  69. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js +71 -0
  70. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +1 -0
  71. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs +69 -0
  72. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -0
  73. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js +34 -0
  74. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js.map +1 -0
  75. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs +32 -0
  76. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +1 -0
  77. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js +15 -0
  78. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +1 -1
  79. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs +13 -1
  80. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
  81. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +19 -25
  82. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
  83. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +19 -25
  84. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
  85. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js +35 -0
  86. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +1 -0
  87. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs +33 -0
  88. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +1 -0
  89. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +13 -3
  90. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  91. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +13 -3
  92. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  93. package/dist/admin/future/pages/Assets/components/EmptyState.js +62 -3
  94. package/dist/admin/future/pages/Assets/components/EmptyState.js.map +1 -1
  95. package/dist/admin/future/pages/Assets/components/EmptyState.mjs +62 -4
  96. package/dist/admin/future/pages/Assets/components/EmptyState.mjs.map +1 -1
  97. package/dist/admin/future/pages/Assets/components/FilterBadges.js +408 -0
  98. package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +1 -0
  99. package/dist/admin/future/pages/Assets/components/FilterBadges.mjs +406 -0
  100. package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +1 -0
  101. package/dist/admin/future/pages/Assets/components/FilterMenu.js +273 -0
  102. package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +1 -0
  103. package/dist/admin/future/pages/Assets/components/FilterMenu.mjs +267 -0
  104. package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +1 -0
  105. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +195 -40
  106. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
  107. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +198 -43
  108. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
  109. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js +33 -0
  110. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js.map +1 -0
  111. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs +31 -0
  112. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs.map +1 -0
  113. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js +22 -0
  114. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +1 -0
  115. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs +19 -0
  116. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +1 -0
  117. package/dist/admin/future/pages/Assets/components/SortMenu.js +154 -0
  118. package/dist/admin/future/pages/Assets/components/SortMenu.js.map +1 -0
  119. package/dist/admin/future/pages/Assets/components/SortMenu.mjs +152 -0
  120. package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +1 -0
  121. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js +40 -0
  122. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js.map +1 -0
  123. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs +38 -0
  124. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs.map +1 -0
  125. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js +75 -0
  126. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +1 -0
  127. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs +71 -0
  128. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +1 -0
  129. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js +33 -12
  130. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
  131. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs +33 -12
  132. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
  133. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +40 -4
  134. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
  135. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +40 -4
  136. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
  137. package/dist/admin/future/pages/Assets/hooks/useListFilters.js +168 -0
  138. package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +1 -0
  139. package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs +162 -0
  140. package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +1 -0
  141. package/dist/admin/future/pages/Assets/hooks/useListSort.js +124 -0
  142. package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +1 -0
  143. package/dist/admin/future/pages/Assets/hooks/useListSort.mjs +120 -0
  144. package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +1 -0
  145. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js +201 -0
  146. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js.map +1 -0
  147. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs +198 -0
  148. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs.map +1 -0
  149. package/dist/admin/future/pages/Assets/utils/listQueryKey.js +29 -0
  150. package/dist/admin/future/pages/Assets/utils/listQueryKey.js.map +1 -0
  151. package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs +27 -0
  152. package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs.map +1 -0
  153. package/dist/admin/future/pages/Assets/utils/mergeMixedList.js +84 -0
  154. package/dist/admin/future/pages/Assets/utils/mergeMixedList.js.map +1 -0
  155. package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs +81 -0
  156. package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs.map +1 -0
  157. package/dist/admin/future/pages/Assets/utils/selection.js +104 -0
  158. package/dist/admin/future/pages/Assets/utils/selection.js.map +1 -0
  159. package/dist/admin/future/pages/Assets/utils/selection.mjs +94 -0
  160. package/dist/admin/future/pages/Assets/utils/selection.mjs.map +1 -0
  161. package/dist/admin/future/services/api.js +163 -28
  162. package/dist/admin/future/services/api.js.map +1 -1
  163. package/dist/admin/future/services/api.mjs +163 -30
  164. package/dist/admin/future/services/api.mjs.map +1 -1
  165. package/dist/admin/future/services/assets.js +62 -18
  166. package/dist/admin/future/services/assets.js.map +1 -1
  167. package/dist/admin/future/services/assets.mjs +62 -19
  168. package/dist/admin/future/services/assets.mjs.map +1 -1
  169. package/dist/admin/future/services/folders.js +31 -19
  170. package/dist/admin/future/services/folders.js.map +1 -1
  171. package/dist/admin/future/services/folders.mjs +31 -19
  172. package/dist/admin/future/services/folders.mjs.map +1 -1
  173. package/dist/admin/future/services/settings.js +10 -3
  174. package/dist/admin/future/services/settings.js.map +1 -1
  175. package/dist/admin/future/services/settings.mjs +10 -3
  176. package/dist/admin/future/services/settings.mjs.map +1 -1
  177. package/dist/admin/future/store/uploadProgress.js +109 -2
  178. package/dist/admin/future/store/uploadProgress.js.map +1 -1
  179. package/dist/admin/future/store/uploadProgress.mjs +105 -3
  180. package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
  181. package/dist/admin/future/utils/buildDragSetFromSelection.js +33 -0
  182. package/dist/admin/future/utils/buildDragSetFromSelection.js.map +1 -0
  183. package/dist/admin/future/utils/buildDragSetFromSelection.mjs +31 -0
  184. package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +1 -0
  185. package/dist/admin/future/utils/canDropItemOnFolder.js +4 -0
  186. package/dist/admin/future/utils/canDropItemOnFolder.js.map +1 -1
  187. package/dist/admin/future/utils/canDropItemOnFolder.mjs +4 -0
  188. package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +1 -1
  189. package/dist/admin/future/utils/flattenFolderStructure.js +28 -0
  190. package/dist/admin/future/utils/flattenFolderStructure.js.map +1 -0
  191. package/dist/admin/future/utils/flattenFolderStructure.mjs +26 -0
  192. package/dist/admin/future/utils/flattenFolderStructure.mjs.map +1 -0
  193. package/dist/admin/future/utils/formatMoveSuccessMessage.js +19 -0
  194. package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +1 -0
  195. package/dist/admin/future/utils/formatMoveSuccessMessage.mjs +17 -0
  196. package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +1 -0
  197. package/dist/admin/future/utils/getFolderLabel.js +31 -0
  198. package/dist/admin/future/utils/getFolderLabel.js.map +1 -0
  199. package/dist/admin/future/utils/getFolderLabel.mjs +29 -0
  200. package/dist/admin/future/utils/getFolderLabel.mjs.map +1 -0
  201. package/dist/admin/future/utils/searchQueryParam.js +11 -0
  202. package/dist/admin/future/utils/searchQueryParam.js.map +1 -0
  203. package/dist/admin/future/utils/searchQueryParam.mjs +9 -0
  204. package/dist/admin/future/utils/searchQueryParam.mjs.map +1 -0
  205. package/dist/admin/hooks/useSelectionState.js +2 -4
  206. package/dist/admin/hooks/useSelectionState.js.map +1 -1
  207. package/dist/admin/hooks/useSelectionState.mjs +2 -4
  208. package/dist/admin/hooks/useSelectionState.mjs.map +1 -1
  209. package/dist/admin/shared/constants.js +43 -0
  210. package/dist/admin/shared/constants.js.map +1 -0
  211. package/dist/admin/shared/constants.mjs +38 -0
  212. package/dist/admin/shared/constants.mjs.map +1 -0
  213. package/dist/admin/src/future/hooks/useMediaLibraryPermissions.d.ts +21 -0
  214. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +7 -1
  215. package/dist/admin/src/future/pages/Assets/components/AssetsSearchInput.d.ts +5 -0
  216. package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +7 -1
  217. package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +14 -0
  218. package/dist/admin/src/future/pages/Assets/components/BulkMoveDialog.d.ts +13 -0
  219. package/dist/admin/src/future/pages/Assets/components/DateRangeCalendar.d.ts +8 -0
  220. package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +2 -0
  221. package/dist/admin/src/future/pages/Assets/components/Dnd/DragOverlayChip.d.ts +2 -2
  222. package/dist/admin/src/future/pages/Assets/components/Dnd/buildDragSet.d.ts +17 -0
  223. package/dist/admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +7 -0
  224. package/dist/admin/src/future/pages/Assets/components/Dnd/dndIds.d.ts +3 -0
  225. package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +3 -1
  226. package/dist/admin/src/future/pages/Assets/components/Dnd/useFolderTreeDroppable.d.ts +19 -0
  227. package/dist/admin/src/future/pages/Assets/components/DropZone/UploadDropZoneContext.d.ts +8 -1
  228. package/dist/admin/src/future/pages/Assets/components/EmptyState.d.ts +18 -1
  229. package/dist/admin/src/future/pages/Assets/components/FilterBadges.d.ts +6 -0
  230. package/dist/admin/src/future/pages/Assets/components/FilterMenu.d.ts +22 -0
  231. package/dist/admin/src/future/pages/Assets/components/FolderTree/FolderTree.d.ts +13 -4
  232. package/dist/admin/src/future/pages/Assets/components/FolderTree/filterFolderTree.d.ts +16 -0
  233. package/dist/admin/src/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.d.ts +6 -0
  234. package/dist/admin/src/future/pages/Assets/components/SortMenu.d.ts +23 -0
  235. package/dist/admin/src/future/pages/Assets/hooks/useAssetSearch.d.ts +12 -0
  236. package/dist/admin/src/future/pages/Assets/hooks/useAssetSelection.d.ts +46 -0
  237. package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +13 -3
  238. package/dist/admin/src/future/pages/Assets/hooks/useListFilters.d.ts +69 -0
  239. package/dist/admin/src/future/pages/Assets/hooks/useListSort.d.ts +47 -0
  240. package/dist/admin/src/future/pages/Assets/utils/buildAssetFilters.d.ts +46 -0
  241. package/dist/admin/src/future/pages/Assets/utils/listQueryKey.d.ts +29 -0
  242. package/dist/admin/src/future/pages/Assets/utils/mergeMixedList.d.ts +40 -0
  243. package/dist/admin/src/future/pages/Assets/utils/selection.d.ts +50 -0
  244. package/dist/admin/src/future/services/api.d.ts +53 -5
  245. package/dist/admin/src/future/services/assets.d.ts +13 -2
  246. package/dist/admin/src/future/services/folders.d.ts +7 -1
  247. package/dist/admin/src/future/services/settings.d.ts +2 -2
  248. package/dist/admin/src/future/store/uploadProgress.d.ts +83 -1
  249. package/dist/admin/src/future/types/dnd.d.ts +5 -0
  250. package/dist/admin/src/future/utils/buildDragSetFromSelection.d.ts +11 -0
  251. package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +1 -1
  252. package/dist/admin/src/future/utils/flattenFolderStructure.d.ts +18 -0
  253. package/dist/admin/src/future/utils/formatMoveSuccessMessage.d.ts +14 -0
  254. package/dist/admin/src/future/utils/getFolderLabel.d.ts +11 -0
  255. package/dist/admin/src/future/utils/searchQueryParam.d.ts +7 -0
  256. package/dist/admin/src/hooks/useAiAvailability.d.ts +1 -1
  257. package/dist/admin/src/hooks/useEditAsset.d.ts +4 -4
  258. package/dist/admin/src/hooks/useEditFolder.d.ts +4 -4
  259. package/dist/admin/src/hooks/useSettings.d.ts +1 -0
  260. package/dist/admin/src/hooks/useTracking.d.ts +1 -1
  261. package/dist/admin/src/hooks/useUpload.d.ts +1 -1
  262. package/dist/admin/translations/en.json.js +85 -2
  263. package/dist/admin/translations/en.json.js.map +1 -1
  264. package/dist/admin/translations/en.json.mjs +85 -2
  265. package/dist/admin/translations/en.json.mjs.map +1 -1
  266. package/dist/admin/utils/urlYupSchema.js +33 -9
  267. package/dist/admin/utils/urlYupSchema.js.map +1 -1
  268. package/dist/admin/utils/urlYupSchema.mjs +33 -9
  269. package/dist/admin/utils/urlYupSchema.mjs.map +1 -1
  270. package/dist/server/config.js +13 -5
  271. package/dist/server/config.js.map +1 -1
  272. package/dist/server/config.mjs +13 -5
  273. package/dist/server/config.mjs.map +1 -1
  274. package/dist/server/constants.js.map +1 -1
  275. package/dist/server/constants.mjs.map +1 -1
  276. package/dist/server/controllers/admin-file.js +30 -0
  277. package/dist/server/controllers/admin-file.js.map +1 -1
  278. package/dist/server/controllers/admin-file.mjs +30 -0
  279. package/dist/server/controllers/admin-file.mjs.map +1 -1
  280. package/dist/server/controllers/admin-settings.js +20 -2
  281. package/dist/server/controllers/admin-settings.js.map +1 -1
  282. package/dist/server/controllers/admin-settings.mjs +21 -3
  283. package/dist/server/controllers/admin-settings.mjs.map +1 -1
  284. package/dist/server/controllers/content-api.js +1 -2
  285. package/dist/server/controllers/content-api.js.map +1 -1
  286. package/dist/server/controllers/content-api.mjs +2 -2
  287. package/dist/server/controllers/content-api.mjs.map +1 -1
  288. package/dist/server/controllers/validation/admin/ai-metadata.js +12 -0
  289. package/dist/server/controllers/validation/admin/ai-metadata.js.map +1 -0
  290. package/dist/server/controllers/validation/admin/ai-metadata.mjs +10 -0
  291. package/dist/server/controllers/validation/admin/ai-metadata.mjs.map +1 -0
  292. package/dist/server/controllers/validation/admin/settings.js +4 -1
  293. package/dist/server/controllers/validation/admin/settings.js.map +1 -1
  294. package/dist/server/controllers/validation/admin/settings.mjs +1 -1
  295. package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
  296. package/dist/server/routes/admin.js +18 -0
  297. package/dist/server/routes/admin.js.map +1 -1
  298. package/dist/server/routes/admin.mjs +18 -0
  299. package/dist/server/routes/admin.mjs.map +1 -1
  300. package/dist/server/services/ai-metadata.js +108 -11
  301. package/dist/server/services/ai-metadata.js.map +1 -1
  302. package/dist/server/services/ai-metadata.mjs +108 -11
  303. package/dist/server/services/ai-metadata.mjs.map +1 -1
  304. package/dist/server/services/file.js +86 -13
  305. package/dist/server/services/file.js.map +1 -1
  306. package/dist/server/services/file.mjs +87 -14
  307. package/dist/server/services/file.mjs.map +1 -1
  308. package/dist/server/services/image-manipulation.js +4 -4
  309. package/dist/server/services/image-manipulation.js.map +1 -1
  310. package/dist/server/services/image-manipulation.mjs +4 -4
  311. package/dist/server/services/image-manipulation.mjs.map +1 -1
  312. package/dist/server/shared/constants.js +43 -0
  313. package/dist/server/shared/constants.js.map +1 -0
  314. package/dist/server/shared/constants.mjs +38 -0
  315. package/dist/server/shared/constants.mjs.map +1 -0
  316. package/dist/server/src/config.d.ts +2 -0
  317. package/dist/server/src/config.d.ts.map +1 -1
  318. package/dist/server/src/constants.d.ts +2 -1
  319. package/dist/server/src/constants.d.ts.map +1 -1
  320. package/dist/server/src/controllers/admin-file.d.ts +10 -0
  321. package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
  322. package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
  323. package/dist/server/src/controllers/index.d.ts +1 -0
  324. package/dist/server/src/controllers/index.d.ts.map +1 -1
  325. package/dist/server/src/controllers/validation/admin/ai-metadata.d.ts +2 -0
  326. package/dist/server/src/controllers/validation/admin/ai-metadata.d.ts.map +1 -0
  327. package/dist/server/src/controllers/validation/admin/settings.d.ts +1 -1
  328. package/dist/server/src/controllers/validation/admin/settings.d.ts.map +1 -1
  329. package/dist/server/src/index.d.ts +7 -1
  330. package/dist/server/src/index.d.ts.map +1 -1
  331. package/dist/server/src/routes/admin.d.ts.map +1 -1
  332. package/dist/server/src/services/ai-metadata.d.ts +19 -0
  333. package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
  334. package/dist/server/src/services/file.d.ts +12 -2
  335. package/dist/server/src/services/file.d.ts.map +1 -1
  336. package/dist/server/src/services/index.d.ts +4 -1
  337. package/dist/server/src/services/index.d.ts.map +1 -1
  338. package/dist/server/src/types.d.ts +3 -0
  339. package/dist/server/src/types.d.ts.map +1 -1
  340. package/dist/shared/constants.d.ts +35 -0
  341. package/dist/shared/constants.d.ts.map +1 -0
  342. package/dist/shared/contracts/files.d.ts +25 -0
  343. package/dist/shared/contracts/files.d.ts.map +1 -1
  344. package/dist/shared/contracts/folders.d.ts +1 -1
  345. package/dist/shared/contracts/settings.d.ts +7 -0
  346. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsPage.js","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, useState, useEffect, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ChevronDown, Files, Folder, GridFour as GridIcon, Link, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUploadFromUrlsMutation, useUploadFilesMutation } from '../../services/api';\nimport { useGetFolderQuery, useGetFoldersQuery } from '../../services/folders';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport {\n AssetDetailsDrawer,\n useAssetDetailsParam,\n} from './components/AssetDetails/AssetDetailsDrawer';\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsTable } from './components/AssetsTable';\nimport { CreateFolderDialog } from './components/CreateFolderDialog';\nimport { AssetsDndProvider } from './components/Dnd/AssetsDndProvider';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { EmptyState } from './components/EmptyState';\nimport { FolderTree } from './components/FolderTree/FolderTree';\nimport { ImportFromUrlDialog } from './components/ImportFromUrlDialog';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\n\nimport type { UploadFileInfo } from '../../../../../shared/contracts/files';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folderId: number | null;\n onAssetItemClick: (assetId: number) => void;\n onAddAssets: () => void;\n}\n\nconst AssetsView = ({ view, folderId, onAssetItemClick, onAddAssets }: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n const {\n assets,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n } = useInfiniteAssets({ folder: folderId });\n const { data: folders = [], isLoading: isLoadingFolders } = useGetFoldersQuery({\n parentId: folderId,\n });\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\n );\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n return <EmptyState onAddAssets={onAddAssets} />;\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} onAssetItemClick={onAssetItemClick} />\n ) : (\n <AssetsTable assets={assets} folders={folders} onAssetItemClick={onAssetItemClick} />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border: none;\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral150};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled(Box)`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n const { openDetails } = useAssetDetailsParam();\n\n const { currentFolderId, navigateToFolderId, navigateToRoot } = useFolderNavigation();\n // Deleted or missing folders (404) need a fetch — handled here, not in\n // `useFolderNavigation` (which only strips malformed ?folder= values).\n const { error: currentFolderError } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n\n useEffect(() => {\n if (currentFolderError?.name === 'NotFoundError') {\n navigateToRoot();\n }\n }, [currentFolderError, navigateToRoot]);\n const { title, itemCount } = useFolderInfo(currentFolderId);\n const itemCountLabel = formatMessage(\n {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n },\n { count: itemCount }\n );\n const pageHeaderTitle = title\n ? `${title} (${itemCountLabel})`\n : formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' });\n\n const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Dialog state\n const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFiles] = useUploadFilesMutation();\n const [uploadFromUrls] = useUploadFromUrlsMutation();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFiles({ formData, totalFiles: files.length }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n const handleUrlUpload = async (urls: string[]) => {\n try {\n await uploadFromUrls({ urls, folderId: currentFolderId }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n return (\n <>\n <UploadDropZoneProvider onDrop={handleDrop}>\n <AssetsDndProvider>\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root\n minHeight=\"100vh\"\n background=\"neutral0\"\n sideNav={\n <FolderTree currentFolderId={currentFolderId} onSelectFolder={navigateToFolderId} />\n }\n >\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={pageHeaderTitle}\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem\n onSelect={() => setIsCreateFolderDialogOpen(true)}\n startIcon={<Folder />}\n >\n {formatMessage({\n id: getTranslationKey('folder.create.title'),\n defaultMessage: 'New folder',\n })}\n </MenuItem>\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n <MenuItem onSelect={() => setIsUrlDialogOpen(true)} startIcon={<Link />}>\n {formatMessage({\n id: getTranslationKey('import-from-url'),\n defaultMessage: 'Import from URL',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n subtitle={\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={4} width=\"100%\">\n <Flex gap={4} alignItems=\"center\">\n TODO: Filters and search\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <Box>TODO: Sort</Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value &&\n setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView\n view={view}\n folderId={currentFolderId}\n onAssetItemClick={openDetails}\n onAddAssets={handleFileSelect}\n />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </AssetsDndProvider>\n </UploadDropZoneProvider>\n <CreateFolderDialog\n open={isCreateFolderDialogOpen}\n folderName={title}\n parentFolderId={currentFolderId}\n onClose={() => setIsCreateFolderDialogOpen(false)}\n />\n <ImportFromUrlDialog\n open={isUrlDialogOpen}\n onClose={() => setIsUrlDialogOpen(false)}\n onUpload={handleUrlUpload}\n />\n <AssetDetailsDrawer />\n </>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","AssetsView","view","folderId","onAssetItemClick","onAddAssets","formatMessage","useIntl","assets","isLoading","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","useInfiniteAssets","folder","data","folders","isLoadingFolders","useGetFoldersQuery","parentId","isGridView","viewOptions","GRID","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","id","defaultMessage","Box","Typography","textColor","getTranslationKey","length","EmptyState","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","StyledToggleGroup","styled","ToggleGroup","Root","theme","colors","neutral200","borderRadius","StyledToggleItem","Item","spaces","neutral0","neutral800","fontSizes","fontWeights","semiBold","primary100","neutral150","HeaderWrapper","AssetsPage","openDetails","useAssetDetailsParam","currentFolderId","navigateToFolderId","navigateToRoot","useFolderNavigation","currentFolderError","useGetFolderQuery","skip","useEffect","name","title","itemCount","useFolderInfo","itemCountLabel","count","pageHeaderTitle","isCreateFolderDialogOpen","setIsCreateFolderDialogOpen","useState","setView","usePersistentState","localStorageKeys","isUrlDialogOpen","setIsUrlDialogOpen","fileInputRef","useRef","uploadDropZoneRef","uploadFiles","useUploadFilesMutation","uploadFromUrls","useUploadFromUrlsMutation","uploadFilesToFolder","files","formData","FormData","fileInfoArray","forEach","file","append","push","caption","alternativeText","JSON","stringify","totalFiles","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","handleUrlUpload","urls","UploadDropZoneProvider","onDrop","AssetsDndProvider","Layouts","minHeight","background","sideNav","FolderTree","onSelectFolder","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Folder","Files","Link","subtitle","alignItems","gap","width","onValueChange","TABLE","aria-label","List","GridIcon","Content","DropZoneWithOverlay","DropFilesMessage","folderName","CreateFolderDialog","open","parentFolderId","onClose","ImportFromUrlDialog","onUpload","AssetDetailsDrawer"],"mappings":"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"}
1
+ {"version":3,"file":"AssetsPage.js","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, useMemo, useState, useEffect, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport {\n ChevronDown,\n Files,\n Folder as FolderIcon,\n GridFour as GridIcon,\n Link,\n List,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useAIAvailability } from '../../../hooks/useAiAvailability';\nimport { useMediaLibraryPermissions } from '../../hooks/useMediaLibraryPermissions';\nimport { useUploadFromUrlsMutation, useUploadFilesMutation } from '../../services/api';\nimport { useGetFolderQuery, useGetFoldersQuery } from '../../services/folders';\nimport { useGetUploadSettingsQuery } from '../../services/settings';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport {\n AssetDetailsDrawer,\n useAssetDetailsParam,\n} from './components/AssetDetails/AssetDetailsDrawer';\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsSearchInput } from './components/AssetsSearchInput';\nimport { AssetsTable } from './components/AssetsTable';\nimport { BulkActionsBar } from './components/BulkActionsBar';\nimport { CreateFolderDialog } from './components/CreateFolderDialog';\nimport { AssetsDndProvider } from './components/Dnd/AssetsDndProvider';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { EmptyState, FilteredEmptyState } from './components/EmptyState';\nimport { FilterBadges } from './components/FilterBadges';\nimport { FilterMenu } from './components/FilterMenu';\nimport { FolderTree } from './components/FolderTree/FolderTree';\nimport { ImportFromUrlDialog } from './components/ImportFromUrlDialog';\nimport { SortMenu } from './components/SortMenu';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useAssetSearch } from './hooks/useAssetSearch';\nimport { AssetSelectionProvider, useAssetSelection } from './hooks/useAssetSelection';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\nimport { useListFilters } from './hooks/useListFilters';\nimport { useListSort, type FoldersPosition } from './hooks/useListSort';\nimport { buildAssetFilters } from './utils/buildAssetFilters';\nimport { getListQueryKey } from './utils/listQueryKey';\nimport { mergeMixedList } from './utils/mergeMixedList';\n\nimport type { File, UploadFileInfo } from '../../../../../shared/contracts/files';\nimport type { Folder } from '../../../../../shared/contracts/folders';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\nconst ITEM_COUNT_MESSAGE = {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n};\n\nconst SEARCH_RESULTS_COUNT_MESSAGES = {\n both: {\n id: getTranslationKey('header.search-results.count'),\n defaultMessage:\n '{numberFolders, plural, one {1 folder} other {# folders}} - {numberAssets, plural, one {1 asset} other {# assets}}',\n },\n folders: {\n id: getTranslationKey('header.search-results.count.folders'),\n defaultMessage: '{numberFolders, plural, one {1 folder} other {# folders}}',\n },\n assets: {\n id: getTranslationKey('header.search-results.count.assets'),\n defaultMessage: '{numberAssets, plural, =0 {0 assets} one {1 asset} other {# assets}}',\n },\n};\n\nconst getSearchResultsCountMessage = (numberFolders: number, numberAssets: number) => {\n if (numberFolders === 0) {\n return SEARCH_RESULTS_COUNT_MESSAGES.assets;\n }\n\n if (numberAssets === 0) {\n return SEARCH_RESULTS_COUNT_MESSAGES.folders;\n }\n\n return SEARCH_RESULTS_COUNT_MESSAGES.both;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folders: Folder[];\n isLoadingFolders: boolean;\n assets: File[];\n isLoadingAssets: boolean;\n isFetchingMore: boolean;\n hasNextPage: boolean;\n fetchNextPage: () => void;\n error: unknown;\n searchQuery: string;\n assetsSort: string;\n foldersPosition: FoldersPosition;\n hasActiveFilters: boolean;\n onClearFilters: () => void;\n onAssetItemClick: (assetId: number) => void;\n onAddAssets: () => void;\n canAddAssets: boolean;\n onClearSearch: () => void;\n}\n\nconst AssetsView = ({\n view,\n folders,\n isLoadingFolders,\n assets,\n isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n searchQuery,\n assetsSort,\n foldersPosition,\n hasActiveFilters,\n onClearFilters,\n onAssetItemClick,\n onAddAssets,\n canAddAssets,\n onClearSearch,\n}: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n // \"Folders: Mixed with files\" — interleave the complete folder list into the\n // loaded asset stream client-side, following the active sort. Table view\n // only: the grid always keeps folders in their own band on top.\n const mixedItems = useMemo(\n () =>\n foldersPosition === 'mixed' && !isGridView\n ? mergeMixedList({ folders, assets, sort: assetsSort, hasNextPage })\n : null,\n [foldersPosition, isGridView, folders, assets, assetsSort, hasNextPage]\n );\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\n );\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n // While searching, the search empty state wins (it names the query); a\n // filter-only dead end gets the filtered variant with its Clear action.\n return hasActiveFilters && !searchQuery ? (\n <FilteredEmptyState onClearFilters={onClearFilters} />\n ) : (\n <EmptyState\n onAddAssets={onAddAssets}\n canAddAssets={canAddAssets}\n searchQuery={searchQuery}\n onClearSearch={onClearSearch}\n />\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} onAssetItemClick={onAssetItemClick} />\n ) : (\n <AssetsTable\n assets={assets}\n folders={folders}\n mixedItems={mixedItems}\n onAssetItemClick={onAssetItemClick}\n />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n {/* Lives here rather than in `AssetsPage` so it can read the loaded\n assets: the AI metadata action needs their mime types to know what\n the provider can handle. `position: fixed` keeps it visually anchored\n regardless of where it sits in the tree. */}\n <BulkActionsBar assets={assets} />\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ClearSelectionOnChange\n *\n * Selection is list-scoped: it resets when the user is looking at a different list.\n * The list fingerprint is getListQueryKey() — folder, search, sort, filter.\n *\n * Hybrid rule: infinite scroll does not change the key (selection persists), and\n * neither does the table/grid toggle — both views render the same list.\n * Search/sort/filter changes do (selection clears) — same mental model as folder nav.\n * -----------------------------------------------------------------------------------------------*/\n\ninterface ClearSelectionOnChangeProps {\n listQueryKey: string;\n}\n\nconst ClearSelectionOnChange = ({ listQueryKey }: ClearSelectionOnChangeProps) => {\n const { clear } = useAssetSelection();\n\n useEffect(() => {\n clear();\n }, [listQueryKey, clear]);\n\n return null;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Mirrors the design-system Toggle look (grey track, white active segment\n * card) — reproduced locally because the DS component is a labels-only\n * boolean input (no icons) and paints its left segment in danger red. Here\n * both segments use the primary blue when active.\n */\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n padding: ${({ theme }) => theme.spaces[1]};\n background: ${({ theme }) => theme.colors.neutral100};\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n flex: 1 1 50%;\n align-items: center;\n justify-content: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: 0.6rem ${({ theme }) => theme.spaces[3]};\n border: 1px solid transparent;\n border-radius: ${({ theme }) => theme.borderRadius};\n background: transparent;\n color: ${({ theme }) => theme.colors.neutral600};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n white-space: nowrap;\n\n &:hover {\n color: ${({ theme }) => theme.colors.neutral700};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral0};\n border-color: ${({ theme }) => theme.colors.neutral200};\n color: ${({ theme }) => theme.colors.primary600};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled(Box)`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n const { openDetails } = useAssetDetailsParam();\n const { canCreate, canUpdate } = useMediaLibraryPermissions();\n\n const { currentFolderId, navigateToFolderId, navigateToRoot } = useFolderNavigation();\n // Deleted or missing folders (404) need a fetch — handled here, not in\n // `useFolderNavigation` (which only strips malformed ?folder= values).\n const { error: currentFolderError } = useGetFolderQuery(\n { id: currentFolderId! },\n { skip: currentFolderId === null }\n );\n\n useEffect(() => {\n if (currentFolderError?.name === 'NotFoundError') {\n navigateToRoot();\n }\n }, [currentFolderError, navigateToRoot]);\n const { title, itemCount } = useFolderInfo(currentFolderId);\n\n const { searchQuery, isSearching, clearSearch } = useAssetSearch();\n const listSort = useListSort();\n const listFilters = useListFilters();\n\n // Resolve relative presets against \"now\" only when the filters change —\n // keeps the query args (and RTK cache keys) stable between renders.\n const builtFilters = useMemo(\n () => buildAssetFilters(listFilters.filters, new Date()),\n // eslint-disable-next-line react-hooks/exhaustive-deps -- serialized is the value identity of filters\n [listFilters.serialized]\n );\n\n const {\n assets,\n pagination,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error: assetsError,\n } = useInfiniteAssets({\n // The real folder is passed even while searching: the service drops the folder\n // filter when `search` is set, so results are still global. List filters\n // compose with both modes.\n folder: currentFolderId,\n search: searchQuery || undefined,\n sort: listSort.assetsSort,\n filters: builtFilters.fileClauses,\n filtersKey: listFilters.serialized,\n enabled: builtFilters.showFiles,\n });\n\n const { data: fetchedFolders = [], isLoading: isLoadingFolders } = useGetFoldersQuery(\n {\n parentId: currentFolderId,\n search: searchQuery || undefined,\n sort: listSort.foldersSort,\n filters: builtFilters.folderClauses,\n },\n { skip: !builtFilters.showFolders }\n );\n // A type badge can exclude folders structurally (e.g. \"Type is Picture\").\n const folders = useMemo(\n () => (builtFilters.showFolders ? fetchedFolders : []),\n [builtFilters.showFolders, fetchedFolders]\n );\n\n const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, { count: itemCount });\n\n const searchResultsTitle = formatMessage(\n {\n id: getTranslationKey('header.search-results'),\n defaultMessage: 'Search results for \"{query}\"',\n },\n { query: searchQuery }\n );\n const numberFolders = folders.length;\n const numberAssets = pagination?.total ?? 0;\n\n const searchResultsCountLabel = formatMessage(\n getSearchResultsCountMessage(numberFolders, numberAssets),\n { numberFolders, numberAssets }\n );\n\n let pageHeaderTitle: string;\n if (isSearching) {\n pageHeaderTitle = `${searchResultsTitle} (${searchResultsCountLabel})`;\n } else if (title) {\n pageHeaderTitle = `${title} (${itemCountLabel})`;\n } else {\n pageHeaderTitle = formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' });\n }\n\n const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Dialog state\n const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFiles] = useUploadFilesMutation();\n const [uploadFromUrls] = useUploadFromUrlsMutation();\n // `concurrentUploadRequests` echoes the app config. Missing settings (still\n // loading, no permission) fall back to sequential — never faster than the\n // server asked for.\n const { data: settings } = useGetUploadSettingsQuery();\n const concurrency = settings?.data?.concurrentUploadRequests ?? 1;\n // Drives the post-upload AI metadata phase shown per row in the progress dialog.\n const { isEnabled: isAiMetadataEnabled } = useAIAvailability();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFiles({\n formData,\n totalFiles: files.length,\n concurrency,\n generateAiMetadata: Boolean(isAiMetadataEnabled),\n }).unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n // Defence in depth: the provider is `disabled` without `assets.create`\n // (so onDrop won't fire), but guard here too in case it's ever wired live.\n if (!canCreate) return;\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n const handleUrlUpload = async (urls: string[]) => {\n try {\n await uploadFromUrls({\n urls,\n folderId: currentFolderId,\n generateAiMetadata: Boolean(isAiMetadataEnabled),\n }).unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n // The view is deliberately absent: table and grid render the same list, so\n // toggling views keeps the selection.\n const listQueryKey = getListQueryKey({\n folderId: currentFolderId,\n search: searchQuery,\n // Folder position changes the render order too — selection must reset.\n sort: `${listSort.assetsSort};folders=${listSort.foldersPosition}`,\n filter: listFilters.serialized || null,\n });\n\n return (\n <>\n <UploadDropZoneProvider onDrop={handleDrop} disabled={!canCreate}>\n <AssetSelectionProvider disabled={!canUpdate}>\n <AssetsDndProvider>\n <ClearSelectionOnChange listQueryKey={listQueryKey} />\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root\n minHeight=\"100vh\"\n background=\"neutral0\"\n sideNav={\n <FolderTree\n currentFolderId={currentFolderId}\n showActiveFolder={!isSearching}\n onSelectFolder={navigateToFolderId}\n />\n }\n >\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={pageHeaderTitle}\n primaryAction={\n canCreate && (\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({\n id: getTranslationKey('new'),\n defaultMessage: 'New',\n })}\n >\n <MenuItem\n onSelect={() => setIsCreateFolderDialogOpen(true)}\n startIcon={<FolderIcon />}\n >\n {formatMessage({\n id: getTranslationKey('folder.create.title'),\n defaultMessage: 'New folder',\n })}\n </MenuItem>\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n <MenuItem onSelect={() => setIsUrlDialogOpen(true)} startIcon={<Link />}>\n {formatMessage({\n id: getTranslationKey('import-from-url'),\n defaultMessage: 'Import from URL',\n })}\n </MenuItem>\n </SimpleMenu>\n )\n }\n subtitle={\n <>\n <Flex\n justifyContent=\"space-between\"\n alignItems=\"center\"\n gap={4}\n width=\"100%\"\n >\n <Flex gap={4} alignItems=\"center\">\n <FilterMenu listFilters={listFilters} />\n <AssetsSearchInput />\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <SortMenu sort={listSort} showFoldersGroup={!isGridView} />\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value &&\n setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n <FilterBadges listFilters={listFilters} />\n </>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView\n view={view}\n folders={folders}\n isLoadingFolders={isLoadingFolders}\n assets={assets}\n isLoadingAssets={isLoadingAssets}\n isFetchingMore={isFetchingMore}\n hasNextPage={hasNextPage}\n fetchNextPage={fetchNextPage}\n error={assetsError}\n searchQuery={searchQuery}\n assetsSort={listSort.assetsSort}\n foldersPosition={listSort.foldersPosition}\n hasActiveFilters={listFilters.filters.length > 0}\n onClearFilters={listFilters.clearFilters}\n onAssetItemClick={openDetails}\n onAddAssets={handleFileSelect}\n canAddAssets={canCreate}\n onClearSearch={clearSearch}\n />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </AssetsDndProvider>\n </AssetSelectionProvider>\n </UploadDropZoneProvider>\n <CreateFolderDialog\n open={isCreateFolderDialogOpen}\n folderName={title}\n parentFolderId={currentFolderId}\n onClose={() => setIsCreateFolderDialogOpen(false)}\n />\n <ImportFromUrlDialog\n open={isUrlDialogOpen}\n onClose={() => setIsUrlDialogOpen(false)}\n onUpload={handleUrlUpload}\n />\n <AssetDetailsDrawer />\n </>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","ITEM_COUNT_MESSAGE","id","getTranslationKey","defaultMessage","SEARCH_RESULTS_COUNT_MESSAGES","both","folders","assets","getSearchResultsCountMessage","numberFolders","numberAssets","AssetsView","view","isLoadingFolders","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","searchQuery","assetsSort","foldersPosition","hasActiveFilters","onClearFilters","onAssetItemClick","onAddAssets","canAddAssets","onClearSearch","formatMessage","useIntl","isGridView","viewOptions","GRID","isLoading","mixedItems","useMemo","mergeMixedList","sort","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","Box","Typography","textColor","length","FilteredEmptyState","EmptyState","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","BulkActionsBar","ClearSelectionOnChange","listQueryKey","clear","useAssetSelection","useEffect","StyledToggleGroup","styled","ToggleGroup","Root","theme","spaces","colors","neutral100","neutral200","borderRadius","StyledToggleItem","Item","neutral600","fontSizes","fontWeights","semiBold","neutral700","neutral0","primary600","HeaderWrapper","AssetsPage","openDetails","useAssetDetailsParam","canCreate","canUpdate","useMediaLibraryPermissions","currentFolderId","navigateToFolderId","navigateToRoot","useFolderNavigation","currentFolderError","useGetFolderQuery","skip","name","title","itemCount","useFolderInfo","isSearching","clearSearch","useAssetSearch","listSort","useListSort","listFilters","useListFilters","builtFilters","buildAssetFilters","filters","Date","serialized","pagination","assetsError","useInfiniteAssets","folder","search","undefined","fileClauses","filtersKey","enabled","showFiles","data","fetchedFolders","useGetFoldersQuery","parentId","foldersSort","folderClauses","showFolders","itemCountLabel","count","searchResultsTitle","query","total","searchResultsCountLabel","pageHeaderTitle","isCreateFolderDialogOpen","setIsCreateFolderDialogOpen","useState","setView","usePersistentState","localStorageKeys","isUrlDialogOpen","setIsUrlDialogOpen","fileInputRef","useRef","uploadDropZoneRef","uploadFiles","useUploadFilesMutation","uploadFromUrls","useUploadFromUrlsMutation","settings","useGetUploadSettingsQuery","concurrency","concurrentUploadRequests","isEnabled","isAiMetadataEnabled","useAIAvailability","uploadFilesToFolder","files","folderId","formData","FormData","fileInfoArray","forEach","file","append","push","caption","alternativeText","JSON","stringify","totalFiles","generateAiMetadata","Boolean","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","handleUrlUpload","urls","getListQueryKey","filter","UploadDropZoneProvider","onDrop","disabled","AssetSelectionProvider","AssetsDndProvider","Layouts","minHeight","background","sideNav","FolderTree","showActiveFolder","onSelectFolder","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","FolderIcon","Files","Link","subtitle","alignItems","gap","width","FilterMenu","AssetsSearchInput","SortMenu","showFoldersGroup","onValueChange","TABLE","aria-label","List","GridIcon","FilterBadges","Content","DropZoneWithOverlay","DropFilesMessage","folderName","clearFilters","CreateFolderDialog","open","parentFolderId","onClose","ImportFromUrlDialog","onUpload","AssetDetailsDrawer"],"mappings":"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"}