@strapi/upload 5.59.0 → 5.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (231) hide show
  1. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js +434 -0
  2. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.js.map +1 -0
  3. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs +432 -0
  4. package/dist/admin/components/AssetPickerDialog/AssetPickerDialog.mjs.map +1 -0
  5. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js +91 -0
  6. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.js.map +1 -0
  7. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs +89 -0
  8. package/dist/admin/components/AssetPickerDialog/FolderBreadcrumbs.mjs.map +1 -0
  9. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js +178 -0
  10. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.js.map +1 -0
  11. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs +175 -0
  12. package/dist/admin/components/AssetPickerDialog/PickerSelectionProvider.mjs.map +1 -0
  13. package/dist/admin/components/AssetPickerDialog/SortableSelection.js +143 -0
  14. package/dist/admin/components/AssetPickerDialog/SortableSelection.js.map +1 -0
  15. package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs +141 -0
  16. package/dist/admin/components/AssetPickerDialog/SortableSelection.mjs.map +1 -0
  17. package/dist/admin/components/AssetPickerDialog/pickerSelection.js +49 -0
  18. package/dist/admin/components/AssetPickerDialog/pickerSelection.js.map +1 -0
  19. package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs +41 -0
  20. package/dist/admin/components/AssetPickerDialog/pickerSelection.mjs.map +1 -0
  21. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js +4 -3
  22. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.js.map +1 -1
  23. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs +4 -3
  24. package/dist/admin/components/MediaLibraryInput/AddAssetMenu.mjs.map +1 -1
  25. package/dist/admin/components/MediaLibraryInput/AssetCard.js +240 -0
  26. package/dist/admin/components/MediaLibraryInput/AssetCard.js.map +1 -0
  27. package/dist/admin/components/MediaLibraryInput/AssetCard.mjs +237 -0
  28. package/dist/admin/components/MediaLibraryInput/AssetCard.mjs.map +1 -0
  29. package/dist/admin/components/MediaLibraryInput/AssetCarousel.js +161 -0
  30. package/dist/admin/components/MediaLibraryInput/AssetCarousel.js.map +1 -0
  31. package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs +159 -0
  32. package/dist/admin/components/MediaLibraryInput/AssetCarousel.mjs.map +1 -0
  33. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js +76 -49
  34. package/dist/admin/components/MediaLibraryInput/AssetDropZone.js.map +1 -1
  35. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs +77 -50
  36. package/dist/admin/components/MediaLibraryInput/AssetDropZone.mjs.map +1 -1
  37. package/dist/admin/components/MediaLibraryInput/AssetPreview.js +109 -0
  38. package/dist/admin/components/MediaLibraryInput/AssetPreview.js.map +1 -0
  39. package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs +106 -0
  40. package/dist/admin/components/MediaLibraryInput/AssetPreview.mjs.map +1 -0
  41. package/dist/admin/components/MediaLibraryInput/AssetRow.js +146 -79
  42. package/dist/admin/components/MediaLibraryInput/AssetRow.js.map +1 -1
  43. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs +148 -82
  44. package/dist/admin/components/MediaLibraryInput/AssetRow.mjs.map +1 -1
  45. package/dist/admin/components/MediaLibraryInput/FieldControls.js +32 -0
  46. package/dist/admin/components/MediaLibraryInput/FieldControls.js.map +1 -0
  47. package/dist/admin/components/MediaLibraryInput/FieldControls.mjs +29 -0
  48. package/dist/admin/components/MediaLibraryInput/FieldControls.mjs.map +1 -0
  49. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +130 -88
  50. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  51. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +129 -91
  52. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  53. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js +42 -0
  54. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.js.map +1 -0
  55. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs +40 -0
  56. package/dist/admin/components/MediaLibraryInput/UploadProgressBar.mjs.map +1 -0
  57. package/dist/admin/components/MediaLibraryInput/useFieldUploads.js +122 -0
  58. package/dist/admin/components/MediaLibraryInput/useFieldUploads.js.map +1 -0
  59. package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs +120 -0
  60. package/dist/admin/components/MediaLibraryInput/useFieldUploads.mjs.map +1 -0
  61. package/dist/admin/components/UploadProgressDialog.js +2 -1
  62. package/dist/admin/components/UploadProgressDialog.js.map +1 -1
  63. package/dist/admin/components/UploadProgressDialog.mjs +2 -1
  64. package/dist/admin/components/UploadProgressDialog.mjs.map +1 -1
  65. package/dist/admin/hooks/useMediaLibraryPermissions.js +12 -2
  66. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
  67. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +12 -2
  68. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
  69. package/dist/admin/pages/Assets/AssetsPage.js +13 -302
  70. package/dist/admin/pages/Assets/AssetsPage.js.map +1 -1
  71. package/dist/admin/pages/Assets/AssetsPage.mjs +11 -280
  72. package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -1
  73. package/dist/admin/pages/Assets/components/AssetsGrid.js +142 -31
  74. package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -1
  75. package/dist/admin/pages/Assets/components/AssetsGrid.mjs +145 -34
  76. package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  77. package/dist/admin/pages/Assets/components/AssetsSearchInput.js +43 -2
  78. package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -1
  79. package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs +45 -4
  80. package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
  81. package/dist/admin/pages/Assets/components/AssetsTable.js +58 -34
  82. package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -1
  83. package/dist/admin/pages/Assets/components/AssetsTable.mjs +60 -36
  84. package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -1
  85. package/dist/admin/pages/Assets/components/AssetsView.js +145 -0
  86. package/dist/admin/pages/Assets/components/AssetsView.js.map +1 -0
  87. package/dist/admin/pages/Assets/components/AssetsView.mjs +143 -0
  88. package/dist/admin/pages/Assets/components/AssetsView.mjs.map +1 -0
  89. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +1 -1
  90. package/dist/admin/pages/Assets/components/BusyOverlay.mjs +1 -1
  91. package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs +1 -1
  92. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js +40 -0
  93. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.js.map +1 -0
  94. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs +38 -0
  95. package/dist/admin/pages/Assets/components/Dnd/ReorderHandle.mjs.map +1 -0
  96. package/dist/admin/pages/Assets/components/Dnd/assetSortable.js +29 -0
  97. package/dist/admin/pages/Assets/components/Dnd/assetSortable.js.map +1 -0
  98. package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs +24 -0
  99. package/dist/admin/pages/Assets/components/Dnd/assetSortable.mjs.map +1 -0
  100. package/dist/admin/pages/Assets/components/Dnd/dndIds.js +5 -0
  101. package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -1
  102. package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs +5 -1
  103. package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -1
  104. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js +41 -13
  105. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -1
  106. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs +41 -13
  107. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
  108. package/dist/admin/pages/Assets/components/FilterBadges.mjs +2 -2
  109. package/dist/admin/pages/Assets/components/FilterMenu.mjs +2 -2
  110. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js +274 -55
  111. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
  112. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs +277 -59
  113. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
  114. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js +32 -0
  115. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.js.map +1 -0
  116. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs +29 -0
  117. package/dist/admin/pages/Assets/components/FolderTree/collapsedBranch.mjs.map +1 -0
  118. package/dist/admin/pages/Assets/components/ViewToggle.js +126 -0
  119. package/dist/admin/pages/Assets/components/ViewToggle.js.map +1 -0
  120. package/dist/admin/pages/Assets/components/ViewToggle.mjs +104 -0
  121. package/dist/admin/pages/Assets/components/ViewToggle.mjs.map +1 -0
  122. package/dist/admin/pages/Assets/hooks/useAssetSearch.js +2 -2
  123. package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -1
  124. package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs +2 -2
  125. package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -1
  126. package/dist/admin/pages/Assets/hooks/useAssetSelection.js +19 -1
  127. package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -1
  128. package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs +20 -3
  129. package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
  130. package/dist/admin/pages/Assets/hooks/useAssetsList.js +87 -0
  131. package/dist/admin/pages/Assets/hooks/useAssetsList.js.map +1 -0
  132. package/dist/admin/pages/Assets/hooks/useAssetsList.mjs +85 -0
  133. package/dist/admin/pages/Assets/hooks/useAssetsList.mjs.map +1 -0
  134. package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs +1 -1
  135. package/dist/admin/pages/Assets/hooks/useFolderNavigation.js +2 -1
  136. package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
  137. package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs +3 -2
  138. package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
  139. package/dist/admin/pages/Assets/hooks/useListFilters.js +2 -1
  140. package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -1
  141. package/dist/admin/pages/Assets/hooks/useListFilters.mjs +3 -2
  142. package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -1
  143. package/dist/admin/pages/Assets/hooks/useListQueryParams.js +80 -0
  144. package/dist/admin/pages/Assets/hooks/useListQueryParams.js.map +1 -0
  145. package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs +77 -0
  146. package/dist/admin/pages/Assets/hooks/useListQueryParams.mjs.map +1 -0
  147. package/dist/admin/pages/Assets/hooks/useListSettings.js +32 -0
  148. package/dist/admin/pages/Assets/hooks/useListSettings.js.map +1 -0
  149. package/dist/admin/pages/Assets/hooks/useListSettings.mjs +29 -0
  150. package/dist/admin/pages/Assets/hooks/useListSettings.mjs.map +1 -0
  151. package/dist/admin/pages/Assets/hooks/useListSort.js +2 -1
  152. package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -1
  153. package/dist/admin/pages/Assets/hooks/useListSort.mjs +3 -2
  154. package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -1
  155. package/dist/admin/services/api.js +92 -7
  156. package/dist/admin/services/api.js.map +1 -1
  157. package/dist/admin/services/api.mjs +91 -9
  158. package/dist/admin/services/api.mjs.map +1 -1
  159. package/dist/admin/src/components/AssetPickerDialog/AssetPickerDialog.d.ts +19 -0
  160. package/dist/admin/src/components/AssetPickerDialog/FolderBreadcrumbs.d.ts +10 -0
  161. package/dist/admin/src/components/AssetPickerDialog/PickerSelectionProvider.d.ts +28 -0
  162. package/dist/admin/src/components/AssetPickerDialog/SortableSelection.d.ts +12 -0
  163. package/dist/admin/src/components/AssetPickerDialog/pickerSelection.d.ts +26 -0
  164. package/dist/admin/src/components/MediaLibraryInput/AssetCard.d.ts +25 -0
  165. package/dist/admin/src/components/MediaLibraryInput/AssetCarousel.d.ts +16 -0
  166. package/dist/admin/src/components/MediaLibraryInput/AssetDropZone.d.ts +11 -3
  167. package/dist/admin/src/components/MediaLibraryInput/AssetPreview.d.ts +17 -0
  168. package/dist/admin/src/components/MediaLibraryInput/AssetRow.d.ts +13 -3
  169. package/dist/admin/src/components/MediaLibraryInput/FieldControls.d.ts +19 -0
  170. package/dist/admin/src/components/MediaLibraryInput/MediaLibraryInput.d.ts +3 -1
  171. package/dist/admin/src/components/MediaLibraryInput/UploadProgressBar.d.ts +7 -0
  172. package/dist/admin/src/components/MediaLibraryInput/useFieldUploads.d.ts +31 -0
  173. package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +2 -0
  174. package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +3 -1
  175. package/dist/admin/src/pages/Assets/components/AssetsSearchInput.d.ts +11 -1
  176. package/dist/admin/src/pages/Assets/components/AssetsView.d.ts +29 -0
  177. package/dist/admin/src/pages/Assets/components/Dnd/ReorderHandle.d.ts +12 -0
  178. package/dist/admin/src/pages/Assets/components/Dnd/assetSortable.d.ts +37 -0
  179. package/dist/admin/src/pages/Assets/components/Dnd/dndIds.d.ts +5 -0
  180. package/dist/admin/src/pages/Assets/components/Dnd/useAssetDnd.d.ts +23 -2
  181. package/dist/admin/src/pages/Assets/components/FolderTree/FolderTree.d.ts +1 -0
  182. package/dist/admin/src/pages/Assets/components/FolderTree/collapsedBranch.d.ts +21 -0
  183. package/dist/admin/src/pages/Assets/components/ViewToggle.d.ts +8 -0
  184. package/dist/admin/src/pages/Assets/hooks/useAssetSelection.d.ts +26 -0
  185. package/dist/admin/src/pages/Assets/hooks/useAssetsList.d.ts +30 -0
  186. package/dist/admin/src/pages/Assets/hooks/useListQueryParams.d.ts +27 -0
  187. package/dist/admin/src/pages/Assets/hooks/useListSettings.d.ts +29 -0
  188. package/dist/admin/src/services/api.d.ts +24 -1
  189. package/dist/admin/src/store/uploadProgress.d.ts +14 -1
  190. package/dist/admin/src/utils/findFolderPath.d.ts +6 -0
  191. package/dist/admin/src/utils/isAllowedAssetType.d.ts +14 -0
  192. package/dist/admin/store/uploadProgress.js +30 -3
  193. package/dist/admin/store/uploadProgress.js.map +1 -1
  194. package/dist/admin/store/uploadProgress.mjs +29 -4
  195. package/dist/admin/store/uploadProgress.mjs.map +1 -1
  196. package/dist/admin/translations/en.json.js +20 -0
  197. package/dist/admin/translations/en.json.js.map +1 -1
  198. package/dist/admin/translations/en.json.mjs +20 -0
  199. package/dist/admin/translations/en.json.mjs.map +1 -1
  200. package/dist/admin/utils/findFolderPath.js +26 -0
  201. package/dist/admin/utils/findFolderPath.js.map +1 -0
  202. package/dist/admin/utils/findFolderPath.mjs +24 -0
  203. package/dist/admin/utils/findFolderPath.mjs.map +1 -0
  204. package/dist/admin/utils/isAllowedAssetType.js +33 -0
  205. package/dist/admin/utils/isAllowedAssetType.js.map +1 -0
  206. package/dist/admin/utils/isAllowedAssetType.mjs +31 -0
  207. package/dist/admin/utils/isAllowedAssetType.mjs.map +1 -0
  208. package/dist/server/controllers/admin-settings.js +5 -1
  209. package/dist/server/controllers/admin-settings.js.map +1 -1
  210. package/dist/server/controllers/admin-settings.mjs +5 -1
  211. package/dist/server/controllers/admin-settings.mjs.map +1 -1
  212. package/dist/server/services/image-manipulation.js +2 -2
  213. package/dist/server/services/image-manipulation.js.map +1 -1
  214. package/dist/server/services/image-manipulation.mjs +2 -2
  215. package/dist/server/services/image-manipulation.mjs.map +1 -1
  216. package/dist/server/services/upload.js.map +1 -1
  217. package/dist/server/services/upload.mjs.map +1 -1
  218. package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
  219. package/dist/server/src/index.d.ts +1 -1
  220. package/dist/server/src/services/extensions/utils.d.ts +11 -11
  221. package/dist/server/src/services/image-manipulation.d.ts +1 -1
  222. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  223. package/dist/server/src/services/index.d.ts +1 -1
  224. package/dist/server/src/types.d.ts +63 -12
  225. package/dist/server/src/types.d.ts.map +1 -1
  226. package/package.json +8 -6
  227. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js +0 -45
  228. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.js.map +0 -1
  229. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs +0 -43
  230. package/dist/admin/components/MediaLibraryInput/NoLibraryAccessDialog.mjs.map +0 -1
  231. package/dist/admin/src/components/MediaLibraryInput/NoLibraryAccessDialog.d.ts +0 -10
