@strapi/upload 5.49.0 → 5.50.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 (435) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js +10 -10
  2. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs +11 -11
  4. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  5. package/dist/admin/ai/components/AIUploadModal.js +0 -1
  6. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  7. package/dist/admin/ai/components/AIUploadModal.mjs +0 -1
  8. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  9. package/dist/admin/components/AssetCard/AssetCard.js +3 -4
  10. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
  11. package/dist/admin/components/AssetCard/AssetCard.mjs +4 -5
  12. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
  13. package/dist/admin/components/AssetCard/AssetCardBase.js +0 -1
  14. package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
  15. package/dist/admin/components/AssetCard/AssetCardBase.mjs +0 -1
  16. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
  17. package/dist/admin/components/AssetCard/ImageAssetCard.js +0 -1
  18. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
  19. package/dist/admin/components/AssetCard/ImageAssetCard.mjs +0 -1
  20. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
  21. package/dist/admin/components/AssetCard/UploadingAssetCard.js +3 -4
  22. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
  23. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +4 -5
  24. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
  25. package/dist/admin/components/AssetCard/VideoAssetCard.js +0 -1
  26. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
  27. package/dist/admin/components/AssetCard/VideoAssetCard.mjs +0 -1
  28. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
  29. package/dist/admin/components/AssetDialog/AssetDialog.js +0 -1
  30. package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
  31. package/dist/admin/components/AssetDialog/AssetDialog.mjs +0 -1
  32. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
  33. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +0 -1
  34. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  35. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +0 -1
  36. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  37. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js +0 -1
  38. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
  39. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs +0 -1
  40. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
  41. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +0 -1
  42. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  43. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +0 -1
  44. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  45. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js +0 -1
  46. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
  47. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs +0 -1
  48. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
  49. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js +0 -1
  50. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
  51. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs +0 -1
  52. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
  53. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js +0 -1
  54. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  55. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs +0 -1
  56. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  57. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js +0 -1
  58. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -1
  59. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs +0 -1
  60. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -1
  61. package/dist/admin/components/EditAssetDialog/EditAssetContent.js +0 -1
  62. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  63. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs +0 -1
  64. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  65. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +3 -3
  66. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  67. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +4 -4
  68. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  69. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js +0 -1
  70. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
  71. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs +0 -1
  72. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
  73. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js +0 -1
  74. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
  75. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs +0 -1
  76. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
  77. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +2 -3
  78. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  79. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +3 -4
  80. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  81. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js +0 -1
  82. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  83. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs +0 -1
  84. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  85. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js +0 -1
  86. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
  87. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs +0 -1
  88. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
  89. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js +0 -1
  90. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
  91. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs +0 -1
  92. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
  93. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +3 -4
  94. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
  95. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +4 -5
  96. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
  97. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js +0 -1
  98. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
  99. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +0 -1
  100. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
  101. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js +2 -1
  102. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
  103. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs +2 -1
  104. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
  105. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +1 -2
  106. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
  107. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +2 -3
  108. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
  109. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js +2 -2
  110. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  111. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs +2 -2
  112. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  113. package/dist/admin/components/SortPicker/SortPicker.js +0 -1
  114. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
  115. package/dist/admin/components/SortPicker/SortPicker.mjs +0 -1
  116. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
  117. package/dist/admin/components/TableList/CellContent.js +0 -1
  118. package/dist/admin/components/TableList/CellContent.js.map +1 -1
  119. package/dist/admin/components/TableList/CellContent.mjs +0 -1
  120. package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
  121. package/dist/admin/components/TableList/PreviewCell.js +3 -4
  122. package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
  123. package/dist/admin/components/TableList/PreviewCell.mjs +4 -5
  124. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
  125. package/dist/admin/components/TableList/TableList.js +0 -1
  126. package/dist/admin/components/TableList/TableList.js.map +1 -1
  127. package/dist/admin/components/TableList/TableList.mjs +0 -1
  128. package/dist/admin/components/TableList/TableList.mjs.map +1 -1
  129. package/dist/admin/components/TableList/TableRows.js +0 -1
  130. package/dist/admin/components/TableList/TableRows.js.map +1 -1
  131. package/dist/admin/components/TableList/TableRows.mjs +0 -1
  132. package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
  133. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js +0 -1
  134. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
  135. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +0 -1
  136. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
  137. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +2 -3
  138. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  139. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +3 -4
  140. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  141. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js +0 -1
  142. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  143. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +0 -1
  144. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  145. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +0 -1
  146. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  147. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +0 -1
  148. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  149. package/dist/admin/constants.js +4 -7
  150. package/dist/admin/constants.js.map +1 -1
  151. package/dist/admin/constants.mjs +4 -7
  152. package/dist/admin/constants.mjs.map +1 -1
  153. package/dist/admin/enums.js +14 -16
  154. package/dist/admin/enums.js.map +1 -1
  155. package/dist/admin/enums.mjs +13 -15
  156. package/dist/admin/enums.mjs.map +1 -1
  157. package/dist/admin/future/pages/Assets/AssetsPage.js +125 -122
  158. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  159. package/dist/admin/future/pages/Assets/AssetsPage.mjs +125 -122
  160. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  161. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js +700 -0
  162. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -0
  163. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs +678 -0
  164. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -0
  165. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +134 -17
  166. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -1
  167. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +137 -20
  168. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -1
  169. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +27 -5
  170. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -1
  171. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +27 -5
  172. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -1
  173. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js +211 -0
  174. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -0
  175. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs +188 -0
  176. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -0
  177. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +50 -5
  178. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  179. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +51 -6
  180. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  181. package/dist/admin/future/pages/Assets/components/AssetsTable.js +43 -4
  182. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  183. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +44 -5
  184. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  185. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js +195 -0
  186. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -0
  187. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs +192 -0
  188. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -0
  189. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js +37 -0
  190. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -0
  191. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs +35 -0
  192. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -0
  193. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js +18 -0
  194. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +1 -0
  195. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs +13 -0
  196. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +1 -0
  197. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js +97 -0
  198. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -0
  199. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs +94 -0
  200. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -0
  201. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js +13 -4
  202. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
  203. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs +13 -4
  204. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
  205. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js +6 -3
  206. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  207. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs +6 -3
  208. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  209. package/dist/admin/future/services/api.js +37 -1
  210. package/dist/admin/future/services/api.js.map +1 -1
  211. package/dist/admin/future/services/api.mjs +37 -2
  212. package/dist/admin/future/services/api.mjs.map +1 -1
  213. package/dist/admin/future/services/folders.js +36 -5
  214. package/dist/admin/future/services/folders.js.map +1 -1
  215. package/dist/admin/future/services/folders.mjs +36 -6
  216. package/dist/admin/future/services/folders.mjs.map +1 -1
  217. package/dist/admin/future/utils/buildBulkMovePayload.js +20 -0
  218. package/dist/admin/future/utils/buildBulkMovePayload.js.map +1 -0
  219. package/dist/admin/future/utils/buildBulkMovePayload.mjs +18 -0
  220. package/dist/admin/future/utils/buildBulkMovePayload.mjs.map +1 -0
  221. package/dist/admin/future/utils/canDropItemOnFolder.js +64 -0
  222. package/dist/admin/future/utils/canDropItemOnFolder.js.map +1 -0
  223. package/dist/admin/future/utils/canDropItemOnFolder.mjs +61 -0
  224. package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +1 -0
  225. package/dist/admin/future/utils/getAssetIcon.js +4 -4
  226. package/dist/admin/future/utils/getAssetIcon.js.map +1 -1
  227. package/dist/admin/future/utils/getAssetIcon.mjs +4 -4
  228. package/dist/admin/future/utils/getAssetIcon.mjs.map +1 -1
  229. package/dist/admin/future/utils/getBulkMoveErrorMessage.js +23 -0
  230. package/dist/admin/future/utils/getBulkMoveErrorMessage.js.map +1 -0
  231. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs +21 -0
  232. package/dist/admin/future/utils/getBulkMoveErrorMessage.mjs.map +1 -0
  233. package/dist/admin/hooks/useAIMetadataJob.js +0 -1
  234. package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
  235. package/dist/admin/hooks/useAIMetadataJob.mjs +0 -1
  236. package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
  237. package/dist/admin/hooks/useAssets.js.map +1 -1
  238. package/dist/admin/hooks/useAssets.mjs.map +1 -1
  239. package/dist/admin/hooks/useBulkEdit.js +0 -1
  240. package/dist/admin/hooks/useBulkEdit.js.map +1 -1
  241. package/dist/admin/hooks/useBulkEdit.mjs +0 -1
  242. package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
  243. package/dist/admin/hooks/useBulkMove.js +0 -1
  244. package/dist/admin/hooks/useBulkMove.js.map +1 -1
  245. package/dist/admin/hooks/useBulkMove.mjs +0 -1
  246. package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
  247. package/dist/admin/hooks/useBulkRemove.js +0 -1
  248. package/dist/admin/hooks/useBulkRemove.js.map +1 -1
  249. package/dist/admin/hooks/useBulkRemove.mjs +0 -1
  250. package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
  251. package/dist/admin/hooks/useEditAsset.js +0 -1
  252. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  253. package/dist/admin/hooks/useEditAsset.mjs +0 -1
  254. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  255. package/dist/admin/hooks/useEditFolder.js +4 -3
  256. package/dist/admin/hooks/useEditFolder.js.map +1 -1
  257. package/dist/admin/hooks/useEditFolder.mjs +4 -3
  258. package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
  259. package/dist/admin/hooks/useFolder.js +0 -1
  260. package/dist/admin/hooks/useFolder.js.map +1 -1
  261. package/dist/admin/hooks/useFolder.mjs +0 -1
  262. package/dist/admin/hooks/useFolder.mjs.map +1 -1
  263. package/dist/admin/hooks/useFolderStructure.js +0 -1
  264. package/dist/admin/hooks/useFolderStructure.js.map +1 -1
  265. package/dist/admin/hooks/useFolderStructure.mjs +0 -1
  266. package/dist/admin/hooks/useFolderStructure.mjs.map +1 -1
  267. package/dist/admin/hooks/useUpload.js.map +1 -1
  268. package/dist/admin/hooks/useUpload.mjs.map +1 -1
  269. package/dist/admin/index.js +0 -1
  270. package/dist/admin/index.js.map +1 -1
  271. package/dist/admin/index.mjs +0 -1
  272. package/dist/admin/index.mjs.map +1 -1
  273. package/dist/admin/pages/App/App.js +0 -1
  274. package/dist/admin/pages/App/App.js.map +1 -1
  275. package/dist/admin/pages/App/App.mjs +0 -1
  276. package/dist/admin/pages/App/App.mjs.map +1 -1
  277. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -1
  278. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  279. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -1
  280. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  281. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +0 -1
  282. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
  283. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +0 -1
  284. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
  285. package/dist/admin/pages/App/MediaLibrary.js +0 -1
  286. package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
  287. package/dist/admin/pages/App/MediaLibrary.mjs +0 -1
  288. package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
  289. package/dist/admin/pages/App/components/BulkActions.js +0 -1
  290. package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
  291. package/dist/admin/pages/App/components/BulkActions.mjs +0 -1
  292. package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
  293. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js +0 -1
  294. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
  295. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs +0 -1
  296. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
  297. package/dist/admin/pages/App/components/Filters.js +0 -1
  298. package/dist/admin/pages/App/components/Filters.js.map +1 -1
  299. package/dist/admin/pages/App/components/Filters.mjs +0 -1
  300. package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
  301. package/dist/admin/pages/App/components/Header.js +0 -1
  302. package/dist/admin/pages/App/components/Header.js.map +1 -1
  303. package/dist/admin/pages/App/components/Header.mjs +0 -1
  304. package/dist/admin/pages/App/components/Header.mjs.map +1 -1
  305. package/dist/admin/pages/SettingsPage/SettingsPage.js +1 -2
  306. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  307. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +1 -2
  308. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  309. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +11 -12
  310. package/dist/admin/src/components/EmptyAssets/EmptyAssets.d.ts +0 -1
  311. package/dist/admin/src/components/FolderCard/contexts/FolderCard.d.ts +2 -3
  312. package/dist/admin/src/constants.d.ts +5 -4
  313. package/dist/admin/src/enums.d.ts +14 -12
  314. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +10 -0
  315. package/dist/admin/src/future/pages/Assets/components/AssetDetails/useCropImg.d.ts +48 -0
  316. package/dist/admin/src/future/pages/Assets/components/Dnd/AssetsDndProvider.d.ts +12 -0
  317. package/dist/admin/src/future/pages/Assets/components/Dnd/DragOverlayChip.d.ts +6 -0
  318. package/dist/admin/src/future/pages/Assets/components/Dnd/dndIds.d.ts +4 -0
  319. package/dist/admin/src/future/pages/Assets/components/Dnd/useAssetDnd.d.ts +51 -0
  320. package/dist/admin/src/future/services/api.d.ts +24 -6
  321. package/dist/admin/src/future/services/assets.d.ts +1 -1
  322. package/dist/admin/src/future/services/folders.d.ts +12 -2
  323. package/dist/admin/src/future/services/settings.d.ts +1 -1
  324. package/dist/admin/src/future/store/uploadProgress.d.ts +1 -1
  325. package/dist/admin/src/future/types/dnd.d.ts +22 -0
  326. package/dist/admin/src/future/utils/buildBulkMovePayload.d.ts +2 -0
  327. package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +9 -0
  328. package/dist/admin/src/future/utils/getBulkMoveErrorMessage.d.ts +1 -0
  329. package/dist/admin/src/hooks/useAIMetadataJob.d.ts +1 -1
  330. package/dist/admin/src/hooks/useBulkEdit.d.ts +14 -14
  331. package/dist/admin/src/hooks/useBulkMove.d.ts +146 -15
  332. package/dist/admin/src/hooks/useBulkRemove.d.ts +186 -15
  333. package/dist/admin/src/hooks/useCropImg.d.ts +2 -2
  334. package/dist/admin/src/hooks/useEditFolder.d.ts +7 -6
  335. package/dist/admin/src/hooks/useModalQueryParams.d.ts +5 -5
  336. package/dist/admin/src/hooks/usePersistentState.d.ts +0 -1
  337. package/dist/admin/src/hooks/useSettings.d.ts +5 -5
  338. package/dist/admin/src/hooks/useTracking.d.ts +1 -1
  339. package/dist/admin/src/pages/App/ConfigureTheView/state/actions.d.ts +1 -1
  340. package/dist/admin/src/pages/App/ConfigureTheView/state/init.d.ts +1 -1
  341. package/dist/admin/src/utils/getBreadcrumbDataML.d.ts +1 -1
  342. package/dist/admin/src/utils/getFolderParents.d.ts +3 -3
  343. package/dist/admin/src/utils/icons.d.ts +2 -1
  344. package/dist/admin/src/utils/rawFileToAsset.d.ts +1 -1
  345. package/dist/admin/src/utils/urlsToAssets.d.ts +2 -10
  346. package/dist/admin/translations/en.json.js +28 -0
  347. package/dist/admin/translations/en.json.js.map +1 -1
  348. package/dist/admin/translations/en.json.mjs +28 -0
  349. package/dist/admin/translations/en.json.mjs.map +1 -1
  350. package/dist/admin/translations/ja.json.js +175 -0
  351. package/dist/admin/translations/ja.json.js.map +1 -1
  352. package/dist/admin/translations/ja.json.mjs +175 -0
  353. package/dist/admin/translations/ja.json.mjs.map +1 -1
  354. package/dist/admin/translations/pl.json.js +54 -29
  355. package/dist/admin/translations/pl.json.js.map +1 -1
  356. package/dist/admin/translations/pl.json.mjs +54 -29
  357. package/dist/admin/translations/pl.json.mjs.map +1 -1
  358. package/dist/admin/utils/icons.js +5 -5
  359. package/dist/admin/utils/icons.js.map +1 -1
  360. package/dist/admin/utils/icons.mjs +6 -6
  361. package/dist/admin/utils/icons.mjs.map +1 -1
  362. package/dist/admin/utils/typeFromMime.js +9 -9
  363. package/dist/admin/utils/typeFromMime.js.map +1 -1
  364. package/dist/admin/utils/typeFromMime.mjs +10 -10
  365. package/dist/admin/utils/typeFromMime.mjs.map +1 -1
  366. package/dist/admin/utils/urlsToAssets.js +1 -2
  367. package/dist/admin/utils/urlsToAssets.js.map +1 -1
  368. package/dist/admin/utils/urlsToAssets.mjs +1 -2
  369. package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
  370. package/dist/server/controllers/admin-upload.js +3 -2
  371. package/dist/server/controllers/admin-upload.js.map +1 -1
  372. package/dist/server/controllers/admin-upload.mjs +3 -2
  373. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  374. package/dist/server/controllers/content-api.js +6 -5
  375. package/dist/server/controllers/content-api.js.map +1 -1
  376. package/dist/server/controllers/content-api.mjs +6 -5
  377. package/dist/server/controllers/content-api.mjs.map +1 -1
  378. package/dist/server/src/controllers/admin-file.d.ts +4 -12
  379. package/dist/server/src/controllers/admin-file.d.ts.map +1 -1
  380. package/dist/server/src/controllers/admin-folder.d.ts +2 -2
  381. package/dist/server/src/controllers/admin-settings.d.ts +2 -2
  382. package/dist/server/src/controllers/admin-upload.d.ts +3 -3
  383. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  384. package/dist/server/src/controllers/content-api.d.ts +2 -2
  385. package/dist/server/src/controllers/content-api.d.ts.map +1 -1
  386. package/dist/server/src/controllers/index.d.ts +14 -23
  387. package/dist/server/src/controllers/index.d.ts.map +1 -1
  388. package/dist/server/src/controllers/utils/find-entity-and-check-permissions.d.ts.map +1 -1
  389. package/dist/server/src/controllers/utils/folders.d.ts.map +1 -1
  390. package/dist/server/src/controllers/validation/admin/configureView.d.ts +1 -1
  391. package/dist/server/src/controllers/validation/admin/folder-file.d.ts +1 -1
  392. package/dist/server/src/controllers/validation/admin/folder-file.d.ts.map +1 -1
  393. package/dist/server/src/controllers/validation/admin/folder.d.ts +2 -2
  394. package/dist/server/src/controllers/validation/admin/folder.d.ts.map +1 -1
  395. package/dist/server/src/controllers/validation/admin/settings.d.ts +1 -1
  396. package/dist/server/src/controllers/validation/admin/upload.d.ts +1 -1
  397. package/dist/server/src/controllers/validation/admin/upload.d.ts.map +1 -1
  398. package/dist/server/src/controllers/validation/admin/utils.d.ts.map +1 -1
  399. package/dist/server/src/controllers/validation/content-api/upload.d.ts.map +1 -1
  400. package/dist/server/src/controllers/view-configuration.d.ts +1 -1
  401. package/dist/server/src/graphql.d.ts.map +1 -1
  402. package/dist/server/src/index.d.ts +36 -53
  403. package/dist/server/src/index.d.ts.map +1 -1
  404. package/dist/server/src/middlewares/upload.d.ts.map +1 -1
  405. package/dist/server/src/services/ai-metadata-jobs.d.ts +1 -1
  406. package/dist/server/src/services/ai-metadata-jobs.d.ts.map +1 -1
  407. package/dist/server/src/services/ai-metadata.d.ts.map +1 -1
  408. package/dist/server/src/services/extensions/utils.d.ts.map +1 -1
  409. package/dist/server/src/services/file.d.ts +2 -2
  410. package/dist/server/src/services/file.d.ts.map +1 -1
  411. package/dist/server/src/services/folder.d.ts +1 -1
  412. package/dist/server/src/services/folder.d.ts.map +1 -1
  413. package/dist/server/src/services/image-manipulation.d.ts.map +1 -1
  414. package/dist/server/src/services/index.d.ts +22 -30
  415. package/dist/server/src/services/index.d.ts.map +1 -1
  416. package/dist/server/src/services/metrics.d.ts.map +1 -1
  417. package/dist/server/src/services/provider.d.ts.map +1 -1
  418. package/dist/server/src/services/upload.d.ts +1 -1
  419. package/dist/server/src/services/upload.d.ts.map +1 -1
  420. package/dist/server/src/services/weekly-metrics.d.ts.map +1 -1
  421. package/dist/server/src/types.d.ts +4 -3
  422. package/dist/server/src/types.d.ts.map +1 -1
  423. package/dist/server/src/utils/cron.d.ts.map +1 -1
  424. package/dist/server/src/utils/index.d.ts.map +1 -1
  425. package/dist/server/src/utils/mime-validation.d.ts.map +1 -1
  426. package/dist/server/utils/mime-validation.js +3 -1
  427. package/dist/server/utils/mime-validation.js.map +1 -1
  428. package/dist/server/utils/mime-validation.mjs +3 -1
  429. package/dist/server/utils/mime-validation.mjs.map +1 -1
  430. package/package.json +11 -10
  431. package/dist/admin/future/enums.js +0 -12
  432. package/dist/admin/future/enums.js.map +0 -1
  433. package/dist/admin/future/enums.mjs +0 -10
  434. package/dist/admin/future/enums.mjs.map +0 -1
  435. package/dist/admin/src/future/enums.d.ts +0 -6
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n useNotification,\n useFetchClient,\n Layouts,\n ConfirmDialog,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n Box,\n Button,\n Dialog,\n Flex,\n Grid,\n Toggle,\n Typography,\n Field,\n Status,\n Divider,\n StatusProps,\n TextButton,\n} from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { AIMetadataJob } from '../../../../shared/contracts/ai-metadata-jobs';\nimport { GetAIMetadataCount, GenerateAIMetadata } from '../../../../shared/contracts/files';\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useAIMetadataJob } from '../../hooks/useAIMetadataJob';\nimport { useSettings } from '../../hooks/useSettings';\nimport { useTracking } from '../../hooks/useTracking';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\n/* -------------------------------------------------------------------------------------------------\n * MetadataAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst BetaStatus = (props: Omit<StatusProps, 'children'>) => {\n const { formatMessage } = useIntl();\n\n return (\n <Status\n size=\"S\"\n variant=\"secondary\"\n style={{ textTransform: 'uppercase', display: 'flex' }}\n {...props}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Status.beta',\n defaultMessage: 'Beta',\n })}\n </Typography>\n </Status>\n );\n};\n\ninterface MetadataActionProps {\n job: AIMetadataJob | null;\n imagesWithoutMetadataCount: number;\n isConfirmDialogOpen: boolean;\n onConfirmDialogChange: (open: boolean) => void;\n onGenerate: () => Promise<void>;\n}\n\nconst MetadataAction = ({\n job,\n imagesWithoutMetadataCount,\n isConfirmDialogOpen,\n onConfirmDialogChange,\n onGenerate,\n}: MetadataActionProps) => {\n const { formatMessage } = useIntl();\n\n // If there's an active job processing\n if (job?.status === 'processing') {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generatingMetadata'),\n defaultMessage: 'AI is generating your metadata',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // Only show completed state when all images have metadata\n if (imagesWithoutMetadataCount === 0) {\n return (\n <Typography variant=\"pi\" textColor=\"primary600\">\n <Flex gap={2} alignItems=\"center\">\n <Check width=\"16px\" height=\"16px\" />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.metadataGenerated'),\n defaultMessage: 'Your metadata has been generated',\n })}\n </Flex>\n </Typography>\n );\n }\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={onConfirmDialogChange}>\n <Dialog.Trigger>\n <TextButton disabled={imagesWithoutMetadataCount === 0}>\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generateButton'),\n defaultMessage: 'Generate metadata',\n })}\n </TextButton>\n </Dialog.Trigger>\n <ConfirmDialog\n variant=\"success-light\"\n onConfirm={onGenerate}\n title={\n <Flex gap={2}>\n <BetaStatus />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.confirmDialog.title'),\n defaultMessage: 'Generate AI Metadata',\n })}\n </Flex>\n }\n >\n {formatMessage(\n {\n id: getTrad('settings.form.aiMetadata.confirmDialog.message'),\n defaultMessage:\n 'This will start a process in the background to generate captions and alternative text for {count, plural, one {# image} other {# images}}. AI can make mistakes, be sure to review the generated content.',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put, post, get } = useFetchClient();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const { trackUsage } = useTracking();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n const { data: imageCountResponse, isLoading: isLoadingImagesWithoutMetadataCount } = useQuery<\n GetAIMetadataCount.Response['data'],\n GetAIMetadataCount.Response['error']\n >(\n ['ai-metadata-count'],\n async () => {\n const { data } = await get('/upload/actions/generate-ai-metadata/count');\n return data;\n },\n {\n enabled: isAIAvailable && !!data?.aiMetadata,\n retry: false,\n }\n );\n\n const imagesWithoutMetadataCount = imageCountResponse?.imagesWithoutMetadataCount ?? 0;\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put('/upload/settings', body);\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err: any) {\n toggleNotification({\n type: 'danger',\n message: err.message || formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n // Poll for latest active job - notifications are handled inside the hook\n const { data: aiMetadataJob, refetch: refetchAiMetadataJob } = useAIMetadataJob({\n enabled: isAIAvailable,\n });\n\n const { mutateAsync: startGenerateAIMetadata } = useMutation<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Response['error'],\n void\n >(\n async () => {\n const { data } = await post('/upload/actions/generate-ai-metadata', {});\n return data;\n },\n {\n onSuccess() {\n setIsConfirmDialogOpen(false);\n // Refetch job status to start polling the new job\n refetchAiMetadataJob();\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: (err as Error)?.message || formatMessage({ id: 'notification.error' }),\n });\n setIsConfirmDialogOpen(false);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {/* AI features section when ai is available */}\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n xs={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n {/* Retroactive metadata generation when aiMetadata is enabled */}\n {initialData?.aiMetadata &&\n !isLoadingImagesWithoutMetadataCount &&\n Boolean(imageCountResponse?.totalImages) && (\n <>\n <Divider marginTop={4} marginBottom={4} />\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={2}>\n <Flex gap={2}>\n <BetaStatus size=\"XS\" />\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {imagesWithoutMetadataCount === 0\n ? formatMessage({\n id: getTrad('settings.form.aiMetadata.allAssetsHaveMetadata'),\n defaultMessage: 'All assets have caption and alt text',\n })\n : formatMessage(\n {\n id: getTrad(\n 'settings.form.aiMetadata.imagesWithoutMetadata'\n ),\n defaultMessage:\n '{count, plural, one {# image lacks captions or alternative text} other {# images lack captions or alternative text}}',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </Typography>\n </Flex>\n <MetadataAction\n job={aiMetadataJob ?? null}\n imagesWithoutMetadataCount={imagesWithoutMetadataCount}\n isConfirmDialogOpen={isConfirmDialogOpen}\n onConfirmDialogChange={setIsConfirmDialogOpen}\n onGenerate={async () => {\n await startGenerateAIMetadata();\n trackUsage('didGenerateMetadataRetroactively');\n }}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["BetaStatus","props","formatMessage","useIntl","_jsx","Status","size","variant","style","textTransform","display","Typography","tag","fontWeight","id","defaultMessage","MetadataAction","job","imagesWithoutMetadataCount","isConfirmDialogOpen","onConfirmDialogChange","onGenerate","status","Flex","gap","alignItems","textColor","getTrad","_jsxs","Check","width","height","Dialog","Root","open","onOpenChange","Trigger","TextButton","disabled","ConfirmDialog","onConfirm","title","count","SettingsPage","toggleNotification","useNotification","put","post","get","useFetchClient","setIsConfirmDialogOpen","React","useState","trackUsage","useTracking","initialData","modifiedData","dispatch","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","imageCountResponse","isLoadingImagesWithoutMetadataCount","useQuery","enabled","aiMetadata","retry","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","onError","err","aiMetadataJob","refetchAiMetadataJob","useAIMetadataJob","startGenerateAIMetadata","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","Page","Loading","Main","tabIndex","Title","form","onSubmit","Layouts","Header","primaryAction","Button","loading","startIcon","fullWidth","subtitle","Content","direction","Box","background","padding","shadow","hasRadius","Grid","Item","col","xs","color","Sparkle","paddingTop","justifyContent","Field","minWidth","Toggle","checked","offLabel","onLabel","onChange","Boolean","totalImages","_Fragment","Divider","marginTop","marginBottom","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
1
+ {"version":3,"file":"SettingsPage.mjs","sources":["../../../../admin/src/pages/SettingsPage/SettingsPage.tsx"],"sourcesContent":["// TODO: find a better naming convention for the file that was an index file before\nimport * as React from 'react';\n\nimport {\n Page,\n useNotification,\n useFetchClient,\n Layouts,\n ConfirmDialog,\n} from '@strapi/admin/strapi-admin';\nimport { useAIAvailability } from '@strapi/admin/strapi-admin/ee';\nimport {\n Box,\n Button,\n Dialog,\n Flex,\n Grid,\n Toggle,\n Typography,\n Field,\n Status,\n Divider,\n StatusProps,\n TextButton,\n} from '@strapi/design-system';\nimport { Check, Sparkle } from '@strapi/icons';\nimport isEqual from 'lodash/isEqual';\nimport { useIntl } from 'react-intl';\nimport { useMutation, useQuery } from 'react-query';\n\nimport { AIMetadataJob } from '../../../../shared/contracts/ai-metadata-jobs';\nimport { GetAIMetadataCount, GenerateAIMetadata } from '../../../../shared/contracts/files';\nimport { UpdateSettings } from '../../../../shared/contracts/settings';\nimport { PERMISSIONS } from '../../constants';\nimport { useAIMetadataJob } from '../../hooks/useAIMetadataJob';\nimport { useSettings } from '../../hooks/useSettings';\nimport { useTracking } from '../../hooks/useTracking';\nimport { getTrad } from '../../utils';\n\nimport { init } from './init';\nimport { initialState, reducer } from './reducer';\n\nimport type { InitialState } from './reducer';\n\n/* -------------------------------------------------------------------------------------------------\n * MetadataAction\n * -----------------------------------------------------------------------------------------------*/\n\nconst BetaStatus = (props: Omit<StatusProps, 'children'>) => {\n const { formatMessage } = useIntl();\n\n return (\n <Status\n size=\"S\"\n variant=\"secondary\"\n style={{ textTransform: 'uppercase', display: 'flex' }}\n {...props}\n >\n <Typography tag=\"span\" variant=\"pi\" fontWeight=\"bold\">\n {formatMessage({\n id: 'app.components.Status.beta',\n defaultMessage: 'Beta',\n })}\n </Typography>\n </Status>\n );\n};\n\ninterface MetadataActionProps {\n job: AIMetadataJob | null;\n imagesWithoutMetadataCount: number;\n isConfirmDialogOpen: boolean;\n onConfirmDialogChange: (open: boolean) => void;\n onGenerate: () => Promise<void>;\n}\n\nconst MetadataAction = ({\n job,\n imagesWithoutMetadataCount,\n isConfirmDialogOpen,\n onConfirmDialogChange,\n onGenerate,\n}: MetadataActionProps) => {\n const { formatMessage } = useIntl();\n\n // If there's an active job processing\n if (job?.status === 'processing') {\n return (\n <Flex gap={2} alignItems=\"center\">\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generatingMetadata'),\n defaultMessage: 'AI is generating your metadata',\n })}\n </Typography>\n </Flex>\n );\n }\n\n // Only show completed state when all images have metadata\n if (imagesWithoutMetadataCount === 0) {\n return (\n <Typography variant=\"pi\" textColor=\"primary600\">\n <Flex gap={2} alignItems=\"center\">\n <Check width=\"16px\" height=\"16px\" />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.metadataGenerated'),\n defaultMessage: 'Your metadata has been generated',\n })}\n </Flex>\n </Typography>\n );\n }\n\n return (\n <Dialog.Root open={isConfirmDialogOpen} onOpenChange={onConfirmDialogChange}>\n <Dialog.Trigger>\n <TextButton disabled={imagesWithoutMetadataCount === 0}>\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.generateButton'),\n defaultMessage: 'Generate metadata',\n })}\n </TextButton>\n </Dialog.Trigger>\n <ConfirmDialog\n variant=\"success-light\"\n onConfirm={onGenerate}\n title={\n <Flex gap={2}>\n <BetaStatus />\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.confirmDialog.title'),\n defaultMessage: 'Generate AI Metadata',\n })}\n </Flex>\n }\n >\n {formatMessage(\n {\n id: getTrad('settings.form.aiMetadata.confirmDialog.message'),\n defaultMessage:\n 'This will start a process in the background to generate captions and alternative text for {count, plural, one {# image} other {# images}}. AI can make mistakes, be sure to review the generated content.',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * SettingsPage\n * -----------------------------------------------------------------------------------------------*/\n\nexport const SettingsPage = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { put, post, get } = useFetchClient();\n const [isConfirmDialogOpen, setIsConfirmDialogOpen] = React.useState(false);\n const { trackUsage } = useTracking();\n\n const [{ initialData, modifiedData }, dispatch] = React.useReducer(reducer, initialState, init);\n\n const { data, isLoading, refetch } = useSettings();\n const isAIAvailable = useAIAvailability();\n\n const { data: imageCountResponse, isLoading: isLoadingImagesWithoutMetadataCount } = useQuery<\n GetAIMetadataCount.Response['data'],\n GetAIMetadataCount.Response['error']\n >(\n ['ai-metadata-count'],\n async () => {\n const { data } = await get<GetAIMetadataCount.Response['data']>(\n '/upload/actions/generate-ai-metadata/count'\n );\n return data;\n },\n {\n enabled: isAIAvailable && !!data?.aiMetadata,\n retry: false,\n }\n );\n\n const imagesWithoutMetadataCount = imageCountResponse?.imagesWithoutMetadataCount ?? 0;\n\n React.useEffect(() => {\n if (data) {\n dispatch({\n type: 'GET_DATA_SUCCEEDED',\n data,\n });\n }\n }, [data]);\n\n const isSaveButtonDisabled = isEqual(initialData, modifiedData);\n\n const { mutateAsync, isLoading: isSubmitting } = useMutation<\n UpdateSettings.Response['data'],\n UpdateSettings.Response['error'],\n UpdateSettings.Request['body']\n >(\n async (body) => {\n const { data } = await put<UpdateSettings.Response['data'], UpdateSettings.Request['body']>(\n '/upload/settings',\n body\n );\n\n return data;\n },\n {\n onSuccess() {\n refetch();\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.form.success.fields' }),\n });\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: err?.message ?? formatMessage({ id: 'notification.error' }),\n });\n },\n }\n );\n\n // Poll for latest active job - notifications are handled inside the hook\n const { data: aiMetadataJob, refetch: refetchAiMetadataJob } = useAIMetadataJob({\n enabled: isAIAvailable,\n });\n\n const { mutateAsync: startGenerateAIMetadata } = useMutation<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Response['error'],\n void\n >(\n async () => {\n const { data } = await post<\n GenerateAIMetadata.Response['data'],\n GenerateAIMetadata.Request['body']\n >('/upload/actions/generate-ai-metadata', {});\n return data;\n },\n {\n onSuccess() {\n setIsConfirmDialogOpen(false);\n // Refetch job status to start polling the new job\n refetchAiMetadataJob();\n },\n onError(err) {\n toggleNotification({\n type: 'danger',\n message: (err as Error)?.message || formatMessage({ id: 'notification.error' }),\n });\n setIsConfirmDialogOpen(false);\n },\n }\n );\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (isSaveButtonDisabled) {\n return;\n }\n\n await mutateAsync(modifiedData!);\n };\n\n const handleChange = ({\n target: { name, value },\n }: {\n target: { name: keyof NonNullable<InitialState['initialData']>; value: boolean };\n }) => {\n dispatch({\n type: 'ON_CHANGE',\n keys: name,\n value,\n });\n };\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main tabIndex={-1}>\n <Page.Title>\n {formatMessage({\n id: getTrad('page.title'),\n defaultMessage: 'Settings - Media Library',\n })}\n </Page.Title>\n <form onSubmit={handleSubmit}>\n <Layouts.Header\n title={formatMessage({\n id: getTrad('settings.header.label'),\n defaultMessage: 'Media Library',\n })}\n primaryAction={\n <Button\n disabled={isSaveButtonDisabled}\n loading={isSubmitting}\n type=\"submit\"\n startIcon={<Check />}\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n subtitle={formatMessage({\n id: getTrad('settings.sub-header.label'),\n defaultMessage: 'Configure the settings for the Media Library',\n })}\n />\n <Layouts.Content>\n <Layouts.Root>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n {/* AI features section when ai is available */}\n {isAIAvailable && (\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={1}>\n <Grid.Root gap={6}>\n <Grid.Item col={8} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Flex gap={2}>\n <Box color=\"alternative700\">\n <Sparkle />\n </Box>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.label'),\n defaultMessage:\n 'Generate AI captions and alt texts automatically on upload!',\n })}\n </Typography>\n </Flex>\n <Flex paddingTop={1}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTrad('settings.form.aiMetadata.description'),\n defaultMessage:\n 'Enable this feature to save time, optimize your SEO and increase accessibility by letting our AI generate captions and alternative texts for you.',\n })}\n </Typography>\n </Flex>\n </Grid.Item>\n <Grid.Item\n col={4}\n xs={12}\n direction=\"column\"\n alignItems=\"end\"\n justifyContent={'center'}\n >\n <Field.Root name=\"aiMetadata\" minWidth=\"200px\">\n <Toggle\n checked={modifiedData?.aiMetadata}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.disabled-label',\n defaultMessage: 'Disabled',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.enabled-label',\n defaultMessage: 'Enabled',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'aiMetadata', value: e.target.checked },\n });\n }}\n />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n {/* Retroactive metadata generation when aiMetadata is enabled */}\n {initialData?.aiMetadata &&\n !isLoadingImagesWithoutMetadataCount &&\n Boolean(imageCountResponse?.totalImages) && (\n <>\n <Divider marginTop={4} marginBottom={4} />\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={2}>\n <Flex gap={2}>\n <BetaStatus size=\"XS\" />\n <Typography variant=\"pi\" textColor=\"neutral500\">\n {imagesWithoutMetadataCount === 0\n ? formatMessage({\n id: getTrad('settings.form.aiMetadata.allAssetsHaveMetadata'),\n defaultMessage: 'All assets have caption and alt text',\n })\n : formatMessage(\n {\n id: getTrad(\n 'settings.form.aiMetadata.imagesWithoutMetadata'\n ),\n defaultMessage:\n '{count, plural, one {# image lacks captions or alternative text} other {# images lack captions or alternative text}}',\n },\n { count: imagesWithoutMetadataCount }\n )}\n </Typography>\n </Flex>\n <MetadataAction\n job={aiMetadataJob ?? null}\n imagesWithoutMetadataCount={imagesWithoutMetadataCount}\n isConfirmDialogOpen={isConfirmDialogOpen}\n onConfirmDialogChange={setIsConfirmDialogOpen}\n onGenerate={async () => {\n await startGenerateAIMetadata();\n trackUsage('didGenerateMetadataRetroactively');\n }}\n />\n </Flex>\n </>\n )}\n </Flex>\n </Box>\n )}\n\n <Box background=\"neutral0\" padding={6} shadow=\"filterShadow\" hasRadius>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Flex>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: getTrad('settings.blockTitle'),\n defaultMessage: 'Asset management',\n })}\n </Typography>\n </Flex>\n <Grid.Root gap={6}>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.responsiveDimensions.description'),\n defaultMessage:\n 'Enabling this option will generate multiple formats (small, medium and large) of the uploaded asset.',\n })}\n name=\"responsiveDimensions\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.responsiveDimensions.label'),\n defaultMessage: 'Responsive friendly upload',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.responsiveDimensions}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'responsiveDimensions', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.sizeOptimization.description'),\n defaultMessage:\n 'Enabling this option will reduce the image size and slightly reduce its quality.',\n })}\n name=\"sizeOptimization\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.sizeOptimization.label'),\n defaultMessage: 'Size optimization',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.sizeOptimization}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'sizeOptimization', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n <Grid.Item col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root\n hint={formatMessage({\n id: getTrad('settings.form.autoOrientation.description'),\n defaultMessage:\n 'Enabling this option will automatically rotate the image according to EXIF orientation tag.',\n })}\n name=\"autoOrientation\"\n >\n <Field.Label>\n {formatMessage({\n id: getTrad('settings.form.autoOrientation.label'),\n defaultMessage: 'Auto orientation',\n })}\n </Field.Label>\n <Toggle\n checked={modifiedData?.autoOrientation}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={(e) => {\n handleChange({\n target: { name: 'autoOrientation', value: e.target.checked },\n });\n }}\n />\n <Field.Hint />\n </Field.Root>\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n </Flex>\n </Layouts.Root>\n </Layouts.Content>\n </form>\n </Page.Main>\n );\n};\n\nexport const ProtectedSettingsPage = () => (\n <Page.Protect permissions={PERMISSIONS.settings}>\n <SettingsPage />\n </Page.Protect>\n);\n"],"names":["BetaStatus","props","formatMessage","useIntl","_jsx","Status","size","variant","style","textTransform","display","Typography","tag","fontWeight","id","defaultMessage","MetadataAction","job","imagesWithoutMetadataCount","isConfirmDialogOpen","onConfirmDialogChange","onGenerate","status","Flex","gap","alignItems","textColor","getTrad","_jsxs","Check","width","height","Dialog","Root","open","onOpenChange","Trigger","TextButton","disabled","ConfirmDialog","onConfirm","title","count","SettingsPage","toggleNotification","useNotification","put","post","get","useFetchClient","setIsConfirmDialogOpen","React","useState","trackUsage","useTracking","initialData","modifiedData","dispatch","useReducer","reducer","initialState","init","data","isLoading","refetch","useSettings","isAIAvailable","useAIAvailability","imageCountResponse","isLoadingImagesWithoutMetadataCount","useQuery","enabled","aiMetadata","retry","useEffect","type","isSaveButtonDisabled","isEqual","mutateAsync","isSubmitting","useMutation","body","onSuccess","message","onError","err","aiMetadataJob","refetchAiMetadataJob","useAIMetadataJob","startGenerateAIMetadata","handleSubmit","e","preventDefault","handleChange","target","name","value","keys","Page","Loading","Main","tabIndex","Title","form","onSubmit","Layouts","Header","primaryAction","Button","loading","startIcon","fullWidth","subtitle","Content","direction","Box","background","padding","shadow","hasRadius","Grid","Item","col","xs","color","Sparkle","paddingTop","justifyContent","Field","minWidth","Toggle","checked","offLabel","onLabel","onChange","Boolean","totalImages","_Fragment","Divider","marginTop","marginBottom","hint","Label","responsiveDimensions","Hint","sizeOptimization","autoOrientation","ProtectedSettingsPage","Protect","permissions","PERMISSIONS","settings"],"mappings":"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"}
@@ -1,12 +1,11 @@
1
- /// <reference types="react" />
2
1
  export declare const RelativeBox: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<import("@strapi/design-system").TransientBoxProps & {
3
- children?: import("react").ReactNode;
2
+ children?: React.ReactNode;
4
3
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
5
4
  ref?: any;
6
5
  }, "ref"> & {
7
6
  ref?: any;
8
7
  }, never> & Partial<Pick<Omit<import("@strapi/design-system").TransientBoxProps & {
9
- children?: import("react").ReactNode;
8
+ children?: React.ReactNode;
10
9
  } & import("@strapi/design-system/dist/types").AsProp<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>> & Omit<Omit<any, "ref">, "children" | keyof import("@strapi/design-system/dist/types").AsProp<C> | keyof import("@strapi/design-system").TransientBoxProps> & {
11
10
  ref?: any;
12
11
  }, "ref"> & {
@@ -14,22 +13,22 @@ export declare const RelativeBox: import("styled-components/dist/types").IStyled
14
13
  }, never>>> & string & Omit<import("@strapi/design-system").BoxComponent<"div">, keyof import("react").Component<any, {}, any>>;
15
14
  export declare const Wrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
16
15
  export declare const ActionRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
17
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
16
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
18
17
  }, never> & Partial<Pick<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
19
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
20
- }, never>>> & string & Omit<(<C extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: import("react").PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & import("react").RefAttributes<unknown>) => import("react").ReactNode), keyof import("react").Component<any, {}, any>>;
18
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
19
+ }, never>>> & string & Omit<(<C extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = "div">(props: React.PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & React.RefAttributes<unknown>) => React.ReactNode), keyof import("react").Component<any, {}, any>>;
21
20
  export declare const CroppingActionRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
