@strapi/upload 5.51.2 → 5.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. package/dist/admin/future/App.js +3 -3
  2. package/dist/admin/future/App.js.map +1 -1
  3. package/dist/admin/future/App.mjs +4 -4
  4. package/dist/admin/future/App.mjs.map +1 -1
  5. package/dist/admin/future/components/BetaNotice.js +72 -0
  6. package/dist/admin/future/components/BetaNotice.js.map +1 -0
  7. package/dist/admin/future/components/BetaNotice.mjs +70 -0
  8. package/dist/admin/future/components/BetaNotice.mjs.map +1 -0
  9. package/dist/admin/future/components/Drawer.js +16 -3
  10. package/dist/admin/future/components/Drawer.js.map +1 -1
  11. package/dist/admin/future/components/Drawer.mjs +16 -3
  12. package/dist/admin/future/components/Drawer.mjs.map +1 -1
  13. package/dist/admin/future/components/TruncatedText.js +76 -0
  14. package/dist/admin/future/components/TruncatedText.js.map +1 -0
  15. package/dist/admin/future/components/TruncatedText.mjs +74 -0
  16. package/dist/admin/future/components/TruncatedText.mjs.map +1 -0
  17. package/dist/admin/future/hooks/useAIMetadataEnabled.js +39 -0
  18. package/dist/admin/future/hooks/useAIMetadataEnabled.js.map +1 -0
  19. package/dist/admin/future/hooks/useAIMetadataEnabled.mjs +37 -0
  20. package/dist/admin/future/hooks/useAIMetadataEnabled.mjs.map +1 -0
  21. package/dist/admin/future/hooks/useTracking.js +57 -0
  22. package/dist/admin/future/hooks/useTracking.js.map +1 -0
  23. package/dist/admin/future/hooks/useTracking.mjs +53 -0
  24. package/dist/admin/future/hooks/useTracking.mjs.map +1 -0
  25. package/dist/admin/future/pages/Assets/AssetsPage.js +328 -139
  26. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  27. package/dist/admin/future/pages/Assets/AssetsPage.mjs +332 -143
  28. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  29. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js +46 -0
  30. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js.map +1 -0
  31. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs +44 -0
  32. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs.map +1 -0
  33. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js +328 -0
  34. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +1 -0
  35. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs +326 -0
  36. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +1 -0
  37. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +35 -14
  38. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -1
  39. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +35 -14
  40. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -1
  41. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +74 -53
  42. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
  43. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +74 -54
  44. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
  45. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +92 -28
  46. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  47. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +94 -30
  48. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  49. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js +26 -4
  50. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +1 -1
  51. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs +27 -5
  52. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +1 -1
  53. package/dist/admin/future/pages/Assets/components/AssetsTable.js +172 -60
  54. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  55. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +175 -63
  56. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  57. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +64 -132
  58. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +1 -1
  59. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +64 -132
  60. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +1 -1
  61. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js +123 -76
  62. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +1 -1
  63. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs +126 -79
  64. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +1 -1
  65. package/dist/admin/future/pages/Assets/components/BusyOverlay.js +36 -0
  66. package/dist/admin/future/pages/Assets/components/BusyOverlay.js.map +1 -0
  67. package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs +34 -0
  68. package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs.map +1 -0
  69. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js +131 -0
  70. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js.map +1 -0
  71. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs +129 -0
  72. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -0
  73. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +27 -17
  74. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -1
  75. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +28 -18
  76. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -1
  77. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js +28 -31
  78. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +1 -1
  79. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs +28 -31
  80. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -1
  81. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +10 -15
  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 +10 -15
  84. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -1
  85. package/dist/admin/future/pages/Assets/components/FilterBadges.js +13 -4
  86. package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +1 -1
  87. package/dist/admin/future/pages/Assets/components/FilterBadges.mjs +13 -4
  88. package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +1 -1
  89. package/dist/admin/future/pages/Assets/components/FilterMenu.js +259 -63
  90. package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +1 -1
  91. package/dist/admin/future/pages/Assets/components/FilterMenu.mjs +262 -66
  92. package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +1 -1
  93. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js +146 -0
  94. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js.map +1 -0
  95. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs +144 -0
  96. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs.map +1 -0
  97. package/dist/admin/future/pages/Assets/components/{CreateFolderDialog.js → FolderFormDialog.js} +62 -16
  98. package/dist/admin/future/pages/Assets/components/FolderFormDialog.js.map +1 -0
  99. package/dist/admin/future/pages/Assets/components/{CreateFolderDialog.mjs → FolderFormDialog.mjs} +64 -18
  100. package/dist/admin/future/pages/Assets/components/FolderFormDialog.mjs.map +1 -0
  101. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js +132 -229
  102. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +1 -1
  103. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs +135 -232
  104. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -1
  105. package/dist/admin/future/pages/Assets/components/SortMenu.js +14 -0
  106. package/dist/admin/future/pages/Assets/components/SortMenu.js.map +1 -1
  107. package/dist/admin/future/pages/Assets/components/SortMenu.mjs +14 -0
  108. package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +1 -1
  109. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js +5 -0
  110. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +1 -1
  111. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs +6 -1
  112. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +1 -1
  113. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js +47 -0
  114. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js.map +1 -0
  115. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs +44 -0
  116. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs.map +1 -0
  117. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js +203 -62
  118. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
  119. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs +204 -63
  120. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
  121. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js +75 -0
  122. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +1 -0
  123. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs +73 -0
  124. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +1 -0
  125. package/dist/admin/future/pages/Assets/utils/selection.js +17 -0
  126. package/dist/admin/future/pages/Assets/utils/selection.js.map +1 -1
  127. package/dist/admin/future/pages/Assets/utils/selection.mjs +17 -1
  128. package/dist/admin/future/pages/Assets/utils/selection.mjs.map +1 -1
  129. package/dist/admin/future/services/api.js +31 -8
  130. package/dist/admin/future/services/api.js.map +1 -1
  131. package/dist/admin/future/services/api.mjs +31 -8
  132. package/dist/admin/future/services/api.mjs.map +1 -1
  133. package/dist/admin/future/services/assets.js +22 -23
  134. package/dist/admin/future/services/assets.js.map +1 -1
  135. package/dist/admin/future/services/assets.mjs +22 -23
  136. package/dist/admin/future/services/assets.mjs.map +1 -1
  137. package/dist/admin/future/services/folders.js +37 -2
  138. package/dist/admin/future/services/folders.js.map +1 -1
  139. package/dist/admin/future/services/folders.mjs +37 -3
  140. package/dist/admin/future/services/folders.mjs.map +1 -1
  141. package/dist/admin/future/utils/buildDragSetFromSelection.js +7 -5
  142. package/dist/admin/future/utils/buildDragSetFromSelection.js.map +1 -1
  143. package/dist/admin/future/utils/buildDragSetFromSelection.mjs +7 -5
  144. package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +1 -1
  145. package/dist/admin/future/utils/formatMoveSuccessMessage.js +12 -1
  146. package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +1 -1
  147. package/dist/admin/future/utils/formatMoveSuccessMessage.mjs +12 -1
  148. package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +1 -1
  149. package/dist/admin/future/utils/getRelationId.js +24 -0
  150. package/dist/admin/future/utils/getRelationId.js.map +1 -0
  151. package/dist/admin/future/utils/getRelationId.mjs +22 -0
  152. package/dist/admin/future/utils/getRelationId.mjs.map +1 -0
  153. package/dist/admin/future/utils/isEventFromWithin.js +14 -0
  154. package/dist/admin/future/utils/isEventFromWithin.js.map +1 -0
  155. package/dist/admin/future/utils/isEventFromWithin.mjs +12 -0
  156. package/dist/admin/future/utils/isEventFromWithin.mjs.map +1 -0
  157. package/dist/admin/future/utils/itemLocations.js +40 -0
  158. package/dist/admin/future/utils/itemLocations.js.map +1 -0
  159. package/dist/admin/future/utils/itemLocations.mjs +36 -0
  160. package/dist/admin/future/utils/itemLocations.mjs.map +1 -0
  161. package/dist/admin/future/utils/itemSource.js +36 -0
  162. package/dist/admin/future/utils/itemSource.js.map +1 -0
  163. package/dist/admin/future/utils/itemSource.mjs +32 -0
  164. package/dist/admin/future/utils/itemSource.mjs.map +1 -0
  165. package/dist/admin/hooks/useAIMetadataJob.js +1 -1
  166. package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
  167. package/dist/admin/hooks/useAIMetadataJob.mjs +1 -1
  168. package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
  169. package/dist/admin/index.js +11 -17
  170. package/dist/admin/index.js.map +1 -1
  171. package/dist/admin/index.mjs +12 -18
  172. package/dist/admin/index.mjs.map +1 -1
  173. package/dist/admin/pages/SettingsPage/SettingsPage.js +2 -2
  174. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  175. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +2 -2
  176. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  177. package/dist/admin/src/future/App.d.ts +1 -1
  178. package/dist/admin/src/future/components/BetaNotice.d.ts +11 -0
  179. package/dist/admin/src/future/components/Drawer.d.ts +5 -1
  180. package/dist/admin/src/future/components/TruncatedText.d.ts +32 -0
  181. package/dist/admin/src/future/hooks/useAIMetadataEnabled.d.ts +26 -0
  182. package/dist/admin/src/future/hooks/useTracking.d.ts +29 -0
  183. package/dist/admin/src/future/pages/Assets/components/ActionsMenuContent.d.ts +33 -0
  184. package/dist/admin/src/future/pages/Assets/components/AssetActionsMenu.d.ts +26 -0
  185. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +16 -0
  186. package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +8 -1
  187. package/dist/admin/src/future/pages/Assets/components/BulkMoveDialog.d.ts +17 -6
  188. package/dist/admin/src/future/pages/Assets/components/BusyOverlay.d.ts +9 -0
  189. package/dist/admin/src/future/pages/Assets/components/DeleteItemsDialog.d.ts +27 -0
  190. package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +8 -1
  191. package/dist/admin/src/future/pages/Assets/components/Dnd/buildDragSet.d.ts +18 -3
  192. package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +2 -1
  193. package/dist/admin/src/future/pages/Assets/components/FilterBadges.d.ts +3 -1
  194. package/dist/admin/src/future/pages/Assets/components/FilterMenu.d.ts +4 -0
  195. package/dist/admin/src/future/pages/Assets/components/FolderActionsMenu.d.ts +21 -0
  196. package/dist/admin/src/future/pages/Assets/components/FolderFormDialog.d.ts +16 -0
  197. package/dist/admin/src/future/pages/Assets/hooks/useAssetSelection.d.ts +2 -0
  198. package/dist/admin/src/future/pages/Assets/hooks/useBusyAssets.d.ts +38 -0
  199. package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +20 -6
  200. package/dist/admin/src/future/pages/Assets/hooks/useInfiniteScrollSentinel.d.ts +41 -0
  201. package/dist/admin/src/future/pages/Assets/utils/selection.d.ts +10 -0
  202. package/dist/admin/src/future/services/api.d.ts +6 -7
  203. package/dist/admin/src/future/services/folders.d.ts +6 -1
  204. package/dist/admin/src/future/utils/buildDragSetFromSelection.d.ts +4 -3
  205. package/dist/admin/src/future/utils/formatMoveSuccessMessage.d.ts +7 -1
  206. package/dist/admin/src/future/utils/getRelationId.d.ts +11 -0
  207. package/dist/admin/src/future/utils/isEventFromWithin.d.ts +11 -0
  208. package/dist/admin/src/future/utils/itemLocations.d.ts +31 -0
  209. package/dist/admin/src/future/utils/itemSource.d.ts +22 -0
  210. package/dist/admin/translations/en.json.js +25 -4
  211. package/dist/admin/translations/en.json.js.map +1 -1
  212. package/dist/admin/translations/en.json.mjs +25 -4
  213. package/dist/admin/translations/en.json.mjs.map +1 -1
  214. package/dist/server/controllers/admin-file.js +27 -9
  215. package/dist/server/controllers/admin-file.js.map +1 -1
  216. package/dist/server/controllers/admin-file.mjs +27 -9
  217. package/dist/server/controllers/admin-file.mjs.map +1 -1
  218. package/dist/server/controllers/admin-upload.js +24 -8
  219. package/dist/server/controllers/admin-upload.js.map +1 -1
  220. package/dist/server/controllers/admin-upload.mjs +24 -8
  221. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  222. package/dist/server/routes/admin.js +41 -21
  223. package/dist/server/routes/admin.js.map +1 -1
  224. package/dist/server/routes/admin.mjs +41 -21
  225. package/dist/server/routes/admin.mjs.map +1 -1
  226. package/dist/server/services/ai-metadata.js.map +1 -1
  227. package/dist/server/services/ai-metadata.mjs.map +1 -1
  228. package/dist/server/services/image-manipulation.js.map +1 -1
  229. package/dist/server/services/image-manipulation.mjs.map +1 -1
  230. package/dist/server/src/controllers/admin-file.d.ts +29 -8
  231. package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
  232. package/dist/server/src/controllers/admin-upload.d.ts +20 -4
  233. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  234. package/dist/server/src/controllers/index.d.ts +4 -4
  235. package/dist/server/src/index.d.ts +4 -4
  236. package/dist/server/src/routes/admin.d.ts.map +1 -1
  237. package/dist/server/src/services/ai-metadata.d.ts +2 -2
  238. package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
  239. package/dist/server/src/services/image-manipulation.d.ts +0 -5
  240. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  241. package/dist/shared/contracts/ai-metadata-jobs.d.ts +10 -32
  242. package/dist/shared/contracts/ai-metadata-jobs.d.ts.map +1 -1
  243. package/dist/shared/contracts/files.d.ts +10 -10
  244. package/dist/shared/contracts/files.d.ts.map +1 -1
  245. package/package.json +9 -9
  246. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js.map +0 -1
  247. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs.map +0 -1
  248. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js +0 -33
  249. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.js.map +0 -1
  250. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs +0 -31
  251. package/dist/admin/future/pages/Assets/components/FolderTree/filterFolderTree.mjs.map +0 -1
  252. package/dist/admin/src/future/pages/Assets/components/CreateFolderDialog.d.ts +0 -8
  253. package/dist/admin/src/future/pages/Assets/components/FolderTree/filterFolderTree.d.ts +0 -16