@@ -2,7 +2,6 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
- var ToggleGroup = require('@radix-ui/react-toggle-group');
6
5
  var strapiAdmin = require('@strapi/admin/strapi-admin');
7
6
  var designSystem = require('@strapi/design-system');
8
7
  var icons = require('@strapi/icons');
@@ -12,73 +11,32 @@ var useAIMetadataEnabled = require('../../hooks/useAIMetadataEnabled.js');
12
11
  var useMediaLibraryPermissions = require('../../hooks/useMediaLibraryPermissions.js');
13
12
  var useTracking = require('../../hooks/useTracking.js');
14
13
  var api = require('../../services/api.js');
15
- var folders = require('../../services/folders.js');
16
14
  var settings = require('../../services/settings.js');
17
15
  var itemLocations = require('../../utils/itemLocations.js');
18
16
  var translations = require('../../utils/translations.js');
19
17
  var typeFromMime = require('../../utils/typeFromMime.js');
20
18
  var AssetDetailsDrawer = require('./components/AssetDetails/AssetDetailsDrawer.js');
21
- var AssetsGrid = require('./components/AssetsGrid.js');
22
19
  var AssetsSearchInput = require('./components/AssetsSearchInput.js');
23
- var AssetsTable = require('./components/AssetsTable.js');
24
- var BulkActionsBar = require('./components/BulkActionsBar.js');
20
+ var AssetsView = require('./components/AssetsView.js');
25
21
  var AssetsDndProvider = require('./components/Dnd/AssetsDndProvider.js');