22
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
21
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
23
22
  }, never> & Partial<Pick<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
24
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
25
- }, never>>> & string & Omit<(<C extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: import("react").PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & import("react").RefAttributes<unknown>) => import("react").ReactNode), keyof import("react").Component<any, {}, any>>;
23
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
24
+ }, never>>> & string & Omit<(<C extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = "div">(props: React.PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & React.RefAttributes<unknown>) => React.ReactNode), keyof import("react").Component<any, {}, any>>;
26
25
  export declare const BadgeOverride: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("@strapi/design-system").BadgeProps, never> & Partial<Pick<import("@strapi/design-system").BadgeProps, never>>> & string & Omit<({ active, size, textColor, backgroundColor, variant, children, minWidth, ...props }: import("@strapi/design-system").BadgeProps) => import("react/jsx-runtime").JSX.Element, keyof import("react").Component<any, {}, any>>;
27
26
  export declare const UploadProgressWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
28
27
  export declare const FocalPointActionRow: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
29
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
28
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
30
29
  }, never> & Partial<Pick<Omit<Omit<import("@strapi/design-system").FlexProps<import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements>>, "ref"> & import("react").RefAttributes<unknown>, "ref"> & {
31
- ref?: ((instance: unknown) => void) | import("react").RefObject<unknown> | null | undefined;
32
- }, never>>> & string & Omit<(<C extends import("react").ElementType<any, keyof import("react").JSX.IntrinsicElements> = "div">(props: import("react").PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & import("react").RefAttributes<unknown>) => import("react").ReactNode), keyof import("react").Component<any, {}, any>>;
30
+ ref?: ((instance: unknown) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<unknown> | null | undefined;
31
+ }, never>>> & string & Omit<(<C extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = "div">(props: React.PropsWithoutRef<import("@strapi/design-system").FlexProps<C>> & React.RefAttributes<unknown>) => React.ReactNode), keyof import("react").Component<any, {}, any>>;
33
32
  export declare const FocalPointImageWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never> & Partial<Pick<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>> & string;