@@ -7,16 +7,18 @@ import { useIntl } from 'react-intl';
7
7
  import { styled } from 'styled-components';
8
8
  import { ASSET_TYPES } from '../../../../../enums.mjs';
9
9
  import { Drawer } from '../../../../components/Drawer.mjs';
10
+ import { useAIMetadataEnabled } from '../../../../hooks/useAIMetadataEnabled.mjs';
10
11
  import { useMediaLibraryPermissions } from '../../../../hooks/useMediaLibraryPermissions.mjs';
12
+ import { useTracking, MEDIA_LIBRARY_LOCATION } from '../../../../hooks/useTracking.mjs';
11
13
  import { useUploadFileSilentlyMutation } from '../../../../services/api.mjs';
12
14
  import { useGetAssetQuery, useUpdateAssetMutation, useReplaceAssetMutation, useDeleteAssetMutation } from '../../../../services/assets.mjs';
13
15
  import { useGetAllFoldersQuery } from '../../../../services/folders.mjs';
14
- import { useGetUploadSettingsQuery } from '../../../../services/settings.mjs';
15
16
  import { downloadFile } from '../../../../utils/downloadFile.mjs';
16
17
  import { formatBytes, getFileExtension, prefixFileUrlWithBackendUrl } from '../../../../utils/files.mjs';