26
22
  var UploadDropZone = require('./components/DropZone/UploadDropZone.js');
27
23
  var UploadDropZoneContext = require('./components/DropZone/UploadDropZoneContext.js');
28
- var EmptyState = require('./components/EmptyState.js');
29
24
  var FilterBadges = require('./components/FilterBadges.js');
30
25
  var FilterMenu = require('./components/FilterMenu.js');
31
26
  var FolderFormDialog = require('./components/FolderFormDialog.js');
32
27
  var FolderTree = require('./components/FolderTree/FolderTree.js');
33
28
  var ImportFromUrlDialog = require('./components/ImportFromUrlDialog.js');
34
- var ItemContextMenu = require('./components/ItemContextMenu.js');
35
29
  var MainAreaContextMenu = require('./components/MainAreaContextMenu.js');
36
30
  var SortMenu = require('./components/SortMenu.js');
31
+ var ViewToggle = require('./components/ViewToggle.js');
37
32
  var constants = require('./constants.js');
38
- var useAssetSearch = require('./hooks/useAssetSearch.js');
39
33
  var useAssetSelection = require('./hooks/useAssetSelection.js');
34
+ var useAssetsList = require('./hooks/useAssetsList.js');
40
35
  var useBusyAssets = require('./hooks/useBusyAssets.js');