34
33
  interface FocalPointAimProps {
35
34
  $focalPoint: {
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  interface EmptyAssetsProps {
3
2
  action?: React.ReactNode;
4
3
  icon?: React.ElementType;
@@ -1,7 +1,6 @@
1
- /// <reference types="react" />
2
1
  export declare const FolderCardContext: import("react").Context<{
3
- id?: string | undefined;
2
+ id?: string;
4
3
  }>;
5
4
  export declare function useFolderCard(): {
6
- id?: string | undefined;
5
+ id?: string;
7
6
  };
@@ -1,7 +1,8 @@
1
- export declare enum AssetSource {
2
- Url = "url",
3
- Computer = "computer"
4
- }
1
+ export declare const ASSET_SOURCES: {
2
+ readonly Url: "url";
3
+ readonly Computer: "computer";
4
+ };
5
+ export type AssetSource = (typeof ASSET_SOURCES)[keyof typeof ASSET_SOURCES];
5
6
  export declare const PERMISSIONS: {
6
7
  main: {
7
8
  action: string;
@@ -1,12 +1,14 @@
1
- export declare enum DocType {
2
- Pdf = "pdf",
3
- Csv = "csv",
4
- Xls = "xls",
5
- Zip = "zip"
6
- }
7
- export declare enum AssetType {
8
- Video = "video",
9
- Image = "image",
10
- Document = "doc",
11
- Audio = "audio"
12
- }
1
+ export declare const DOC_TYPES: {
2
+ readonly Pdf: "pdf";
3
+ readonly Csv: "csv";
4
+ readonly Xls: "xls";
5
+ readonly Zip: "zip";
6
+ };
7
+ export type DocType = (typeof DOC_TYPES)[keyof typeof DOC_TYPES];
8
+ export declare const ASSET_TYPES: {
9
+ readonly Video: "video";
10
+ readonly Image: "image";
11
+ readonly Document: "doc";
12
+ readonly Audio: "audio";
13
+ };
14
+ export type AssetType = (typeof ASSET_TYPES)[keyof typeof ASSET_TYPES];
@@ -0,0 +1,10 @@
1
+ import type { AssetWithPopulatedCreatedBy, FocalPoint } from '../../../../../../../shared/contracts/files';
2
+ interface AssetCropEditorProps {
3
+ asset: AssetWithPopulatedCreatedBy;
4
+ isBusy?: boolean;
5
+ onClose: () => void;
6
+ onApply: (file: globalThis.File, focalPoint: FocalPoint) => void;
7
+ onSaveAsCopy: (file: globalThis.File, focalPoint: FocalPoint) => void;
8
+ }
9
+ export declare const AssetCropEditor: ({ asset, isBusy, onClose, onApply, onSaveAsCopy, }: AssetCropEditorProps) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,48 @@
1
+ interface NaturalSize {
2
+ width: number;
3
+ height: number;
4
+ }
5
+ export interface CropRect {
6
+ /** Origin in natural-px from the image top-left. */
7
+ x: number;
8
+ y: number;
9
+ /** Crop area dimensions in natural px. */
10
+ width: number;
11
+ height: number;
12
+ }
13
+ /**
14
+ * Resolve a corner-resize drag into a crop rect, keeping the opposite corner
15
+ * (`anchor`) fixed. When `aspectRatio` is set, one dimension is snapped to the
16
+ * ratio first (driven by whichever axis the pointer pushed furthest), then the
17
+ * position is derived from the anchor — so a locked resize never drifts the
18
+ * anchored corner. Pure (no clamping to image bounds; the caller clamps).
19
+ */
20
+ export declare const resolveCornerResize: ({ anchorX, anchorY, point, aspectRatio, }: {
21
+ anchorX: number;
22
+ anchorY: number;
23
+ point: {
24
+ x: number;
25
+ y: number;
26
+ };
27
+ aspectRatio: number | null;
28
+ }) => CropRect;
29
+ /**
30
+ * Custom crop state + file producer. Replaces a cropperjs-based version: the
31
+ * crop rectangle is stored in natural-image pixels (so it stays locked across
32
+ * window resizes), and `AssetCropEditor` overlays a div sized by
33
+ * (cropNatural × displayRatio). produceFile draws the natural-px crop region
34
+ * straight to a canvas.
35
+ */
36
+ export declare const useCropImg: () => {
37
+ init: (image: HTMLImageElement) => void;
38
+ crop: CropRect;
39
+ naturalSize: NaturalSize;
40
+ aspectRatio: number | null;
41
+ setCropSize: (next: Partial<Pick<CropRect, "width" | "height">>) => void;
42
+ setCropPosition: (next: Partial<Pick<CropRect, "x" | "y">>) => void;
43
+ setAspectRatio: (ratio: number | null) => void;
44
+ produceFile: (name: string, mimeType: string, lastModifiedDate?: string) => Promise<globalThis.File>;
45
+ width: number;
46
+ height: number;
47
+ };
48
+ export {};
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ interface AssetsDndContextValue {
3
+ isInternalDragActive: boolean;
4
+ isMovePending: boolean;
5
+ }
6
+ export declare const useAssetsDnd: () => AssetsDndContextValue;
7
+ export declare const useAssetsDndOptional: () => AssetsDndContextValue | null;
8
+ interface AssetsDndProviderProps {
9
+ children: ReactNode;
10
+ }
11
+ export declare const AssetsDndProvider: ({ children }: AssetsDndProviderProps) => import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { DragItemData } from '../../../../types/dnd';
2
+ interface DragOverlayChipProps {
3
+ item: DragItemData;
4
+ }
5
+ export declare const DragOverlayChip: ({ item }: DragOverlayChipProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare const toFileDraggableId: (id: number) => `file:${number}`;
2
+ export declare const toFolderDraggableId: (id: number) => `folder:${number}`;
3
+ export declare const toFolderTargetId: (id: number) => `folder-target:${number}`;
4
+ export declare const parseFolderTargetId: (dndId: string | number) => number | null;
@@ -0,0 +1,51 @@
1
+ import type { DragFolderData } from '../../../../types/dnd';
2
+ export declare const useFileDraggable: (asset: {
3
+ id: number;
4
+ name: string;
5
+ folder?: number | string | null;
6
+ }) => {
7
+ active: import("@dnd-kit/core").Active | null;
8
+ activatorEvent: Event | null;
9
+ activeNodeRect: import("@dnd-kit/core").ClientRect | null;
10
+ attributes: import("@dnd-kit/core").DraggableAttributes;
11
+ isDragging: boolean;
12
+ listeners: import("@dnd-kit/core/dist/hooks/utilities").SyntheticListenerMap | undefined;
13
+ node: import("react").MutableRefObject<HTMLElement | null>;
14
+ over: import("@dnd-kit/core").Over | null;
15
+ setNodeRef: (element: HTMLElement | null) => void;
16
+ setActivatorNodeRef: (element: HTMLElement | null) => void;
17
+ transform: import("@dnd-kit/utilities").Transform | null;
18
+ };
19
+ export declare const useFolderDraggableDroppable: (folder: {
20
+ id: number;
21
+ name: string;
22
+ parent?: number | null | {
23
+ id?: number;
24
+ };
25
+ }) => {
26
+ dragData: DragFolderData;
27
+ draggable: {
28
+ active: import("@dnd-kit/core").Active | null;
29
+ activatorEvent: Event | null;
30
+ activeNodeRect: import("@dnd-kit/core").ClientRect | null;
31
+ attributes: import("@dnd-kit/core").DraggableAttributes;
32
+ isDragging: boolean;
33
+ listeners: import("@dnd-kit/core/dist/hooks/utilities").SyntheticListenerMap | undefined;
34
+ node: import("react").MutableRefObject<HTMLElement | null>;
35
+ over: import("@dnd-kit/core").Over | null;
36
+ setNodeRef: (element: HTMLElement | null) => void;
37
+ setActivatorNodeRef: (element: HTMLElement | null) => void;
38
+ transform: import("@dnd-kit/utilities").Transform | null;
39
+ };
40
+ droppable: {
41
+ active: import("@dnd-kit/core").Active | null;
42
+ rect: import("react").MutableRefObject<import("@dnd-kit/core").ClientRect | null>;
43
+ isOver: boolean;
44
+ node: import("react").MutableRefObject<HTMLElement | null>;
45
+ over: import("@dnd-kit/core").Over | null;
46
+ setNodeRef: (element: HTMLElement | null) => void;
47
+ };
48
+ isDragging: boolean;
49
+ showValidDropHighlight: boolean;
50
+ showInvalidDropCursor: boolean;
51
+ };
@@ -1,4 +1,4 @@
1
- import type { CreateFilesStream, File as UploadedFile } from '../../../../shared/contracts/files';
1
+ import type { CreateFilesStream, File as UploadedFile, UploadFileInfo } from '../../../../shared/contracts/files';
2
2
  interface UploadFilesArgs {
3
3
  formData: FormData;
4
4
  totalFiles: number;
@@ -7,28 +7,46 @@ interface UploadFromUrlsArgs {
7
7
  urls: string[];
8
8
  folderId: number | null;
9
9
  }
10
+ /**
11
+ * A single file plus the `fileInfo` it was queued with.
12
+ * Retained in {@link uploadRegistry} so cancelled files can be retried without
13
+ * the user re-selecting them. `File`/`AbortController` are non-serializable, so
14
+ * they live here rather than in Redux.
15
+ */
16
+ interface UploadEntry {
17
+ file: File;
18
+ fileInfo: UploadFileInfo;
19
+ }
10
20
  /**
11
21
  * Aborts an upload by its uploadId.
12
22
  * Called from the UploadProgressDialog when the user clicks cancel or close.
13
23
  */
14
24
  export declare const abortUpload: (uploadId: number) => void;
15
- declare const uploadApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", never> & {
25
+ declare const uploadApi: import("@reduxjs/toolkit/query").Api<import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, import("@reduxjs/toolkit/dist/query/endpointDefinitions").UpdateDefinitions<{}, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", never> & {
16
26
  /**
17
27
  * Upload files sequentially, one request per file, to `/upload/unstable/upload-file`.
18
28
  * Real per-file byte progress comes from `XHR.upload.onprogress`.
19
29
  */
20
- uploadFiles: import("@reduxjs/toolkit/query").MutationDefinition<UploadFilesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">;
30
+ uploadFiles: import("@reduxjs/toolkit/query").MutationDefinition<UploadFilesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">;
31
+ /**
32
+ * Upload a single, already-prepared file WITHOUT opening the global
33
+ * upload-progress dialog. For flows that create one asset programmatically
34
+ * (e.g. crop → "Save as copy"), where the bulk-upload progress UI is
35
+ * inappropriate. Same endpoint as `uploadFiles`, minus the progress/retry
36
+ * machinery.
37
+ */
38
+ uploadFileSilently: import("@reduxjs/toolkit/query").MutationDefinition<UploadEntry, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile, "adminApi">;
21
39
  /**
22
40
  * Retry uploading cancelled files.
23
41
  * Maps cancelled rows back to their original entries and re-runs only those
24
42
  * through the same sequential loop with a fresh AbortController.
25
43
  */
26
- retryCancelledFiles: import("@reduxjs/toolkit/query").MutationDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">;
44
+ retryCancelledFiles: import("@reduxjs/toolkit/query").MutationDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">;
27
45
  /**
28
46
  * Upload files from URLs.
29
47
  * Sends URLs to the server which fetches and uploads them (SSE flow, unchanged).
30
48
  */
31
- uploadFromUrls: import("@reduxjs/toolkit/query").MutationDefinition<UploadFromUrlsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", CreateFilesStream.Response, "adminApi">;
49
+ uploadFromUrls: import("@reduxjs/toolkit/query").MutationDefinition<UploadFromUrlsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", CreateFilesStream.Response, "adminApi">;
32
50
  }, "adminApi", "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", typeof import("@reduxjs/toolkit/query").coreModuleName | typeof import("@reduxjs/toolkit/dist/query/react").reactHooksModuleName>;
33
- export declare const useUploadFilesMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UploadFilesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">>, useRetryCancelledFilesMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">>, useUploadFromUrlsMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UploadFromUrlsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", CreateFilesStream.Response, "adminApi">>;
51
+ export declare const useUploadFilesMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UploadFilesArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">>, useUploadFileSilentlyMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UploadEntry, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile, "adminApi">>, useRetryCancelledFilesMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", UploadedFile[], "adminApi">>, useUploadFromUrlsMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UploadFromUrlsArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", CreateFilesStream.Response, "adminApi">>;
34
52
  export { uploadApi };
@@ -18,5 +18,5 @@ interface ReplaceAssetArgs {
18
18
  file: globalThis.File;
19
19
  fileInfo?: Partial<UploadFileInfo>;
20
20
  }
21
- export declare const useGetAssetsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | GetAssetsParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", GetAssetsResponse, "adminApi">>, useGetAssetQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<number, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useUpdateAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UpdateAssetArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useReplaceAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ReplaceAssetArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useDeleteAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<number, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", unknown, "adminApi">>;
21
+ export declare const useGetAssetsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | GetAssetsParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", GetAssetsResponse, "adminApi">>, useGetAssetQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<number, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useUpdateAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<UpdateAssetArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useReplaceAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ReplaceAssetArgs, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", AssetWithPopulatedCreatedBy, "adminApi">>, useDeleteAssetMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<number, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", unknown, "adminApi">>;
22
22
  export {};
@@ -10,7 +10,17 @@ export type FolderWithCounts = Omit<Folder, 'children' | 'files'> & {
10
10
  interface GetFoldersParams {
11
11
  parentId?: number | null;
12
12
  }
13
- export declare const useCreateFolderMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<Pick<Folder, "name" | "parent">, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder, "adminApi">>, useGetFoldersQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | GetFoldersParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder[], "adminApi">>, useGetFolderQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
13
+ interface BulkMoveParams {
14
+ fileIds?: number[];
15
+ folderIds?: number[];
16
+ destinationFolderId: number;
17
+ }
18
+ export declare const useCreateFolderMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<Pick<Folder, "name" | "parent">, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder, "adminApi">>, useGetFoldersQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | GetFoldersParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder[], "adminApi">>, useGetFolderQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<{
14
19
  id: number;
15
- }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", FolderWithCounts, "adminApi">>, useGetAllFoldersQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder[], "adminApi">>, useGetFolderStructureQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", FolderNode[], "adminApi">>;
20
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", FolderWithCounts, "adminApi">>, useGetAllFoldersQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", Folder[], "adminApi">>, useGetFolderStructureQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", FolderNode[], "adminApi">>, useBulkMoveMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<BulkMoveParams, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", {
21
+ data: {
22
+ files: [];
23
+ folders: Folder[];
24
+ };
25
+ }, "adminApi">>;
16
26
  export {};
@@ -1,2 +1,2 @@
1
- declare const useGetSettingsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", import("../../../../shared/contracts/settings").Settings, "adminApi">>;
1
+ declare const useGetSettingsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("@strapi/admin/strapi-admin").QueryArguments, unknown, import("@strapi/admin/strapi-admin").BaseQueryError | import("@reduxjs/toolkit").SerializedError, {}, {}>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "Asset" | "Folder", import("../../../../shared/contracts/settings").Settings, "adminApi">>;
2
2
  export { useGetSettingsQuery };
@@ -38,7 +38,7 @@ export declare const selectAggregateProgress: ((state: RootState) => number) & i
38
38
  export declare const openUploadProgress: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
39
39
  totalFiles: number;
40
40
  fileNames: string[];
41
- fileSizes?: number[] | undefined;
41
+ fileSizes?: number[];
42
42
  }, "uploadProgress/openUploadProgress">, setFileUploading: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
43
43
  name: string;
44
44
  index: number;