17
18
  import { getAssetIcon } from '../../../../utils/getAssetIcon.mjs';
18
19
  import { getTranslationKey } from '../../../../utils/translations.mjs';
19
20
  import { useFolderInfo } from '../../hooks/useFolderInfo.mjs';
21
+ import { BusyOverlay } from '../BusyOverlay.mjs';
20
22
  import { AssetCropEditor } from './AssetCropEditor.mjs';
21
23
  import { AssetPreview } from './AssetPreview.mjs';
22
24
 
@@ -147,22 +149,13 @@ const DetailItem = ({ label, value })=>/*#__PURE__*/ jsxs(DetailItemContainer, {
147
149
  z-index: 10;
148
150
  width: calc(100% - ${({ theme })=>theme.spaces[2]});
149
151
  `;
150
- /**
151
- * Full-form overlay rendered during long-running drawer-scoped mutations
152
- * (e.g. replacing the binary). Sits above the toast slot (z-index 10) and
153
- * the in-drawer Alert so the user can't interact with the form mid-flight.
154
- */ const DrawerBusyOverlay = styled(Flex)`
155
- position: absolute;
156
- inset: 0;
157
- z-index: 20;
158
- align-items: center;
159
- justify-content: center;
160
- background: ${({ theme })=>theme.colors.neutral0};
161
- opacity: 0.7;
162
- `;
163
152
  /**
164
153
  * Map the drawer-scoped mutation flags to a single i18n message for the busy
165
154
  * overlay loader. Returns `null` when nothing is in flight.
155
+ *
156
+ * Exported for the unit test: the branch order only matters when two flags are
157
+ * true at once, which the UI makes hard to stage through the rendered drawer
158
+ * (each trigger disables itself while its own mutation runs).
166
159
  */ const getBusyMessage = (state)=>{
167
160
  if (state.isDeleting) {
168
161
  return {
@@ -415,15 +408,14 @@ const DownloadAssetButton = ({ asset })=>{
415
408
  children: /*#__PURE__*/ jsx(Download, {})
416
409
  });
417
410
  };
418
- /* -------------------------------------------------------------------------------------------------
419
- * ReplaceAssetButton
420
- * -----------------------------------------------------------------------------------------------*/ const ReplaceAssetButton = ()=>{
411
+ const ReplaceAssetButton = ({ mime })=>{
421
412
  const { formatMessage } = useIntl();
422
413
  const { replaceAsset, isReplacing } = useAssetOperation();
423
414
  const fileInputRef = React.useRef(null);
424
415
  const [isDialogOpen, setIsDialogOpen] = React.useState(false);
425
- const { data: settings } = useGetUploadSettingsQuery();
426
- const aiEnabled = settings?.data?.aiMetadata ?? false;
416
+ const aiEnabled = useAIMetadataEnabled({
417
+ mime
418
+ });
427
419
  const handleTriggerClick = ()=>{
428
420
  setIsDialogOpen(true);
429
421
  };
@@ -531,7 +523,7 @@ const DownloadAssetButton = ({ asset })=>{
531
523
  ]
532
524
  });
533
525
  };
534
- const AssetImageActions = ({ onCrop })=>{
526
+ const AssetImageActions = ({ onCrop, mime })=>{
535
527
  const { formatMessage } = useIntl();
536
528
  const isSubmitting = useForm('AssetImageActions', (state)=>state.isSubmitting);
537
529
  return /*#__PURE__*/ jsxs(Flex, {
@@ -549,7 +541,9 @@ const AssetImageActions = ({ onCrop })=>{
549
541
  disabled: isSubmitting || !onCrop,
550
542
  children: /*#__PURE__*/ jsx(Crop, {})
551
543
  }),
552
- /*#__PURE__*/ jsx(ReplaceAssetButton, {})
544
+ /*#__PURE__*/ jsx(ReplaceAssetButton, {
545
+ mime: mime
546
+ })
553
547
  ]
554
548
  });
555
549
  };
@@ -559,6 +553,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
559
553
  const { data: folders = [] } = useGetAllFoldersQuery();
560
554
  const { toggleNotification } = useNotification();
561
555
  const [updateAsset] = useUpdateAssetMutation();
556
+ const { trackUsage } = useTracking();
562
557
  const [replaceMutation, { isLoading: isReplacing }] = useReplaceAssetMutation();
563
558
  const [deleteMutation, { isLoading: isDeleting }] = useDeleteAssetMutation();
564
559
  const [uploadCroppedCopy, { isLoading: isCropCopying }] = useUploadFileSilentlyMutation();
@@ -603,6 +598,12 @@ const AssetDetails = ({ asset, closeDetails })=>{
603
598
  });
604
599
  return;
605
600
  }
601
+ trackUsage('didEditMediaLibraryElements', {
602
+ location: MEDIA_LIBRARY_LOCATION,
603
+ // Legacy sends the mime top-level type (image/video/audio/application…).
604
+ type: asset.mime?.split('/')[0],
605
+ changeLocation: values.folder !== initialValues.folder
606
+ });
606
607
  notify({
607
608
  type: 'success',
608
609
  message: formatMessage({
@@ -613,7 +614,7 @@ const AssetDetails = ({ asset, closeDetails })=>{
613
614
  };
614
615
  const { title: folderName } = useFolderInfo(typeof asset.folder === 'object' && asset.folder !== null ? asset.folder.id ?? null : asset.folder ?? null);
615
616
  // Owns the replace upload so isReplacing can drive the busy overlay.
616
- const handleReplace = async (file)=>{
617
+ const handleReplace = React.useCallback(async (file)=>{
617
618
  const res = await replaceMutation({
618
619
  id: asset.id,
619
620
  file
@@ -630,6 +631,9 @@ const AssetDetails = ({ asset, closeDetails })=>{
630
631
  });
631
632
  return;
632
633
  }
634
+ trackUsage('didReplaceMedia', {
635
+ location: MEDIA_LIBRARY_LOCATION
636
+ });
633
637
  notify({
634
638
  type: 'success',
635
639
  message: formatMessage({
@@ -637,10 +641,16 @@ const AssetDetails = ({ asset, closeDetails })=>{
637
641
  defaultMessage: 'File replaced.'
638
642
  })
639
643
  });
640
- };
644
+ }, [
645
+ asset.id,
646
+ formatMessage,
647
+ notify,
648
+ replaceMutation,
649
+ trackUsage
650
+ ]);
641
651
  // Owns the delete: on error notify in-drawer (drawer stays), on success fire
642
652
  // a persistent global notification then close the drawer.
643
- const handleDelete = async ()=>{
653
+ const handleDelete = React.useCallback(async ()=>{
644
654
  const res = await deleteMutation(asset.id);
645
655
  if ('error' in res) {
646
656
  const error = res.error;
@@ -664,7 +674,15 @@ const AssetDetails = ({ asset, closeDetails })=>{
664
674
  })
665
675
  });
666
676
  closeDetails();
667
- };
677
+ }, [
678
+ asset.id,
679
+ closeDetails,
680
+ deleteMutation,
681
+ folderName,
682
+ formatMessage,
683
+ notify,
684
+ toggleNotification
685
+ ]);
668
686
  const notifyCropError = ()=>{
669
687
  notify({
670
688
  type: 'danger',
@@ -690,6 +708,10 @@ const AssetDetails = ({ asset, closeDetails })=>{
690
708
  notifyCropError();
691
709
  return;
692
710
  }
711
+ trackUsage('didCropFile', {
712
+ location: MEDIA_LIBRARY_LOCATION,
713
+ duplicatedFile: false
714
+ });
693
715
  notify({
694
716
  type: 'success',
695
717
  message: formatMessage({
@@ -717,6 +739,10 @@ const AssetDetails = ({ asset, closeDetails })=>{
717
739
  notifyCropError();
718
740
  return;
719
741
  }
742
+ trackUsage('didCropFile', {
743
+ location: MEDIA_LIBRARY_LOCATION,
744
+ duplicatedFile: true
745
+ });
720
746
  notify({
721
747
  type: 'success',
722
748
  message: formatMessage({
@@ -730,10 +756,9 @@ const AssetDetails = ({ asset, closeDetails })=>{
730
756
  deleteAsset: handleDelete,
731
757
  isReplacing,
732
758
  isDeleting
733
- }), // handleReplace / handleDelete close over asset+mutations and don't need a
734
- // stable identity here; the consumers re-render with the new context value.
735
- // eslint-disable-next-line react-hooks/exhaustive-deps
736
- [
759
+ }), [
760
+ handleReplace,
761
+ handleDelete,
737
762
  isReplacing,
738
763
  isDeleting
739
764
  ]);
@@ -767,10 +792,8 @@ const AssetDetails = ({ asset, closeDetails })=>{
767
792
  onSaveAsCopy: handleCropSaveAsCopy,
768
793
  canSaveAsCopy: canCreate
769
794
  }) : null,
770
- busyMessage ? /*#__PURE__*/ jsx(DrawerBusyOverlay, {
771
- children: /*#__PURE__*/ jsx(Loader, {
772
- children: formatMessage(busyMessage)
773
- })
795
+ busyMessage ? /*#__PURE__*/ jsx(BusyOverlay, {
796
+ children: formatMessage(busyMessage)
774
797
  }) : null,
775
798
  drawerToast ? /*#__PURE__*/ jsx(DrawerToastSlot, {
776
799
  children: /*#__PURE__*/ jsx(Alert, {
@@ -788,7 +811,8 @@ const AssetDetails = ({ asset, closeDetails })=>{
788
811
  /*#__PURE__*/ jsx(AssetPreview, {
789
812
  asset: asset,
790
813
  actions: isImage && canUpdate ? /*#__PURE__*/ jsx(AssetImageActions, {
791
- onCrop: ()=>setIsCropOpen(true)
814
+ onCrop: ()=>setIsCropOpen(true),
815
+ mime: asset.mime
792
816
  }) : null
793
817
  }),
794
818
  /*#__PURE__*/ jsxs(Flex, {
@@ -902,25 +926,21 @@ const AssetDetails = ({ asset, closeDetails })=>{
902
926
  folders: folders,
903
927
  disabled: !canUpdate
904
928
  }),
905
- isImage && /*#__PURE__*/ jsxs(Fragment, {
906
- children: [
907
- /*#__PURE__*/ jsx(DetailField, {
908
- name: "caption",
909
- label: formatMessage({
910
- id: getTranslationKey('asset-details.caption'),
911
- defaultMessage: 'Caption'
912
- }),
913
- disabled: !canUpdate
914
- }),
915
- /*#__PURE__*/ jsx(DetailField, {
916
- name: "alternativeText",
917
- label: formatMessage({
918
- id: getTranslationKey('asset-details.alternativeText'),
919
- defaultMessage: 'Alternative text'
920
- }),
921
- disabled: !canUpdate
922
- })
923
- ]
929
+ /*#__PURE__*/ jsx(DetailField, {
930
+ name: "caption",
931
+ label: formatMessage({
932
+ id: getTranslationKey('asset-details.caption'),
933
+ defaultMessage: 'Caption'
934
+ }),
935
+ disabled: !canUpdate
936
+ }),
937
+ /*#__PURE__*/ jsx(DetailField, {
938
+ name: "alternativeText",
939
+ label: formatMessage({
940
+ id: getTranslationKey('asset-details.alternativeText'),
941
+ defaultMessage: 'Alternative text'
942
+ }),
943
+ disabled: !canUpdate
924
944
  })
925
945
  ]
926
946
  })
@@ -1106,5 +1126,5 @@ const DrawerContent = ({ assetId, closeDetails })=>{
1106
1126
  });
1107
1127
  };
1108
1128
 
1109
- export { AssetDetails, AssetDetailsDrawer, AssetOperationsContext, DrawerNotifyContext, useAssetDetailsParam };
1129
+ export { AssetDetails, AssetDetailsDrawer, AssetOperationsContext, DrawerNotifyContext, getBusyMessage, useAssetDetailsParam };
1110
1130
  //# sourceMappingURL=AssetDetailsDrawer.mjs.map