41
36
  var useFolderInfo = require('./hooks/useFolderInfo.js');
42
- var useFolderNavigation = require('./hooks/useFolderNavigation.js');
43
- var useInfiniteAssets = require('./hooks/useInfiniteAssets.js');
44
- var useInfiniteScrollSentinel = require('./hooks/useInfiniteScrollSentinel.js');
45
- var useListFilters = require('./hooks/useListFilters.js');
46
37
  var useListScrollRestoration = require('./hooks/useListScrollRestoration.js');
47
- var useListSort = require('./hooks/useListSort.js');
48
- var buildAssetFilters = require('./utils/buildAssetFilters.js');
49
38
  var listQueryKey = require('./utils/listQueryKey.js');
50
- var mergeMixedList = require('./utils/mergeMixedList.js');
51
- var renderedKeys = require('./utils/renderedKeys.js');
52
39
 
53
- function _interopNamespace(e) {
54
- if (e && e.__esModule) return e;
55
- var n = Object.create(null);
56
- if (e) {
57
- Object.keys(e).forEach(function (k) {
58
- if (k !== 'default') {
59
- var d = Object.getOwnPropertyDescriptor(e, k);
60
- Object.defineProperty(n, k, d.get ? d : {
61
- enumerable: true,
62
- get: function () { return e[k]; }
63
- });
64
- }
65
- });
66
- }
67
- n.default = e;
68
- return Object.freeze(n);
69
- }
70
-
71
- var ToggleGroup__namespace = /*#__PURE__*/_interopNamespace(ToggleGroup);
72
-
73
- // The negative bottom margin shrinks the trigger area by a pixel so the 1px
74
- // sentinel sitting exactly at the fold (when a page's rows happen to fill the
75
- // viewport) reads as "not visible" and doesn't pull an extra page. It still
76
- // triggers as soon as the sentinel scrolls a hair into view. Tune the bottom
77
- // value if the list over- or under-fetches near the fold.
78
- const INTERSECTION_OPTIONS = {
79
- threshold: 0,
80
- rootMargin: '0px 0px -1px 0px'
81
- };
82
40
  // Module-level so the header sentinel's observer isn't rebuilt every render.
83
41
  const HEADER_SENTINEL_OPTIONS = {
84
42
  threshold: 0
@@ -110,116 +68,6 @@ const getSearchResultsCountMessage = (numberFolders, numberAssets)=>{
110
68
  }
111
69
  return SEARCH_RESULTS_COUNT_MESSAGES.both;
112
70
  };
113
- const AssetsView = ({ view, folders, isLoadingFolders, assets, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error, locations, searchQuery, assetsSort, foldersPosition, hasActiveFilters, onClearFilters, onAssetItemClick, onAddAssets, canAddAssets, onClearSearch })=>{
114
- const { formatMessage } = reactIntl.useIntl();
115
- const isGridView = view === constants.viewOptions.GRID;
116
- const isLoading = isLoadingAssets || isLoadingFolders;
117
- // "Folders: Mixed with files" — interleave the complete folder list into the
118
- // loaded asset stream client-side, following the active sort. Table view
119
- // only: the grid always keeps folders in their own band on top.
120
- const mixedItems = React.useMemo(()=>foldersPosition === 'mixed' && !isGridView ? mergeMixedList.mergeMixedList({
121
- folders,
122
- assets,
123
- sort: assetsSort,
124
- hasNextPage
125
- }) : null, [
126
- foldersPosition,
127
- isGridView,
128
- folders,
129
- assets,
130
- assetsSort,
131
- hasNextPage
132
- ]);
133
- // Derived once here so the table, the grid and the bulk bar all agree on what
134
- // is on screen — in mixed mode that is not simply every folder.
135
- const renderedKeys$1 = renderedKeys.buildRenderedKeys({
136
- folders,
137
- assets,
138
- mixedItems
139
- });
140
- const loadMoreRef = useInfiniteScrollSentinel.useInfiniteScrollSentinel({
141
- hasNextPage,
142
- isFetchingMore,
143
- onLoadMore: fetchNextPage,
144
- options: INTERSECTION_OPTIONS
145
- });
146
- if (isLoading) {
147
- return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
148
- justifyContent: "center",
149
- padding: 8,
150
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
151
- children: formatMessage({
152
- id: 'app.loading',
153
- defaultMessage: 'Loading...'
154
- })
155
- })
156
- });
157
- }
158
- if (error) {
159
- return /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
160
- padding: 8,
161
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
162
- textColor: "danger600",
163
- children: formatMessage({
164
- id: translations.getTranslationKey('list.assets.error'),
165
- defaultMessage: 'An error occurred while fetching assets.'
166
- })
167
- })
168
- });
169
- }
170
- if (folders.length === 0 && assets.length === 0) {
171
- // While searching, the search empty state wins (it names the query); a
172
- // filter-only dead end gets the filtered variant with its Clear action.
173
- return hasActiveFilters && !searchQuery ? /*#__PURE__*/ jsxRuntime.jsx(EmptyState.FilteredEmptyState, {
174
- onClearFilters: onClearFilters
175
- }) : /*#__PURE__*/ jsxRuntime.jsx(EmptyState.EmptyState, {
176
- onAddAssets: onAddAssets,
177
- canAddAssets: canAddAssets,
178
- searchQuery: searchQuery,
179
- onClearSearch: onClearSearch
180
- });
181
- }
182
- return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
183
- children: [
184
- /*#__PURE__*/ jsxRuntime.jsx(ItemContextMenu.ItemContextMenuProvider, {
185
- locations: locations,
186
- children: isGridView ? /*#__PURE__*/ jsxRuntime.jsx(AssetsGrid.AssetsGrid, {
187
- folders: folders,
188
- assets: assets,
189
- renderedKeys: renderedKeys$1,
190
- onAssetItemClick: onAssetItemClick
191
- }) : /*#__PURE__*/ jsxRuntime.jsx(AssetsTable.AssetsTable, {
192
- assets: assets,
193
- folders: folders,
194
- mixedItems: mixedItems,
195
- renderedKeys: renderedKeys$1,
196
- onAssetItemClick: onAssetItemClick
197
- })
198
- }),
199
- /*#__PURE__*/ jsxRuntime.jsx("div", {
200
- ref: loadMoreRef,
201
- style: {
202
- height: 1
203
- }
204
- }),
205
- isFetchingMore && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
206
- justifyContent: "center",
207
- padding: 4,
208
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Loader, {
209
- children: formatMessage({
210
- id: translations.getTranslationKey('list.assets.loading-more'),
211
- defaultMessage: 'Loading more assets...'
212
- })
213
- })
214
- }),
215
- /*#__PURE__*/ jsxRuntime.jsx(BulkActionsBar.BulkActionsBar, {
216
- assets: assets,
217
- renderedKeys: renderedKeys$1,
218
- locations: locations
219
- })
220
- ]
221
- });
222
- };
223
71
  const ClearSelectionOnChange = ({ listQueryKey })=>{
224
72
  const { clear } = useAssetSelection.useAssetSelection();
225
73
  React.useEffect(()=>{
@@ -232,50 +80,7 @@ const ClearSelectionOnChange = ({ listQueryKey })=>{
232
80
  };
233
81
  /* -------------------------------------------------------------------------------------------------
234
82
  * AssetsPage
235
- * -----------------------------------------------------------------------------------------------*/ /**
236
- * Mirrors the design-system Toggle look (grey track, white active segment
237
- * card) — reproduced locally because the DS component is a labels-only
238
- * boolean input (no icons) and paints its left segment in danger red. Here
239
- * both segments use the primary blue when active.
240
- */ const StyledToggleGroup = styledComponents.styled(ToggleGroup__namespace.Root)`
241
- display: flex;
242
- padding: ${({ theme })=>theme.spaces[1]};
243
- background: ${({ theme })=>theme.colors.neutral100};
244
- border: 1px solid ${({ theme })=>theme.colors.neutral200};
245
- border-radius: ${({ theme })=>theme.borderRadius};
246
- `;
247
- const StyledToggleItem = styledComponents.styled(ToggleGroup__namespace.Item)`
248
- display: flex;
249
- flex: 1 1 50%;
250
- align-items: center;
251
- justify-content: center;
252
- gap: ${({ theme })=>theme.spaces[2]};
253
- padding: 0.6rem ${({ theme })=>theme.spaces[3]};
254
- border: 1px solid transparent;
255
- border-radius: ${({ theme })=>theme.borderRadius};
256
- background: transparent;
257
- color: ${({ theme })=>theme.colors.neutral600};
258
- cursor: pointer;
259
- font-size: ${({ theme })=>theme.fontSizes[1]};
260
- font-weight: ${({ theme })=>theme.fontWeights.semiBold};
261
- white-space: nowrap;
262
-
263
- &:hover {
264
- color: ${({ theme })=>theme.colors.neutral700};
265
- }
266
-
267
- &[data-state='on'] {
268
- background: ${({ theme })=>theme.colors.neutral0};
269
- border-color: ${({ theme })=>theme.colors.neutral200};
270
- color: ${({ theme })=>theme.colors.primary600};
271
- }
272
-
273
- svg {
274
- width: 1.6rem;
275
- height: 1.6rem;
276
- }
277
- `;
278
- // A single sticky header — same layout scrolled or not, so the toolbar
83
+ * -----------------------------------------------------------------------------------------------*/ // A single sticky header — same layout scrolled or not, so the toolbar
279
84
  // alignment can't reflow the way the shared sticky header did. Once the list
280
85
  // scrolls under it, it shrinks (reduced vertical padding + a shadow to lift it
281
86
  // off the rows), like the sticky headers elsewhere in the admin. Horizontal
@@ -385,73 +190,18 @@ const SearchSlot = styledComponents.styled(designSystem.Box)`
385
190
  flex: 0 1 auto;
386
191
  }
387
192
  `;
388
- // Toggle labels are hidden below desktop — icons only (buttons keep aria-label).
389
- const ToggleLabel = styledComponents.styled.span`
390
- display: none;
391
-
392
- ${({ theme })=>theme.breakpoints.large} {
393
- display: inline;
394
- }
395
- `;
396
193
  const AssetsPage = ()=>{
397
194
  const { formatMessage } = reactIntl.useIntl();
398
195
  const { openDetails } = AssetDetailsDrawer.useAssetDetailsParam();
399
196
  const { canCreate, canUpdate } = useMediaLibraryPermissions.useMediaLibraryPermissions();
400
- const { currentFolderId, navigateToFolderId, navigateToRoot } = useFolderNavigation.useFolderNavigation();
401
- // Deleted or missing folders (404) need a fetch — handled here, not in
402
- // `useFolderNavigation` (which only strips malformed ?folder= values).
403
- const { error: currentFolderError } = folders.useGetFolderQuery({
404
- id: currentFolderId
405
- }, {
406
- skip: currentFolderId === null
407
- });
408
- React.useEffect(()=>{
409
- if (currentFolderError?.name === 'NotFoundError') {
410
- navigateToRoot();
411
- }
412
- }, [
413
- currentFolderError,
414
- navigateToRoot
415
- ]);
197
+ const { currentFolderId, navigateToFolderId, searchQuery, isSearching, clearSearch, listSort, listFilters, assets, subscribers: assetPageSubscribers, pagination, isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, assetsError, folders, isLoadingFolders } = useAssetsList.useAssetsList();
416
198
  const { title, itemCount } = useFolderInfo.useFolderInfo(currentFolderId);
417
- const { searchQuery, isSearching, clearSearch } = useAssetSearch.useAssetSearch();
418
- const listSort = useListSort.useListSort();
419
- const listFilters = useListFilters.useListFilters();
420
- // Resolve relative presets against "now" only when the filters change —
421
- // keeps the query args (and RTK cache keys) stable between renders.
422
- const builtFilters = React.useMemo(()=>buildAssetFilters.buildAssetFilters(listFilters.filters, new Date()), // eslint-disable-next-line react-hooks/exhaustive-deps -- serialized is the value identity of filters
423
- [
424
- listFilters.serialized
425
- ]);
426
- const { assets, subscribers: assetPageSubscribers, pagination, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error: assetsError } = useInfiniteAssets.useInfiniteAssets({
427
- // The real folder is passed even while searching: the service drops the folder
428
- // filter when `search` is set, so results are still global. List filters
429
- // compose with both modes.
430
- folder: currentFolderId,
431
- search: searchQuery || undefined,
432
- sort: listSort.assetsSort,
433
- filters: builtFilters.fileClauses,
434
- enabled: builtFilters.showFiles
435
- });
436
- const { data: fetchedFolders = [], isLoading: isLoadingFolders } = folders.useGetFoldersQuery({
437
- parentId: currentFolderId,
438
- search: searchQuery || undefined,
439
- sort: listSort.foldersSort,
440
- filters: builtFilters.folderClauses
441
- }, {
442
- skip: !builtFilters.showFolders
443
- });
444
- // A type badge can exclude folders structurally (e.g. "Type is Picture").
445
- const folders$1 = React.useMemo(()=>builtFilters.showFolders ? fetchedFolders : [], [
446
- builtFilters.showFolders,
447
- fetchedFolders
448
- ]);
449
199
  // Both move affordances (drag and the bulk bar) resolve each item's parent
450
200
  // from the rows on screen — while searching, results are global and the
451
201
  // folder currently open says nothing about where an item lives.
452
- const itemLocations$1 = React.useMemo(()=>itemLocations.buildItemLocations(assets, folders$1), [
202
+ const itemLocations$1 = React.useMemo(()=>itemLocations.buildItemLocations(assets, folders), [
453
203
  assets,
454
- folders$1
204
+ folders
455
205
  ]);
456
206
  const itemCountLabel = formatMessage(ITEM_COUNT_MESSAGE, {
457
207
  count: itemCount
@@ -462,7 +212,7 @@ const AssetsPage = ()=>{
462
212
  }, {
463
213
  query: searchQuery
464
214
  });
465
- const numberFolders = folders$1.length;
215
+ const numberFolders = folders.length;
466
216
  const numberAssets = pagination?.total ?? 0;
467
217
  const searchResultsCountLabel = formatMessage(getSearchResultsCountMessage(numberFolders, numberAssets), {
468
218
  numberFolders,
@@ -723,48 +473,9 @@ const AssetsPage = ()=>{
723
473
  showFoldersGroup: !isGridView
724
474
  })
725
475
  }),
726
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleGroup, {
727
- type: "single",
728
- value: isGridView ? 'grid' : 'table',
729
- onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
730
- "aria-label": formatMessage({
731
- id: translations.getTranslationKey('view.switch.label'),
732
- defaultMessage: 'View options'
733
- }),
734
- children: [
735
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
736
- value: "table",
737
- "aria-label": formatMessage({
738
- id: translations.getTranslationKey('view.table'),
739
- defaultMessage: 'Table view'
740
- }),
741
- children: [
742
- /*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
743
- /*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
744
- children: formatMessage({
745
- id: translations.getTranslationKey('view.table'),
746
- defaultMessage: 'Table view'
747
- })
748
- })
749
- ]
750
- }),
751
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
752
- value: "grid",
753
- "aria-label": formatMessage({
754
- id: translations.getTranslationKey('view.grid'),
755
- defaultMessage: 'Grid view'
756
- }),
757
- children: [
758
- /*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
759
- /*#__PURE__*/ jsxRuntime.jsx(ToggleLabel, {
760
- children: formatMessage({
761
- id: translations.getTranslationKey('view.grid'),
762
- defaultMessage: 'Grid view'
763
- })
764
- })
765
- ]
766
- })
767
- ]
476
+ /*#__PURE__*/ jsxRuntime.jsx(ViewToggle.ViewToggle, {
477
+ view: view,
478
+ onChange: setView
768
479
  })
769
480
  ]
770
481
  })
@@ -785,9 +496,9 @@ const AssetsPage = ()=>{
785
496
  uploadDropZoneRef: uploadDropZoneRef,
786
497
  folderName: title
787
498
  }),
788
- /*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
499
+ /*#__PURE__*/ jsxRuntime.jsx(AssetsView.AssetsView, {
789
500
  view: view,
790
- folders: folders$1,
501
+ folders: folders,
791
502
  isLoadingFolders: isLoadingFolders,
792
503
  assets: assets,
793
504
  isLoadingAssets: isLoadingAssets,