@strapi/upload 5.54.0 → 5.55.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 (1784) hide show
  1. package/dist/admin/App.js +33 -0
  2. package/dist/admin/App.js.map +1 -0
  3. package/dist/admin/App.mjs +31 -0
  4. package/dist/admin/App.mjs.map +1 -0
  5. package/dist/admin/components/Drawer.js.map +1 -0
  6. package/dist/admin/components/Drawer.mjs.map +1 -0
  7. package/dist/admin/components/TruncatedText.js.map +1 -0
  8. package/dist/admin/components/TruncatedText.mjs.map +1 -0
  9. package/dist/admin/components/UploadProgressDialog.js.map +1 -0
  10. package/dist/admin/components/UploadProgressDialog.mjs.map +1 -0
  11. package/dist/admin/constants.js +7 -12
  12. package/dist/admin/constants.js.map +1 -1
  13. package/dist/admin/constants.mjs +7 -12
  14. package/dist/admin/constants.mjs.map +1 -1
  15. package/dist/admin/hooks/useAIMetadataEnabled.js +39 -0
  16. package/dist/admin/hooks/useAIMetadataEnabled.js.map +1 -0
  17. package/dist/admin/hooks/useAIMetadataEnabled.mjs +37 -0
  18. package/dist/admin/hooks/useAIMetadataEnabled.mjs.map +1 -0
  19. package/dist/admin/hooks/useApiErrorMessage.js.map +1 -0
  20. package/dist/admin/hooks/useApiErrorMessage.mjs.map +1 -0
  21. package/dist/admin/hooks/useMediaLibraryPermissions.js +24 -5
  22. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
  23. package/dist/admin/hooks/useMediaLibraryPermissions.mjs +24 -5
  24. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
  25. package/dist/admin/hooks/useTracking.js +39 -7
  26. package/dist/admin/hooks/useTracking.js.map +1 -1
  27. package/dist/admin/hooks/useTracking.mjs +38 -8
  28. package/dist/admin/hooks/useTracking.mjs.map +1 -1
  29. package/dist/admin/index.js +10 -15
  30. package/dist/admin/index.js.map +1 -1
  31. package/dist/admin/index.mjs +10 -15
  32. package/dist/admin/index.mjs.map +1 -1
  33. package/dist/admin/legacy/ai/components/AIAssetCard.js +621 -0
  34. package/dist/admin/legacy/ai/components/AIAssetCard.js.map +1 -0
  35. package/dist/admin/legacy/ai/components/AIAssetCard.mjs +598 -0
  36. package/dist/admin/legacy/ai/components/AIAssetCard.mjs.map +1 -0
  37. package/dist/admin/legacy/ai/components/AIUploadModal.js.map +1 -0
  38. package/dist/admin/legacy/ai/components/AIUploadModal.mjs.map +1 -0
  39. package/dist/admin/legacy/components/AssetCard/AssetCard.js +67 -0
  40. package/dist/admin/legacy/components/AssetCard/AssetCard.js.map +1 -0
  41. package/dist/admin/legacy/components/AssetCard/AssetCard.mjs +65 -0
  42. package/dist/admin/legacy/components/AssetCard/AssetCard.mjs.map +1 -0
  43. package/dist/admin/legacy/components/AssetCard/AssetCardBase.js.map +1 -0
  44. package/dist/admin/legacy/components/AssetCard/AssetCardBase.mjs.map +1 -0
  45. package/dist/admin/legacy/components/AssetCard/AudioAssetCard.js.map +1 -0
  46. package/dist/admin/legacy/components/AssetCard/AudioAssetCard.mjs.map +1 -0
  47. package/dist/admin/legacy/components/AssetCard/AudioPreview.js.map +1 -0
  48. package/dist/admin/legacy/components/AssetCard/AudioPreview.mjs.map +1 -0
  49. package/dist/admin/legacy/components/AssetCard/DocAssetCard.js.map +1 -0
  50. package/dist/admin/legacy/components/AssetCard/DocAssetCard.mjs.map +1 -0
  51. package/dist/admin/legacy/components/AssetCard/ImageAssetCard.js.map +1 -0
  52. package/dist/admin/legacy/components/AssetCard/ImageAssetCard.mjs.map +1 -0
  53. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js +154 -0
  54. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.js.map +1 -0
  55. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs +132 -0
  56. package/dist/admin/legacy/components/AssetCard/UploadingAssetCard.mjs.map +1 -0
  57. package/dist/admin/legacy/components/AssetCard/VideoAssetCard.js.map +1 -0
  58. package/dist/admin/legacy/components/AssetCard/VideoAssetCard.mjs.map +1 -0
  59. package/dist/admin/legacy/components/AssetCard/VideoPreview.js.map +1 -0
  60. package/dist/admin/legacy/components/AssetCard/VideoPreview.mjs.map +1 -0
  61. package/dist/admin/legacy/components/AssetDialog/AssetDialog.js.map +1 -0
  62. package/dist/admin/legacy/components/AssetDialog/AssetDialog.mjs.map +1 -0
  63. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js +320 -0
  64. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -0
  65. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs +318 -0
  66. package/dist/admin/legacy/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -0
  67. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.js.map +1 -0
  68. package/dist/admin/legacy/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -0
  69. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PageSize.js.map +1 -0
  70. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -0
  71. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -0
  72. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -0
  73. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -0
  74. package/dist/admin/legacy/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -0
  75. package/dist/admin/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -0
  76. package/dist/admin/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -0
  77. package/dist/admin/legacy/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -0
  78. package/dist/admin/legacy/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -0
  79. package/dist/admin/legacy/components/AssetDialog/DialogFooter.js.map +1 -0
  80. package/dist/admin/legacy/components/AssetDialog/DialogFooter.mjs.map +1 -0
  81. package/dist/admin/legacy/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -0
  82. package/dist/admin/legacy/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -0
  83. package/dist/admin/legacy/components/AssetGridList/AssetGridList.js.map +1 -0
  84. package/dist/admin/legacy/components/AssetGridList/AssetGridList.mjs.map +1 -0
  85. package/dist/admin/legacy/components/AssetGridList/Draggable.js.map +1 -0
  86. package/dist/admin/legacy/components/AssetGridList/Draggable.mjs.map +1 -0
  87. package/dist/admin/legacy/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
  88. package/dist/admin/legacy/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -0
  89. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -0
  90. package/dist/admin/legacy/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -0
  91. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -0
  92. package/dist/admin/legacy/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -0
  93. package/dist/admin/legacy/components/ContextInfo/ContextInfo.js.map +1 -0
  94. package/dist/admin/legacy/components/ContextInfo/ContextInfo.mjs.map +1 -0
  95. package/dist/admin/legacy/components/CopyLinkButton/CopyLinkButton.js.map +1 -0
  96. package/dist/admin/legacy/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -0
  97. package/dist/admin/legacy/components/EditAssetDialog/DialogHeader.js.map +1 -0
  98. package/dist/admin/legacy/components/EditAssetDialog/DialogHeader.mjs.map +1 -0
  99. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.js.map +1 -0
  100. package/dist/admin/legacy/components/EditAssetDialog/EditAssetContent.mjs.map +1 -0
  101. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.js +114 -0
  102. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -0
  103. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +89 -0
  104. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -0
  105. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -0
  106. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -0
  107. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -0
  108. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -0
  109. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js +362 -0
  110. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -0
  111. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +337 -0
  112. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -0
  113. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -0
  114. package/dist/admin/legacy/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -0
  115. package/dist/admin/legacy/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -0
  116. package/dist/admin/legacy/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -0
  117. package/dist/admin/legacy/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -0
  118. package/dist/admin/legacy/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -0
  119. package/dist/admin/legacy/components/EditFolderDialog/EditFolderDialog.js.map +1 -0
  120. package/dist/admin/legacy/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -0
  121. package/dist/admin/legacy/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -0
  122. package/dist/admin/legacy/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -0
  123. package/dist/admin/legacy/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -0
  124. package/dist/admin/legacy/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -0
  125. package/dist/admin/legacy/components/EmptyAssets/EmptyAssetGrid.js.map +1 -0
  126. package/dist/admin/legacy/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -0
  127. package/dist/admin/legacy/components/EmptyAssets/EmptyAssets.js.map +1 -0
  128. package/dist/admin/legacy/components/EmptyAssets/EmptyAssets.mjs.map +1 -0
  129. package/dist/admin/legacy/components/FilterList/FilterList.js.map +1 -0
  130. package/dist/admin/legacy/components/FilterList/FilterList.mjs.map +1 -0
  131. package/dist/admin/legacy/components/FilterList/FilterTag.js.map +1 -0
  132. package/dist/admin/legacy/components/FilterList/FilterTag.mjs.map +1 -0
  133. package/dist/admin/legacy/components/FilterPopover/FilterPopover.js.map +1 -0
  134. package/dist/admin/legacy/components/FilterPopover/FilterPopover.mjs.map +1 -0
  135. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.js.map +1 -0
  136. package/dist/admin/legacy/components/FilterPopover/FilterValueInput.mjs.map +1 -0
  137. package/dist/admin/legacy/components/FilterPopover/utils/getFilterList.js.map +1 -0
  138. package/dist/admin/legacy/components/FilterPopover/utils/getFilterList.mjs.map +1 -0
  139. package/dist/admin/legacy/components/FolderCard/FolderCard/FolderCard.js.map +1 -0
  140. package/dist/admin/legacy/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -0
  141. package/dist/admin/legacy/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -0
  142. package/dist/admin/legacy/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -0
  143. package/dist/admin/legacy/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -0
  144. package/dist/admin/legacy/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -0
  145. package/dist/admin/legacy/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -0
  146. package/dist/admin/legacy/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -0
  147. package/dist/admin/legacy/components/FolderCard/contexts/FolderCard.js.map +1 -0
  148. package/dist/admin/legacy/components/FolderCard/contexts/FolderCard.mjs.map +1 -0
  149. package/dist/admin/legacy/components/FolderGridList/FolderGridList.js.map +1 -0
  150. package/dist/admin/legacy/components/FolderGridList/FolderGridList.mjs.map +1 -0
  151. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -0
  152. package/dist/admin/legacy/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -0
  153. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.js +89 -0
  154. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -0
  155. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +87 -0
  156. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -0
  157. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -0
  158. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -0
  159. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -0
  160. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -0
  161. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +111 -0
  162. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -0
  163. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +89 -0
  164. package/dist/admin/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -0
  165. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -0
  166. package/dist/admin/legacy/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -0
  167. package/dist/admin/legacy/components/SelectTree/Option.js.map +1 -0
  168. package/dist/admin/legacy/components/SelectTree/Option.mjs.map +1 -0
  169. package/dist/admin/legacy/components/SelectTree/SelectTree.js.map +1 -0
  170. package/dist/admin/legacy/components/SelectTree/SelectTree.mjs.map +1 -0
  171. package/dist/admin/legacy/components/SelectTree/utils/flattenTree.js.map +1 -0
  172. package/dist/admin/legacy/components/SelectTree/utils/flattenTree.mjs.map +1 -0
  173. package/dist/admin/legacy/components/SelectTree/utils/getOpenValues.js.map +1 -0
  174. package/dist/admin/legacy/components/SelectTree/utils/getOpenValues.mjs.map +1 -0
  175. package/dist/admin/legacy/components/SelectTree/utils/getValuesToClose.js.map +1 -0
  176. package/dist/admin/legacy/components/SelectTree/utils/getValuesToClose.mjs.map +1 -0
  177. package/dist/admin/legacy/components/SortPicker/SortPicker.js +40 -0
  178. package/dist/admin/legacy/components/SortPicker/SortPicker.js.map +1 -0
  179. package/dist/admin/legacy/components/SortPicker/SortPicker.mjs +38 -0
  180. package/dist/admin/legacy/components/SortPicker/SortPicker.mjs.map +1 -0
  181. package/dist/admin/legacy/components/TableList/CellContent.js.map +1 -0
  182. package/dist/admin/legacy/components/TableList/CellContent.mjs.map +1 -0
  183. package/dist/admin/legacy/components/TableList/PreviewCell.js +116 -0
  184. package/dist/admin/legacy/components/TableList/PreviewCell.js.map +1 -0
  185. package/dist/admin/legacy/components/TableList/PreviewCell.mjs +114 -0
  186. package/dist/admin/legacy/components/TableList/PreviewCell.mjs.map +1 -0
  187. package/dist/admin/legacy/components/TableList/TableList.js +100 -0
  188. package/dist/admin/legacy/components/TableList/TableList.js.map +1 -0
  189. package/dist/admin/legacy/components/TableList/TableList.mjs +98 -0
  190. package/dist/admin/legacy/components/TableList/TableList.mjs.map +1 -0
  191. package/dist/admin/legacy/components/TableList/TableRows.js +105 -0
  192. package/dist/admin/legacy/components/TableList/TableRows.js.map +1 -0
  193. package/dist/admin/legacy/components/TableList/TableRows.mjs +103 -0
  194. package/dist/admin/legacy/components/TableList/TableRows.mjs.map +1 -0
  195. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -0
  196. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -0
  197. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +177 -0
  198. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -0
  199. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +155 -0
  200. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -0
  201. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -0
  202. package/dist/admin/legacy/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -0
  203. package/dist/admin/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -0
  204. package/dist/admin/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -0
  205. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -0
  206. package/dist/admin/legacy/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -0
  207. package/dist/admin/legacy/components/UploadProgress/UploadProgress.js.map +1 -0
  208. package/dist/admin/legacy/components/UploadProgress/UploadProgress.mjs.map +1 -0
  209. package/dist/admin/legacy/hooks/useAiAvailability.js.map +1 -0
  210. package/dist/admin/legacy/hooks/useAiAvailability.mjs.map +1 -0
  211. package/dist/admin/legacy/hooks/useAssets.js +127 -0
  212. package/dist/admin/legacy/hooks/useAssets.js.map +1 -0
  213. package/dist/admin/legacy/hooks/useAssets.mjs +105 -0
  214. package/dist/admin/legacy/hooks/useAssets.mjs.map +1 -0
  215. package/dist/admin/legacy/hooks/useBulkEdit.js +65 -0
  216. package/dist/admin/legacy/hooks/useBulkEdit.js.map +1 -0
  217. package/dist/admin/legacy/hooks/useBulkEdit.mjs +63 -0
  218. package/dist/admin/legacy/hooks/useBulkEdit.mjs.map +1 -0
  219. package/dist/admin/legacy/hooks/useBulkMove.js +78 -0
  220. package/dist/admin/legacy/hooks/useBulkMove.js.map +1 -0
  221. package/dist/admin/legacy/hooks/useBulkMove.mjs +76 -0
  222. package/dist/admin/legacy/hooks/useBulkMove.mjs.map +1 -0
  223. package/dist/admin/legacy/hooks/useBulkRemove.js +83 -0
  224. package/dist/admin/legacy/hooks/useBulkRemove.js.map +1 -0
  225. package/dist/admin/legacy/hooks/useBulkRemove.mjs +81 -0
  226. package/dist/admin/legacy/hooks/useBulkRemove.mjs.map +1 -0
  227. package/dist/admin/legacy/hooks/useConfig.js +58 -0
  228. package/dist/admin/legacy/hooks/useConfig.js.map +1 -0
  229. package/dist/admin/legacy/hooks/useConfig.mjs +56 -0
  230. package/dist/admin/legacy/hooks/useConfig.mjs.map +1 -0
  231. package/dist/admin/legacy/hooks/useCropImg.js.map +1 -0
  232. package/dist/admin/legacy/hooks/useCropImg.mjs.map +1 -0
  233. package/dist/admin/legacy/hooks/useEditAsset.js +115 -0
  234. package/dist/admin/legacy/hooks/useEditAsset.js.map +1 -0
  235. package/dist/admin/legacy/hooks/useEditAsset.mjs +93 -0
  236. package/dist/admin/legacy/hooks/useEditAsset.mjs.map +1 -0
  237. package/dist/admin/legacy/hooks/useEditFolder.js +45 -0
  238. package/dist/admin/legacy/hooks/useEditFolder.js.map +1 -0
  239. package/dist/admin/legacy/hooks/useEditFolder.mjs +43 -0
  240. package/dist/admin/legacy/hooks/useEditFolder.mjs.map +1 -0
  241. package/dist/admin/legacy/hooks/useFolder.js +57 -0
  242. package/dist/admin/legacy/hooks/useFolder.js.map +1 -0
  243. package/dist/admin/legacy/hooks/useFolder.mjs +55 -0
  244. package/dist/admin/legacy/hooks/useFolder.mjs.map +1 -0
  245. package/dist/admin/legacy/hooks/useFolderStructure.js +52 -0
  246. package/dist/admin/legacy/hooks/useFolderStructure.js.map +1 -0
  247. package/dist/admin/legacy/hooks/useFolderStructure.mjs +50 -0
  248. package/dist/admin/legacy/hooks/useFolderStructure.mjs.map +1 -0
  249. package/dist/admin/legacy/hooks/useFolders.js +108 -0
  250. package/dist/admin/legacy/hooks/useFolders.js.map +1 -0
  251. package/dist/admin/legacy/hooks/useFolders.mjs +86 -0
  252. package/dist/admin/legacy/hooks/useFolders.mjs.map +1 -0
  253. package/dist/admin/legacy/hooks/useMediaLibraryPermissions.js +16 -0
  254. package/dist/admin/legacy/hooks/useMediaLibraryPermissions.js.map +1 -0
  255. package/dist/admin/legacy/hooks/useMediaLibraryPermissions.mjs +14 -0
  256. package/dist/admin/legacy/hooks/useMediaLibraryPermissions.mjs.map +1 -0
  257. package/dist/admin/legacy/hooks/useModalQueryParams.js.map +1 -0
  258. package/dist/admin/legacy/hooks/useModalQueryParams.mjs.map +1 -0
  259. package/dist/admin/legacy/hooks/usePersistentState.js.map +1 -0
  260. package/dist/admin/legacy/hooks/usePersistentState.mjs.map +1 -0
  261. package/dist/admin/legacy/hooks/useRemoveAsset.js +58 -0
  262. package/dist/admin/legacy/hooks/useRemoveAsset.js.map +1 -0
  263. package/dist/admin/legacy/hooks/useRemoveAsset.mjs +56 -0
  264. package/dist/admin/legacy/hooks/useRemoveAsset.mjs.map +1 -0
  265. package/dist/admin/legacy/hooks/useSelectionState.js.map +1 -0
  266. package/dist/admin/legacy/hooks/useSelectionState.mjs.map +1 -0
  267. package/dist/admin/legacy/hooks/useSettings.js.map +1 -0
  268. package/dist/admin/legacy/hooks/useSettings.mjs.map +1 -0
  269. package/dist/admin/legacy/hooks/useTracking.js +25 -0
  270. package/dist/admin/legacy/hooks/useTracking.js.map +1 -0
  271. package/dist/admin/legacy/hooks/useTracking.mjs +23 -0
  272. package/dist/admin/legacy/hooks/useTracking.mjs.map +1 -0
  273. package/dist/admin/legacy/hooks/useUpload.js +109 -0
  274. package/dist/admin/legacy/hooks/useUpload.js.map +1 -0
  275. package/dist/admin/legacy/hooks/useUpload.mjs +87 -0
  276. package/dist/admin/legacy/hooks/useUpload.mjs.map +1 -0
  277. package/dist/admin/legacy/hooks/utils/renameKeys.js.map +1 -0
  278. package/dist/admin/legacy/hooks/utils/renameKeys.mjs.map +1 -0
  279. package/dist/admin/legacy/pages/App/App.js.map +1 -0
  280. package/dist/admin/legacy/pages/App/App.mjs.map +1 -0
  281. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js +145 -0
  282. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -0
  283. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs +120 -0
  284. package/dist/admin/legacy/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -0
  285. package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.js +109 -0
  286. package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.js.map +1 -0
  287. package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.mjs +107 -0
  288. package/dist/admin/legacy/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -0
  289. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.js +10 -0
  290. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -0
  291. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.mjs +7 -0
  292. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -0
  293. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actions.js.map +1 -0
  294. package/dist/admin/legacy/pages/App/ConfigureTheView/state/actions.mjs.map +1 -0
  295. package/dist/admin/legacy/pages/App/ConfigureTheView/state/init.js.map +1 -0
  296. package/dist/admin/legacy/pages/App/ConfigureTheView/state/init.mjs.map +1 -0
  297. package/dist/admin/legacy/pages/App/ConfigureTheView/state/reducer.js.map +1 -0
  298. package/dist/admin/legacy/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -0
  299. package/dist/admin/legacy/pages/App/MediaLibrary.js +469 -0
  300. package/dist/admin/legacy/pages/App/MediaLibrary.js.map +1 -0
  301. package/dist/admin/legacy/pages/App/MediaLibrary.mjs +447 -0
  302. package/dist/admin/legacy/pages/App/MediaLibrary.mjs.map +1 -0
  303. package/dist/admin/legacy/pages/App/components/BulkActions.js.map +1 -0
  304. package/dist/admin/legacy/pages/App/components/BulkActions.mjs.map +1 -0
  305. package/dist/admin/legacy/pages/App/components/BulkDeleteButton.js.map +1 -0
  306. package/dist/admin/legacy/pages/App/components/BulkDeleteButton.mjs.map +1 -0
  307. package/dist/admin/legacy/pages/App/components/BulkMoveButton.js.map +1 -0
  308. package/dist/admin/legacy/pages/App/components/BulkMoveButton.mjs.map +1 -0
  309. package/dist/admin/legacy/pages/App/components/EmptyOrNoPermissions.js.map +1 -0
  310. package/dist/admin/legacy/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -0
  311. package/dist/admin/legacy/pages/App/components/Filters.js.map +1 -0
  312. package/dist/admin/legacy/pages/App/components/Filters.mjs.map +1 -0
  313. package/dist/admin/legacy/pages/App/components/Header.js.map +1 -0
  314. package/dist/admin/legacy/pages/App/components/Header.mjs.map +1 -0
  315. package/dist/admin/legacy/utils/appendSearchParamsToUrl.js.map +1 -0
  316. package/dist/admin/legacy/utils/appendSearchParamsToUrl.mjs.map +1 -0
  317. package/dist/admin/legacy/utils/containsAssetFilter.js.map +1 -0
  318. package/dist/admin/legacy/utils/containsAssetFilter.mjs.map +1 -0
  319. package/dist/admin/legacy/utils/createAssetUrl.js.map +1 -0
  320. package/dist/admin/legacy/utils/createAssetUrl.mjs.map +1 -0
  321. package/dist/admin/legacy/utils/displayedFilters.js.map +1 -0
  322. package/dist/admin/legacy/utils/displayedFilters.mjs.map +1 -0
  323. package/dist/admin/legacy/utils/downloadFile.js +13 -0
  324. package/dist/admin/legacy/utils/downloadFile.js.map +1 -0
  325. package/dist/admin/legacy/utils/downloadFile.mjs +11 -0
  326. package/dist/admin/legacy/utils/downloadFile.mjs.map +1 -0
  327. package/dist/admin/legacy/utils/findRecursiveFolderByValue.js.map +1 -0
  328. package/dist/admin/legacy/utils/findRecursiveFolderByValue.mjs.map +1 -0
  329. package/dist/admin/legacy/utils/formatBytes.js.map +1 -0
  330. package/dist/admin/legacy/utils/formatBytes.mjs.map +1 -0
  331. package/dist/admin/legacy/utils/formatDuration.js.map +1 -0
  332. package/dist/admin/legacy/utils/formatDuration.mjs.map +1 -0
  333. package/dist/admin/legacy/utils/getAPIInnerErrors.js.map +1 -0
  334. package/dist/admin/legacy/utils/getAPIInnerErrors.mjs.map +1 -0
  335. package/dist/admin/legacy/utils/getAllowedFiles.js.map +1 -0
  336. package/dist/admin/legacy/utils/getAllowedFiles.mjs.map +1 -0
  337. package/dist/admin/legacy/utils/getBreadcrumbDataCM.js.map +1 -0
  338. package/dist/admin/legacy/utils/getBreadcrumbDataCM.mjs.map +1 -0
  339. package/dist/admin/legacy/utils/getBreadcrumbDataML.js.map +1 -0
  340. package/dist/admin/legacy/utils/getBreadcrumbDataML.mjs.map +1 -0
  341. package/dist/admin/legacy/utils/getFileExtension.js.map +1 -0
  342. package/dist/admin/legacy/utils/getFileExtension.mjs.map +1 -0
  343. package/dist/admin/legacy/utils/getFolderParents.js.map +1 -0
  344. package/dist/admin/legacy/utils/getFolderParents.mjs.map +1 -0
  345. package/dist/admin/legacy/utils/getFolderURL.js.map +1 -0
  346. package/dist/admin/legacy/utils/getFolderURL.mjs.map +1 -0
  347. package/dist/admin/legacy/utils/getTrad.js +8 -0
  348. package/dist/admin/legacy/utils/getTrad.js.map +1 -0
  349. package/dist/admin/legacy/utils/getTrad.mjs +6 -0
  350. package/dist/admin/legacy/utils/getTrad.mjs.map +1 -0
  351. package/dist/admin/legacy/utils/icons.js +23 -0
  352. package/dist/admin/legacy/utils/icons.js.map +1 -0
  353. package/dist/admin/legacy/utils/icons.mjs +19 -0
  354. package/dist/admin/legacy/utils/icons.mjs.map +1 -0
  355. package/dist/admin/legacy/utils/moveElement.js.map +1 -0
  356. package/dist/admin/legacy/utils/moveElement.mjs.map +1 -0
  357. package/dist/admin/legacy/utils/normalizeAPIError.js.map +1 -0
  358. package/dist/admin/legacy/utils/normalizeAPIError.mjs.map +1 -0
  359. package/dist/admin/legacy/utils/prefixFileUrlWithBackendUrl.js.map +1 -0
  360. package/dist/admin/legacy/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -0
  361. package/dist/admin/legacy/utils/prefixPluginTranslations.js.map +1 -0
  362. package/dist/admin/legacy/utils/prefixPluginTranslations.mjs.map +1 -0
  363. package/dist/admin/legacy/utils/rawFileToAsset.js +23 -0
  364. package/dist/admin/legacy/utils/rawFileToAsset.js.map +1 -0
  365. package/dist/admin/legacy/utils/rawFileToAsset.mjs +21 -0
  366. package/dist/admin/legacy/utils/rawFileToAsset.mjs.map +1 -0
  367. package/dist/admin/legacy/utils/resolveFileMime.js.map +1 -0
  368. package/dist/admin/legacy/utils/resolveFileMime.mjs.map +1 -0
  369. package/dist/admin/legacy/utils/toSingularTypes.js.map +1 -0
  370. package/dist/admin/legacy/utils/toSingularTypes.mjs.map +1 -0
  371. package/dist/admin/legacy/utils/urlYupSchema.js.map +1 -0
  372. package/dist/admin/legacy/utils/urlYupSchema.mjs.map +1 -0
  373. package/dist/admin/legacy/utils/urlsToAssets.js +42 -0
  374. package/dist/admin/legacy/utils/urlsToAssets.js.map +1 -0
  375. package/dist/admin/legacy/utils/urlsToAssets.mjs +40 -0
  376. package/dist/admin/legacy/utils/urlsToAssets.mjs.map +1 -0
  377. package/dist/admin/pages/Assets/AssetsPage.js +828 -0
  378. package/dist/admin/pages/Assets/AssetsPage.js.map +1 -0
  379. package/dist/admin/pages/Assets/AssetsPage.mjs +806 -0
  380. package/dist/admin/pages/Assets/AssetsPage.mjs.map +1 -0
  381. package/dist/admin/pages/Assets/components/ActionsMenuContent.js.map +1 -0
  382. package/dist/admin/pages/Assets/components/ActionsMenuContent.mjs.map +1 -0
  383. package/dist/admin/pages/Assets/components/AssetActionsMenu.js.map +1 -0
  384. package/dist/admin/pages/Assets/components/AssetActionsMenu.mjs.map +1 -0
  385. package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +1 -0
  386. package/dist/admin/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +1 -0
  387. package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +1202 -0
  388. package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -0
  389. package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +1175 -0
  390. package/dist/admin/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -0
  391. package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.js +261 -0
  392. package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -0
  393. package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.mjs +239 -0
  394. package/dist/admin/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -0
  395. package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.js.map +1 -0
  396. package/dist/admin/pages/Assets/components/AssetDetails/useCropImg.mjs.map +1 -0
  397. package/dist/admin/pages/Assets/components/AssetsGrid.js +528 -0
  398. package/dist/admin/pages/Assets/components/AssetsGrid.js.map +1 -0
  399. package/dist/admin/pages/Assets/components/AssetsGrid.mjs +526 -0
  400. package/dist/admin/pages/Assets/components/AssetsGrid.mjs.map +1 -0
  401. package/dist/admin/pages/Assets/components/AssetsSearchInput.js.map +1 -0
  402. package/dist/admin/pages/Assets/components/AssetsSearchInput.mjs.map +1 -0
  403. package/dist/admin/pages/Assets/components/AssetsTable.js.map +1 -0
  404. package/dist/admin/pages/Assets/components/AssetsTable.mjs.map +1 -0
  405. package/dist/admin/pages/Assets/components/BulkActionsBar.js +431 -0
  406. package/dist/admin/pages/Assets/components/BulkActionsBar.js.map +1 -0
  407. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs +429 -0
  408. package/dist/admin/pages/Assets/components/BulkActionsBar.mjs.map +1 -0
  409. package/dist/admin/pages/Assets/components/BulkMoveDialog.js.map +1 -0
  410. package/dist/admin/pages/Assets/components/BulkMoveDialog.mjs.map +1 -0
  411. package/dist/admin/pages/Assets/components/BusyOverlay.js.map +1 -0
  412. package/dist/admin/pages/Assets/components/BusyOverlay.mjs.map +1 -0
  413. package/dist/admin/pages/Assets/components/DateRangeCalendar.js.map +1 -0
  414. package/dist/admin/pages/Assets/components/DateRangeCalendar.mjs.map +1 -0
  415. package/dist/admin/pages/Assets/components/DeleteItemsDialog.js.map +1 -0
  416. package/dist/admin/pages/Assets/components/DeleteItemsDialog.mjs.map +1 -0
  417. package/dist/admin/pages/Assets/components/Dnd/AssetsDndProvider.js.map +1 -0
  418. package/dist/admin/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +1 -0
  419. package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.js.map +1 -0
  420. package/dist/admin/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +1 -0
  421. package/dist/admin/pages/Assets/components/Dnd/buildDragSet.js.map +1 -0
  422. package/dist/admin/pages/Assets/components/Dnd/buildDragSet.mjs.map +1 -0
  423. package/dist/admin/pages/Assets/components/Dnd/computeValidDropTargets.js.map +1 -0
  424. package/dist/admin/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +1 -0
  425. package/dist/admin/pages/Assets/components/Dnd/dndIds.js.map +1 -0
  426. package/dist/admin/pages/Assets/components/Dnd/dndIds.mjs.map +1 -0
  427. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.js.map +1 -0
  428. package/dist/admin/pages/Assets/components/Dnd/useAssetDnd.mjs.map +1 -0
  429. package/dist/admin/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +1 -0
  430. package/dist/admin/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +1 -0
  431. package/dist/admin/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -0
  432. package/dist/admin/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -0
  433. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -0
  434. package/dist/admin/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -0
  435. package/dist/admin/pages/Assets/components/EmptyState.js.map +1 -0
  436. package/dist/admin/pages/Assets/components/EmptyState.mjs.map +1 -0
  437. package/dist/admin/pages/Assets/components/FilterBadges.js.map +1 -0
  438. package/dist/admin/pages/Assets/components/FilterBadges.mjs.map +1 -0
  439. package/dist/admin/pages/Assets/components/FilterMenu.js.map +1 -0
  440. package/dist/admin/pages/Assets/components/FilterMenu.mjs.map +1 -0
  441. package/dist/admin/pages/Assets/components/FolderActionsMenu.js.map +1 -0
  442. package/dist/admin/pages/Assets/components/FolderActionsMenu.mjs.map +1 -0
  443. package/dist/admin/pages/Assets/components/FolderFormDialog.js.map +1 -0
  444. package/dist/admin/pages/Assets/components/FolderFormDialog.mjs.map +1 -0
  445. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.js.map +1 -0
  446. package/dist/admin/pages/Assets/components/FolderTree/FolderTree.mjs.map +1 -0
  447. package/dist/admin/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +1 -0
  448. package/dist/admin/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +1 -0
  449. package/dist/admin/pages/Assets/components/ImportFromUrlDialog.js.map +1 -0
  450. package/dist/admin/pages/Assets/components/ImportFromUrlDialog.mjs.map +1 -0
  451. package/dist/admin/pages/Assets/components/MainAreaContextMenu.js.map +1 -0
  452. package/dist/admin/pages/Assets/components/MainAreaContextMenu.mjs.map +1 -0
  453. package/dist/admin/pages/Assets/components/SortMenu.js.map +1 -0
  454. package/dist/admin/pages/Assets/components/SortMenu.mjs.map +1 -0
  455. package/dist/admin/pages/Assets/constants.js.map +1 -0
  456. package/dist/admin/pages/Assets/constants.mjs.map +1 -0
  457. package/dist/admin/pages/Assets/hooks/useAssetSearch.js.map +1 -0
  458. package/dist/admin/pages/Assets/hooks/useAssetSearch.mjs.map +1 -0
  459. package/dist/admin/pages/Assets/hooks/useAssetSelection.js.map +1 -0
  460. package/dist/admin/pages/Assets/hooks/useAssetSelection.mjs.map +1 -0
  461. package/dist/admin/pages/Assets/hooks/useBusyAssets.js.map +1 -0
  462. package/dist/admin/pages/Assets/hooks/useBusyAssets.mjs.map +1 -0
  463. package/dist/admin/pages/Assets/hooks/useFolderInfo.js.map +1 -0
  464. package/dist/admin/pages/Assets/hooks/useFolderInfo.mjs.map +1 -0
  465. package/dist/admin/pages/Assets/hooks/useFolderNavigation.js.map +1 -0
  466. package/dist/admin/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -0
  467. package/dist/admin/pages/Assets/hooks/useInfiniteAssets.js.map +1 -0
  468. package/dist/admin/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -0
  469. package/dist/admin/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +1 -0
  470. package/dist/admin/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +1 -0
  471. package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +1 -0
  472. package/dist/admin/pages/Assets/hooks/useIsAssetDetailsOpen.mjs.map +1 -0
  473. package/dist/admin/pages/Assets/hooks/useListFilters.js.map +1 -0
  474. package/dist/admin/pages/Assets/hooks/useListFilters.mjs.map +1 -0
  475. package/dist/admin/pages/Assets/hooks/useListScrollRestoration.js.map +1 -0
  476. package/dist/admin/pages/Assets/hooks/useListScrollRestoration.mjs.map +1 -0
  477. package/dist/admin/pages/Assets/hooks/useListSort.js.map +1 -0
  478. package/dist/admin/pages/Assets/hooks/useListSort.mjs.map +1 -0
  479. package/dist/admin/pages/Assets/utils/buildAssetFilters.js.map +1 -0
  480. package/dist/admin/pages/Assets/utils/buildAssetFilters.mjs.map +1 -0
  481. package/dist/admin/pages/Assets/utils/listQueryKey.js.map +1 -0
  482. package/dist/admin/pages/Assets/utils/listQueryKey.mjs.map +1 -0
  483. package/dist/admin/pages/Assets/utils/mergeMixedList.js.map +1 -0
  484. package/dist/admin/pages/Assets/utils/mergeMixedList.mjs.map +1 -0
  485. package/dist/admin/pages/Assets/utils/mergeUploadedAssets.js.map +1 -0
  486. package/dist/admin/pages/Assets/utils/mergeUploadedAssets.mjs.map +1 -0
  487. package/dist/admin/pages/Assets/utils/renderedKeys.js.map +1 -0
  488. package/dist/admin/pages/Assets/utils/renderedKeys.mjs.map +1 -0
  489. package/dist/admin/pages/Assets/utils/selection.js.map +1 -0
  490. package/dist/admin/pages/Assets/utils/selection.mjs.map +1 -0
  491. package/dist/admin/pages/SettingsPage/SettingsPage.js +23 -28
  492. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  493. package/dist/admin/pages/SettingsPage/SettingsPage.mjs +23 -28
  494. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  495. package/dist/admin/pages/SettingsPage/useAIMetadataJob.js +110 -0
  496. package/dist/admin/pages/SettingsPage/useAIMetadataJob.js.map +1 -0
  497. package/dist/admin/pages/SettingsPage/useAIMetadataJob.mjs +88 -0
  498. package/dist/admin/pages/SettingsPage/useAIMetadataJob.mjs.map +1 -0
  499. package/dist/admin/services/api.js.map +1 -0
  500. package/dist/admin/services/api.mjs.map +1 -0
  501. package/dist/admin/services/assets.js.map +1 -0
  502. package/dist/admin/services/assets.mjs.map +1 -0
  503. package/dist/admin/services/folders.js.map +1 -0
  504. package/dist/admin/services/folders.mjs.map +1 -0
  505. package/dist/admin/services/settings.js.map +1 -0
  506. package/dist/admin/services/settings.mjs.map +1 -0
  507. package/dist/admin/services/uploadFileViaXHR.js.map +1 -0
  508. package/dist/admin/services/uploadFileViaXHR.mjs.map +1 -0
  509. package/dist/admin/src/hooks/useMediaLibraryPermissions.d.ts +19 -2
  510. package/dist/admin/src/hooks/useTracking.d.ts +26 -1
  511. package/dist/admin/src/legacy/ai/components/AIAssetCard.d.ts +13 -0
  512. package/dist/admin/src/legacy/ai/components/AIUploadModal.d.ts +55 -0
  513. package/dist/admin/src/legacy/components/AssetCard/AssetCard.d.ts +19 -0
  514. package/dist/admin/src/legacy/components/AssetCard/UploadingAssetCard.d.ts +17 -0
  515. package/dist/admin/src/legacy/components/AssetDialog/AssetDialog.d.ts +39 -0
  516. package/dist/admin/src/legacy/components/AssetDialog/BrowseStep/BrowseStep.d.ts +63 -0
  517. package/dist/admin/src/legacy/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.d.ts +7 -0
  518. package/dist/admin/src/legacy/components/AssetDialog/SelectedStep/SelectedStep.d.ts +8 -0
  519. package/dist/admin/src/legacy/components/AssetGridList/AssetGridList.d.ts +13 -0
  520. package/dist/admin/src/legacy/components/BulkMoveDialog/BulkMoveDialog.d.ts +15 -0
  521. package/dist/admin/src/legacy/components/EditAssetDialog/EditAssetContent.d.ts +31 -0
  522. package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +8 -0
  523. package/dist/admin/src/legacy/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +26 -0
  524. package/dist/admin/src/legacy/components/EditAssetDialog/RemoveAssetDialog.d.ts +8 -0
  525. package/dist/admin/src/legacy/components/EditFolderDialog/EditFolderDialog.d.ts +12 -0
  526. package/dist/admin/src/legacy/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +10 -0
  527. package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAsset.d.ts +4 -0
  528. package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAssetActions.d.ts +9 -0
  529. package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/CarouselAssets.d.ts +23 -0
  530. package/dist/admin/src/legacy/components/MediaLibraryInput/Carousel/EmptyStateAsset.d.ts +10 -0
  531. package/dist/admin/src/legacy/components/SelectTree/Option.d.ts +16 -0
  532. package/dist/admin/src/legacy/components/SortPicker/SortPicker.d.ts +7 -0
  533. package/dist/admin/src/legacy/components/TableList/CellContent.d.ts +8 -0
  534. package/dist/admin/src/legacy/components/TableList/PreviewCell.d.ts +7 -0
  535. package/dist/admin/src/legacy/components/TableList/TableList.d.ts +31 -0
  536. package/dist/admin/src/legacy/components/TableList/TableRows.d.ts +22 -0
  537. package/dist/admin/src/legacy/components/UploadAssetDialog/AddAssetStep/AddAssetStep.d.ts +13 -0
  538. package/dist/admin/src/legacy/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +22 -0
  539. package/dist/admin/src/legacy/components/UploadAssetDialog/UploadAssetDialog.d.ts +21 -0
  540. package/dist/admin/src/legacy/components/UploadProgress/UploadProgress.d.ts +7 -0
  541. package/dist/admin/src/legacy/hooks/useAssets.d.ts +14 -0
  542. package/dist/admin/src/legacy/hooks/useBulkEdit.d.ts +91 -0
  543. package/dist/admin/src/legacy/hooks/useBulkMove.d.ts +209 -0
  544. package/dist/admin/src/legacy/hooks/useBulkRemove.d.ts +241 -0
  545. package/dist/admin/src/legacy/hooks/useConfig.d.ts +5 -0
  546. package/dist/admin/src/legacy/hooks/useEditAsset.d.ts +119 -0
  547. package/dist/admin/src/legacy/hooks/useEditFolder.d.ts +72 -0
  548. package/dist/admin/src/legacy/hooks/useFolder.d.ts +7 -0
  549. package/dist/admin/src/legacy/hooks/useFolderStructure.d.ts +18 -0
  550. package/dist/admin/src/legacy/hooks/useFolders.d.ts +11 -0
  551. package/dist/admin/src/legacy/hooks/useMediaLibraryPermissions.d.ts +4 -0
  552. package/dist/admin/src/legacy/hooks/useModalQueryParams.d.ts +20 -0
  553. package/dist/admin/src/legacy/hooks/useRemoveAsset.d.ts +8 -0
  554. package/dist/admin/src/legacy/hooks/useTracking.d.ts +4 -0
  555. package/dist/admin/src/legacy/hooks/useUpload.d.ts +15 -0
  556. package/dist/admin/src/legacy/pages/App/ConfigureTheView/ConfigureTheView.d.ts +6 -0
  557. package/dist/admin/src/legacy/pages/App/ConfigureTheView/components/Settings.d.ts +13 -0
  558. package/dist/admin/src/legacy/pages/App/ConfigureTheView/state/actions.d.ts +12 -0
  559. package/dist/admin/src/legacy/pages/App/ConfigureTheView/state/init.d.ts +8 -0
  560. package/dist/admin/src/legacy/pages/App/MediaLibrary.d.ts +1 -0
  561. package/dist/admin/src/legacy/pages/App/components/BulkActions.d.ts +15 -0
  562. package/dist/admin/src/legacy/pages/App/components/BulkDeleteButton.d.ts +7 -0
  563. package/dist/admin/src/legacy/pages/App/components/BulkMoveButton.d.ts +15 -0
  564. package/dist/admin/src/legacy/pages/App/components/Header.d.ts +22 -0
  565. package/dist/admin/src/legacy/utils/containsAssetFilter.d.ts +2 -0
  566. package/dist/admin/src/legacy/utils/createAssetUrl.d.ts +2 -0
  567. package/dist/admin/src/legacy/utils/downloadFile.d.ts +1 -0
  568. package/dist/admin/src/legacy/utils/findRecursiveFolderByValue.d.ts +11 -0
  569. package/dist/admin/src/legacy/utils/getAllowedFiles.d.ts +14 -0
  570. package/dist/admin/src/legacy/utils/getBreadcrumbDataCM.d.ts +19 -0
  571. package/dist/admin/src/legacy/utils/getBreadcrumbDataML.d.ts +18 -0
  572. package/dist/admin/src/legacy/utils/getFolderParents.d.ts +11 -0
  573. package/dist/admin/src/legacy/utils/getFolderURL.d.ts +5 -0
  574. package/dist/admin/src/legacy/utils/icons.d.ts +15 -0
  575. package/dist/admin/src/legacy/utils/index.d.ts +26 -0
  576. package/dist/admin/src/legacy/utils/rawFileToAsset.d.ts +14 -0
  577. package/dist/admin/src/pages/Assets/components/ActionsMenuContent.d.ts +33 -0
  578. package/dist/admin/src/pages/Assets/components/AssetActionsMenu.d.ts +26 -0
  579. package/dist/admin/src/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +16 -0
  580. package/dist/admin/src/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +46 -0
  581. package/dist/admin/src/pages/Assets/components/AssetDetails/AssetPreview.d.ts +9 -0
  582. package/dist/admin/src/pages/Assets/components/AssetsGrid.d.ts +12 -0
  583. package/dist/admin/src/pages/Assets/components/AssetsTable.d.ts +18 -0
  584. package/dist/admin/src/pages/Assets/components/BulkActionsBar.d.ts +28 -0
  585. package/dist/admin/src/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +7 -0
  586. package/dist/admin/src/pages/Assets/components/FolderActionsMenu.d.ts +21 -0
  587. package/dist/admin/src/pages/Assets/hooks/useFolderNavigation.d.ts +7 -0
  588. package/dist/admin/src/pages/Assets/hooks/useInfiniteAssets.d.ts +45 -0
  589. package/dist/admin/src/pages/Assets/utils/mergeMixedList.d.ts +40 -0
  590. package/dist/admin/src/pages/Assets/utils/mergeUploadedAssets.d.ts +35 -0
  591. package/dist/admin/src/pages/Assets/utils/renderedKeys.d.ts +19 -0
  592. package/dist/admin/src/pages/SettingsPage/useAIMetadataJob.d.ts +9 -0
  593. package/dist/admin/src/services/api.d.ts +99 -0
  594. package/dist/admin/src/services/assets.d.ts +33 -0
  595. package/dist/admin/src/services/folders.d.ts +37 -0
  596. package/dist/admin/src/services/settings.d.ts +2 -0
  597. package/dist/admin/src/services/uploadFileViaXHR.d.ts +23 -0
  598. package/dist/admin/src/store/uploadProgress.d.ts +201 -0
  599. package/dist/admin/src/utils/canDropItemOnFolder.d.ts +9 -0
  600. package/dist/admin/src/utils/downloadFile.d.ts +5 -0
  601. package/dist/admin/src/utils/flattenFolderStructure.d.ts +18 -0
  602. package/dist/admin/src/utils/getFolderLabel.d.ts +11 -0
  603. package/dist/admin/src/utils/itemLocations.d.ts +31 -0
  604. package/dist/admin/store/hooks.js.map +1 -0
  605. package/dist/admin/store/hooks.mjs.map +1 -0
  606. package/dist/admin/store/uploadProgress.js.map +1 -0
  607. package/dist/admin/store/uploadProgress.mjs.map +1 -0
  608. package/dist/admin/utils/buildBulkMovePayload.js.map +1 -0
  609. package/dist/admin/utils/buildBulkMovePayload.mjs.map +1 -0
  610. package/dist/admin/utils/buildDragSetFromSelection.js.map +1 -0
  611. package/dist/admin/utils/buildDragSetFromSelection.mjs.map +1 -0
  612. package/dist/admin/utils/canDropItemOnFolder.js.map +1 -0
  613. package/dist/admin/utils/canDropItemOnFolder.mjs.map +1 -0
  614. package/dist/admin/utils/createRafBatcher.js.map +1 -0
  615. package/dist/admin/utils/createRafBatcher.mjs.map +1 -0
  616. package/dist/admin/utils/downloadFile.js +13 -7
  617. package/dist/admin/utils/downloadFile.js.map +1 -1
  618. package/dist/admin/utils/downloadFile.mjs +13 -7
  619. package/dist/admin/utils/downloadFile.mjs.map +1 -1
  620. package/dist/admin/utils/files.js.map +1 -0
  621. package/dist/admin/utils/files.mjs.map +1 -0
  622. package/dist/admin/utils/flattenFolderStructure.js.map +1 -0
  623. package/dist/admin/utils/flattenFolderStructure.mjs.map +1 -0
  624. package/dist/admin/utils/formatMoveSuccessMessage.js.map +1 -0
  625. package/dist/admin/utils/formatMoveSuccessMessage.mjs.map +1 -0
  626. package/dist/admin/utils/getApiErrorMessage.js.map +1 -0
  627. package/dist/admin/utils/getApiErrorMessage.mjs.map +1 -0
  628. package/dist/admin/utils/getAssetIcon.js +28 -0
  629. package/dist/admin/utils/getAssetIcon.js.map +1 -0
  630. package/dist/admin/utils/getAssetIcon.mjs +26 -0
  631. package/dist/admin/utils/getAssetIcon.mjs.map +1 -0
  632. package/dist/admin/utils/getFolderLabel.js.map +1 -0
  633. package/dist/admin/utils/getFolderLabel.mjs.map +1 -0
  634. package/dist/admin/utils/getRelationId.js.map +1 -0
  635. package/dist/admin/utils/getRelationId.mjs.map +1 -0
  636. package/dist/admin/utils/isEventFromWithin.js.map +1 -0
  637. package/dist/admin/utils/isEventFromWithin.mjs.map +1 -0
  638. package/dist/admin/utils/itemLocations.js.map +1 -0
  639. package/dist/admin/utils/itemLocations.mjs.map +1 -0
  640. package/dist/admin/utils/itemSource.js.map +1 -0
  641. package/dist/admin/utils/itemSource.mjs.map +1 -0
  642. package/dist/admin/utils/searchQueryParam.js.map +1 -0
  643. package/dist/admin/utils/searchQueryParam.mjs.map +1 -0
  644. package/dist/admin/utils/translations.js +8 -0
  645. package/dist/admin/utils/translations.js.map +1 -0
  646. package/dist/admin/utils/translations.mjs +6 -0
  647. package/dist/admin/utils/translations.mjs.map +1 -0
  648. package/dist/server/controllers/admin-settings.js +1 -4
  649. package/dist/server/controllers/admin-settings.js.map +1 -1
  650. package/dist/server/controllers/admin-settings.mjs +1 -4
  651. package/dist/server/controllers/admin-settings.mjs.map +1 -1
  652. package/dist/server/migrations/unsign-richtext-and-blocks-urls.js +147 -0
  653. package/dist/server/migrations/unsign-richtext-and-blocks-urls.js.map +1 -0
  654. package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs +145 -0
  655. package/dist/server/migrations/unsign-richtext-and-blocks-urls.mjs.map +1 -0
  656. package/dist/server/register.js +3 -0
  657. package/dist/server/register.js.map +1 -1
  658. package/dist/server/register.mjs +3 -0
  659. package/dist/server/register.mjs.map +1 -1
  660. package/dist/server/routes/admin.js +4 -1
  661. package/dist/server/routes/admin.js.map +1 -1
  662. package/dist/server/routes/admin.mjs +4 -1
  663. package/dist/server/routes/admin.mjs.map +1 -1
  664. package/dist/server/services/ai-metadata.js +1 -1
  665. package/dist/server/services/ai-metadata.js.map +1 -1
  666. package/dist/server/services/ai-metadata.mjs +1 -1
  667. package/dist/server/services/ai-metadata.mjs.map +1 -1
  668. package/dist/server/services/extensions/index.js +17 -5
  669. package/dist/server/services/extensions/index.js.map +1 -1
  670. package/dist/server/services/extensions/index.mjs +16 -4
  671. package/dist/server/services/extensions/index.mjs.map +1 -1
  672. package/dist/server/services/extensions/utils.js +318 -19
  673. package/dist/server/services/extensions/utils.js.map +1 -1
  674. package/dist/server/services/extensions/utils.mjs +309 -20
  675. package/dist/server/services/extensions/utils.mjs.map +1 -1
  676. package/dist/server/services/metrics.js +4 -3
  677. package/dist/server/services/metrics.js.map +1 -1
  678. package/dist/server/services/metrics.mjs +4 -3
  679. package/dist/server/services/metrics.mjs.map +1 -1
  680. package/dist/server/src/controllers/admin-settings.d.ts +1 -1
  681. package/dist/server/src/controllers/admin-settings.d.ts.map +1 -1
  682. package/dist/server/src/controllers/index.d.ts +1 -1
  683. package/dist/server/src/index.d.ts +1 -1
  684. package/dist/server/src/migrations/unsign-richtext-and-blocks-urls.d.ts +18 -0
  685. package/dist/server/src/migrations/unsign-richtext-and-blocks-urls.d.ts.map +1 -0
  686. package/dist/server/src/register.d.ts.map +1 -1
  687. package/dist/server/src/routes/admin.d.ts.map +1 -1
  688. package/dist/server/src/services/extensions/index.d.ts.map +1 -1
  689. package/dist/server/src/services/extensions/utils.d.ts +52 -2
  690. package/dist/server/src/services/extensions/utils.d.ts.map +1 -1
  691. package/dist/server/src/services/metrics.d.ts.map +1 -1
  692. package/package.json +6 -6
  693. package/dist/admin/ai/components/AIAssetCard.js +0 -621
  694. package/dist/admin/ai/components/AIAssetCard.js.map +0 -1
  695. package/dist/admin/ai/components/AIAssetCard.mjs +0 -598
  696. package/dist/admin/ai/components/AIAssetCard.mjs.map +0 -1
  697. package/dist/admin/ai/components/AIUploadModal.js.map +0 -1
  698. package/dist/admin/ai/components/AIUploadModal.mjs.map +0 -1
  699. package/dist/admin/components/AssetCard/AssetCard.js +0 -67
  700. package/dist/admin/components/AssetCard/AssetCard.js.map +0 -1
  701. package/dist/admin/components/AssetCard/AssetCard.mjs +0 -65
  702. package/dist/admin/components/AssetCard/AssetCard.mjs.map +0 -1
  703. package/dist/admin/components/AssetCard/AssetCardBase.js.map +0 -1
  704. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +0 -1
  705. package/dist/admin/components/AssetCard/AudioAssetCard.js.map +0 -1
  706. package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +0 -1
  707. package/dist/admin/components/AssetCard/AudioPreview.js.map +0 -1
  708. package/dist/admin/components/AssetCard/AudioPreview.mjs.map +0 -1
  709. package/dist/admin/components/AssetCard/DocAssetCard.js.map +0 -1
  710. package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +0 -1
  711. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +0 -1
  712. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +0 -1
  713. package/dist/admin/components/AssetCard/UploadingAssetCard.js +0 -154
  714. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +0 -1
  715. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs +0 -132
  716. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +0 -1
  717. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +0 -1
  718. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +0 -1
  719. package/dist/admin/components/AssetCard/VideoPreview.js.map +0 -1
  720. package/dist/admin/components/AssetCard/VideoPreview.mjs.map +0 -1
  721. package/dist/admin/components/AssetDialog/AssetDialog.js.map +0 -1
  722. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +0 -1
  723. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +0 -320
  724. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +0 -1
  725. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +0 -318
  726. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +0 -1
  727. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +0 -1
  728. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +0 -1
  729. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +0 -1
  730. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +0 -1
  731. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +0 -1
  732. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +0 -1
  733. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +0 -1
  734. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +0 -1
  735. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +0 -1
  736. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +0 -1
  737. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +0 -1
  738. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +0 -1
  739. package/dist/admin/components/AssetDialog/DialogFooter.js.map +0 -1
  740. package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +0 -1
  741. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +0 -1
  742. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +0 -1
  743. package/dist/admin/components/AssetGridList/AssetGridList.js.map +0 -1
  744. package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +0 -1
  745. package/dist/admin/components/AssetGridList/Draggable.js.map +0 -1
  746. package/dist/admin/components/AssetGridList/Draggable.mjs.map +0 -1
  747. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +0 -1
  748. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +0 -1
  749. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +0 -1
  750. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +0 -1
  751. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +0 -1
  752. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +0 -1
  753. package/dist/admin/components/ContextInfo/ContextInfo.js.map +0 -1
  754. package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +0 -1
  755. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +0 -1
  756. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +0 -1
  757. package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +0 -1
  758. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +0 -1
  759. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +0 -1
  760. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +0 -1
  761. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js +0 -114
  762. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +0 -1
  763. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs +0 -89
  764. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +0 -1
  765. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +0 -1
  766. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +0 -1
  767. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +0 -1
  768. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +0 -1
  769. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +0 -362
  770. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +0 -1
  771. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +0 -337
  772. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +0 -1
  773. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +0 -1
  774. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +0 -1
  775. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +0 -1
  776. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +0 -1
  777. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +0 -1
  778. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +0 -1
  779. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +0 -1
  780. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +0 -1
  781. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +0 -1
  782. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +0 -1
  783. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +0 -1
  784. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +0 -1
  785. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +0 -1
  786. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +0 -1
  787. package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +0 -1
  788. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +0 -1
  789. package/dist/admin/components/FilterList/FilterList.js.map +0 -1
  790. package/dist/admin/components/FilterList/FilterList.mjs.map +0 -1
  791. package/dist/admin/components/FilterList/FilterTag.js.map +0 -1
  792. package/dist/admin/components/FilterList/FilterTag.mjs.map +0 -1
  793. package/dist/admin/components/FilterPopover/FilterPopover.js.map +0 -1
  794. package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +0 -1
  795. package/dist/admin/components/FilterPopover/FilterValueInput.js.map +0 -1
  796. package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +0 -1
  797. package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +0 -1
  798. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +0 -1
  799. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +0 -1
  800. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +0 -1
  801. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +0 -1
  802. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +0 -1
  803. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +0 -1
  804. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +0 -1
  805. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +0 -1
  806. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +0 -1
  807. package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +0 -1
  808. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +0 -1
  809. package/dist/admin/components/FolderGridList/FolderGridList.js.map +0 -1
  810. package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +0 -1
  811. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +0 -1
  812. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +0 -1
  813. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js +0 -89
  814. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +0 -1
  815. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs +0 -87
  816. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +0 -1
  817. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +0 -1
  818. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +0 -1
  819. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +0 -1
  820. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +0 -1
  821. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js +0 -111
  822. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +0 -1
  823. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs +0 -89
  824. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +0 -1
  825. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +0 -1
  826. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +0 -1
  827. package/dist/admin/components/SelectTree/Option.js.map +0 -1
  828. package/dist/admin/components/SelectTree/Option.mjs.map +0 -1
  829. package/dist/admin/components/SelectTree/SelectTree.js.map +0 -1
  830. package/dist/admin/components/SelectTree/SelectTree.mjs.map +0 -1
  831. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +0 -1
  832. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +0 -1
  833. package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +0 -1
  834. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +0 -1
  835. package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +0 -1
  836. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +0 -1
  837. package/dist/admin/components/SortPicker/SortPicker.js +0 -40
  838. package/dist/admin/components/SortPicker/SortPicker.js.map +0 -1
  839. package/dist/admin/components/SortPicker/SortPicker.mjs +0 -38
  840. package/dist/admin/components/SortPicker/SortPicker.mjs.map +0 -1
  841. package/dist/admin/components/TableList/CellContent.js.map +0 -1
  842. package/dist/admin/components/TableList/CellContent.mjs.map +0 -1
  843. package/dist/admin/components/TableList/PreviewCell.js +0 -116
  844. package/dist/admin/components/TableList/PreviewCell.js.map +0 -1
  845. package/dist/admin/components/TableList/PreviewCell.mjs +0 -114
  846. package/dist/admin/components/TableList/PreviewCell.mjs.map +0 -1
  847. package/dist/admin/components/TableList/TableList.js +0 -100
  848. package/dist/admin/components/TableList/TableList.js.map +0 -1
  849. package/dist/admin/components/TableList/TableList.mjs +0 -98
  850. package/dist/admin/components/TableList/TableList.mjs.map +0 -1
  851. package/dist/admin/components/TableList/TableRows.js +0 -105
  852. package/dist/admin/components/TableList/TableRows.js.map +0 -1
  853. package/dist/admin/components/TableList/TableRows.mjs +0 -103
  854. package/dist/admin/components/TableList/TableRows.mjs.map +0 -1
  855. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +0 -1
  856. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +0 -1
  857. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js +0 -177
  858. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +0 -1
  859. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs +0 -155
  860. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +0 -1
  861. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +0 -1
  862. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +0 -1
  863. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +0 -1
  864. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +0 -1
  865. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +0 -1
  866. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +0 -1
  867. package/dist/admin/components/UploadProgress/UploadProgress.js.map +0 -1
  868. package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +0 -1
  869. package/dist/admin/future/App.js +0 -33
  870. package/dist/admin/future/App.js.map +0 -1
  871. package/dist/admin/future/App.mjs +0 -31
  872. package/dist/admin/future/App.mjs.map +0 -1
  873. package/dist/admin/future/components/Drawer.js.map +0 -1
  874. package/dist/admin/future/components/Drawer.mjs.map +0 -1
  875. package/dist/admin/future/components/TruncatedText.js.map +0 -1
  876. package/dist/admin/future/components/TruncatedText.mjs.map +0 -1
  877. package/dist/admin/future/components/UploadProgressDialog.js.map +0 -1
  878. package/dist/admin/future/components/UploadProgressDialog.mjs.map +0 -1
  879. package/dist/admin/future/hooks/useAIMetadataEnabled.js +0 -39
  880. package/dist/admin/future/hooks/useAIMetadataEnabled.js.map +0 -1
  881. package/dist/admin/future/hooks/useAIMetadataEnabled.mjs +0 -37
  882. package/dist/admin/future/hooks/useAIMetadataEnabled.mjs.map +0 -1
  883. package/dist/admin/future/hooks/useApiErrorMessage.js.map +0 -1
  884. package/dist/admin/future/hooks/useApiErrorMessage.mjs.map +0 -1
  885. package/dist/admin/future/hooks/useMediaLibraryPermissions.js +0 -35
  886. package/dist/admin/future/hooks/useMediaLibraryPermissions.js.map +0 -1
  887. package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs +0 -33
  888. package/dist/admin/future/hooks/useMediaLibraryPermissions.mjs.map +0 -1
  889. package/dist/admin/future/hooks/useTracking.js +0 -57
  890. package/dist/admin/future/hooks/useTracking.js.map +0 -1
  891. package/dist/admin/future/hooks/useTracking.mjs +0 -53
  892. package/dist/admin/future/hooks/useTracking.mjs.map +0 -1
  893. package/dist/admin/future/pages/Assets/AssetsPage.js +0 -828
  894. package/dist/admin/future/pages/Assets/AssetsPage.js.map +0 -1
  895. package/dist/admin/future/pages/Assets/AssetsPage.mjs +0 -806
  896. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +0 -1
  897. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.js.map +0 -1
  898. package/dist/admin/future/pages/Assets/components/ActionsMenuContent.mjs.map +0 -1
  899. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.js.map +0 -1
  900. package/dist/admin/future/pages/Assets/components/AssetActionsMenu.mjs.map +0 -1
  901. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.js.map +0 -1
  902. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetCropEditor.mjs.map +0 -1
  903. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +0 -1202
  904. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +0 -1
  905. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +0 -1175
  906. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +0 -1
  907. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +0 -261
  908. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +0 -1
  909. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +0 -239
  910. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +0 -1
  911. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.js.map +0 -1
  912. package/dist/admin/future/pages/Assets/components/AssetDetails/useCropImg.mjs.map +0 -1
  913. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +0 -534
  914. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +0 -1
  915. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +0 -532
  916. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +0 -1
  917. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.js.map +0 -1
  918. package/dist/admin/future/pages/Assets/components/AssetsSearchInput.mjs.map +0 -1
  919. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +0 -1
  920. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +0 -1
  921. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js +0 -431
  922. package/dist/admin/future/pages/Assets/components/BulkActionsBar.js.map +0 -1
  923. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs +0 -429
  924. package/dist/admin/future/pages/Assets/components/BulkActionsBar.mjs.map +0 -1
  925. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.js.map +0 -1
  926. package/dist/admin/future/pages/Assets/components/BulkMoveDialog.mjs.map +0 -1
  927. package/dist/admin/future/pages/Assets/components/BusyOverlay.js.map +0 -1
  928. package/dist/admin/future/pages/Assets/components/BusyOverlay.mjs.map +0 -1
  929. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.js.map +0 -1
  930. package/dist/admin/future/pages/Assets/components/DateRangeCalendar.mjs.map +0 -1
  931. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.js.map +0 -1
  932. package/dist/admin/future/pages/Assets/components/DeleteItemsDialog.mjs.map +0 -1
  933. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.js.map +0 -1
  934. package/dist/admin/future/pages/Assets/components/Dnd/AssetsDndProvider.mjs.map +0 -1
  935. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.js.map +0 -1
  936. package/dist/admin/future/pages/Assets/components/Dnd/DragOverlayChip.mjs.map +0 -1
  937. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.js.map +0 -1
  938. package/dist/admin/future/pages/Assets/components/Dnd/buildDragSet.mjs.map +0 -1
  939. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.js.map +0 -1
  940. package/dist/admin/future/pages/Assets/components/Dnd/computeValidDropTargets.mjs.map +0 -1
  941. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.js.map +0 -1
  942. package/dist/admin/future/pages/Assets/components/Dnd/dndIds.mjs.map +0 -1
  943. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.js.map +0 -1
  944. package/dist/admin/future/pages/Assets/components/Dnd/useAssetDnd.mjs.map +0 -1
  945. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.js.map +0 -1
  946. package/dist/admin/future/pages/Assets/components/Dnd/useFolderTreeDroppable.mjs.map +0 -1
  947. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +0 -1
  948. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +0 -1
  949. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +0 -1
  950. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +0 -1
  951. package/dist/admin/future/pages/Assets/components/EmptyState.js.map +0 -1
  952. package/dist/admin/future/pages/Assets/components/EmptyState.mjs.map +0 -1
  953. package/dist/admin/future/pages/Assets/components/FilterBadges.js.map +0 -1
  954. package/dist/admin/future/pages/Assets/components/FilterBadges.mjs.map +0 -1
  955. package/dist/admin/future/pages/Assets/components/FilterMenu.js.map +0 -1
  956. package/dist/admin/future/pages/Assets/components/FilterMenu.mjs.map +0 -1
  957. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.js.map +0 -1
  958. package/dist/admin/future/pages/Assets/components/FolderActionsMenu.mjs.map +0 -1
  959. package/dist/admin/future/pages/Assets/components/FolderFormDialog.js.map +0 -1
  960. package/dist/admin/future/pages/Assets/components/FolderFormDialog.mjs.map +0 -1
  961. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.js.map +0 -1
  962. package/dist/admin/future/pages/Assets/components/FolderTree/FolderTree.mjs.map +0 -1
  963. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.js.map +0 -1
  964. package/dist/admin/future/pages/Assets/components/FolderTree/useSpringLoadedExpand.mjs.map +0 -1
  965. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +0 -1
  966. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs.map +0 -1
  967. package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.js.map +0 -1
  968. package/dist/admin/future/pages/Assets/components/MainAreaContextMenu.mjs.map +0 -1
  969. package/dist/admin/future/pages/Assets/components/SortMenu.js.map +0 -1
  970. package/dist/admin/future/pages/Assets/components/SortMenu.mjs.map +0 -1
  971. package/dist/admin/future/pages/Assets/constants.js.map +0 -1
  972. package/dist/admin/future/pages/Assets/constants.mjs.map +0 -1
  973. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.js.map +0 -1
  974. package/dist/admin/future/pages/Assets/hooks/useAssetSearch.mjs.map +0 -1
  975. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.js.map +0 -1
  976. package/dist/admin/future/pages/Assets/hooks/useAssetSelection.mjs.map +0 -1
  977. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.js.map +0 -1
  978. package/dist/admin/future/pages/Assets/hooks/useBusyAssets.mjs.map +0 -1
  979. package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +0 -1
  980. package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +0 -1
  981. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +0 -1
  982. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +0 -1
  983. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +0 -1
  984. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +0 -1
  985. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.js.map +0 -1
  986. package/dist/admin/future/pages/Assets/hooks/useInfiniteScrollSentinel.mjs.map +0 -1
  987. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.js.map +0 -1
  988. package/dist/admin/future/pages/Assets/hooks/useIsAssetDetailsOpen.mjs.map +0 -1
  989. package/dist/admin/future/pages/Assets/hooks/useListFilters.js.map +0 -1
  990. package/dist/admin/future/pages/Assets/hooks/useListFilters.mjs.map +0 -1
  991. package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.js.map +0 -1
  992. package/dist/admin/future/pages/Assets/hooks/useListScrollRestoration.mjs.map +0 -1
  993. package/dist/admin/future/pages/Assets/hooks/useListSort.js.map +0 -1
  994. package/dist/admin/future/pages/Assets/hooks/useListSort.mjs.map +0 -1
  995. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.js.map +0 -1
  996. package/dist/admin/future/pages/Assets/utils/buildAssetFilters.mjs.map +0 -1
  997. package/dist/admin/future/pages/Assets/utils/listQueryKey.js.map +0 -1
  998. package/dist/admin/future/pages/Assets/utils/listQueryKey.mjs.map +0 -1
  999. package/dist/admin/future/pages/Assets/utils/mergeMixedList.js.map +0 -1
  1000. package/dist/admin/future/pages/Assets/utils/mergeMixedList.mjs.map +0 -1
  1001. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.js.map +0 -1
  1002. package/dist/admin/future/pages/Assets/utils/mergeUploadedAssets.mjs.map +0 -1
  1003. package/dist/admin/future/pages/Assets/utils/renderedKeys.js.map +0 -1
  1004. package/dist/admin/future/pages/Assets/utils/renderedKeys.mjs.map +0 -1
  1005. package/dist/admin/future/pages/Assets/utils/selection.js.map +0 -1
  1006. package/dist/admin/future/pages/Assets/utils/selection.mjs.map +0 -1
  1007. package/dist/admin/future/services/api.js.map +0 -1
  1008. package/dist/admin/future/services/api.mjs.map +0 -1
  1009. package/dist/admin/future/services/assets.js.map +0 -1
  1010. package/dist/admin/future/services/assets.mjs.map +0 -1
  1011. package/dist/admin/future/services/folders.js.map +0 -1
  1012. package/dist/admin/future/services/folders.mjs.map +0 -1
  1013. package/dist/admin/future/services/settings.js.map +0 -1
  1014. package/dist/admin/future/services/settings.mjs.map +0 -1
  1015. package/dist/admin/future/services/uploadFileViaXHR.js.map +0 -1
  1016. package/dist/admin/future/services/uploadFileViaXHR.mjs.map +0 -1
  1017. package/dist/admin/future/store/hooks.js.map +0 -1
  1018. package/dist/admin/future/store/hooks.mjs.map +0 -1
  1019. package/dist/admin/future/store/uploadProgress.js.map +0 -1
  1020. package/dist/admin/future/store/uploadProgress.mjs.map +0 -1
  1021. package/dist/admin/future/utils/buildBulkMovePayload.js.map +0 -1
  1022. package/dist/admin/future/utils/buildBulkMovePayload.mjs.map +0 -1
  1023. package/dist/admin/future/utils/buildDragSetFromSelection.js.map +0 -1
  1024. package/dist/admin/future/utils/buildDragSetFromSelection.mjs.map +0 -1
  1025. package/dist/admin/future/utils/canDropItemOnFolder.js.map +0 -1
  1026. package/dist/admin/future/utils/canDropItemOnFolder.mjs.map +0 -1
  1027. package/dist/admin/future/utils/createRafBatcher.js.map +0 -1
  1028. package/dist/admin/future/utils/createRafBatcher.mjs.map +0 -1
  1029. package/dist/admin/future/utils/downloadFile.js +0 -19
  1030. package/dist/admin/future/utils/downloadFile.js.map +0 -1
  1031. package/dist/admin/future/utils/downloadFile.mjs +0 -17
  1032. package/dist/admin/future/utils/downloadFile.mjs.map +0 -1
  1033. package/dist/admin/future/utils/files.js.map +0 -1
  1034. package/dist/admin/future/utils/files.mjs.map +0 -1
  1035. package/dist/admin/future/utils/flattenFolderStructure.js.map +0 -1
  1036. package/dist/admin/future/utils/flattenFolderStructure.mjs.map +0 -1
  1037. package/dist/admin/future/utils/formatMoveSuccessMessage.js.map +0 -1
  1038. package/dist/admin/future/utils/formatMoveSuccessMessage.mjs.map +0 -1
  1039. package/dist/admin/future/utils/getApiErrorMessage.js.map +0 -1
  1040. package/dist/admin/future/utils/getApiErrorMessage.mjs.map +0 -1
  1041. package/dist/admin/future/utils/getAssetIcon.js +0 -28
  1042. package/dist/admin/future/utils/getAssetIcon.js.map +0 -1
  1043. package/dist/admin/future/utils/getAssetIcon.mjs +0 -26
  1044. package/dist/admin/future/utils/getAssetIcon.mjs.map +0 -1
  1045. package/dist/admin/future/utils/getFolderLabel.js.map +0 -1
  1046. package/dist/admin/future/utils/getFolderLabel.mjs.map +0 -1
  1047. package/dist/admin/future/utils/getRelationId.js.map +0 -1
  1048. package/dist/admin/future/utils/getRelationId.mjs.map +0 -1
  1049. package/dist/admin/future/utils/isEventFromWithin.js.map +0 -1
  1050. package/dist/admin/future/utils/isEventFromWithin.mjs.map +0 -1
  1051. package/dist/admin/future/utils/itemLocations.js.map +0 -1
  1052. package/dist/admin/future/utils/itemLocations.mjs.map +0 -1
  1053. package/dist/admin/future/utils/itemSource.js.map +0 -1
  1054. package/dist/admin/future/utils/itemSource.mjs.map +0 -1
  1055. package/dist/admin/future/utils/searchQueryParam.js.map +0 -1
  1056. package/dist/admin/future/utils/searchQueryParam.mjs.map +0 -1
  1057. package/dist/admin/future/utils/translations.js +0 -8
  1058. package/dist/admin/future/utils/translations.js.map +0 -1
  1059. package/dist/admin/future/utils/translations.mjs +0 -6
  1060. package/dist/admin/future/utils/translations.mjs.map +0 -1
  1061. package/dist/admin/hooks/useAIMetadataJob.js +0 -114
  1062. package/dist/admin/hooks/useAIMetadataJob.js.map +0 -1
  1063. package/dist/admin/hooks/useAIMetadataJob.mjs +0 -92
  1064. package/dist/admin/hooks/useAIMetadataJob.mjs.map +0 -1
  1065. package/dist/admin/hooks/useAiAvailability.js.map +0 -1
  1066. package/dist/admin/hooks/useAiAvailability.mjs.map +0 -1
  1067. package/dist/admin/hooks/useAssets.js +0 -127
  1068. package/dist/admin/hooks/useAssets.js.map +0 -1
  1069. package/dist/admin/hooks/useAssets.mjs +0 -105
  1070. package/dist/admin/hooks/useAssets.mjs.map +0 -1
  1071. package/dist/admin/hooks/useBulkEdit.js +0 -65
  1072. package/dist/admin/hooks/useBulkEdit.js.map +0 -1
  1073. package/dist/admin/hooks/useBulkEdit.mjs +0 -63
  1074. package/dist/admin/hooks/useBulkEdit.mjs.map +0 -1
  1075. package/dist/admin/hooks/useBulkMove.js +0 -78
  1076. package/dist/admin/hooks/useBulkMove.js.map +0 -1
  1077. package/dist/admin/hooks/useBulkMove.mjs +0 -76
  1078. package/dist/admin/hooks/useBulkMove.mjs.map +0 -1
  1079. package/dist/admin/hooks/useBulkRemove.js +0 -83
  1080. package/dist/admin/hooks/useBulkRemove.js.map +0 -1
  1081. package/dist/admin/hooks/useBulkRemove.mjs +0 -81
  1082. package/dist/admin/hooks/useBulkRemove.mjs.map +0 -1
  1083. package/dist/admin/hooks/useConfig.js +0 -58
  1084. package/dist/admin/hooks/useConfig.js.map +0 -1
  1085. package/dist/admin/hooks/useConfig.mjs +0 -56
  1086. package/dist/admin/hooks/useConfig.mjs.map +0 -1
  1087. package/dist/admin/hooks/useCropImg.js.map +0 -1
  1088. package/dist/admin/hooks/useCropImg.mjs.map +0 -1
  1089. package/dist/admin/hooks/useEditAsset.js +0 -115
  1090. package/dist/admin/hooks/useEditAsset.js.map +0 -1
  1091. package/dist/admin/hooks/useEditAsset.mjs +0 -93
  1092. package/dist/admin/hooks/useEditAsset.mjs.map +0 -1
  1093. package/dist/admin/hooks/useEditFolder.js +0 -45
  1094. package/dist/admin/hooks/useEditFolder.js.map +0 -1
  1095. package/dist/admin/hooks/useEditFolder.mjs +0 -43
  1096. package/dist/admin/hooks/useEditFolder.mjs.map +0 -1
  1097. package/dist/admin/hooks/useFolder.js +0 -57
  1098. package/dist/admin/hooks/useFolder.js.map +0 -1
  1099. package/dist/admin/hooks/useFolder.mjs +0 -55
  1100. package/dist/admin/hooks/useFolder.mjs.map +0 -1
  1101. package/dist/admin/hooks/useFolderStructure.js +0 -52
  1102. package/dist/admin/hooks/useFolderStructure.js.map +0 -1
  1103. package/dist/admin/hooks/useFolderStructure.mjs +0 -50
  1104. package/dist/admin/hooks/useFolderStructure.mjs.map +0 -1
  1105. package/dist/admin/hooks/useFolders.js +0 -108
  1106. package/dist/admin/hooks/useFolders.js.map +0 -1
  1107. package/dist/admin/hooks/useFolders.mjs +0 -86
  1108. package/dist/admin/hooks/useFolders.mjs.map +0 -1
  1109. package/dist/admin/hooks/useModalQueryParams.js.map +0 -1
  1110. package/dist/admin/hooks/useModalQueryParams.mjs.map +0 -1
  1111. package/dist/admin/hooks/usePersistentState.js.map +0 -1
  1112. package/dist/admin/hooks/usePersistentState.mjs.map +0 -1
  1113. package/dist/admin/hooks/useRemoveAsset.js +0 -58
  1114. package/dist/admin/hooks/useRemoveAsset.js.map +0 -1
  1115. package/dist/admin/hooks/useRemoveAsset.mjs +0 -56
  1116. package/dist/admin/hooks/useRemoveAsset.mjs.map +0 -1
  1117. package/dist/admin/hooks/useSelectionState.js.map +0 -1
  1118. package/dist/admin/hooks/useSelectionState.mjs.map +0 -1
  1119. package/dist/admin/hooks/useSettings.js.map +0 -1
  1120. package/dist/admin/hooks/useSettings.mjs.map +0 -1
  1121. package/dist/admin/hooks/useUpload.js +0 -109
  1122. package/dist/admin/hooks/useUpload.js.map +0 -1
  1123. package/dist/admin/hooks/useUpload.mjs +0 -87
  1124. package/dist/admin/hooks/useUpload.mjs.map +0 -1
  1125. package/dist/admin/hooks/utils/renameKeys.js.map +0 -1
  1126. package/dist/admin/hooks/utils/renameKeys.mjs.map +0 -1
  1127. package/dist/admin/pages/App/App.js.map +0 -1
  1128. package/dist/admin/pages/App/App.mjs.map +0 -1
  1129. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js +0 -145
  1130. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +0 -1
  1131. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +0 -120
  1132. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +0 -1
  1133. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js +0 -109
  1134. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +0 -1
  1135. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs +0 -107
  1136. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +0 -1
  1137. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js +0 -10
  1138. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +0 -1
  1139. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs +0 -7
  1140. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +0 -1
  1141. package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +0 -1
  1142. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +0 -1
  1143. package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +0 -1
  1144. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +0 -1
  1145. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +0 -1
  1146. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +0 -1
  1147. package/dist/admin/pages/App/MediaLibrary.js +0 -469
  1148. package/dist/admin/pages/App/MediaLibrary.js.map +0 -1
  1149. package/dist/admin/pages/App/MediaLibrary.mjs +0 -447
  1150. package/dist/admin/pages/App/MediaLibrary.mjs.map +0 -1
  1151. package/dist/admin/pages/App/components/BulkActions.js.map +0 -1
  1152. package/dist/admin/pages/App/components/BulkActions.mjs.map +0 -1
  1153. package/dist/admin/pages/App/components/BulkDeleteButton.js.map +0 -1
  1154. package/dist/admin/pages/App/components/BulkDeleteButton.mjs.map +0 -1
  1155. package/dist/admin/pages/App/components/BulkMoveButton.js.map +0 -1
  1156. package/dist/admin/pages/App/components/BulkMoveButton.mjs.map +0 -1
  1157. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +0 -1
  1158. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +0 -1
  1159. package/dist/admin/pages/App/components/Filters.js.map +0 -1
  1160. package/dist/admin/pages/App/components/Filters.mjs.map +0 -1
  1161. package/dist/admin/pages/App/components/Header.js.map +0 -1
  1162. package/dist/admin/pages/App/components/Header.mjs.map +0 -1
  1163. package/dist/admin/src/ai/components/AIAssetCard.d.ts +0 -13
  1164. package/dist/admin/src/ai/components/AIUploadModal.d.ts +0 -55
  1165. package/dist/admin/src/components/AssetCard/AssetCard.d.ts +0 -19
  1166. package/dist/admin/src/components/AssetCard/UploadingAssetCard.d.ts +0 -17
  1167. package/dist/admin/src/components/AssetDialog/AssetDialog.d.ts +0 -39
  1168. package/dist/admin/src/components/AssetDialog/BrowseStep/BrowseStep.d.ts +0 -63
  1169. package/dist/admin/src/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.d.ts +0 -7
  1170. package/dist/admin/src/components/AssetDialog/SelectedStep/SelectedStep.d.ts +0 -8
  1171. package/dist/admin/src/components/AssetGridList/AssetGridList.d.ts +0 -13
  1172. package/dist/admin/src/components/BulkMoveDialog/BulkMoveDialog.d.ts +0 -15
  1173. package/dist/admin/src/components/EditAssetDialog/EditAssetContent.d.ts +0 -31
  1174. package/dist/admin/src/components/EditAssetDialog/PreviewBox/AssetPreview.d.ts +0 -8
  1175. package/dist/admin/src/components/EditAssetDialog/PreviewBox/PreviewBox.d.ts +0 -26
  1176. package/dist/admin/src/components/EditAssetDialog/RemoveAssetDialog.d.ts +0 -8
  1177. package/dist/admin/src/components/EditFolderDialog/EditFolderDialog.d.ts +0 -12
  1178. package/dist/admin/src/components/MediaLibraryDialog/MediaLibraryDialog.d.ts +0 -10
  1179. package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAsset.d.ts +0 -4
  1180. package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAssetActions.d.ts +0 -9
  1181. package/dist/admin/src/components/MediaLibraryInput/Carousel/CarouselAssets.d.ts +0 -23
  1182. package/dist/admin/src/components/MediaLibraryInput/Carousel/EmptyStateAsset.d.ts +0 -10
  1183. package/dist/admin/src/components/SelectTree/Option.d.ts +0 -16
  1184. package/dist/admin/src/components/SortPicker/SortPicker.d.ts +0 -7
  1185. package/dist/admin/src/components/TableList/CellContent.d.ts +0 -8
  1186. package/dist/admin/src/components/TableList/PreviewCell.d.ts +0 -7
  1187. package/dist/admin/src/components/TableList/TableList.d.ts +0 -31
  1188. package/dist/admin/src/components/TableList/TableRows.d.ts +0 -22
  1189. package/dist/admin/src/components/UploadAssetDialog/AddAssetStep/AddAssetStep.d.ts +0 -13
  1190. package/dist/admin/src/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.d.ts +0 -22
  1191. package/dist/admin/src/components/UploadAssetDialog/UploadAssetDialog.d.ts +0 -21
  1192. package/dist/admin/src/components/UploadProgress/UploadProgress.d.ts +0 -7
  1193. package/dist/admin/src/future/App.d.ts +0 -1
  1194. package/dist/admin/src/future/hooks/useMediaLibraryPermissions.d.ts +0 -21
  1195. package/dist/admin/src/future/hooks/useTracking.d.ts +0 -29
  1196. package/dist/admin/src/future/pages/Assets/components/ActionsMenuContent.d.ts +0 -33
  1197. package/dist/admin/src/future/pages/Assets/components/AssetActionsMenu.d.ts +0 -26
  1198. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetCropEditor.d.ts +0 -16
  1199. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +0 -46
  1200. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetPreview.d.ts +0 -9
  1201. package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +0 -12
  1202. package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +0 -18
  1203. package/dist/admin/src/future/pages/Assets/components/BulkActionsBar.d.ts +0 -28
  1204. package/dist/admin/src/future/pages/Assets/components/Dnd/computeValidDropTargets.d.ts +0 -7
  1205. package/dist/admin/src/future/pages/Assets/components/FolderActionsMenu.d.ts +0 -21
  1206. package/dist/admin/src/future/pages/Assets/hooks/useFolderNavigation.d.ts +0 -7
  1207. package/dist/admin/src/future/pages/Assets/hooks/useInfiniteAssets.d.ts +0 -45
  1208. package/dist/admin/src/future/pages/Assets/utils/mergeMixedList.d.ts +0 -40
  1209. package/dist/admin/src/future/pages/Assets/utils/mergeUploadedAssets.d.ts +0 -35
  1210. package/dist/admin/src/future/pages/Assets/utils/renderedKeys.d.ts +0 -19
  1211. package/dist/admin/src/future/services/api.d.ts +0 -99
  1212. package/dist/admin/src/future/services/assets.d.ts +0 -33
  1213. package/dist/admin/src/future/services/folders.d.ts +0 -37
  1214. package/dist/admin/src/future/services/settings.d.ts +0 -2
  1215. package/dist/admin/src/future/services/uploadFileViaXHR.d.ts +0 -23
  1216. package/dist/admin/src/future/store/uploadProgress.d.ts +0 -201
  1217. package/dist/admin/src/future/utils/canDropItemOnFolder.d.ts +0 -9
  1218. package/dist/admin/src/future/utils/downloadFile.d.ts +0 -6
  1219. package/dist/admin/src/future/utils/flattenFolderStructure.d.ts +0 -18
  1220. package/dist/admin/src/future/utils/getFolderLabel.d.ts +0 -11
  1221. package/dist/admin/src/future/utils/itemLocations.d.ts +0 -31
  1222. package/dist/admin/src/hooks/useAIMetadataJob.d.ts +0 -9
  1223. package/dist/admin/src/hooks/useAssets.d.ts +0 -14
  1224. package/dist/admin/src/hooks/useBulkEdit.d.ts +0 -91
  1225. package/dist/admin/src/hooks/useBulkMove.d.ts +0 -209
  1226. package/dist/admin/src/hooks/useBulkRemove.d.ts +0 -241
  1227. package/dist/admin/src/hooks/useConfig.d.ts +0 -5
  1228. package/dist/admin/src/hooks/useEditAsset.d.ts +0 -119
  1229. package/dist/admin/src/hooks/useEditFolder.d.ts +0 -72
  1230. package/dist/admin/src/hooks/useFolder.d.ts +0 -7
  1231. package/dist/admin/src/hooks/useFolderStructure.d.ts +0 -18
  1232. package/dist/admin/src/hooks/useFolders.d.ts +0 -11
  1233. package/dist/admin/src/hooks/useModalQueryParams.d.ts +0 -20
  1234. package/dist/admin/src/hooks/useRemoveAsset.d.ts +0 -8
  1235. package/dist/admin/src/hooks/useUpload.d.ts +0 -15
  1236. package/dist/admin/src/pages/App/ConfigureTheView/ConfigureTheView.d.ts +0 -6
  1237. package/dist/admin/src/pages/App/ConfigureTheView/components/Settings.d.ts +0 -13
  1238. package/dist/admin/src/pages/App/ConfigureTheView/state/actions.d.ts +0 -12
  1239. package/dist/admin/src/pages/App/ConfigureTheView/state/init.d.ts +0 -8
  1240. package/dist/admin/src/pages/App/components/BulkActions.d.ts +0 -15
  1241. package/dist/admin/src/pages/App/components/BulkDeleteButton.d.ts +0 -7
  1242. package/dist/admin/src/pages/App/components/BulkMoveButton.d.ts +0 -15
  1243. package/dist/admin/src/pages/App/components/Header.d.ts +0 -22
  1244. package/dist/admin/src/utils/containsAssetFilter.d.ts +0 -2
  1245. package/dist/admin/src/utils/createAssetUrl.d.ts +0 -2
  1246. package/dist/admin/src/utils/findRecursiveFolderByValue.d.ts +0 -11
  1247. package/dist/admin/src/utils/getAllowedFiles.d.ts +0 -14
  1248. package/dist/admin/src/utils/getBreadcrumbDataCM.d.ts +0 -19
  1249. package/dist/admin/src/utils/getBreadcrumbDataML.d.ts +0 -18
  1250. package/dist/admin/src/utils/getFolderParents.d.ts +0 -11
  1251. package/dist/admin/src/utils/getFolderURL.d.ts +0 -5
  1252. package/dist/admin/src/utils/icons.d.ts +0 -15
  1253. package/dist/admin/src/utils/index.d.ts +0 -26
  1254. package/dist/admin/src/utils/rawFileToAsset.d.ts +0 -14
  1255. package/dist/admin/utils/appendSearchParamsToUrl.js.map +0 -1
  1256. package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +0 -1
  1257. package/dist/admin/utils/containsAssetFilter.js.map +0 -1
  1258. package/dist/admin/utils/containsAssetFilter.mjs.map +0 -1
  1259. package/dist/admin/utils/createAssetUrl.js.map +0 -1
  1260. package/dist/admin/utils/createAssetUrl.mjs.map +0 -1
  1261. package/dist/admin/utils/displayedFilters.js.map +0 -1
  1262. package/dist/admin/utils/displayedFilters.mjs.map +0 -1
  1263. package/dist/admin/utils/findRecursiveFolderByValue.js.map +0 -1
  1264. package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +0 -1
  1265. package/dist/admin/utils/formatBytes.js.map +0 -1
  1266. package/dist/admin/utils/formatBytes.mjs.map +0 -1
  1267. package/dist/admin/utils/formatDuration.js.map +0 -1
  1268. package/dist/admin/utils/formatDuration.mjs.map +0 -1
  1269. package/dist/admin/utils/getAPIInnerErrors.js.map +0 -1
  1270. package/dist/admin/utils/getAPIInnerErrors.mjs.map +0 -1
  1271. package/dist/admin/utils/getAllowedFiles.js.map +0 -1
  1272. package/dist/admin/utils/getAllowedFiles.mjs.map +0 -1
  1273. package/dist/admin/utils/getBreadcrumbDataCM.js.map +0 -1
  1274. package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +0 -1
  1275. package/dist/admin/utils/getBreadcrumbDataML.js.map +0 -1
  1276. package/dist/admin/utils/getBreadcrumbDataML.mjs.map +0 -1
  1277. package/dist/admin/utils/getFileExtension.js.map +0 -1
  1278. package/dist/admin/utils/getFileExtension.mjs.map +0 -1
  1279. package/dist/admin/utils/getFolderParents.js.map +0 -1
  1280. package/dist/admin/utils/getFolderParents.mjs.map +0 -1
  1281. package/dist/admin/utils/getFolderURL.js.map +0 -1
  1282. package/dist/admin/utils/getFolderURL.mjs.map +0 -1
  1283. package/dist/admin/utils/getTrad.js +0 -8
  1284. package/dist/admin/utils/getTrad.js.map +0 -1
  1285. package/dist/admin/utils/getTrad.mjs +0 -6
  1286. package/dist/admin/utils/getTrad.mjs.map +0 -1
  1287. package/dist/admin/utils/icons.js +0 -23
  1288. package/dist/admin/utils/icons.js.map +0 -1
  1289. package/dist/admin/utils/icons.mjs +0 -19
  1290. package/dist/admin/utils/icons.mjs.map +0 -1
  1291. package/dist/admin/utils/moveElement.js.map +0 -1
  1292. package/dist/admin/utils/moveElement.mjs.map +0 -1
  1293. package/dist/admin/utils/normalizeAPIError.js.map +0 -1
  1294. package/dist/admin/utils/normalizeAPIError.mjs.map +0 -1
  1295. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +0 -1
  1296. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +0 -1
  1297. package/dist/admin/utils/prefixPluginTranslations.js.map +0 -1
  1298. package/dist/admin/utils/prefixPluginTranslations.mjs.map +0 -1
  1299. package/dist/admin/utils/rawFileToAsset.js +0 -23
  1300. package/dist/admin/utils/rawFileToAsset.js.map +0 -1
  1301. package/dist/admin/utils/rawFileToAsset.mjs +0 -21
  1302. package/dist/admin/utils/rawFileToAsset.mjs.map +0 -1
  1303. package/dist/admin/utils/resolveFileMime.js.map +0 -1
  1304. package/dist/admin/utils/resolveFileMime.mjs.map +0 -1
  1305. package/dist/admin/utils/toSingularTypes.js.map +0 -1
  1306. package/dist/admin/utils/toSingularTypes.mjs.map +0 -1
  1307. package/dist/admin/utils/urlYupSchema.js.map +0 -1
  1308. package/dist/admin/utils/urlYupSchema.mjs.map +0 -1
  1309. package/dist/admin/utils/urlsToAssets.js +0 -42
  1310. package/dist/admin/utils/urlsToAssets.js.map +0 -1
  1311. package/dist/admin/utils/urlsToAssets.mjs +0 -40
  1312. package/dist/admin/utils/urlsToAssets.mjs.map +0 -1
  1313. /package/dist/admin/{future/components → components}/Drawer.js +0 -0
  1314. /package/dist/admin/{future/components → components}/Drawer.mjs +0 -0
  1315. /package/dist/admin/{future/components → components}/TruncatedText.js +0 -0
  1316. /package/dist/admin/{future/components → components}/TruncatedText.mjs +0 -0
  1317. /package/dist/admin/{future/components → components}/UploadProgressDialog.js +0 -0
  1318. /package/dist/admin/{future/components → components}/UploadProgressDialog.mjs +0 -0
  1319. /package/dist/admin/{future/hooks → hooks}/useApiErrorMessage.js +0 -0
  1320. /package/dist/admin/{future/hooks → hooks}/useApiErrorMessage.mjs +0 -0
  1321. /package/dist/admin/{ai → legacy/ai}/components/AIUploadModal.js +0 -0
  1322. /package/dist/admin/{ai → legacy/ai}/components/AIUploadModal.mjs +0 -0
  1323. /package/dist/admin/{components → legacy/components}/AssetCard/AssetCardBase.js +0 -0
  1324. /package/dist/admin/{components → legacy/components}/AssetCard/AssetCardBase.mjs +0 -0
  1325. /package/dist/admin/{components → legacy/components}/AssetCard/AudioAssetCard.js +0 -0
  1326. /package/dist/admin/{components → legacy/components}/AssetCard/AudioAssetCard.mjs +0 -0
  1327. /package/dist/admin/{components → legacy/components}/AssetCard/AudioPreview.js +0 -0
  1328. /package/dist/admin/{components → legacy/components}/AssetCard/AudioPreview.mjs +0 -0
  1329. /package/dist/admin/{components → legacy/components}/AssetCard/DocAssetCard.js +0 -0
  1330. /package/dist/admin/{components → legacy/components}/AssetCard/DocAssetCard.mjs +0 -0
  1331. /package/dist/admin/{components → legacy/components}/AssetCard/ImageAssetCard.js +0 -0
  1332. /package/dist/admin/{components → legacy/components}/AssetCard/ImageAssetCard.mjs +0 -0
  1333. /package/dist/admin/{components → legacy/components}/AssetCard/VideoAssetCard.js +0 -0
  1334. /package/dist/admin/{components → legacy/components}/AssetCard/VideoAssetCard.mjs +0 -0
  1335. /package/dist/admin/{components → legacy/components}/AssetCard/VideoPreview.js +0 -0
  1336. /package/dist/admin/{components → legacy/components}/AssetCard/VideoPreview.mjs +0 -0
  1337. /package/dist/admin/{components → legacy/components}/AssetDialog/AssetDialog.js +0 -0
  1338. /package/dist/admin/{components → legacy/components}/AssetDialog/AssetDialog.mjs +0 -0
  1339. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/Filters.js +0 -0
  1340. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/Filters.mjs +0 -0
  1341. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.js +0 -0
  1342. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.mjs +0 -0
  1343. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.js +0 -0
  1344. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs +0 -0
  1345. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js +0 -0
  1346. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs +0 -0
  1347. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js +0 -0
  1348. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs +0 -0
  1349. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.js +0 -0
  1350. /package/dist/admin/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.mjs +0 -0
  1351. /package/dist/admin/{components → legacy/components}/AssetDialog/DialogFooter.js +0 -0
  1352. /package/dist/admin/{components → legacy/components}/AssetDialog/DialogFooter.mjs +0 -0
  1353. /package/dist/admin/{components → legacy/components}/AssetDialog/SelectedStep/SelectedStep.js +0 -0
  1354. /package/dist/admin/{components → legacy/components}/AssetDialog/SelectedStep/SelectedStep.mjs +0 -0
  1355. /package/dist/admin/{components → legacy/components}/AssetGridList/AssetGridList.js +0 -0
  1356. /package/dist/admin/{components → legacy/components}/AssetGridList/AssetGridList.mjs +0 -0
  1357. /package/dist/admin/{components → legacy/components}/AssetGridList/Draggable.js +0 -0
  1358. /package/dist/admin/{components → legacy/components}/AssetGridList/Draggable.mjs +0 -0
  1359. /package/dist/admin/{components → legacy/components}/Breadcrumbs/Breadcrumbs.js +0 -0
  1360. /package/dist/admin/{components → legacy/components}/Breadcrumbs/Breadcrumbs.mjs +0 -0
  1361. /package/dist/admin/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.js +0 -0
  1362. /package/dist/admin/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.mjs +0 -0
  1363. /package/dist/admin/{components → legacy/components}/BulkMoveDialog/BulkMoveDialog.js +0 -0
  1364. /package/dist/admin/{components → legacy/components}/BulkMoveDialog/BulkMoveDialog.mjs +0 -0
  1365. /package/dist/admin/{components → legacy/components}/ContextInfo/ContextInfo.js +0 -0
  1366. /package/dist/admin/{components → legacy/components}/ContextInfo/ContextInfo.mjs +0 -0
  1367. /package/dist/admin/{components → legacy/components}/CopyLinkButton/CopyLinkButton.js +0 -0
  1368. /package/dist/admin/{components → legacy/components}/CopyLinkButton/CopyLinkButton.mjs +0 -0
  1369. /package/dist/admin/{components → legacy/components}/EditAssetDialog/DialogHeader.js +0 -0
  1370. /package/dist/admin/{components → legacy/components}/EditAssetDialog/DialogHeader.mjs +0 -0
  1371. /package/dist/admin/{components → legacy/components}/EditAssetDialog/EditAssetContent.js +0 -0
  1372. /package/dist/admin/{components → legacy/components}/EditAssetDialog/EditAssetContent.mjs +0 -0
  1373. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.js +0 -0
  1374. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.mjs +0 -0
  1375. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.js +0 -0
  1376. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.mjs +0 -0
  1377. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.js +0 -0
  1378. /package/dist/admin/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.mjs +0 -0
  1379. /package/dist/admin/{components → legacy/components}/EditAssetDialog/RemoveAssetDialog.js +0 -0
  1380. /package/dist/admin/{components → legacy/components}/EditAssetDialog/RemoveAssetDialog.mjs +0 -0
  1381. /package/dist/admin/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.js +0 -0
  1382. /package/dist/admin/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.mjs +0 -0
  1383. /package/dist/admin/{components → legacy/components}/EditFolderDialog/EditFolderDialog.js +0 -0
  1384. /package/dist/admin/{components → legacy/components}/EditFolderDialog/EditFolderDialog.mjs +0 -0
  1385. /package/dist/admin/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.js +0 -0
  1386. /package/dist/admin/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.mjs +0 -0
  1387. /package/dist/admin/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.js +0 -0
  1388. /package/dist/admin/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.mjs +0 -0
  1389. /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.js +0 -0
  1390. /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.mjs +0 -0
  1391. /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssets.js +0 -0
  1392. /package/dist/admin/{components → legacy/components}/EmptyAssets/EmptyAssets.mjs +0 -0
  1393. /package/dist/admin/{components → legacy/components}/FilterList/FilterList.js +0 -0
  1394. /package/dist/admin/{components → legacy/components}/FilterList/FilterList.mjs +0 -0
  1395. /package/dist/admin/{components → legacy/components}/FilterList/FilterTag.js +0 -0
  1396. /package/dist/admin/{components → legacy/components}/FilterList/FilterTag.mjs +0 -0
  1397. /package/dist/admin/{components → legacy/components}/FilterPopover/FilterPopover.js +0 -0
  1398. /package/dist/admin/{components → legacy/components}/FilterPopover/FilterPopover.mjs +0 -0
  1399. /package/dist/admin/{components → legacy/components}/FilterPopover/FilterValueInput.js +0 -0
  1400. /package/dist/admin/{components → legacy/components}/FilterPopover/FilterValueInput.mjs +0 -0
  1401. /package/dist/admin/{components → legacy/components}/FilterPopover/utils/getFilterList.js +0 -0
  1402. /package/dist/admin/{components → legacy/components}/FilterPopover/utils/getFilterList.mjs +0 -0
  1403. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCard/FolderCard.js +0 -0
  1404. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCard/FolderCard.mjs +0 -0
  1405. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.js +0 -0
  1406. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.mjs +0 -0
  1407. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js +0 -0
  1408. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs +0 -0
  1409. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js +0 -0
  1410. /package/dist/admin/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs +0 -0
  1411. /package/dist/admin/{components → legacy/components}/FolderCard/contexts/FolderCard.js +0 -0
  1412. /package/dist/admin/{components → legacy/components}/FolderCard/contexts/FolderCard.mjs +0 -0
  1413. /package/dist/admin/{components → legacy/components}/FolderGridList/FolderGridList.js +0 -0
  1414. /package/dist/admin/{components → legacy/components}/FolderGridList/FolderGridList.mjs +0 -0
  1415. /package/dist/admin/{components → legacy/components}/MediaLibraryDialog/MediaLibraryDialog.js +0 -0
  1416. /package/dist/admin/{components → legacy/components}/MediaLibraryDialog/MediaLibraryDialog.mjs +0 -0
  1417. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssetActions.js +0 -0
  1418. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssetActions.mjs +0 -0
  1419. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssets.js +0 -0
  1420. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/Carousel/CarouselAssets.mjs +0 -0
  1421. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.js +0 -0
  1422. /package/dist/admin/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.mjs +0 -0
  1423. /package/dist/admin/{components → legacy/components}/SelectTree/Option.js +0 -0
  1424. /package/dist/admin/{components → legacy/components}/SelectTree/Option.mjs +0 -0
  1425. /package/dist/admin/{components → legacy/components}/SelectTree/SelectTree.js +0 -0
  1426. /package/dist/admin/{components → legacy/components}/SelectTree/SelectTree.mjs +0 -0
  1427. /package/dist/admin/{components → legacy/components}/SelectTree/utils/flattenTree.js +0 -0
  1428. /package/dist/admin/{components → legacy/components}/SelectTree/utils/flattenTree.mjs +0 -0
  1429. /package/dist/admin/{components → legacy/components}/SelectTree/utils/getOpenValues.js +0 -0
  1430. /package/dist/admin/{components → legacy/components}/SelectTree/utils/getOpenValues.mjs +0 -0
  1431. /package/dist/admin/{components → legacy/components}/SelectTree/utils/getValuesToClose.js +0 -0
  1432. /package/dist/admin/{components → legacy/components}/SelectTree/utils/getValuesToClose.mjs +0 -0
  1433. /package/dist/admin/{components → legacy/components}/TableList/CellContent.js +0 -0
  1434. /package/dist/admin/{components → legacy/components}/TableList/CellContent.mjs +0 -0
  1435. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/AddAssetStep.js +0 -0
  1436. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs +0 -0
  1437. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.js +0 -0
  1438. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs +0 -0
  1439. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js +0 -0
  1440. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs +0 -0
  1441. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/UploadAssetDialog.js +0 -0
  1442. /package/dist/admin/{components → legacy/components}/UploadAssetDialog/UploadAssetDialog.mjs +0 -0
  1443. /package/dist/admin/{components → legacy/components}/UploadProgress/UploadProgress.js +0 -0
  1444. /package/dist/admin/{components → legacy/components}/UploadProgress/UploadProgress.mjs +0 -0
  1445. /package/dist/admin/{hooks → legacy/hooks}/useAiAvailability.js +0 -0
  1446. /package/dist/admin/{hooks → legacy/hooks}/useAiAvailability.mjs +0 -0
  1447. /package/dist/admin/{hooks → legacy/hooks}/useCropImg.js +0 -0
  1448. /package/dist/admin/{hooks → legacy/hooks}/useCropImg.mjs +0 -0
  1449. /package/dist/admin/{hooks → legacy/hooks}/useModalQueryParams.js +0 -0
  1450. /package/dist/admin/{hooks → legacy/hooks}/useModalQueryParams.mjs +0 -0
  1451. /package/dist/admin/{hooks → legacy/hooks}/usePersistentState.js +0 -0
  1452. /package/dist/admin/{hooks → legacy/hooks}/usePersistentState.mjs +0 -0
  1453. /package/dist/admin/{hooks → legacy/hooks}/useSelectionState.js +0 -0
  1454. /package/dist/admin/{hooks → legacy/hooks}/useSelectionState.mjs +0 -0
  1455. /package/dist/admin/{hooks → legacy/hooks}/useSettings.js +0 -0
  1456. /package/dist/admin/{hooks → legacy/hooks}/useSettings.mjs +0 -0
  1457. /package/dist/admin/{hooks → legacy/hooks}/utils/renameKeys.js +0 -0
  1458. /package/dist/admin/{hooks → legacy/hooks}/utils/renameKeys.mjs +0 -0
  1459. /package/dist/admin/{pages → legacy/pages}/App/App.js +0 -0
  1460. /package/dist/admin/{pages → legacy/pages}/App/App.mjs +0 -0
  1461. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/actions.js +0 -0
  1462. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/actions.mjs +0 -0
  1463. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/init.js +0 -0
  1464. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/init.mjs +0 -0
  1465. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.js +0 -0
  1466. /package/dist/admin/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.mjs +0 -0
  1467. /package/dist/admin/{pages → legacy/pages}/App/components/BulkActions.js +0 -0
  1468. /package/dist/admin/{pages → legacy/pages}/App/components/BulkActions.mjs +0 -0
  1469. /package/dist/admin/{pages → legacy/pages}/App/components/BulkDeleteButton.js +0 -0
  1470. /package/dist/admin/{pages → legacy/pages}/App/components/BulkDeleteButton.mjs +0 -0
  1471. /package/dist/admin/{pages → legacy/pages}/App/components/BulkMoveButton.js +0 -0
  1472. /package/dist/admin/{pages → legacy/pages}/App/components/BulkMoveButton.mjs +0 -0
  1473. /package/dist/admin/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.js +0 -0
  1474. /package/dist/admin/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.mjs +0 -0
  1475. /package/dist/admin/{pages → legacy/pages}/App/components/Filters.js +0 -0
  1476. /package/dist/admin/{pages → legacy/pages}/App/components/Filters.mjs +0 -0
  1477. /package/dist/admin/{pages → legacy/pages}/App/components/Header.js +0 -0
  1478. /package/dist/admin/{pages → legacy/pages}/App/components/Header.mjs +0 -0
  1479. /package/dist/admin/{utils → legacy/utils}/appendSearchParamsToUrl.js +0 -0
  1480. /package/dist/admin/{utils → legacy/utils}/appendSearchParamsToUrl.mjs +0 -0
  1481. /package/dist/admin/{utils → legacy/utils}/containsAssetFilter.js +0 -0
  1482. /package/dist/admin/{utils → legacy/utils}/containsAssetFilter.mjs +0 -0
  1483. /package/dist/admin/{utils → legacy/utils}/createAssetUrl.js +0 -0
  1484. /package/dist/admin/{utils → legacy/utils}/createAssetUrl.mjs +0 -0
  1485. /package/dist/admin/{utils → legacy/utils}/displayedFilters.js +0 -0
  1486. /package/dist/admin/{utils → legacy/utils}/displayedFilters.mjs +0 -0
  1487. /package/dist/admin/{utils → legacy/utils}/findRecursiveFolderByValue.js +0 -0
  1488. /package/dist/admin/{utils → legacy/utils}/findRecursiveFolderByValue.mjs +0 -0
  1489. /package/dist/admin/{utils → legacy/utils}/formatBytes.js +0 -0
  1490. /package/dist/admin/{utils → legacy/utils}/formatBytes.mjs +0 -0
  1491. /package/dist/admin/{utils → legacy/utils}/formatDuration.js +0 -0
  1492. /package/dist/admin/{utils → legacy/utils}/formatDuration.mjs +0 -0
  1493. /package/dist/admin/{utils → legacy/utils}/getAPIInnerErrors.js +0 -0
  1494. /package/dist/admin/{utils → legacy/utils}/getAPIInnerErrors.mjs +0 -0
  1495. /package/dist/admin/{utils → legacy/utils}/getAllowedFiles.js +0 -0
  1496. /package/dist/admin/{utils → legacy/utils}/getAllowedFiles.mjs +0 -0
  1497. /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataCM.js +0 -0
  1498. /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataCM.mjs +0 -0
  1499. /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataML.js +0 -0
  1500. /package/dist/admin/{utils → legacy/utils}/getBreadcrumbDataML.mjs +0 -0
  1501. /package/dist/admin/{utils → legacy/utils}/getFileExtension.js +0 -0
  1502. /package/dist/admin/{utils → legacy/utils}/getFileExtension.mjs +0 -0
  1503. /package/dist/admin/{utils → legacy/utils}/getFolderParents.js +0 -0
  1504. /package/dist/admin/{utils → legacy/utils}/getFolderParents.mjs +0 -0
  1505. /package/dist/admin/{utils → legacy/utils}/getFolderURL.js +0 -0
  1506. /package/dist/admin/{utils → legacy/utils}/getFolderURL.mjs +0 -0
  1507. /package/dist/admin/{utils → legacy/utils}/moveElement.js +0 -0
  1508. /package/dist/admin/{utils → legacy/utils}/moveElement.mjs +0 -0
  1509. /package/dist/admin/{utils → legacy/utils}/normalizeAPIError.js +0 -0
  1510. /package/dist/admin/{utils → legacy/utils}/normalizeAPIError.mjs +0 -0
  1511. /package/dist/admin/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.js +0 -0
  1512. /package/dist/admin/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.mjs +0 -0
  1513. /package/dist/admin/{utils → legacy/utils}/prefixPluginTranslations.js +0 -0
  1514. /package/dist/admin/{utils → legacy/utils}/prefixPluginTranslations.mjs +0 -0
  1515. /package/dist/admin/{utils → legacy/utils}/resolveFileMime.js +0 -0
  1516. /package/dist/admin/{utils → legacy/utils}/resolveFileMime.mjs +0 -0
  1517. /package/dist/admin/{utils → legacy/utils}/toSingularTypes.js +0 -0
  1518. /package/dist/admin/{utils → legacy/utils}/toSingularTypes.mjs +0 -0
  1519. /package/dist/admin/{utils → legacy/utils}/urlYupSchema.js +0 -0
  1520. /package/dist/admin/{utils → legacy/utils}/urlYupSchema.mjs +0 -0
  1521. /package/dist/admin/{future/pages → pages}/Assets/components/ActionsMenuContent.js +0 -0
  1522. /package/dist/admin/{future/pages → pages}/Assets/components/ActionsMenuContent.mjs +0 -0
  1523. /package/dist/admin/{future/pages → pages}/Assets/components/AssetActionsMenu.js +0 -0
  1524. /package/dist/admin/{future/pages → pages}/Assets/components/AssetActionsMenu.mjs +0 -0
  1525. /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/AssetCropEditor.js +0 -0
  1526. /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/AssetCropEditor.mjs +0 -0
  1527. /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.js +0 -0
  1528. /package/dist/admin/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.mjs +0 -0
  1529. /package/dist/admin/{future/pages → pages}/Assets/components/AssetsSearchInput.js +0 -0
  1530. /package/dist/admin/{future/pages → pages}/Assets/components/AssetsSearchInput.mjs +0 -0
  1531. /package/dist/admin/{future/pages → pages}/Assets/components/AssetsTable.js +0 -0
  1532. /package/dist/admin/{future/pages → pages}/Assets/components/AssetsTable.mjs +0 -0
  1533. /package/dist/admin/{future/pages → pages}/Assets/components/BulkMoveDialog.js +0 -0
  1534. /package/dist/admin/{future/pages → pages}/Assets/components/BulkMoveDialog.mjs +0 -0
  1535. /package/dist/admin/{future/pages → pages}/Assets/components/BusyOverlay.js +0 -0
  1536. /package/dist/admin/{future/pages → pages}/Assets/components/BusyOverlay.mjs +0 -0
  1537. /package/dist/admin/{future/pages → pages}/Assets/components/DateRangeCalendar.js +0 -0
  1538. /package/dist/admin/{future/pages → pages}/Assets/components/DateRangeCalendar.mjs +0 -0
  1539. /package/dist/admin/{future/pages → pages}/Assets/components/DeleteItemsDialog.js +0 -0
  1540. /package/dist/admin/{future/pages → pages}/Assets/components/DeleteItemsDialog.mjs +0 -0
  1541. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.js +0 -0
  1542. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.mjs +0 -0
  1543. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.js +0 -0
  1544. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.mjs +0 -0
  1545. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/buildDragSet.js +0 -0
  1546. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/buildDragSet.mjs +0 -0
  1547. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/computeValidDropTargets.js +0 -0
  1548. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/computeValidDropTargets.mjs +0 -0
  1549. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/dndIds.js +0 -0
  1550. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/dndIds.mjs +0 -0
  1551. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.js +0 -0
  1552. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.mjs +0 -0
  1553. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.js +0 -0
  1554. /package/dist/admin/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.mjs +0 -0
  1555. /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.js +0 -0
  1556. /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.mjs +0 -0
  1557. /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.js +0 -0
  1558. /package/dist/admin/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.mjs +0 -0
  1559. /package/dist/admin/{future/pages → pages}/Assets/components/EmptyState.js +0 -0
  1560. /package/dist/admin/{future/pages → pages}/Assets/components/EmptyState.mjs +0 -0
  1561. /package/dist/admin/{future/pages → pages}/Assets/components/FilterBadges.js +0 -0
  1562. /package/dist/admin/{future/pages → pages}/Assets/components/FilterBadges.mjs +0 -0
  1563. /package/dist/admin/{future/pages → pages}/Assets/components/FilterMenu.js +0 -0
  1564. /package/dist/admin/{future/pages → pages}/Assets/components/FilterMenu.mjs +0 -0
  1565. /package/dist/admin/{future/pages → pages}/Assets/components/FolderActionsMenu.js +0 -0
  1566. /package/dist/admin/{future/pages → pages}/Assets/components/FolderActionsMenu.mjs +0 -0
  1567. /package/dist/admin/{future/pages → pages}/Assets/components/FolderFormDialog.js +0 -0
  1568. /package/dist/admin/{future/pages → pages}/Assets/components/FolderFormDialog.mjs +0 -0
  1569. /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/FolderTree.js +0 -0
  1570. /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/FolderTree.mjs +0 -0
  1571. /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.js +0 -0
  1572. /package/dist/admin/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.mjs +0 -0
  1573. /package/dist/admin/{future/pages → pages}/Assets/components/ImportFromUrlDialog.js +0 -0
  1574. /package/dist/admin/{future/pages → pages}/Assets/components/ImportFromUrlDialog.mjs +0 -0
  1575. /package/dist/admin/{future/pages → pages}/Assets/components/MainAreaContextMenu.js +0 -0
  1576. /package/dist/admin/{future/pages → pages}/Assets/components/MainAreaContextMenu.mjs +0 -0
  1577. /package/dist/admin/{future/pages → pages}/Assets/components/SortMenu.js +0 -0
  1578. /package/dist/admin/{future/pages → pages}/Assets/components/SortMenu.mjs +0 -0
  1579. /package/dist/admin/{future/pages → pages}/Assets/constants.js +0 -0
  1580. /package/dist/admin/{future/pages → pages}/Assets/constants.mjs +0 -0
  1581. /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSearch.js +0 -0
  1582. /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSearch.mjs +0 -0
  1583. /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSelection.js +0 -0
  1584. /package/dist/admin/{future/pages → pages}/Assets/hooks/useAssetSelection.mjs +0 -0
  1585. /package/dist/admin/{future/pages → pages}/Assets/hooks/useBusyAssets.js +0 -0
  1586. /package/dist/admin/{future/pages → pages}/Assets/hooks/useBusyAssets.mjs +0 -0
  1587. /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderInfo.js +0 -0
  1588. /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderInfo.mjs +0 -0
  1589. /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderNavigation.js +0 -0
  1590. /package/dist/admin/{future/pages → pages}/Assets/hooks/useFolderNavigation.mjs +0 -0
  1591. /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteAssets.js +0 -0
  1592. /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteAssets.mjs +0 -0
  1593. /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.js +0 -0
  1594. /package/dist/admin/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.mjs +0 -0
  1595. /package/dist/admin/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.js +0 -0
  1596. /package/dist/admin/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.mjs +0 -0
  1597. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListFilters.js +0 -0
  1598. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListFilters.mjs +0 -0
  1599. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListScrollRestoration.js +0 -0
  1600. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListScrollRestoration.mjs +0 -0
  1601. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListSort.js +0 -0
  1602. /package/dist/admin/{future/pages → pages}/Assets/hooks/useListSort.mjs +0 -0
  1603. /package/dist/admin/{future/pages → pages}/Assets/utils/buildAssetFilters.js +0 -0
  1604. /package/dist/admin/{future/pages → pages}/Assets/utils/buildAssetFilters.mjs +0 -0
  1605. /package/dist/admin/{future/pages → pages}/Assets/utils/listQueryKey.js +0 -0
  1606. /package/dist/admin/{future/pages → pages}/Assets/utils/listQueryKey.mjs +0 -0
  1607. /package/dist/admin/{future/pages → pages}/Assets/utils/mergeMixedList.js +0 -0
  1608. /package/dist/admin/{future/pages → pages}/Assets/utils/mergeMixedList.mjs +0 -0
  1609. /package/dist/admin/{future/pages → pages}/Assets/utils/mergeUploadedAssets.js +0 -0
  1610. /package/dist/admin/{future/pages → pages}/Assets/utils/mergeUploadedAssets.mjs +0 -0
  1611. /package/dist/admin/{future/pages → pages}/Assets/utils/renderedKeys.js +0 -0
  1612. /package/dist/admin/{future/pages → pages}/Assets/utils/renderedKeys.mjs +0 -0
  1613. /package/dist/admin/{future/pages → pages}/Assets/utils/selection.js +0 -0
  1614. /package/dist/admin/{future/pages → pages}/Assets/utils/selection.mjs +0 -0
  1615. /package/dist/admin/{future/services → services}/api.js +0 -0
  1616. /package/dist/admin/{future/services → services}/api.mjs +0 -0
  1617. /package/dist/admin/{future/services → services}/assets.js +0 -0
  1618. /package/dist/admin/{future/services → services}/assets.mjs +0 -0
  1619. /package/dist/admin/{future/services → services}/folders.js +0 -0
  1620. /package/dist/admin/{future/services → services}/folders.mjs +0 -0
  1621. /package/dist/admin/{future/services → services}/settings.js +0 -0
  1622. /package/dist/admin/{future/services → services}/settings.mjs +0 -0
  1623. /package/dist/admin/{future/services → services}/uploadFileViaXHR.js +0 -0
  1624. /package/dist/admin/{future/services → services}/uploadFileViaXHR.mjs +0 -0
  1625. /package/dist/admin/src/{pages/App/MediaLibrary.d.ts → App.d.ts} +0 -0
  1626. /package/dist/admin/src/{future/components → components}/Drawer.d.ts +0 -0
  1627. /package/dist/admin/src/{future/components → components}/TruncatedText.d.ts +0 -0
  1628. /package/dist/admin/src/{future/components → components}/UploadProgressDialog.d.ts +0 -0
  1629. /package/dist/admin/src/{future/hooks → hooks}/useAIMetadataEnabled.d.ts +0 -0
  1630. /package/dist/admin/src/{future/hooks → hooks}/useApiErrorMessage.d.ts +0 -0
  1631. /package/dist/admin/src/{components → legacy/components}/AssetCard/AssetCardBase.d.ts +0 -0
  1632. /package/dist/admin/src/{components → legacy/components}/AssetCard/AudioAssetCard.d.ts +0 -0
  1633. /package/dist/admin/src/{components → legacy/components}/AssetCard/AudioPreview.d.ts +0 -0
  1634. /package/dist/admin/src/{components → legacy/components}/AssetCard/DocAssetCard.d.ts +0 -0
  1635. /package/dist/admin/src/{components → legacy/components}/AssetCard/ImageAssetCard.d.ts +0 -0
  1636. /package/dist/admin/src/{components → legacy/components}/AssetCard/VideoAssetCard.d.ts +0 -0
  1637. /package/dist/admin/src/{components → legacy/components}/AssetCard/VideoPreview.d.ts +0 -0
  1638. /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/Filters.d.ts +0 -0
  1639. /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PageSize.d.ts +0 -0
  1640. /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/Pagination.d.ts +0 -0
  1641. /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.d.ts +0 -0
  1642. /package/dist/admin/src/{components → legacy/components}/AssetDialog/BrowseStep/utils/isSelectable.d.ts +0 -0
  1643. /package/dist/admin/src/{components → legacy/components}/AssetDialog/DialogFooter.d.ts +0 -0
  1644. /package/dist/admin/src/{components → legacy/components}/AssetGridList/Draggable.d.ts +0 -0
  1645. /package/dist/admin/src/{components → legacy/components}/Breadcrumbs/Breadcrumbs.d.ts +0 -0
  1646. /package/dist/admin/src/{components → legacy/components}/Breadcrumbs/CrumbSimpleMenuAsync.d.ts +0 -0
  1647. /package/dist/admin/src/{components → legacy/components}/ContextInfo/ContextInfo.d.ts +0 -0
  1648. /package/dist/admin/src/{components → legacy/components}/CopyLinkButton/CopyLinkButton.d.ts +0 -0
  1649. /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/DialogHeader.d.ts +0 -0
  1650. /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/CroppingActions.d.ts +0 -0
  1651. /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/FocalPointActions.d.ts +0 -0
  1652. /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/PreviewBox/PreviewComponents.d.ts +0 -0
  1653. /package/dist/admin/src/{components → legacy/components}/EditAssetDialog/ReplaceMediaButton.d.ts +0 -0
  1654. /package/dist/admin/src/{components → legacy/components}/EditFolderDialog/ModalHeader/ModalHeader.d.ts +0 -0
  1655. /package/dist/admin/src/{components → legacy/components}/EditFolderDialog/RemoveFolderDialog.d.ts +0 -0
  1656. /package/dist/admin/src/{components → legacy/components}/EmptyAssets/EmptyAssetGrid.d.ts +0 -0
  1657. /package/dist/admin/src/{components → legacy/components}/EmptyAssets/EmptyAssets.d.ts +0 -0
  1658. /package/dist/admin/src/{components → legacy/components}/FilterList/FilterList.d.ts +0 -0
  1659. /package/dist/admin/src/{components → legacy/components}/FilterList/FilterTag.d.ts +0 -0
  1660. /package/dist/admin/src/{components → legacy/components}/FilterPopover/FilterPopover.d.ts +0 -0
  1661. /package/dist/admin/src/{components → legacy/components}/FilterPopover/FilterValueInput.d.ts +0 -0
  1662. /package/dist/admin/src/{components → legacy/components}/FilterPopover/utils/getFilterList.d.ts +0 -0
  1663. /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCard/FolderCard.d.ts +0 -0
  1664. /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardBody/FolderCardBody.d.ts +0 -0
  1665. /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardBodyAction/FolderCardBodyAction.d.ts +0 -0
  1666. /package/dist/admin/src/{components → legacy/components}/FolderCard/FolderCardCheckbox/FolderCardCheckbox.d.ts +0 -0
  1667. /package/dist/admin/src/{components → legacy/components}/FolderCard/contexts/FolderCard.d.ts +0 -0
  1668. /package/dist/admin/src/{components → legacy/components}/FolderGridList/FolderGridList.d.ts +0 -0
  1669. /package/dist/admin/src/{components → legacy/components}/MediaLibraryInput/MediaLibraryInput.d.ts +0 -0
  1670. /package/dist/admin/src/{components → legacy/components}/SelectTree/SelectTree.d.ts +0 -0
  1671. /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/flattenTree.d.ts +0 -0
  1672. /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/getOpenValues.d.ts +0 -0
  1673. /package/dist/admin/src/{components → legacy/components}/SelectTree/utils/getValuesToClose.d.ts +0 -0
  1674. /package/dist/admin/src/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromComputerForm.d.ts +0 -0
  1675. /package/dist/admin/src/{components → legacy/components}/UploadAssetDialog/AddAssetStep/FromUrlForm.d.ts +0 -0
  1676. /package/dist/admin/src/{hooks → legacy/hooks}/useAiAvailability.d.ts +0 -0
  1677. /package/dist/admin/src/{hooks → legacy/hooks}/useCropImg.d.ts +0 -0
  1678. /package/dist/admin/src/{hooks → legacy/hooks}/usePersistentState.d.ts +0 -0
  1679. /package/dist/admin/src/{hooks → legacy/hooks}/useSelectionState.d.ts +0 -0
  1680. /package/dist/admin/src/{hooks → legacy/hooks}/useSettings.d.ts +0 -0
  1681. /package/dist/admin/src/{hooks → legacy/hooks}/utils/renameKeys.d.ts +0 -0
  1682. /package/dist/admin/src/{pages → legacy/pages}/App/App.d.ts +0 -0
  1683. /package/dist/admin/src/{pages → legacy/pages}/App/ConfigureTheView/state/actionTypes.d.ts +0 -0
  1684. /package/dist/admin/src/{pages → legacy/pages}/App/ConfigureTheView/state/reducer.d.ts +0 -0
  1685. /package/dist/admin/src/{pages → legacy/pages}/App/components/EmptyOrNoPermissions.d.ts +0 -0
  1686. /package/dist/admin/src/{pages → legacy/pages}/App/components/Filters.d.ts +0 -0
  1687. /package/dist/admin/src/{utils → legacy/utils}/appendSearchParamsToUrl.d.ts +0 -0
  1688. /package/dist/admin/src/{utils → legacy/utils}/displayedFilters.d.ts +0 -0
  1689. /package/dist/admin/src/{utils → legacy/utils}/formatBytes.d.ts +0 -0
  1690. /package/dist/admin/src/{utils → legacy/utils}/formatDuration.d.ts +0 -0
  1691. /package/dist/admin/src/{utils → legacy/utils}/getAPIInnerErrors.d.ts +0 -0
  1692. /package/dist/admin/src/{utils → legacy/utils}/getFileExtension.d.ts +0 -0
  1693. /package/dist/admin/src/{utils → legacy/utils}/getTrad.d.ts +0 -0
  1694. /package/dist/admin/src/{utils → legacy/utils}/moveElement.d.ts +0 -0
  1695. /package/dist/admin/src/{utils → legacy/utils}/normalizeAPIError.d.ts +0 -0
  1696. /package/dist/admin/src/{utils → legacy/utils}/prefixFileUrlWithBackendUrl.d.ts +0 -0
  1697. /package/dist/admin/src/{utils → legacy/utils}/prefixPluginTranslations.d.ts +0 -0
  1698. /package/dist/admin/src/{utils → legacy/utils}/resolveFileMime.d.ts +0 -0
  1699. /package/dist/admin/src/{utils → legacy/utils}/toSingularTypes.d.ts +0 -0
  1700. /package/dist/admin/src/{utils → legacy/utils}/urlYupSchema.d.ts +0 -0
  1701. /package/dist/admin/src/{utils → legacy/utils}/urlsToAssets.d.ts +0 -0
  1702. /package/dist/admin/src/{future/pages → pages}/Assets/AssetsPage.d.ts +0 -0
  1703. /package/dist/admin/src/{future/pages → pages}/Assets/components/AssetDetails/useCropImg.d.ts +0 -0
  1704. /package/dist/admin/src/{future/pages → pages}/Assets/components/AssetsSearchInput.d.ts +0 -0
  1705. /package/dist/admin/src/{future/pages → pages}/Assets/components/BulkMoveDialog.d.ts +0 -0
  1706. /package/dist/admin/src/{future/pages → pages}/Assets/components/BusyOverlay.d.ts +0 -0
  1707. /package/dist/admin/src/{future/pages → pages}/Assets/components/DateRangeCalendar.d.ts +0 -0
  1708. /package/dist/admin/src/{future/pages → pages}/Assets/components/DeleteItemsDialog.d.ts +0 -0
  1709. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/AssetsDndProvider.d.ts +0 -0
  1710. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/DragOverlayChip.d.ts +0 -0
  1711. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/buildDragSet.d.ts +0 -0
  1712. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/dndIds.d.ts +0 -0
  1713. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/useAssetDnd.d.ts +0 -0
  1714. /package/dist/admin/src/{future/pages → pages}/Assets/components/Dnd/useFolderTreeDroppable.d.ts +0 -0
  1715. /package/dist/admin/src/{future/pages → pages}/Assets/components/DropZone/UploadDropZone.d.ts +0 -0
  1716. /package/dist/admin/src/{future/pages → pages}/Assets/components/DropZone/UploadDropZoneContext.d.ts +0 -0
  1717. /package/dist/admin/src/{future/pages → pages}/Assets/components/EmptyState.d.ts +0 -0
  1718. /package/dist/admin/src/{future/pages → pages}/Assets/components/FilterBadges.d.ts +0 -0
  1719. /package/dist/admin/src/{future/pages → pages}/Assets/components/FilterMenu.d.ts +0 -0
  1720. /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderFormDialog.d.ts +0 -0
  1721. /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderTree/FolderTree.d.ts +0 -0
  1722. /package/dist/admin/src/{future/pages → pages}/Assets/components/FolderTree/useSpringLoadedExpand.d.ts +0 -0
  1723. /package/dist/admin/src/{future/pages → pages}/Assets/components/ImportFromUrlDialog.d.ts +0 -0
  1724. /package/dist/admin/src/{future/pages → pages}/Assets/components/MainAreaContextMenu.d.ts +0 -0
  1725. /package/dist/admin/src/{future/pages → pages}/Assets/components/SortMenu.d.ts +0 -0
  1726. /package/dist/admin/src/{future/pages → pages}/Assets/constants.d.ts +0 -0
  1727. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useAssetSearch.d.ts +0 -0
  1728. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useAssetSelection.d.ts +0 -0
  1729. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useBusyAssets.d.ts +0 -0
  1730. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useFolderInfo.d.ts +0 -0
  1731. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useInfiniteScrollSentinel.d.ts +0 -0
  1732. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useIsAssetDetailsOpen.d.ts +0 -0
  1733. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListFilters.d.ts +0 -0
  1734. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListScrollRestoration.d.ts +0 -0
  1735. /package/dist/admin/src/{future/pages → pages}/Assets/hooks/useListSort.d.ts +0 -0
  1736. /package/dist/admin/src/{future/pages → pages}/Assets/utils/buildAssetFilters.d.ts +0 -0
  1737. /package/dist/admin/src/{future/pages → pages}/Assets/utils/listQueryKey.d.ts +0 -0
  1738. /package/dist/admin/src/{future/pages → pages}/Assets/utils/selection.d.ts +0 -0
  1739. /package/dist/admin/src/{future/store → store}/hooks.d.ts +0 -0
  1740. /package/dist/admin/src/{future/types → types}/dnd.d.ts +0 -0
  1741. /package/dist/admin/src/{future/utils → utils}/buildBulkMovePayload.d.ts +0 -0
  1742. /package/dist/admin/src/{future/utils → utils}/buildDragSetFromSelection.d.ts +0 -0
  1743. /package/dist/admin/src/{future/utils → utils}/createRafBatcher.d.ts +0 -0
  1744. /package/dist/admin/src/{future/utils → utils}/files.d.ts +0 -0
  1745. /package/dist/admin/src/{future/utils → utils}/formatMoveSuccessMessage.d.ts +0 -0
  1746. /package/dist/admin/src/{future/utils → utils}/getApiErrorMessage.d.ts +0 -0
  1747. /package/dist/admin/src/{future/utils → utils}/getAssetIcon.d.ts +0 -0
  1748. /package/dist/admin/src/{future/utils → utils}/getRelationId.d.ts +0 -0
  1749. /package/dist/admin/src/{future/utils → utils}/isEventFromWithin.d.ts +0 -0
  1750. /package/dist/admin/src/{future/utils → utils}/itemSource.d.ts +0 -0
  1751. /package/dist/admin/src/{future/utils → utils}/searchQueryParam.d.ts +0 -0
  1752. /package/dist/admin/src/{future/utils → utils}/translations.d.ts +0 -0
  1753. /package/dist/admin/{future/store → store}/hooks.js +0 -0
  1754. /package/dist/admin/{future/store → store}/hooks.mjs +0 -0
  1755. /package/dist/admin/{future/store → store}/uploadProgress.js +0 -0
  1756. /package/dist/admin/{future/store → store}/uploadProgress.mjs +0 -0
  1757. /package/dist/admin/{future/utils → utils}/buildBulkMovePayload.js +0 -0
  1758. /package/dist/admin/{future/utils → utils}/buildBulkMovePayload.mjs +0 -0
  1759. /package/dist/admin/{future/utils → utils}/buildDragSetFromSelection.js +0 -0
  1760. /package/dist/admin/{future/utils → utils}/buildDragSetFromSelection.mjs +0 -0
  1761. /package/dist/admin/{future/utils → utils}/canDropItemOnFolder.js +0 -0
  1762. /package/dist/admin/{future/utils → utils}/canDropItemOnFolder.mjs +0 -0
  1763. /package/dist/admin/{future/utils → utils}/createRafBatcher.js +0 -0
  1764. /package/dist/admin/{future/utils → utils}/createRafBatcher.mjs +0 -0
  1765. /package/dist/admin/{future/utils → utils}/files.js +0 -0
  1766. /package/dist/admin/{future/utils → utils}/files.mjs +0 -0
  1767. /package/dist/admin/{future/utils → utils}/flattenFolderStructure.js +0 -0
  1768. /package/dist/admin/{future/utils → utils}/flattenFolderStructure.mjs +0 -0
  1769. /package/dist/admin/{future/utils → utils}/formatMoveSuccessMessage.js +0 -0
  1770. /package/dist/admin/{future/utils → utils}/formatMoveSuccessMessage.mjs +0 -0
  1771. /package/dist/admin/{future/utils → utils}/getApiErrorMessage.js +0 -0
  1772. /package/dist/admin/{future/utils → utils}/getApiErrorMessage.mjs +0 -0
  1773. /package/dist/admin/{future/utils → utils}/getFolderLabel.js +0 -0
  1774. /package/dist/admin/{future/utils → utils}/getFolderLabel.mjs +0 -0
  1775. /package/dist/admin/{future/utils → utils}/getRelationId.js +0 -0
  1776. /package/dist/admin/{future/utils → utils}/getRelationId.mjs +0 -0
  1777. /package/dist/admin/{future/utils → utils}/isEventFromWithin.js +0 -0
  1778. /package/dist/admin/{future/utils → utils}/isEventFromWithin.mjs +0 -0
  1779. /package/dist/admin/{future/utils → utils}/itemLocations.js +0 -0
  1780. /package/dist/admin/{future/utils → utils}/itemLocations.mjs +0 -0
  1781. /package/dist/admin/{future/utils → utils}/itemSource.js +0 -0
  1782. /package/dist/admin/{future/utils → utils}/itemSource.mjs +0 -0
  1783. /package/dist/admin/{future/utils → utils}/searchQueryParam.js +0 -0
  1784. /package/dist/admin/{future/utils → utils}/searchQueryParam.mjs +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.js","sources":["../../../../admin/src/future/services/api.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n openUploadProgress,\n appendUploadFiles,\n isUploadInFlight,\n setFileUploading,\n setFileProgress,\n setFileComplete,\n setFileError,\n setFileMetadataGenerating,\n setFileMetadataResult,\n setUploadFailed,\n retryCancelledFiles,\n} from '../store/uploadProgress';\nimport { createRafBatcher } from '../utils/createRafBatcher';\nimport { getFilenameFromUrl } from '../utils/files';\n\nimport { uploadFileViaXHR, UploadAbortedError, UploadFileError } from './uploadFileViaXHR';\n\nimport type {\n CreateFilesStream,\n CreateFilesStreamEvents,\n File as UploadedFile,\n GenerateAIMetadata,\n UploadFileInfo,\n} from '../../../../shared/contracts/files';\nimport type { FileMetadataResultStatus } from '../store/uploadProgress';\n\ninterface UploadFilesArgs {\n formData: FormData;\n totalFiles: number;\n /**\n * How many files to upload in parallel — the `concurrentUploadRequests`\n * settings value. Defaults to 1 (sequential).\n */\n concurrency?: number;\n /** Whether AI metadata generation is enabled (EE AI available + `settings.aiMetadata`). */\n generateAiMetadata: boolean;\n}\n\ninterface UploadFromUrlsArgs {\n urls: string[];\n folderId: number | null;\n generateAiMetadata: boolean;\n}\n\ninterface RootState {\n admin_app: {\n token?: string | null;\n };\n uploadProgress: {\n uploadId: number;\n files: Array<{\n index: number;\n name: string;\n size: number;\n status: 'pending' | 'uploading' | 'complete' | 'error' | 'cancelled';\n }>;\n };\n}\n\n/**\n * A single file plus the `fileInfo` it was queued with.\n * Retained in {@link uploadRegistry} so cancelled files can be retried without\n * the user re-selecting them. `File`/`AbortController` are non-serializable, so\n * they live here rather than in Redux.\n */\ninterface UploadEntry {\n file: File;\n fileInfo: UploadFileInfo;\n}\n\n/**\n * Everything a batch needs to be replayed on retry: the original entries plus the\n * flags it was started with (AI-metadata and upload concurrency). These live here\n * rather than in Redux because `retryCancelledFiles` takes no args and the page\n * that owns `useAIAvailability` / the settings value is not involved in the retry.\n */\ninterface UploadBatch {\n entries: UploadEntry[];\n generateAiMetadata: boolean;\n concurrency: number;\n}\n\n/**\n * Stores the original upload batch (keyed by uploadId) to enable retry.\n */\nconst uploadRegistry = new Map<number, UploadBatch>();\n\nconst registerUploadEntries = (\n uploadId: number,\n entries: UploadEntry[],\n generateAiMetadata: boolean,\n concurrency: number\n) => {\n uploadRegistry.set(uploadId, { entries, generateAiMetadata, concurrency });\n};\n\nconst getUploadEntries = (uploadId: number): UploadBatch | undefined => {\n return uploadRegistry.get(uploadId);\n};\n\n/**\n * Manages abort controllers for in-flight uploads.\n *\n * Design decision: Uses a Map to track uploads by their unique uploadId.\n * Redux state cannot store function references (abort controllers), RTK Query's\n * signal is only accessible within the queryFn, and the upload is triggered in\n * AssetsPage but cancelled from UploadProgressDialog.\n */\nconst abortControllers = new Map<number, AbortController>();\n\nconst registerAbortController = (uploadId: number, controller: AbortController) => {\n abortControllers.set(uploadId, controller);\n};\n\nconst unregisterAbortController = (uploadId: number) => {\n abortControllers.delete(uploadId);\n};\n\n/**\n * Aborts an upload by its uploadId.\n * Called from the UploadProgressDialog when the user clicks cancel or close.\n */\nexport const abortUpload = (uploadId: number) => {\n const controller = abortControllers.get(uploadId);\n if (controller) {\n controller.abort();\n unregisterAbortController(uploadId);\n }\n};\n\n/**\n * Runs are chained per batch rather than started in parallel: a second pool\n * alongside the first would double the files in flight and make `concurrency`\n * stop meaning anything.\n */\nconst poolTails = new Map<number, Promise<UploadPoolResult | undefined>>();\n\nconst trackPoolRun = (uploadId: number, run: Promise<UploadPoolResult>) => {\n // Not swallowed: the caller still gets the real result from `run`.\n const tail = run.catch(() => undefined);\n\n poolTails.set(uploadId, tail);\n\n tail.then(() => {\n // Leave the entry alone if another run has queued behind us in the meantime.\n if (poolTails.get(uploadId) === tail) {\n poolTails.delete(uploadId);\n }\n });\n};\n\n/**\n * Error shape returned by upload operations.\n * Matches RTK Query's expected return type for queryFn.\n */\ninterface UploadError {\n name: 'UnknownError';\n message: string;\n status?: number;\n}\n\n/**\n * The store's dispatch also accepts thunks, which is what RTK Query's\n * `endpoint.initiate(...)` returns — the plain `Dispatch` action type can't express that.\n */\ntype AppDispatch = Dispatch &\n (<T>(thunk: T) => T extends (...args: never[]) => infer R ? R : never);\n\ntype UploadPoolResult =\n | { data: UploadedFile[]; error?: undefined }\n | { error: UploadError; data?: undefined };\n\n/** Maps a server per-file outcome onto the row's terminal metadata status. */\nconst METADATA_STATUS_BY_RESULT: Record<GenerateAIMetadata.FileStatus, FileMetadataResultStatus> = {\n success: 'generated',\n skipped: 'skipped',\n error: 'failed',\n};\n\n/**\n * Re-attaches the folder an upload targeted.\n *\n * The create response is built from `db.query().create()` with no populate, so\n * it comes back without the folder relation it was just given. The list needs\n * it to tell whether a freshly uploaded asset belongs to the folder on screen.\n */\nconst withTargetFolder = (\n file: UploadedFile,\n folder: number | string | null | undefined\n): UploadedFile => (file.folder != null ? file : { ...file, folder: folder ?? null });\n\n/**\n * Kicks off AI metadata generation for a freshly uploaded file.\n *\n * Deliberately fire-and-forget — the caller must NOT await it:\n * - generation for file N overlaps the upload of file N+1;\n * - a generation failure can never affect the upload result (the upload already\n * succeeded), which is why the promise is fully swallowed here.\n *\n * Every uploaded file is sent, including non-images: the server already classifies\n * them (`ai-metadata.generateForFiles` returns `skipped` for anything whose mime\n * isn't `image/*`) and duplicating that rule here would let the two drift apart.\n * The upshot is that a non-image now reports \"Metadata generation skipped\" rather\n * than silently showing no metadata state at all.\n */\nexport const maybeGenerateMetadata = ({\n file,\n index,\n uploadId,\n enabled,\n dispatch,\n}: {\n file: UploadedFile;\n index: number;\n uploadId: number;\n enabled: boolean;\n dispatch: Dispatch;\n}): void => {\n if (!enabled || typeof file.id !== 'number') {\n return;\n }\n\n dispatch(setFileMetadataGenerating({ index, uploadId }));\n\n // `uploadApi` is declared below but only read at call time, long after the module\n // has finished evaluating.\n const promise = (dispatch as AppDispatch)(\n uploadApi.endpoints.generateAiMetadata.initiate({ fileIds: [file.id] })\n );\n\n promise\n .unwrap()\n .then((results) => {\n const result = results?.find((r) => r.id === file.id) ?? results?.[0];\n dispatch(\n setFileMetadataResult({\n index,\n uploadId,\n status: result ? METADATA_STATUS_BY_RESULT[result.status] : 'failed',\n })\n );\n })\n .catch(() => {\n dispatch(setFileMetadataResult({ index, uploadId, status: 'failed' }));\n });\n};\n\n/**\n * Uploads the given entry indices one at a time through the single-file endpoint.\n *\n * For each file: dispatches \"uploading\", wires `XHR.upload.onprogress` through a\n * per-frame batcher to `setFileProgress`, awaits the XHR, then dispatches\n * \"complete\" or \"error\". Each file is wrapped in its own try/catch so one failure\n * does not stop the batch. An abort stops the loop without starting further files.\n */\nconst runUploadPool = async ({\n entries,\n indices,\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency = 1,\n generateAiMetadata,\n}: {\n entries: UploadEntry[];\n indices: number[];\n token: string | null | undefined;\n uploadId: number;\n abortController: AbortController;\n dispatch: Dispatch;\n /** Parallel workers pulling from the queue. 1 (the default) = sequential. */\n concurrency?: number;\n generateAiMetadata: boolean;\n}): Promise<UploadPoolResult> => {\n const url = `${window.strapi.backendURL}/upload/files`;\n const uploaded: UploadedFile[] = [];\n\n // Shared queue: each worker shifts the next index when it frees up, so N\n // files are in flight at any moment (not N-sized waves). With concurrency 1\n // this degenerates to the original strictly sequential loop.\n const queue = [...indices];\n\n const uploadOne = async (index: number) => {\n const entry = entries[index];\n if (!entry) {\n return;\n }\n\n const fileName = entry.fileInfo?.name ?? entry.file.name;\n\n dispatch(setFileUploading({ name: fileName, index, size: entry.file.size, uploadId }));\n\n const formData = new FormData();\n formData.append('files', entry.file);\n formData.append('fileInfo', JSON.stringify(entry.fileInfo));\n\n // Coalesce high-frequency progress events into one dispatch per frame.\n const batcher = createRafBatcher<number>((bytes) => {\n dispatch(setFileProgress({ index, bytes, uploadId }));\n });\n\n try {\n const file = await uploadFileViaXHR(url, token, formData, abortController.signal, (bytes) =>\n batcher.schedule(bytes)\n );\n batcher.cancel();\n uploaded.push(file);\n dispatch(\n setFileComplete({\n index,\n file: withTargetFolder(file, entry.fileInfo?.folder),\n uploadId,\n completedAt: Date.now(),\n })\n );\n\n // Not awaited: overlaps with the next file's upload and can't fail the batch.\n maybeGenerateMetadata({\n file,\n index,\n uploadId,\n enabled: generateAiMetadata,\n dispatch,\n });\n } catch (err) {\n batcher.cancel();\n\n if (err instanceof UploadAbortedError) {\n // Batch was cancelled — the worker loop checks the signal and stops.\n // cancelUpload (dispatched from the dialog) marks the remaining rows.\n return;\n }\n\n const message = err instanceof Error ? err.message : 'Upload failed';\n dispatch(setFileError({ index, name: fileName, message, uploadId }));\n }\n };\n\n // Guard non-finite/invalid values (NaN, Infinity, <1): `Math.floor(NaN)`\n // would propagate through Math.max to `Array.from({ length: NaN })` = zero\n // workers, silently uploading nothing. Anything invalid falls back to 1.\n const requested = Number.isFinite(concurrency) ? Math.floor(concurrency) : 1;\n const workerCount = Math.min(Math.max(1, requested), queue.length);\n\n const worker = async () => {\n while (queue.length > 0) {\n if (abortController.signal.aborted) {\n break;\n }\n\n const index = queue.shift();\n if (index === undefined) {\n break;\n }\n\n // eslint-disable-next-line no-await-in-loop\n await uploadOne(index);\n }\n };\n\n await Promise.all(Array.from({ length: workerCount }, () => worker()));\n\n unregisterAbortController(uploadId);\n\n return { data: uploaded };\n};\n\n/**\n * Reuses the batch's AbortController so one Cancel stops both drops.\n * `runUploadPool` unregisters it on finish, hence the re-register below.\n *\n * Resolves with the whole batch's files, not just this leg's: the mutation\n * models one drop, and after a merge the drop is the batch. The earlier leg's\n * files come from the tail this run queued behind.\n */\nconst runMergedUploadPool = async ({\n entries,\n indices,\n token,\n uploadId,\n dispatch,\n concurrency,\n generateAiMetadata,\n}: {\n entries: UploadEntry[];\n indices: number[];\n token: string | null | undefined;\n uploadId: number;\n dispatch: Dispatch;\n concurrency: number;\n generateAiMetadata: boolean;\n}): Promise<UploadPoolResult> => {\n const abortController = abortControllers.get(uploadId) ?? new AbortController();\n\n const run = (poolTails.get(uploadId) ?? Promise.resolve(undefined)).then(\n (previous): UploadPoolResult | Promise<UploadPoolResult> => {\n // A failed earlier leg contributes no files; its error already reached the\n // store, and this leg still has files of its own to upload.\n const earlier = previous?.data ?? [];\n\n if (abortController.signal.aborted) {\n return { data: earlier };\n }\n\n registerAbortController(uploadId, abortController);\n\n return runUploadPool({\n entries,\n indices,\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency,\n generateAiMetadata,\n }).then((result) => (result.error ? result : { data: [...earlier, ...(result.data ?? [])] }));\n }\n );\n\n trackPoolRun(uploadId, run);\n\n return run;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URL upload flow (SSE) — kept as-is for this iteration\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Parses a raw SSE text chunk into event/data pairs.\n *\n * SSE format:\n * event: <eventName>\\n\n * data: <json>\\n\n * \\n\n */\nconst parseSSEEvents = (chunk: string): Array<{ event: string; data: string }> => {\n const events: Array<{ event: string; data: string }> = [];\n const blocks = chunk.split('\\n\\n').filter(Boolean);\n\n for (const block of blocks) {\n let event = '';\n let data = '';\n\n for (const line of block.split('\\n')) {\n if (line.startsWith('event: ')) {\n event = line.slice(7);\n } else if (line.startsWith('data: ')) {\n data = line.slice(6);\n }\n }\n\n if (event && data) {\n events.push({ event, data });\n }\n }\n\n return events;\n};\n\n/**\n * Makes a streaming upload-from-URLs request to the server.\n * Sends URLs as JSON body instead of FormData.\n */\nconst fetchUrlUploadStream = async ({\n token,\n urls,\n folderId,\n signal,\n}: {\n token: string | null | undefined;\n urls: string[];\n folderId: number | null;\n signal: AbortSignal;\n}): Promise<Response> => {\n const backendURL = window.strapi.backendURL;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n return fetch(`${backendURL}/upload/actions/upload-from-urls`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ urls, folderId }),\n signal,\n });\n};\n\n/**\n * Processes an SSE stream from the URL upload endpoint.\n * Dispatches Redux actions for each file event and returns the final result.\n */\nconst processSSEStream = async ({\n response,\n dispatch,\n uploadId,\n generateAiMetadata,\n folderId,\n}: {\n response: Response;\n dispatch: Dispatch;\n uploadId: number;\n generateAiMetadata: boolean;\n folderId?: number | null;\n}): Promise<CreateFilesStream.Response | null> => {\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let streamResult: CreateFilesStream.Response | null = null;\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n\n // Process complete SSE events from the buffer\n const lastDoubleNewline = buffer.lastIndexOf('\\n\\n');\n if (lastDoubleNewline === -1) {\n // No complete events yet, keep buffering\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const completePart = buffer.slice(0, lastDoubleNewline + 2);\n buffer = buffer.slice(lastDoubleNewline + 2);\n\n const events = parseSSEEvents(completePart);\n\n for (const { event, data } of events) {\n const parsed = JSON.parse(data);\n const index = parsed.index as number;\n\n switch (event) {\n case 'file:fetching': {\n // URL is being fetched server-side - mark as uploading (processing)\n dispatch(setFileUploading({ name: parsed.url as string, index, size: 0, uploadId }));\n break;\n }\n case 'file:progress': {\n const payload = parsed as CreateFilesStreamEvents.FileProgressEvent;\n\n // No usable Content-Length on the remote: leave the row indeterminate\n if (payload.totalBytes === null) {\n break;\n }\n\n // Already throttled server-side (~5 frames a second per file), so no batching\n // here. `size` rides along because the row is still at 0 — see `setFileProgress`.\n dispatch(\n setFileProgress({\n index,\n bytes: payload.loadedBytes,\n size: payload.totalBytes,\n uploadId,\n })\n );\n break;\n }\n case 'file:uploading': {\n const payload = parsed as CreateFilesStreamEvents.FileUploadingEvent;\n dispatch(setFileUploading({ name: payload.name, index, size: payload.size, uploadId }));\n break;\n }\n case 'file:complete': {\n const payload = parsed as CreateFilesStreamEvents.FileCompleteEvent;\n dispatch(\n setFileComplete({\n index,\n file: withTargetFolder(payload.file, folderId),\n uploadId,\n completedAt: Date.now(),\n })\n );\n\n // Same fire-and-forget semantics as the file flow.\n maybeGenerateMetadata({\n file: payload.file,\n index,\n uploadId,\n enabled: generateAiMetadata,\n dispatch,\n });\n break;\n }\n case 'file:error': {\n const payload = parsed as CreateFilesStreamEvents.FileErrorEvent;\n dispatch(setFileError({ index, name: payload.name, message: payload.message, uploadId }));\n break;\n }\n case 'stream:complete': {\n const payload = parsed as CreateFilesStreamEvents.StreamCompleteEvent;\n streamResult = {\n data: payload.data,\n errors: payload.errors,\n };\n break;\n }\n default:\n console.error(`[SSE Upload] unknown event: ${event}`, parsed);\n }\n }\n }\n\n return streamResult;\n};\n\nconst uploadApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Asset', 'Folder'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * Upload files to `/upload/files`, one request per file, through a worker\n * pool of `concurrency` parallel requests (default 1 = sequential). Real\n * per-file byte progress comes from `XHR.upload.onprogress`.\n */\n uploadFiles: builder.mutation<UploadedFile[], UploadFilesArgs>({\n queryFn: async (\n { formData, totalFiles, concurrency = 1, generateAiMetadata },\n { dispatch, getState }\n ) => {\n const token = (getState() as RootState).admin_app?.token;\n\n // Extract the original files and their per-file fileInfo from the combined FormData.\n const files = formData.getAll('files') as File[];\n const fileInfoJson = formData.get('fileInfo') as string;\n const fileInfoArray = JSON.parse(fileInfoJson) as UploadFileInfo[];\n\n const entries: UploadEntry[] = files.map((file, index) => ({\n file,\n fileInfo: fileInfoArray[index] ?? {\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: null,\n },\n }));\n\n const fileNames = entries.map((entry) => entry.fileInfo.name ?? entry.file.name);\n const fileSizes = entries.map((entry) => entry.file.size);\n\n // `uploadFromUrls` also leaves rows `pending`, but registers no batch —\n // so an unregistered batch is not ours to merge into, and appending would\n // land on top of its rows.\n const progress = (getState() as RootState).uploadProgress;\n const batch = getUploadEntries(progress.uploadId);\n const isMerge = batch !== undefined && isUploadInFlight(progress.files);\n\n if (isMerge) {\n const { uploadId } = progress;\n const offset = batch.entries.length;\n\n // No `totalFiles`: the reducer derives it from the rows it appends.\n dispatch(appendUploadFiles({ uploadId, fileNames, fileSizes }));\n\n const mergedEntries = [...batch.entries, ...entries];\n\n // Merged files adopt the batch's flags: a new concurrency would raise\n // the ceiling it exists to impose.\n registerUploadEntries(\n uploadId,\n mergedEntries,\n batch.generateAiMetadata,\n batch.concurrency\n );\n\n return runMergedUploadPool({\n entries: mergedEntries,\n indices: entries.map((_, index) => offset + index),\n token,\n uploadId,\n dispatch,\n concurrency: batch.concurrency,\n generateAiMetadata: batch.generateAiMetadata,\n });\n }\n\n // Open the progress dialog\n dispatch(openUploadProgress({ totalFiles, fileNames, fileSizes }));\n\n // Get the uploadId from state after dispatching\n const uploadId = (getState() as RootState).uploadProgress.uploadId;\n\n // Store original entries for retry functionality\n registerUploadEntries(uploadId, entries, generateAiMetadata, concurrency);\n\n // One AbortController per batch\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n const run = runUploadPool({\n entries,\n indices: entries.map((_, index) => index),\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency,\n generateAiMetadata,\n });\n\n trackPoolRun(uploadId, run);\n\n return run;\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Upload a single, already-prepared file WITHOUT opening the global\n * upload-progress dialog. For flows that create one asset programmatically\n * (e.g. crop → \"Save as copy\"), where the bulk-upload progress UI is\n * inappropriate. Same endpoint as `uploadFiles`, minus the progress/retry\n * machinery.\n */\n uploadFileSilently: builder.mutation<UploadedFile, UploadEntry>({\n queryFn: async ({ file, fileInfo }, { getState }) => {\n const token = (getState() as RootState).admin_app?.token;\n const url = `${window.strapi.backendURL}/upload/files`;\n\n const formData = new FormData();\n formData.append('files', file);\n formData.append('fileInfo', JSON.stringify(fileInfo));\n\n try {\n const uploaded = await uploadFileViaXHR(\n url,\n token,\n formData,\n new AbortController().signal,\n () => {}\n );\n return { data: uploaded };\n } catch (err) {\n // Only pass on text the server actually sent. The XHR layer's own\n // fallbacks are hardcoded English, and callers here (crop → \"Save\n // as copy\") have a localized message of their own; an empty string\n // reads as \"nothing usable\" and lets theirs win.\n const message =\n err instanceof UploadFileError && err.isServerMessage ? err.message : '';\n return { error: { name: 'UnknownError', message } };\n }\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Retry uploading cancelled files.\n * Maps cancelled rows back to their original entries and re-runs only those\n * through the same upload pool with a fresh AbortController.\n */\n retryCancelledFiles: builder.mutation<UploadedFile[], void>({\n queryFn: async (_arg, { dispatch, getState }) => {\n const { uploadId, files: stateFiles } = (getState() as RootState).uploadProgress;\n const token = (getState() as RootState).admin_app?.token;\n\n const cancelledIndices = stateFiles\n .filter((f) => f.status === 'cancelled')\n .map((f) => f.index);\n\n if (cancelledIndices.length === 0) {\n return { error: { name: 'UnknownError', message: 'No cancelled files to retry' } };\n }\n\n const batch = getUploadEntries(uploadId);\n if (!batch) {\n return { error: { name: 'UnknownError', message: 'Original files not found' } };\n }\n\n // Reset cancelled files back to pending\n dispatch(retryCancelledFiles());\n\n // Fresh AbortController for the retry run\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n const run = runUploadPool({\n entries: batch.entries,\n indices: cancelledIndices,\n token,\n uploadId,\n abortController,\n dispatch,\n // Replay the retried rows with the flags the batch was started with.\n concurrency: batch.concurrency,\n generateAiMetadata: batch.generateAiMetadata,\n });\n\n // Retried rows are `pending` again, so a drop lands on the merge branch.\n // Untracked, that merge would find no tail to queue behind and run its\n // pool beside this one — two pools of `concurrency` each.\n trackPoolRun(uploadId, run);\n\n return run;\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Upload files from URLs.\n * Sends URLs to the server which fetches and uploads them (SSE flow, unchanged).\n */\n uploadFromUrls: builder.mutation<CreateFilesStream.Response, UploadFromUrlsArgs>({\n queryFn: async ({ urls, folderId, generateAiMetadata }, { dispatch, getState }) => {\n const token = (getState() as RootState).admin_app?.token;\n\n // Extract filenames from URLs for the progress dialog\n const fileNames = urls.map((url) => getFilenameFromUrl(url));\n\n // Open progress dialog with all URLs as pending files\n dispatch(\n openUploadProgress({\n totalFiles: urls.length,\n fileNames,\n })\n );\n\n // Get the uploadId from state after dispatching\n const uploadId = (getState() as RootState).uploadProgress.uploadId;\n\n // Create abort controller for this upload\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n try {\n // Send URLs to server for fetching and uploading\n const response = await fetchUrlUploadStream({\n token,\n urls,\n folderId,\n signal: abortController.signal,\n });\n\n if (!response.ok || !response.body) {\n unregisterAbortController(uploadId);\n\n let errorMessage = 'Upload request failed';\n try {\n const errorData = await response.json();\n if (errorData.error?.message) {\n errorMessage = errorData.error.message;\n } else if (errorData.message) {\n errorMessage = errorData.message;\n }\n } catch {\n errorMessage = `Upload failed with status ${response.status}`;\n }\n\n dispatch(setUploadFailed({ message: errorMessage }));\n\n return {\n error: {\n name: 'UnknownError' as const,\n message: errorMessage,\n status: response.status,\n },\n };\n }\n\n // Process SSE stream from server\n const streamResult = await processSSEStream({\n response,\n dispatch,\n uploadId,\n generateAiMetadata,\n folderId,\n });\n\n unregisterAbortController(uploadId);\n\n if (streamResult && streamResult.data.length > 0) {\n return { data: streamResult };\n }\n\n return { data: { data: [], errors: [] } };\n } catch (err) {\n unregisterAbortController(uploadId);\n\n if (err instanceof DOMException && err.name === 'AbortError') {\n return { error: { name: 'UnknownError' as const, message: 'Upload cancelled' } };\n }\n\n const errorMessage = err instanceof Error ? err.message : 'Network error occurred';\n dispatch(setUploadFailed({ message: errorMessage }));\n\n return {\n error: {\n name: 'UnknownError' as const,\n message: errorMessage,\n },\n };\n }\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Generate AI metadata (alt text + caption) for the given assets.\n * Synchronous: resolves once every file has been processed and reports the\n * outcome per file, so non-images and individual failures don't fail the\n * whole batch. Existing alt text and captions are never overwritten.\n *\n * Lives here rather than in `assets.ts` because the upload flows dispatch it\n * directly via `initiate()` after each file completes, and `assets.ts` already\n * imports from this module — defining it there would be a circular import.\n * Re-exported from `assets.ts` for the components that consume the hook.\n */\n generateAiMetadata: builder.mutation<\n GenerateAIMetadata.Response['data'],\n { fileIds: number[] }\n >({\n query: ({ fileIds }) => ({\n url: '/upload/actions/generate-ai-metadata',\n method: 'POST',\n data: { fileIds },\n }),\n transformResponse: (response: { data: GenerateAIMetadata.Response['data'] }) =>\n response.data,\n invalidatesTags: (_result, _error, { fileIds }) => [\n ...fileIds.map((id) => ({ type: 'Asset' as const, id })),\n { type: 'Asset' as const, id: 'LIST' },\n ],\n }),\n }),\n });\n\nexport const {\n useUploadFilesMutation,\n useUploadFileSilentlyMutation,\n useRetryCancelledFilesMutation,\n useUploadFromUrlsMutation,\n useGenerateAiMetadataMutation,\n} = uploadApi;\nexport { uploadApi };\n"],"names":["uploadRegistry","Map","registerUploadEntries","uploadId","entries","generateAiMetadata","concurrency","set","getUploadEntries","get","abortControllers","registerAbortController","controller","unregisterAbortController","delete","abortUpload","abort","poolTails","trackPoolRun","run","tail","catch","undefined","then","METADATA_STATUS_BY_RESULT","success","skipped","error","withTargetFolder","file","folder","maybeGenerateMetadata","index","enabled","dispatch","id","setFileMetadataGenerating","promise","uploadApi","endpoints","initiate","fileIds","unwrap","results","result","find","r","setFileMetadataResult","status","runUploadPool","indices","token","abortController","url","window","strapi","backendURL","uploaded","queue","uploadOne","entry","fileName","fileInfo","name","setFileUploading","size","formData","FormData","append","JSON","stringify","batcher","createRafBatcher","bytes","setFileProgress","uploadFileViaXHR","signal","schedule","cancel","push","setFileComplete","completedAt","Date","now","err","UploadAbortedError","message","Error","setFileError","requested","Number","isFinite","Math","floor","workerCount","min","max","length","worker","aborted","shift","Promise","all","Array","from","data","runMergedUploadPool","AbortController","resolve","previous","earlier","parseSSEEvents","chunk","events","blocks","split","filter","Boolean","block","event","line","startsWith","slice","fetchUrlUploadStream","urls","folderId","headers","Authorization","fetch","method","body","processSSEStream","response","reader","getReader","decoder","TextDecoder","streamResult","buffer","done","value","read","decode","stream","lastDoubleNewline","lastIndexOf","completePart","parsed","parse","payload","totalBytes","loadedBytes","errors","console","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","builder","uploadFiles","mutation","queryFn","totalFiles","getState","admin_app","files","getAll","fileInfoJson","fileInfoArray","map","caption","alternativeText","fileNames","fileSizes","progress","uploadProgress","batch","isMerge","isUploadInFlight","offset","appendUploadFiles","mergedEntries","_","openUploadProgress","invalidatesTags","type","uploadFileSilently","UploadFileError","isServerMessage","retryCancelledFiles","_arg","stateFiles","cancelledIndices","f","uploadFromUrls","getFilenameFromUrl","ok","errorMessage","errorData","json","setUploadFailed","DOMException","query","transformResponse","_result","_error","useUploadFilesMutation","useUploadFileSilentlyMutation","useRetryCancelledFilesMutation","useUploadFromUrlsMutation","useGenerateAiMetadataMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"api.mjs","sources":["../../../../admin/src/future/services/api.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { adminApi } from '@strapi/admin/strapi-admin';\n\nimport {\n openUploadProgress,\n appendUploadFiles,\n isUploadInFlight,\n setFileUploading,\n setFileProgress,\n setFileComplete,\n setFileError,\n setFileMetadataGenerating,\n setFileMetadataResult,\n setUploadFailed,\n retryCancelledFiles,\n} from '../store/uploadProgress';\nimport { createRafBatcher } from '../utils/createRafBatcher';\nimport { getFilenameFromUrl } from '../utils/files';\n\nimport { uploadFileViaXHR, UploadAbortedError, UploadFileError } from './uploadFileViaXHR';\n\nimport type {\n CreateFilesStream,\n CreateFilesStreamEvents,\n File as UploadedFile,\n GenerateAIMetadata,\n UploadFileInfo,\n} from '../../../../shared/contracts/files';\nimport type { FileMetadataResultStatus } from '../store/uploadProgress';\n\ninterface UploadFilesArgs {\n formData: FormData;\n totalFiles: number;\n /**\n * How many files to upload in parallel — the `concurrentUploadRequests`\n * settings value. Defaults to 1 (sequential).\n */\n concurrency?: number;\n /** Whether AI metadata generation is enabled (EE AI available + `settings.aiMetadata`). */\n generateAiMetadata: boolean;\n}\n\ninterface UploadFromUrlsArgs {\n urls: string[];\n folderId: number | null;\n generateAiMetadata: boolean;\n}\n\ninterface RootState {\n admin_app: {\n token?: string | null;\n };\n uploadProgress: {\n uploadId: number;\n files: Array<{\n index: number;\n name: string;\n size: number;\n status: 'pending' | 'uploading' | 'complete' | 'error' | 'cancelled';\n }>;\n };\n}\n\n/**\n * A single file plus the `fileInfo` it was queued with.\n * Retained in {@link uploadRegistry} so cancelled files can be retried without\n * the user re-selecting them. `File`/`AbortController` are non-serializable, so\n * they live here rather than in Redux.\n */\ninterface UploadEntry {\n file: File;\n fileInfo: UploadFileInfo;\n}\n\n/**\n * Everything a batch needs to be replayed on retry: the original entries plus the\n * flags it was started with (AI-metadata and upload concurrency). These live here\n * rather than in Redux because `retryCancelledFiles` takes no args and the page\n * that owns `useAIAvailability` / the settings value is not involved in the retry.\n */\ninterface UploadBatch {\n entries: UploadEntry[];\n generateAiMetadata: boolean;\n concurrency: number;\n}\n\n/**\n * Stores the original upload batch (keyed by uploadId) to enable retry.\n */\nconst uploadRegistry = new Map<number, UploadBatch>();\n\nconst registerUploadEntries = (\n uploadId: number,\n entries: UploadEntry[],\n generateAiMetadata: boolean,\n concurrency: number\n) => {\n uploadRegistry.set(uploadId, { entries, generateAiMetadata, concurrency });\n};\n\nconst getUploadEntries = (uploadId: number): UploadBatch | undefined => {\n return uploadRegistry.get(uploadId);\n};\n\n/**\n * Manages abort controllers for in-flight uploads.\n *\n * Design decision: Uses a Map to track uploads by their unique uploadId.\n * Redux state cannot store function references (abort controllers), RTK Query's\n * signal is only accessible within the queryFn, and the upload is triggered in\n * AssetsPage but cancelled from UploadProgressDialog.\n */\nconst abortControllers = new Map<number, AbortController>();\n\nconst registerAbortController = (uploadId: number, controller: AbortController) => {\n abortControllers.set(uploadId, controller);\n};\n\nconst unregisterAbortController = (uploadId: number) => {\n abortControllers.delete(uploadId);\n};\n\n/**\n * Aborts an upload by its uploadId.\n * Called from the UploadProgressDialog when the user clicks cancel or close.\n */\nexport const abortUpload = (uploadId: number) => {\n const controller = abortControllers.get(uploadId);\n if (controller) {\n controller.abort();\n unregisterAbortController(uploadId);\n }\n};\n\n/**\n * Runs are chained per batch rather than started in parallel: a second pool\n * alongside the first would double the files in flight and make `concurrency`\n * stop meaning anything.\n */\nconst poolTails = new Map<number, Promise<UploadPoolResult | undefined>>();\n\nconst trackPoolRun = (uploadId: number, run: Promise<UploadPoolResult>) => {\n // Not swallowed: the caller still gets the real result from `run`.\n const tail = run.catch(() => undefined);\n\n poolTails.set(uploadId, tail);\n\n tail.then(() => {\n // Leave the entry alone if another run has queued behind us in the meantime.\n if (poolTails.get(uploadId) === tail) {\n poolTails.delete(uploadId);\n }\n });\n};\n\n/**\n * Error shape returned by upload operations.\n * Matches RTK Query's expected return type for queryFn.\n */\ninterface UploadError {\n name: 'UnknownError';\n message: string;\n status?: number;\n}\n\n/**\n * The store's dispatch also accepts thunks, which is what RTK Query's\n * `endpoint.initiate(...)` returns — the plain `Dispatch` action type can't express that.\n */\ntype AppDispatch = Dispatch &\n (<T>(thunk: T) => T extends (...args: never[]) => infer R ? R : never);\n\ntype UploadPoolResult =\n | { data: UploadedFile[]; error?: undefined }\n | { error: UploadError; data?: undefined };\n\n/** Maps a server per-file outcome onto the row's terminal metadata status. */\nconst METADATA_STATUS_BY_RESULT: Record<GenerateAIMetadata.FileStatus, FileMetadataResultStatus> = {\n success: 'generated',\n skipped: 'skipped',\n error: 'failed',\n};\n\n/**\n * Re-attaches the folder an upload targeted.\n *\n * The create response is built from `db.query().create()` with no populate, so\n * it comes back without the folder relation it was just given. The list needs\n * it to tell whether a freshly uploaded asset belongs to the folder on screen.\n */\nconst withTargetFolder = (\n file: UploadedFile,\n folder: number | string | null | undefined\n): UploadedFile => (file.folder != null ? file : { ...file, folder: folder ?? null });\n\n/**\n * Kicks off AI metadata generation for a freshly uploaded file.\n *\n * Deliberately fire-and-forget — the caller must NOT await it:\n * - generation for file N overlaps the upload of file N+1;\n * - a generation failure can never affect the upload result (the upload already\n * succeeded), which is why the promise is fully swallowed here.\n *\n * Every uploaded file is sent, including non-images: the server already classifies\n * them (`ai-metadata.generateForFiles` returns `skipped` for anything whose mime\n * isn't `image/*`) and duplicating that rule here would let the two drift apart.\n * The upshot is that a non-image now reports \"Metadata generation skipped\" rather\n * than silently showing no metadata state at all.\n */\nexport const maybeGenerateMetadata = ({\n file,\n index,\n uploadId,\n enabled,\n dispatch,\n}: {\n file: UploadedFile;\n index: number;\n uploadId: number;\n enabled: boolean;\n dispatch: Dispatch;\n}): void => {\n if (!enabled || typeof file.id !== 'number') {\n return;\n }\n\n dispatch(setFileMetadataGenerating({ index, uploadId }));\n\n // `uploadApi` is declared below but only read at call time, long after the module\n // has finished evaluating.\n const promise = (dispatch as AppDispatch)(\n uploadApi.endpoints.generateAiMetadata.initiate({ fileIds: [file.id] })\n );\n\n promise\n .unwrap()\n .then((results) => {\n const result = results?.find((r) => r.id === file.id) ?? results?.[0];\n dispatch(\n setFileMetadataResult({\n index,\n uploadId,\n status: result ? METADATA_STATUS_BY_RESULT[result.status] : 'failed',\n })\n );\n })\n .catch(() => {\n dispatch(setFileMetadataResult({ index, uploadId, status: 'failed' }));\n });\n};\n\n/**\n * Uploads the given entry indices one at a time through the single-file endpoint.\n *\n * For each file: dispatches \"uploading\", wires `XHR.upload.onprogress` through a\n * per-frame batcher to `setFileProgress`, awaits the XHR, then dispatches\n * \"complete\" or \"error\". Each file is wrapped in its own try/catch so one failure\n * does not stop the batch. An abort stops the loop without starting further files.\n */\nconst runUploadPool = async ({\n entries,\n indices,\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency = 1,\n generateAiMetadata,\n}: {\n entries: UploadEntry[];\n indices: number[];\n token: string | null | undefined;\n uploadId: number;\n abortController: AbortController;\n dispatch: Dispatch;\n /** Parallel workers pulling from the queue. 1 (the default) = sequential. */\n concurrency?: number;\n generateAiMetadata: boolean;\n}): Promise<UploadPoolResult> => {\n const url = `${window.strapi.backendURL}/upload/files`;\n const uploaded: UploadedFile[] = [];\n\n // Shared queue: each worker shifts the next index when it frees up, so N\n // files are in flight at any moment (not N-sized waves). With concurrency 1\n // this degenerates to the original strictly sequential loop.\n const queue = [...indices];\n\n const uploadOne = async (index: number) => {\n const entry = entries[index];\n if (!entry) {\n return;\n }\n\n const fileName = entry.fileInfo?.name ?? entry.file.name;\n\n dispatch(setFileUploading({ name: fileName, index, size: entry.file.size, uploadId }));\n\n const formData = new FormData();\n formData.append('files', entry.file);\n formData.append('fileInfo', JSON.stringify(entry.fileInfo));\n\n // Coalesce high-frequency progress events into one dispatch per frame.\n const batcher = createRafBatcher<number>((bytes) => {\n dispatch(setFileProgress({ index, bytes, uploadId }));\n });\n\n try {\n const file = await uploadFileViaXHR(url, token, formData, abortController.signal, (bytes) =>\n batcher.schedule(bytes)\n );\n batcher.cancel();\n uploaded.push(file);\n dispatch(\n setFileComplete({\n index,\n file: withTargetFolder(file, entry.fileInfo?.folder),\n uploadId,\n completedAt: Date.now(),\n })\n );\n\n // Not awaited: overlaps with the next file's upload and can't fail the batch.\n maybeGenerateMetadata({\n file,\n index,\n uploadId,\n enabled: generateAiMetadata,\n dispatch,\n });\n } catch (err) {\n batcher.cancel();\n\n if (err instanceof UploadAbortedError) {\n // Batch was cancelled — the worker loop checks the signal and stops.\n // cancelUpload (dispatched from the dialog) marks the remaining rows.\n return;\n }\n\n const message = err instanceof Error ? err.message : 'Upload failed';\n dispatch(setFileError({ index, name: fileName, message, uploadId }));\n }\n };\n\n // Guard non-finite/invalid values (NaN, Infinity, <1): `Math.floor(NaN)`\n // would propagate through Math.max to `Array.from({ length: NaN })` = zero\n // workers, silently uploading nothing. Anything invalid falls back to 1.\n const requested = Number.isFinite(concurrency) ? Math.floor(concurrency) : 1;\n const workerCount = Math.min(Math.max(1, requested), queue.length);\n\n const worker = async () => {\n while (queue.length > 0) {\n if (abortController.signal.aborted) {\n break;\n }\n\n const index = queue.shift();\n if (index === undefined) {\n break;\n }\n\n // eslint-disable-next-line no-await-in-loop\n await uploadOne(index);\n }\n };\n\n await Promise.all(Array.from({ length: workerCount }, () => worker()));\n\n unregisterAbortController(uploadId);\n\n return { data: uploaded };\n};\n\n/**\n * Reuses the batch's AbortController so one Cancel stops both drops.\n * `runUploadPool` unregisters it on finish, hence the re-register below.\n *\n * Resolves with the whole batch's files, not just this leg's: the mutation\n * models one drop, and after a merge the drop is the batch. The earlier leg's\n * files come from the tail this run queued behind.\n */\nconst runMergedUploadPool = async ({\n entries,\n indices,\n token,\n uploadId,\n dispatch,\n concurrency,\n generateAiMetadata,\n}: {\n entries: UploadEntry[];\n indices: number[];\n token: string | null | undefined;\n uploadId: number;\n dispatch: Dispatch;\n concurrency: number;\n generateAiMetadata: boolean;\n}): Promise<UploadPoolResult> => {\n const abortController = abortControllers.get(uploadId) ?? new AbortController();\n\n const run = (poolTails.get(uploadId) ?? Promise.resolve(undefined)).then(\n (previous): UploadPoolResult | Promise<UploadPoolResult> => {\n // A failed earlier leg contributes no files; its error already reached the\n // store, and this leg still has files of its own to upload.\n const earlier = previous?.data ?? [];\n\n if (abortController.signal.aborted) {\n return { data: earlier };\n }\n\n registerAbortController(uploadId, abortController);\n\n return runUploadPool({\n entries,\n indices,\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency,\n generateAiMetadata,\n }).then((result) => (result.error ? result : { data: [...earlier, ...(result.data ?? [])] }));\n }\n );\n\n trackPoolRun(uploadId, run);\n\n return run;\n};\n\n/* -------------------------------------------------------------------------------------------------\n * URL upload flow (SSE) — kept as-is for this iteration\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Parses a raw SSE text chunk into event/data pairs.\n *\n * SSE format:\n * event: <eventName>\\n\n * data: <json>\\n\n * \\n\n */\nconst parseSSEEvents = (chunk: string): Array<{ event: string; data: string }> => {\n const events: Array<{ event: string; data: string }> = [];\n const blocks = chunk.split('\\n\\n').filter(Boolean);\n\n for (const block of blocks) {\n let event = '';\n let data = '';\n\n for (const line of block.split('\\n')) {\n if (line.startsWith('event: ')) {\n event = line.slice(7);\n } else if (line.startsWith('data: ')) {\n data = line.slice(6);\n }\n }\n\n if (event && data) {\n events.push({ event, data });\n }\n }\n\n return events;\n};\n\n/**\n * Makes a streaming upload-from-URLs request to the server.\n * Sends URLs as JSON body instead of FormData.\n */\nconst fetchUrlUploadStream = async ({\n token,\n urls,\n folderId,\n signal,\n}: {\n token: string | null | undefined;\n urls: string[];\n folderId: number | null;\n signal: AbortSignal;\n}): Promise<Response> => {\n const backendURL = window.strapi.backendURL;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n if (token) {\n headers.Authorization = `Bearer ${token}`;\n }\n\n return fetch(`${backendURL}/upload/actions/upload-from-urls`, {\n method: 'POST',\n headers,\n body: JSON.stringify({ urls, folderId }),\n signal,\n });\n};\n\n/**\n * Processes an SSE stream from the URL upload endpoint.\n * Dispatches Redux actions for each file event and returns the final result.\n */\nconst processSSEStream = async ({\n response,\n dispatch,\n uploadId,\n generateAiMetadata,\n folderId,\n}: {\n response: Response;\n dispatch: Dispatch;\n uploadId: number;\n generateAiMetadata: boolean;\n folderId?: number | null;\n}): Promise<CreateFilesStream.Response | null> => {\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let streamResult: CreateFilesStream.Response | null = null;\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n\n if (done) {\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n\n // Process complete SSE events from the buffer\n const lastDoubleNewline = buffer.lastIndexOf('\\n\\n');\n if (lastDoubleNewline === -1) {\n // No complete events yet, keep buffering\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const completePart = buffer.slice(0, lastDoubleNewline + 2);\n buffer = buffer.slice(lastDoubleNewline + 2);\n\n const events = parseSSEEvents(completePart);\n\n for (const { event, data } of events) {\n const parsed = JSON.parse(data);\n const index = parsed.index as number;\n\n switch (event) {\n case 'file:fetching': {\n // URL is being fetched server-side - mark as uploading (processing)\n dispatch(setFileUploading({ name: parsed.url as string, index, size: 0, uploadId }));\n break;\n }\n case 'file:progress': {\n const payload = parsed as CreateFilesStreamEvents.FileProgressEvent;\n\n // No usable Content-Length on the remote: leave the row indeterminate\n if (payload.totalBytes === null) {\n break;\n }\n\n // Already throttled server-side (~5 frames a second per file), so no batching\n // here. `size` rides along because the row is still at 0 — see `setFileProgress`.\n dispatch(\n setFileProgress({\n index,\n bytes: payload.loadedBytes,\n size: payload.totalBytes,\n uploadId,\n })\n );\n break;\n }\n case 'file:uploading': {\n const payload = parsed as CreateFilesStreamEvents.FileUploadingEvent;\n dispatch(setFileUploading({ name: payload.name, index, size: payload.size, uploadId }));\n break;\n }\n case 'file:complete': {\n const payload = parsed as CreateFilesStreamEvents.FileCompleteEvent;\n dispatch(\n setFileComplete({\n index,\n file: withTargetFolder(payload.file, folderId),\n uploadId,\n completedAt: Date.now(),\n })\n );\n\n // Same fire-and-forget semantics as the file flow.\n maybeGenerateMetadata({\n file: payload.file,\n index,\n uploadId,\n enabled: generateAiMetadata,\n dispatch,\n });\n break;\n }\n case 'file:error': {\n const payload = parsed as CreateFilesStreamEvents.FileErrorEvent;\n dispatch(setFileError({ index, name: payload.name, message: payload.message, uploadId }));\n break;\n }\n case 'stream:complete': {\n const payload = parsed as CreateFilesStreamEvents.StreamCompleteEvent;\n streamResult = {\n data: payload.data,\n errors: payload.errors,\n };\n break;\n }\n default:\n console.error(`[SSE Upload] unknown event: ${event}`, parsed);\n }\n }\n }\n\n return streamResult;\n};\n\nconst uploadApi = adminApi\n .enhanceEndpoints({\n addTagTypes: ['Asset', 'Folder'],\n })\n .injectEndpoints({\n endpoints: (builder) => ({\n /**\n * Upload files to `/upload/files`, one request per file, through a worker\n * pool of `concurrency` parallel requests (default 1 = sequential). Real\n * per-file byte progress comes from `XHR.upload.onprogress`.\n */\n uploadFiles: builder.mutation<UploadedFile[], UploadFilesArgs>({\n queryFn: async (\n { formData, totalFiles, concurrency = 1, generateAiMetadata },\n { dispatch, getState }\n ) => {\n const token = (getState() as RootState).admin_app?.token;\n\n // Extract the original files and their per-file fileInfo from the combined FormData.\n const files = formData.getAll('files') as File[];\n const fileInfoJson = formData.get('fileInfo') as string;\n const fileInfoArray = JSON.parse(fileInfoJson) as UploadFileInfo[];\n\n const entries: UploadEntry[] = files.map((file, index) => ({\n file,\n fileInfo: fileInfoArray[index] ?? {\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: null,\n },\n }));\n\n const fileNames = entries.map((entry) => entry.fileInfo.name ?? entry.file.name);\n const fileSizes = entries.map((entry) => entry.file.size);\n\n // `uploadFromUrls` also leaves rows `pending`, but registers no batch —\n // so an unregistered batch is not ours to merge into, and appending would\n // land on top of its rows.\n const progress = (getState() as RootState).uploadProgress;\n const batch = getUploadEntries(progress.uploadId);\n const isMerge = batch !== undefined && isUploadInFlight(progress.files);\n\n if (isMerge) {\n const { uploadId } = progress;\n const offset = batch.entries.length;\n\n // No `totalFiles`: the reducer derives it from the rows it appends.\n dispatch(appendUploadFiles({ uploadId, fileNames, fileSizes }));\n\n const mergedEntries = [...batch.entries, ...entries];\n\n // Merged files adopt the batch's flags: a new concurrency would raise\n // the ceiling it exists to impose.\n registerUploadEntries(\n uploadId,\n mergedEntries,\n batch.generateAiMetadata,\n batch.concurrency\n );\n\n return runMergedUploadPool({\n entries: mergedEntries,\n indices: entries.map((_, index) => offset + index),\n token,\n uploadId,\n dispatch,\n concurrency: batch.concurrency,\n generateAiMetadata: batch.generateAiMetadata,\n });\n }\n\n // Open the progress dialog\n dispatch(openUploadProgress({ totalFiles, fileNames, fileSizes }));\n\n // Get the uploadId from state after dispatching\n const uploadId = (getState() as RootState).uploadProgress.uploadId;\n\n // Store original entries for retry functionality\n registerUploadEntries(uploadId, entries, generateAiMetadata, concurrency);\n\n // One AbortController per batch\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n const run = runUploadPool({\n entries,\n indices: entries.map((_, index) => index),\n token,\n uploadId,\n abortController,\n dispatch,\n concurrency,\n generateAiMetadata,\n });\n\n trackPoolRun(uploadId, run);\n\n return run;\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Upload a single, already-prepared file WITHOUT opening the global\n * upload-progress dialog. For flows that create one asset programmatically\n * (e.g. crop → \"Save as copy\"), where the bulk-upload progress UI is\n * inappropriate. Same endpoint as `uploadFiles`, minus the progress/retry\n * machinery.\n */\n uploadFileSilently: builder.mutation<UploadedFile, UploadEntry>({\n queryFn: async ({ file, fileInfo }, { getState }) => {\n const token = (getState() as RootState).admin_app?.token;\n const url = `${window.strapi.backendURL}/upload/files`;\n\n const formData = new FormData();\n formData.append('files', file);\n formData.append('fileInfo', JSON.stringify(fileInfo));\n\n try {\n const uploaded = await uploadFileViaXHR(\n url,\n token,\n formData,\n new AbortController().signal,\n () => {}\n );\n return { data: uploaded };\n } catch (err) {\n // Only pass on text the server actually sent. The XHR layer's own\n // fallbacks are hardcoded English, and callers here (crop → \"Save\n // as copy\") have a localized message of their own; an empty string\n // reads as \"nothing usable\" and lets theirs win.\n const message =\n err instanceof UploadFileError && err.isServerMessage ? err.message : '';\n return { error: { name: 'UnknownError', message } };\n }\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Retry uploading cancelled files.\n * Maps cancelled rows back to their original entries and re-runs only those\n * through the same upload pool with a fresh AbortController.\n */\n retryCancelledFiles: builder.mutation<UploadedFile[], void>({\n queryFn: async (_arg, { dispatch, getState }) => {\n const { uploadId, files: stateFiles } = (getState() as RootState).uploadProgress;\n const token = (getState() as RootState).admin_app?.token;\n\n const cancelledIndices = stateFiles\n .filter((f) => f.status === 'cancelled')\n .map((f) => f.index);\n\n if (cancelledIndices.length === 0) {\n return { error: { name: 'UnknownError', message: 'No cancelled files to retry' } };\n }\n\n const batch = getUploadEntries(uploadId);\n if (!batch) {\n return { error: { name: 'UnknownError', message: 'Original files not found' } };\n }\n\n // Reset cancelled files back to pending\n dispatch(retryCancelledFiles());\n\n // Fresh AbortController for the retry run\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n const run = runUploadPool({\n entries: batch.entries,\n indices: cancelledIndices,\n token,\n uploadId,\n abortController,\n dispatch,\n // Replay the retried rows with the flags the batch was started with.\n concurrency: batch.concurrency,\n generateAiMetadata: batch.generateAiMetadata,\n });\n\n // Retried rows are `pending` again, so a drop lands on the merge branch.\n // Untracked, that merge would find no tail to queue behind and run its\n // pool beside this one — two pools of `concurrency` each.\n trackPoolRun(uploadId, run);\n\n return run;\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Upload files from URLs.\n * Sends URLs to the server which fetches and uploads them (SSE flow, unchanged).\n */\n uploadFromUrls: builder.mutation<CreateFilesStream.Response, UploadFromUrlsArgs>({\n queryFn: async ({ urls, folderId, generateAiMetadata }, { dispatch, getState }) => {\n const token = (getState() as RootState).admin_app?.token;\n\n // Extract filenames from URLs for the progress dialog\n const fileNames = urls.map((url) => getFilenameFromUrl(url));\n\n // Open progress dialog with all URLs as pending files\n dispatch(\n openUploadProgress({\n totalFiles: urls.length,\n fileNames,\n })\n );\n\n // Get the uploadId from state after dispatching\n const uploadId = (getState() as RootState).uploadProgress.uploadId;\n\n // Create abort controller for this upload\n const abortController = new AbortController();\n registerAbortController(uploadId, abortController);\n\n try {\n // Send URLs to server for fetching and uploading\n const response = await fetchUrlUploadStream({\n token,\n urls,\n folderId,\n signal: abortController.signal,\n });\n\n if (!response.ok || !response.body) {\n unregisterAbortController(uploadId);\n\n let errorMessage = 'Upload request failed';\n try {\n const errorData = await response.json();\n if (errorData.error?.message) {\n errorMessage = errorData.error.message;\n } else if (errorData.message) {\n errorMessage = errorData.message;\n }\n } catch {\n errorMessage = `Upload failed with status ${response.status}`;\n }\n\n dispatch(setUploadFailed({ message: errorMessage }));\n\n return {\n error: {\n name: 'UnknownError' as const,\n message: errorMessage,\n status: response.status,\n },\n };\n }\n\n // Process SSE stream from server\n const streamResult = await processSSEStream({\n response,\n dispatch,\n uploadId,\n generateAiMetadata,\n folderId,\n });\n\n unregisterAbortController(uploadId);\n\n if (streamResult && streamResult.data.length > 0) {\n return { data: streamResult };\n }\n\n return { data: { data: [], errors: [] } };\n } catch (err) {\n unregisterAbortController(uploadId);\n\n if (err instanceof DOMException && err.name === 'AbortError') {\n return { error: { name: 'UnknownError' as const, message: 'Upload cancelled' } };\n }\n\n const errorMessage = err instanceof Error ? err.message : 'Network error occurred';\n dispatch(setUploadFailed({ message: errorMessage }));\n\n return {\n error: {\n name: 'UnknownError' as const,\n message: errorMessage,\n },\n };\n }\n },\n // `Folder, LIST` refreshes the folder header count, which changes when\n // files are added to it.\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n\n /**\n * Generate AI metadata (alt text + caption) for the given assets.\n * Synchronous: resolves once every file has been processed and reports the\n * outcome per file, so non-images and individual failures don't fail the\n * whole batch. Existing alt text and captions are never overwritten.\n *\n * Lives here rather than in `assets.ts` because the upload flows dispatch it\n * directly via `initiate()` after each file completes, and `assets.ts` already\n * imports from this module — defining it there would be a circular import.\n * Re-exported from `assets.ts` for the components that consume the hook.\n */\n generateAiMetadata: builder.mutation<\n GenerateAIMetadata.Response['data'],\n { fileIds: number[] }\n >({\n query: ({ fileIds }) => ({\n url: '/upload/actions/generate-ai-metadata',\n method: 'POST',\n data: { fileIds },\n }),\n transformResponse: (response: { data: GenerateAIMetadata.Response['data'] }) =>\n response.data,\n invalidatesTags: (_result, _error, { fileIds }) => [\n ...fileIds.map((id) => ({ type: 'Asset' as const, id })),\n { type: 'Asset' as const, id: 'LIST' },\n ],\n }),\n }),\n });\n\nexport const {\n useUploadFilesMutation,\n useUploadFileSilentlyMutation,\n useRetryCancelledFilesMutation,\n useUploadFromUrlsMutation,\n useGenerateAiMetadataMutation,\n} = uploadApi;\nexport { uploadApi };\n"],"names":["uploadRegistry","Map","registerUploadEntries","uploadId","entries","generateAiMetadata","concurrency","set","getUploadEntries","get","abortControllers","registerAbortController","controller","unregisterAbortController","delete","abortUpload","abort","poolTails","trackPoolRun","run","tail","catch","undefined","then","METADATA_STATUS_BY_RESULT","success","skipped","error","withTargetFolder","file","folder","maybeGenerateMetadata","index","enabled","dispatch","id","setFileMetadataGenerating","promise","uploadApi","endpoints","initiate","fileIds","unwrap","results","result","find","r","setFileMetadataResult","status","runUploadPool","indices","token","abortController","url","window","strapi","backendURL","uploaded","queue","uploadOne","entry","fileName","fileInfo","name","setFileUploading","size","formData","FormData","append","JSON","stringify","batcher","createRafBatcher","bytes","setFileProgress","uploadFileViaXHR","signal","schedule","cancel","push","setFileComplete","completedAt","Date","now","err","UploadAbortedError","message","Error","setFileError","requested","Number","isFinite","Math","floor","workerCount","min","max","length","worker","aborted","shift","Promise","all","Array","from","data","runMergedUploadPool","AbortController","resolve","previous","earlier","parseSSEEvents","chunk","events","blocks","split","filter","Boolean","block","event","line","startsWith","slice","fetchUrlUploadStream","urls","folderId","headers","Authorization","fetch","method","body","processSSEStream","response","reader","getReader","decoder","TextDecoder","streamResult","buffer","done","value","read","decode","stream","lastDoubleNewline","lastIndexOf","completePart","parsed","parse","payload","totalBytes","loadedBytes","errors","console","adminApi","enhanceEndpoints","addTagTypes","injectEndpoints","builder","uploadFiles","mutation","queryFn","totalFiles","getState","admin_app","files","getAll","fileInfoJson","fileInfoArray","map","caption","alternativeText","fileNames","fileSizes","progress","uploadProgress","batch","isMerge","isUploadInFlight","offset","appendUploadFiles","mergedEntries","_","openUploadProgress","invalidatesTags","type","uploadFileSilently","UploadFileError","isServerMessage","retryCancelledFiles","_arg","stateFiles","cancelledIndices","f","uploadFromUrls","getFilenameFromUrl","ok","errorMessage","errorData","json","setUploadFailed","DOMException","query","transformResponse","_result","_error","useUploadFilesMutation","useUploadFileSilentlyMutation","useRetryCancelledFilesMutation","useUploadFromUrlsMutation","useGenerateAiMetadataMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.js","sources":["../../../../admin/src/future/services/assets.ts"],"sourcesContent":["import { encodeSearchQuery } from '../utils/searchQueryParam';\n\nimport { uploadApi } from './api';\n\nimport type {\n GetFiles,\n File,\n Pagination,\n UploadFileInfo,\n AssetWithPopulatedCreatedBy,\n} from '../../../../shared/contracts/files';\n\ninterface GetAssetsParams {\n page?: number;\n pageSize?: number;\n folder?: number | null;\n sort?: string;\n search?: string;\n /** Extra `filters[$and]` entries (list filters), AND-ed with the folder/search scope. */\n filters?: Record<string, unknown>[];\n}\n\ninterface GetAssetsResponse {\n results: File[];\n pagination: Pagination;\n}\n\ninterface UpdateAssetArgs {\n id: number;\n fileInfo: Partial<UploadFileInfo>;\n}\n\ninterface ReplaceAssetArgs {\n id: number;\n // `File` is shadowed in this module by the asset-file contract type; the\n // global browser File is what we need for FormData.\n file: globalThis.File;\n fileInfo?: Partial<UploadFileInfo>;\n}\n\nconst assetsApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n getAssets: builder.query<GetAssetsResponse, GetAssetsParams | void>({\n query: (params = {}) => {\n // `search` is destructured out so it never reaches the server as-is —\n // it is re-added below as the `_q` the API actually understands.\n const { folder, search, filters = [], ...rest } = params as GetAssetsParams;\n\n const queryParams: Record<string, unknown> = { ...rest };\n\n // List filters apply in BOTH modes: search composes with them (a\n // filtered search), only the folder scope is dropped while searching.\n if (search) {\n // Search is global: folder scoping is intentionally dropped so results span the whole library.\n queryParams['_q'] = encodeSearchQuery(search);\n\n if (filters.length > 0) {\n queryParams['filters'] = { $and: [...filters] };\n }\n } else {\n const folderScope =\n folder != null ? { folder: { id: folder } } : { folder: { id: { $null: true } } };\n\n queryParams['filters'] = {\n $and: [folderScope, ...filters],\n };\n }\n\n return {\n url: '/upload/files',\n method: 'GET',\n config: { params: queryParams },\n };\n },\n transformResponse: (response: GetFiles.Response['data']) => response,\n providesTags: (result) =>\n result\n ? [\n ...result.results.map(({ id }) => ({ type: 'Asset' as const, id })),\n { type: 'Asset', id: 'LIST' },\n ]\n : [{ type: 'Asset', id: 'LIST' }],\n }),\n getAsset: builder.query<AssetWithPopulatedCreatedBy, number>({\n query: (id) => ({\n url: `/upload/files/${id}`,\n method: 'GET',\n }),\n providesTags: (_result, _error, id) => [{ type: 'Asset' as const, id }],\n }),\n /**\n * Update the editable metadata of an existing asset, through\n * `PUT /upload/files/<id>` (`admin-upload.updateFileInfo`).\n */\n updateAsset: builder.mutation<AssetWithPopulatedCreatedBy, UpdateAssetArgs>({\n query: ({ id, fileInfo }) => {\n const formData = new FormData();\n formData.append('fileInfo', JSON.stringify(fileInfo));\n\n return {\n url: `/upload/files/${id}`,\n method: 'PUT',\n data: formData,\n };\n },\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n // The Location select routes a folder move through this mutation, which\n // changes both folders' counts — refresh the folder header count.\n { type: 'Folder' as const, id: 'LIST' },\n ],\n }),\n /**\n * Replace the binary content of an existing asset, through\n * `POST /upload/files/<id>/replace` (`admin-upload.replaceFile`) with a\n * multipart body. Uses the standard axios baseQuery (no streaming) since we\n * only ever replace one file at a time and don't need per-byte progress here.\n */\n replaceAsset: builder.mutation<AssetWithPopulatedCreatedBy, ReplaceAssetArgs>({\n query: ({ id, file, fileInfo }) => {\n const formData = new FormData();\n formData.append('files', file);\n if (fileInfo) {\n formData.append('fileInfo', JSON.stringify(fileInfo));\n }\n return {\n url: `/upload/files/${id}/replace`,\n method: 'POST',\n data: formData,\n };\n },\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n ],\n }),\n /**\n * Permanently delete an asset by id. Hits the same endpoint as the legacy\n * `useRemoveAsset` hook so server behaviour is unchanged.\n */\n deleteAsset: builder.mutation<unknown, number>({\n query: (id) => ({\n url: `/upload/files/${id}`,\n method: 'DELETE',\n }),\n invalidatesTags: (_result, _error, id) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n // Refresh the folder header count — deleting an asset changes it.\n { type: 'Folder' as const, id: 'LIST' },\n ],\n }),\n /**\n * Permanently delete several assets and/or folders in one request. Same\n * endpoint as the legacy bulk remove (`POST /upload/actions/bulk-delete`,\n * handled by `admin-folder-file.deleteMany`) so server behaviour is\n * unchanged — folder deletion cascades to everything inside.\n */\n bulkDeleteItems: builder.mutation<unknown, { fileIds: number[]; folderIds: number[] }>({\n query: ({ fileIds, folderIds }) => ({\n url: '/upload/actions/bulk-delete',\n method: 'POST',\n data: { fileIds, folderIds },\n }),\n invalidatesTags: [\n { type: 'Asset' as const, id: 'LIST' },\n { type: 'Folder' as const, id: 'LIST' },\n // The sidebar FolderTree reads /upload/folder-structure, which carries\n // its own tag — without it, deleted folders linger in the tree.\n { type: 'Folder' as const, id: 'STRUCTURE' },\n ],\n }),\n }),\n});\n\nexport const {\n useGetAssetsQuery,\n useGetAssetQuery,\n useUpdateAssetMutation,\n useReplaceAssetMutation,\n useDeleteAssetMutation,\n useBulkDeleteItemsMutation,\n} = assetsApi;\n\n/**\n * `generateAiMetadata` is defined in `./api` (the upload flows dispatch it directly\n * after each file completes, and this module imports from there) — re-exported here\n * so asset components keep a single import site for asset-related hooks.\n */\nexport { useGenerateAiMetadataMutation } from './api';\n"],"names":["assetsApi","uploadApi","injectEndpoints","endpoints","builder","getAssets","query","params","folder","search","filters","rest","queryParams","encodeSearchQuery","length","$and","folderScope","id","$null","url","method","config","transformResponse","response","providesTags","result","results","map","type","getAsset","_result","_error","updateAsset","mutation","fileInfo","formData","FormData","append","JSON","stringify","data","invalidatesTags","replaceAsset","file","deleteAsset","bulkDeleteItems","fileIds","folderIds","useGetAssetsQuery","useGetAssetQuery","useUpdateAssetMutation","useReplaceAssetMutation","useDeleteAssetMutation","useBulkDeleteItemsMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"assets.mjs","sources":["../../../../admin/src/future/services/assets.ts"],"sourcesContent":["import { encodeSearchQuery } from '../utils/searchQueryParam';\n\nimport { uploadApi } from './api';\n\nimport type {\n GetFiles,\n File,\n Pagination,\n UploadFileInfo,\n AssetWithPopulatedCreatedBy,\n} from '../../../../shared/contracts/files';\n\ninterface GetAssetsParams {\n page?: number;\n pageSize?: number;\n folder?: number | null;\n sort?: string;\n search?: string;\n /** Extra `filters[$and]` entries (list filters), AND-ed with the folder/search scope. */\n filters?: Record<string, unknown>[];\n}\n\ninterface GetAssetsResponse {\n results: File[];\n pagination: Pagination;\n}\n\ninterface UpdateAssetArgs {\n id: number;\n fileInfo: Partial<UploadFileInfo>;\n}\n\ninterface ReplaceAssetArgs {\n id: number;\n // `File` is shadowed in this module by the asset-file contract type; the\n // global browser File is what we need for FormData.\n file: globalThis.File;\n fileInfo?: Partial<UploadFileInfo>;\n}\n\nconst assetsApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n getAssets: builder.query<GetAssetsResponse, GetAssetsParams | void>({\n query: (params = {}) => {\n // `search` is destructured out so it never reaches the server as-is —\n // it is re-added below as the `_q` the API actually understands.\n const { folder, search, filters = [], ...rest } = params as GetAssetsParams;\n\n const queryParams: Record<string, unknown> = { ...rest };\n\n // List filters apply in BOTH modes: search composes with them (a\n // filtered search), only the folder scope is dropped while searching.\n if (search) {\n // Search is global: folder scoping is intentionally dropped so results span the whole library.\n queryParams['_q'] = encodeSearchQuery(search);\n\n if (filters.length > 0) {\n queryParams['filters'] = { $and: [...filters] };\n }\n } else {\n const folderScope =\n folder != null ? { folder: { id: folder } } : { folder: { id: { $null: true } } };\n\n queryParams['filters'] = {\n $and: [folderScope, ...filters],\n };\n }\n\n return {\n url: '/upload/files',\n method: 'GET',\n config: { params: queryParams },\n };\n },\n transformResponse: (response: GetFiles.Response['data']) => response,\n providesTags: (result) =>\n result\n ? [\n ...result.results.map(({ id }) => ({ type: 'Asset' as const, id })),\n { type: 'Asset', id: 'LIST' },\n ]\n : [{ type: 'Asset', id: 'LIST' }],\n }),\n getAsset: builder.query<AssetWithPopulatedCreatedBy, number>({\n query: (id) => ({\n url: `/upload/files/${id}`,\n method: 'GET',\n }),\n providesTags: (_result, _error, id) => [{ type: 'Asset' as const, id }],\n }),\n /**\n * Update the editable metadata of an existing asset, through\n * `PUT /upload/files/<id>` (`admin-upload.updateFileInfo`).\n */\n updateAsset: builder.mutation<AssetWithPopulatedCreatedBy, UpdateAssetArgs>({\n query: ({ id, fileInfo }) => {\n const formData = new FormData();\n formData.append('fileInfo', JSON.stringify(fileInfo));\n\n return {\n url: `/upload/files/${id}`,\n method: 'PUT',\n data: formData,\n };\n },\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n // The Location select routes a folder move through this mutation, which\n // changes both folders' counts — refresh the folder header count.\n { type: 'Folder' as const, id: 'LIST' },\n ],\n }),\n /**\n * Replace the binary content of an existing asset, through\n * `POST /upload/files/<id>/replace` (`admin-upload.replaceFile`) with a\n * multipart body. Uses the standard axios baseQuery (no streaming) since we\n * only ever replace one file at a time and don't need per-byte progress here.\n */\n replaceAsset: builder.mutation<AssetWithPopulatedCreatedBy, ReplaceAssetArgs>({\n query: ({ id, file, fileInfo }) => {\n const formData = new FormData();\n formData.append('files', file);\n if (fileInfo) {\n formData.append('fileInfo', JSON.stringify(fileInfo));\n }\n return {\n url: `/upload/files/${id}/replace`,\n method: 'POST',\n data: formData,\n };\n },\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n ],\n }),\n /**\n * Permanently delete an asset by id. Hits the same endpoint as the legacy\n * `useRemoveAsset` hook so server behaviour is unchanged.\n */\n deleteAsset: builder.mutation<unknown, number>({\n query: (id) => ({\n url: `/upload/files/${id}`,\n method: 'DELETE',\n }),\n invalidatesTags: (_result, _error, id) => [\n { type: 'Asset' as const, id },\n { type: 'Asset' as const, id: 'LIST' },\n // Refresh the folder header count — deleting an asset changes it.\n { type: 'Folder' as const, id: 'LIST' },\n ],\n }),\n /**\n * Permanently delete several assets and/or folders in one request. Same\n * endpoint as the legacy bulk remove (`POST /upload/actions/bulk-delete`,\n * handled by `admin-folder-file.deleteMany`) so server behaviour is\n * unchanged — folder deletion cascades to everything inside.\n */\n bulkDeleteItems: builder.mutation<unknown, { fileIds: number[]; folderIds: number[] }>({\n query: ({ fileIds, folderIds }) => ({\n url: '/upload/actions/bulk-delete',\n method: 'POST',\n data: { fileIds, folderIds },\n }),\n invalidatesTags: [\n { type: 'Asset' as const, id: 'LIST' },\n { type: 'Folder' as const, id: 'LIST' },\n // The sidebar FolderTree reads /upload/folder-structure, which carries\n // its own tag — without it, deleted folders linger in the tree.\n { type: 'Folder' as const, id: 'STRUCTURE' },\n ],\n }),\n }),\n});\n\nexport const {\n useGetAssetsQuery,\n useGetAssetQuery,\n useUpdateAssetMutation,\n useReplaceAssetMutation,\n useDeleteAssetMutation,\n useBulkDeleteItemsMutation,\n} = assetsApi;\n\n/**\n * `generateAiMetadata` is defined in `./api` (the upload flows dispatch it directly\n * after each file completes, and this module imports from there) — re-exported here\n * so asset components keep a single import site for asset-related hooks.\n */\nexport { useGenerateAiMetadataMutation } from './api';\n"],"names":["assetsApi","uploadApi","injectEndpoints","endpoints","builder","getAssets","query","params","folder","search","filters","rest","queryParams","encodeSearchQuery","length","$and","folderScope","id","$null","url","method","config","transformResponse","response","providesTags","result","results","map","type","getAsset","_result","_error","updateAsset","mutation","fileInfo","formData","FormData","append","JSON","stringify","data","invalidatesTags","replaceAsset","file","deleteAsset","bulkDeleteItems","fileIds","folderIds","useGetAssetsQuery","useGetAssetQuery","useUpdateAssetMutation","useReplaceAssetMutation","useDeleteAssetMutation","useBulkDeleteItemsMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"folders.js","sources":["../../../../admin/src/future/services/folders.ts"],"sourcesContent":["import { encodeSearchQuery } from '../utils/searchQueryParam';\n\nimport { uploadApi } from './api';\n\nimport type {\n Folder,\n FolderNode,\n CreateFolders,\n GetFolder,\n GetFolders,\n GetFolderStructure,\n BulkMoveFolders,\n UpdateFolder,\n} from '../../../../shared/contracts/folders';\n\nexport type FolderWithCounts = Omit<Folder, 'children' | 'files'> & {\n children?: { count: number };\n files?: { count: number };\n};\n\ninterface GetFoldersParams {\n parentId?: number | null;\n /** Comma-separated rules, e.g. `updatedAt:DESC,name:ASC`. Defaults to alphabetical. */\n sort?: string;\n search?: string;\n /** Extra `filters[$and]` entries (list filters), AND-ed with the parent/search scope. */\n filters?: Record<string, unknown>[];\n}\n\ninterface BulkMoveParams {\n fileIds?: number[];\n folderIds?: number[];\n /** `null` moves the items to the root of the Media Library. */\n destinationFolderId: number | null;\n}\n\ntype DataEnvelope<T> = {\n data: T;\n};\n\nconst isDataEnvelope = <T>(response: T | DataEnvelope<T>): response is DataEnvelope<T> =>\n typeof response === 'object' && response !== null && 'data' in response;\n\nconst unwrapData = <T>(response: T | DataEnvelope<T>): T =>\n isDataEnvelope(response) ? response.data : response;\n\nconst foldersApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n getFolders: builder.query<Folder[], GetFoldersParams | void>({\n query: (params = {}) => {\n const { parentId, sort, search, filters = [] } = params as GetFoldersParams;\n\n const queryParams: Record<string, unknown> = {\n // Default matches sidebar FolderTree order (server getStructure uses sortBy('name')).\n sort: sort ?? 'name:ASC',\n populate: { parent: true },\n };\n\n // List filters (dates) apply in BOTH modes — search composes with them,\n // only the parent scope is dropped while searching.\n if (search) {\n // Search is global: the parent filter is dropped so matching folders\n // anywhere in the library surface. The endpoint is unpaginated — it\n // returns every match — so callers can treat the array length as the\n // true total. Bounding it is a separate decision.\n queryParams['_q'] = encodeSearchQuery(search);\n\n if (filters.length > 0) {\n queryParams['filters'] = { $and: [...filters] };\n }\n } else {\n const parentScope =\n parentId != null ? { parent: { id: parentId } } : { parent: { id: { $null: true } } };\n\n queryParams['filters'] = {\n $and: [parentScope, ...filters],\n };\n }\n\n return {\n url: '/upload/folders',\n method: 'GET',\n config: { params: queryParams },\n };\n },\n transformResponse: (response: GetFolders.Response['data']) =>\n unwrapData<GetFolders.Response['data']>(response),\n providesTags: (results) => {\n if (results) {\n return [\n ...results.map(({ id }) => ({ type: 'Folder' as const, id })),\n { type: 'Folder', id: 'LIST' },\n ];\n }\n return [{ type: 'Folder', id: 'LIST' }];\n },\n }),\n createFolder: builder.mutation<CreateFolders.Response['data'], CreateFolders.Request['body']>({\n query: (body) => ({\n url: '/upload/folders',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: CreateFolders.Response) => response.data,\n invalidatesTags: [\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n updateFolder: builder.mutation<\n UpdateFolder.Response['data'],\n { id: number } & UpdateFolder.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/upload/folders/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: UpdateFolder.Response) => response.data,\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Folder', id },\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n /**\n * Hierarchical folder tree used by the FolderTree sidebar. Returned as a\n * single nested array — the server walks the folders table once and\n * assembles parent/child relationships.\n *\n * TODO: filter results like `admin-folder.find` for folder-scoped roles\n * (v1 returns all folders; relies on global `plugin::upload.read`).\n */\n getFolderStructure: builder.query<FolderNode[], void>({\n query: () => ({\n url: '/upload/folder-structure',\n method: 'GET',\n }),\n // TODO: align GetFolderStructure contract with the real /upload/folder-structure\n // envelope and drop this defensive unwrap (data[] vs { data: [] }).\n transformResponse: (response: GetFolderStructure.Response['data']) =>\n ((response as unknown as { data: FolderNode[] })?.data ??\n (response as unknown as FolderNode[]) ??\n []) as FolderNode[],\n providesTags: [{ type: 'Folder', id: 'STRUCTURE' }],\n }),\n /**\n * Flat list of every folder, used to populate the \"Location\" select in the\n * asset details drawer. No parent filter — we want the entire tree in one\n * query so the select can render any destination folder.\n */\n getAllFolders: builder.query<Folder[], void>({\n query: () => ({\n url: '/upload/folders',\n method: 'GET',\n }),\n transformResponse: (response: GetFolders.Response['data']) =>\n unwrapData<GetFolders.Response['data']>(response ?? []),\n providesTags: (results) => {\n if (results) {\n return [\n ...results.map(({ id }) => ({ type: 'Folder' as const, id })),\n { type: 'Folder' as const, id: 'LIST' },\n ];\n }\n return [{ type: 'Folder' as const, id: 'LIST' }];\n },\n }),\n getFolder: builder.query<FolderWithCounts, { id: number }>({\n query: ({ id }) => ({\n url: `/upload/folders/${id}`,\n method: 'GET',\n config: {\n params: {\n populate: {\n parent: {\n populate: {\n parent: '*',\n },\n },\n children: { count: true },\n files: { count: true },\n },\n },\n },\n }),\n transformResponse: (response: GetFolder.Response) =>\n response.data as unknown as FolderWithCounts,\n // Also carries the LIST tag so a mutation that changes a folder's file\n // count (upload / delete into it) can refresh the header count by\n // invalidating `{ Folder, LIST }`, without needing the folder id at the\n // mutation site (it's buried in the upload FormData / not passed to the\n // delete).\n providesTags: (_result, _error, { id }) => [\n { type: 'Folder', id },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n bulkMove: builder.mutation<BulkMoveFolders.Response['data'], BulkMoveParams>({\n query: ({ fileIds = [], folderIds = [], destinationFolderId }) => ({\n url: '/upload/actions/bulk-move',\n method: 'POST',\n data: { fileIds, folderIds, destinationFolderId },\n }),\n transformResponse: (response: BulkMoveFolders.Response) => response.data,\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n }),\n});\n\nexport const {\n useCreateFolderMutation,\n useUpdateFolderMutation,\n useGetFoldersQuery,\n useGetFolderQuery,\n useGetAllFoldersQuery,\n useGetFolderStructureQuery,\n useBulkMoveMutation,\n} = foldersApi;\n"],"names":["isDataEnvelope","response","unwrapData","data","foldersApi","uploadApi","injectEndpoints","endpoints","builder","getFolders","query","params","parentId","sort","search","filters","queryParams","populate","parent","encodeSearchQuery","length","$and","parentScope","id","$null","url","method","config","transformResponse","providesTags","results","map","type","createFolder","mutation","body","invalidatesTags","updateFolder","_result","_error","getFolderStructure","getAllFolders","getFolder","children","count","files","bulkMove","fileIds","folderIds","destinationFolderId","useCreateFolderMutation","useUpdateFolderMutation","useGetFoldersQuery","useGetFolderQuery","useGetAllFoldersQuery","useGetFolderStructureQuery","useBulkMoveMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"folders.mjs","sources":["../../../../admin/src/future/services/folders.ts"],"sourcesContent":["import { encodeSearchQuery } from '../utils/searchQueryParam';\n\nimport { uploadApi } from './api';\n\nimport type {\n Folder,\n FolderNode,\n CreateFolders,\n GetFolder,\n GetFolders,\n GetFolderStructure,\n BulkMoveFolders,\n UpdateFolder,\n} from '../../../../shared/contracts/folders';\n\nexport type FolderWithCounts = Omit<Folder, 'children' | 'files'> & {\n children?: { count: number };\n files?: { count: number };\n};\n\ninterface GetFoldersParams {\n parentId?: number | null;\n /** Comma-separated rules, e.g. `updatedAt:DESC,name:ASC`. Defaults to alphabetical. */\n sort?: string;\n search?: string;\n /** Extra `filters[$and]` entries (list filters), AND-ed with the parent/search scope. */\n filters?: Record<string, unknown>[];\n}\n\ninterface BulkMoveParams {\n fileIds?: number[];\n folderIds?: number[];\n /** `null` moves the items to the root of the Media Library. */\n destinationFolderId: number | null;\n}\n\ntype DataEnvelope<T> = {\n data: T;\n};\n\nconst isDataEnvelope = <T>(response: T | DataEnvelope<T>): response is DataEnvelope<T> =>\n typeof response === 'object' && response !== null && 'data' in response;\n\nconst unwrapData = <T>(response: T | DataEnvelope<T>): T =>\n isDataEnvelope(response) ? response.data : response;\n\nconst foldersApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n getFolders: builder.query<Folder[], GetFoldersParams | void>({\n query: (params = {}) => {\n const { parentId, sort, search, filters = [] } = params as GetFoldersParams;\n\n const queryParams: Record<string, unknown> = {\n // Default matches sidebar FolderTree order (server getStructure uses sortBy('name')).\n sort: sort ?? 'name:ASC',\n populate: { parent: true },\n };\n\n // List filters (dates) apply in BOTH modes — search composes with them,\n // only the parent scope is dropped while searching.\n if (search) {\n // Search is global: the parent filter is dropped so matching folders\n // anywhere in the library surface. The endpoint is unpaginated — it\n // returns every match — so callers can treat the array length as the\n // true total. Bounding it is a separate decision.\n queryParams['_q'] = encodeSearchQuery(search);\n\n if (filters.length > 0) {\n queryParams['filters'] = { $and: [...filters] };\n }\n } else {\n const parentScope =\n parentId != null ? { parent: { id: parentId } } : { parent: { id: { $null: true } } };\n\n queryParams['filters'] = {\n $and: [parentScope, ...filters],\n };\n }\n\n return {\n url: '/upload/folders',\n method: 'GET',\n config: { params: queryParams },\n };\n },\n transformResponse: (response: GetFolders.Response['data']) =>\n unwrapData<GetFolders.Response['data']>(response),\n providesTags: (results) => {\n if (results) {\n return [\n ...results.map(({ id }) => ({ type: 'Folder' as const, id })),\n { type: 'Folder', id: 'LIST' },\n ];\n }\n return [{ type: 'Folder', id: 'LIST' }];\n },\n }),\n createFolder: builder.mutation<CreateFolders.Response['data'], CreateFolders.Request['body']>({\n query: (body) => ({\n url: '/upload/folders',\n method: 'POST',\n data: body,\n }),\n transformResponse: (response: CreateFolders.Response) => response.data,\n invalidatesTags: [\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n updateFolder: builder.mutation<\n UpdateFolder.Response['data'],\n { id: number } & UpdateFolder.Request['body']\n >({\n query: ({ id, ...body }) => ({\n url: `/upload/folders/${id}`,\n method: 'PUT',\n data: body,\n }),\n transformResponse: (response: UpdateFolder.Response) => response.data,\n invalidatesTags: (_result, _error, { id }) => [\n { type: 'Folder', id },\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n /**\n * Hierarchical folder tree used by the FolderTree sidebar. Returned as a\n * single nested array — the server walks the folders table once and\n * assembles parent/child relationships.\n *\n * TODO: filter results like `admin-folder.find` for folder-scoped roles\n * (v1 returns all folders; relies on global `plugin::upload.read`).\n */\n getFolderStructure: builder.query<FolderNode[], void>({\n query: () => ({\n url: '/upload/folder-structure',\n method: 'GET',\n }),\n // TODO: align GetFolderStructure contract with the real /upload/folder-structure\n // envelope and drop this defensive unwrap (data[] vs { data: [] }).\n transformResponse: (response: GetFolderStructure.Response['data']) =>\n ((response as unknown as { data: FolderNode[] })?.data ??\n (response as unknown as FolderNode[]) ??\n []) as FolderNode[],\n providesTags: [{ type: 'Folder', id: 'STRUCTURE' }],\n }),\n /**\n * Flat list of every folder, used to populate the \"Location\" select in the\n * asset details drawer. No parent filter — we want the entire tree in one\n * query so the select can render any destination folder.\n */\n getAllFolders: builder.query<Folder[], void>({\n query: () => ({\n url: '/upload/folders',\n method: 'GET',\n }),\n transformResponse: (response: GetFolders.Response['data']) =>\n unwrapData<GetFolders.Response['data']>(response ?? []),\n providesTags: (results) => {\n if (results) {\n return [\n ...results.map(({ id }) => ({ type: 'Folder' as const, id })),\n { type: 'Folder' as const, id: 'LIST' },\n ];\n }\n return [{ type: 'Folder' as const, id: 'LIST' }];\n },\n }),\n getFolder: builder.query<FolderWithCounts, { id: number }>({\n query: ({ id }) => ({\n url: `/upload/folders/${id}`,\n method: 'GET',\n config: {\n params: {\n populate: {\n parent: {\n populate: {\n parent: '*',\n },\n },\n children: { count: true },\n files: { count: true },\n },\n },\n },\n }),\n transformResponse: (response: GetFolder.Response) =>\n response.data as unknown as FolderWithCounts,\n // Also carries the LIST tag so a mutation that changes a folder's file\n // count (upload / delete into it) can refresh the header count by\n // invalidating `{ Folder, LIST }`, without needing the folder id at the\n // mutation site (it's buried in the upload FormData / not passed to the\n // delete).\n providesTags: (_result, _error, { id }) => [\n { type: 'Folder', id },\n { type: 'Folder', id: 'LIST' },\n ],\n }),\n bulkMove: builder.mutation<BulkMoveFolders.Response['data'], BulkMoveParams>({\n query: ({ fileIds = [], folderIds = [], destinationFolderId }) => ({\n url: '/upload/actions/bulk-move',\n method: 'POST',\n data: { fileIds, folderIds, destinationFolderId },\n }),\n transformResponse: (response: BulkMoveFolders.Response) => response.data,\n invalidatesTags: [\n { type: 'Asset', id: 'LIST' },\n { type: 'Folder', id: 'LIST' },\n { type: 'Folder', id: 'STRUCTURE' },\n ],\n }),\n }),\n});\n\nexport const {\n useCreateFolderMutation,\n useUpdateFolderMutation,\n useGetFoldersQuery,\n useGetFolderQuery,\n useGetAllFoldersQuery,\n useGetFolderStructureQuery,\n useBulkMoveMutation,\n} = foldersApi;\n"],"names":["isDataEnvelope","response","unwrapData","data","foldersApi","uploadApi","injectEndpoints","endpoints","builder","getFolders","query","params","parentId","sort","search","filters","queryParams","populate","parent","encodeSearchQuery","length","$and","parentScope","id","$null","url","method","config","transformResponse","providesTags","results","map","type","createFolder","mutation","body","invalidatesTags","updateFolder","_result","_error","getFolderStructure","getAllFolders","getFolder","children","count","files","bulkMove","fileIds","folderIds","destinationFolderId","useCreateFolderMutation","useUpdateFolderMutation","useGetFoldersQuery","useGetFolderQuery","useGetAllFoldersQuery","useGetFolderStructureQuery","useBulkMoveMutation"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.js","sources":["../../../../admin/src/future/services/settings.ts"],"sourcesContent":["import { uploadApi } from './api';\n\nimport type { GetSettings } from '../../../../shared/contracts/settings';\n\nconst settingsApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n // Deliberately NOT named `getSettings`. Every plugin's admin API is built on\n // the same shared `adminApi` instance — one endpoint registry keyed by name,\n // under `reducerPath: 'adminApi'` — and `injectEndpoints` silently keeps the\n // FIRST registration of a duplicate name and discards later ones. The i18n\n // plugin already registers a `getSettings`, so a generic name here would,\n // depending on module load order, resolve this hook to i18n's cache entry\n // (`/i18n/settings`) instead of `/upload/settings` — non-deterministically.\n getUploadSettings: builder.query<GetSettings.Response['data'], void>({\n query: () => ({\n url: '/upload/settings',\n method: 'GET',\n }),\n }),\n }),\n});\n\nconst { useGetUploadSettingsQuery } = settingsApi;\n\nexport { useGetUploadSettingsQuery };\n"],"names":["settingsApi","uploadApi","injectEndpoints","endpoints","builder","getUploadSettings","query","url","method","useGetUploadSettingsQuery"],"mappings":";;;;AAIA,MAAMA,WAAAA,GAAcC,aAAAA,CAAUC,eAAe,CAAC;IAC5CC,SAAAA,EAAW,CAACC,WAAa;;;;;;;;YAQvBC,iBAAAA,EAAmBD,OAAAA,CAAQE,KAAK,CAAqC;AACnEA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAAA,EAAK,kBAAA;wBACLC,MAAAA,EAAQ;qBACV;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,yBAAyB,EAAE,GAAGT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"settings.mjs","sources":["../../../../admin/src/future/services/settings.ts"],"sourcesContent":["import { uploadApi } from './api';\n\nimport type { GetSettings } from '../../../../shared/contracts/settings';\n\nconst settingsApi = uploadApi.injectEndpoints({\n endpoints: (builder) => ({\n // Deliberately NOT named `getSettings`. Every plugin's admin API is built on\n // the same shared `adminApi` instance — one endpoint registry keyed by name,\n // under `reducerPath: 'adminApi'` — and `injectEndpoints` silently keeps the\n // FIRST registration of a duplicate name and discards later ones. The i18n\n // plugin already registers a `getSettings`, so a generic name here would,\n // depending on module load order, resolve this hook to i18n's cache entry\n // (`/i18n/settings`) instead of `/upload/settings` — non-deterministically.\n getUploadSettings: builder.query<GetSettings.Response['data'], void>({\n query: () => ({\n url: '/upload/settings',\n method: 'GET',\n }),\n }),\n }),\n});\n\nconst { useGetUploadSettingsQuery } = settingsApi;\n\nexport { useGetUploadSettingsQuery };\n"],"names":["settingsApi","uploadApi","injectEndpoints","endpoints","builder","getUploadSettings","query","url","method","useGetUploadSettingsQuery"],"mappings":";;AAIA,MAAMA,WAAAA,GAAcC,SAAAA,CAAUC,eAAe,CAAC;IAC5CC,SAAAA,EAAW,CAACC,WAAa;;;;;;;;YAQvBC,iBAAAA,EAAmBD,OAAAA,CAAQE,KAAK,CAAqC;AACnEA,gBAAAA,KAAAA,EAAO,KAAO;wBACZC,GAAAA,EAAK,kBAAA;wBACLC,MAAAA,EAAQ;qBACV;AACF,aAAA;SACF;AACF,CAAA,CAAA;AAEA,MAAM,EAAEC,yBAAyB,EAAE,GAAGT;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploadFileViaXHR.js","sources":["../../../../admin/src/future/services/uploadFileViaXHR.ts"],"sourcesContent":["import { attemptTokenRefresh } from '@strapi/admin/strapi-admin';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/**\n * Thrown when an upload is aborted via its `AbortSignal`.\n * Distinct from {@link UploadFileError} so callers can tell cancellation apart\n * from a genuine failure.\n */\nexport class UploadAbortedError extends Error {\n constructor(message = 'Upload aborted') {\n super(message);\n this.name = 'UploadAbortedError';\n }\n}\n\n/**\n * Thrown when an upload fails (non-2xx response, network error, or unparseable body).\n */\nexport class UploadFileError extends Error {\n status?: number;\n\n /**\n * Whether `message` came from the response body. The fallbacks this module\n * invents are hardcoded English; callers with localized text should use theirs.\n */\n isServerMessage: boolean;\n\n constructor(message: string, status?: number, isServerMessage = false) {\n super(message);\n this.name = 'UploadFileError';\n this.status = status;\n this.isServerMessage = isServerMessage;\n }\n}\n\nexport type UploadProgressCallback = (bytes: number, total: number) => void;\n\n/**\n * Uploads a single file via `XMLHttpRequest`, exposing real byte-level upload\n * progress through {@link XMLHttpRequest.upload}'s `progress` event.\n *\n * This is the only place raw XHR lives. `fetch()` is intentionally avoided here\n * because it does not surface upload progress.\n *\n * @param url - The full endpoint URL to POST to.\n * @param token - Admin auth token; the `Authorization` header is only set when present.\n * @param formData - Prebuilt multipart body containing the single file and its `fileInfo`.\n * @param signal - Aborts the in-flight request when triggered.\n * @param onProgress - Called with `(loaded, total)` bytes as the upload progresses.\n * @returns The parsed response body on a 2xx response — a signed `File` by default,\n * or `T` when the endpoint returns a different shape (e.g. an array of files).\n * @throws {UploadAbortedError} When the signal aborts.\n * @throws {UploadFileError} On a non-2xx response or network error.\n */\nconst sendUploadViaXHR = <T>(\n url: string,\n token: string | null | undefined,\n formData: FormData,\n signal: AbortSignal,\n onProgress?: UploadProgressCallback\n): Promise<T> => {\n return new Promise<T>((resolve, reject) => {\n if (signal.aborted) {\n reject(new UploadAbortedError());\n return;\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n\n if (token) {\n xhr.setRequestHeader('Authorization', `Bearer ${token}`);\n }\n\n const handleAbort = () => xhr.abort();\n signal.addEventListener('abort', handleAbort);\n\n const cleanup = () => signal.removeEventListener('abort', handleAbort);\n\n if (onProgress) {\n xhr.upload.onprogress = (event: ProgressEvent) => {\n if (event.lengthComputable) {\n onProgress(event.loaded, event.total);\n }\n };\n }\n\n xhr.onload = () => {\n cleanup();\n\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve(JSON.parse(xhr.responseText) as T);\n } catch {\n reject(new UploadFileError('Failed to parse upload response'));\n }\n return;\n }\n\n let message = `Upload failed with status ${xhr.status}`;\n let isServerMessage = false;\n try {\n const parsed = JSON.parse(xhr.responseText);\n const serverMessage = parsed?.error?.message || parsed?.message;\n if (serverMessage) {\n message = serverMessage;\n isServerMessage = true;\n }\n } catch {\n // Keep the default status-based message.\n }\n reject(new UploadFileError(message, xhr.status, isServerMessage));\n };\n\n xhr.onerror = () => {\n cleanup();\n reject(new UploadFileError('Network error occurred'));\n };\n\n xhr.onabort = () => {\n cleanup();\n reject(new UploadAbortedError());\n };\n\n xhr.send(formData);\n });\n};\n\nexport const uploadFileViaXHR = async <T = File>(\n url: string,\n token: string | null | undefined,\n formData: FormData,\n signal: AbortSignal,\n onProgress?: UploadProgressCallback\n): Promise<T> => {\n try {\n return await sendUploadViaXHR<T>(url, token, formData, signal, onProgress);\n } catch (error) {\n if (!(error instanceof UploadFileError) || error.status !== 401) {\n throw error;\n }\n\n try {\n const refreshedToken = await attemptTokenRefresh();\n\n return await sendUploadViaXHR<T>(url, refreshedToken, formData, signal, onProgress);\n } catch (refreshError) {\n if (refreshError instanceof UploadFileError) {\n throw refreshError;\n }\n\n throw error;\n }\n }\n};\n"],"names":["UploadAbortedError","Error","message","name","UploadFileError","status","isServerMessage","sendUploadViaXHR","url","token","formData","signal","onProgress","Promise","resolve","reject","aborted","xhr","XMLHttpRequest","open","setRequestHeader","handleAbort","abort","addEventListener","cleanup","removeEventListener","upload","onprogress","event","lengthComputable","loaded","total","onload","JSON","parse","responseText","parsed","serverMessage","error","onerror","onabort","send","uploadFileViaXHR","refreshedToken","attemptTokenRefresh","refreshError"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploadFileViaXHR.mjs","sources":["../../../../admin/src/future/services/uploadFileViaXHR.ts"],"sourcesContent":["import { attemptTokenRefresh } from '@strapi/admin/strapi-admin';\n\nimport type { File } from '../../../../shared/contracts/files';\n\n/**\n * Thrown when an upload is aborted via its `AbortSignal`.\n * Distinct from {@link UploadFileError} so callers can tell cancellation apart\n * from a genuine failure.\n */\nexport class UploadAbortedError extends Error {\n constructor(message = 'Upload aborted') {\n super(message);\n this.name = 'UploadAbortedError';\n }\n}\n\n/**\n * Thrown when an upload fails (non-2xx response, network error, or unparseable body).\n */\nexport class UploadFileError extends Error {\n status?: number;\n\n /**\n * Whether `message` came from the response body. The fallbacks this module\n * invents are hardcoded English; callers with localized text should use theirs.\n */\n isServerMessage: boolean;\n\n constructor(message: string, status?: number, isServerMessage = false) {\n super(message);\n this.name = 'UploadFileError';\n this.status = status;\n this.isServerMessage = isServerMessage;\n }\n}\n\nexport type UploadProgressCallback = (bytes: number, total: number) => void;\n\n/**\n * Uploads a single file via `XMLHttpRequest`, exposing real byte-level upload\n * progress through {@link XMLHttpRequest.upload}'s `progress` event.\n *\n * This is the only place raw XHR lives. `fetch()` is intentionally avoided here\n * because it does not surface upload progress.\n *\n * @param url - The full endpoint URL to POST to.\n * @param token - Admin auth token; the `Authorization` header is only set when present.\n * @param formData - Prebuilt multipart body containing the single file and its `fileInfo`.\n * @param signal - Aborts the in-flight request when triggered.\n * @param onProgress - Called with `(loaded, total)` bytes as the upload progresses.\n * @returns The parsed response body on a 2xx response — a signed `File` by default,\n * or `T` when the endpoint returns a different shape (e.g. an array of files).\n * @throws {UploadAbortedError} When the signal aborts.\n * @throws {UploadFileError} On a non-2xx response or network error.\n */\nconst sendUploadViaXHR = <T>(\n url: string,\n token: string | null | undefined,\n formData: FormData,\n signal: AbortSignal,\n onProgress?: UploadProgressCallback\n): Promise<T> => {\n return new Promise<T>((resolve, reject) => {\n if (signal.aborted) {\n reject(new UploadAbortedError());\n return;\n }\n\n const xhr = new XMLHttpRequest();\n xhr.open('POST', url);\n\n if (token) {\n xhr.setRequestHeader('Authorization', `Bearer ${token}`);\n }\n\n const handleAbort = () => xhr.abort();\n signal.addEventListener('abort', handleAbort);\n\n const cleanup = () => signal.removeEventListener('abort', handleAbort);\n\n if (onProgress) {\n xhr.upload.onprogress = (event: ProgressEvent) => {\n if (event.lengthComputable) {\n onProgress(event.loaded, event.total);\n }\n };\n }\n\n xhr.onload = () => {\n cleanup();\n\n if (xhr.status >= 200 && xhr.status < 300) {\n try {\n resolve(JSON.parse(xhr.responseText) as T);\n } catch {\n reject(new UploadFileError('Failed to parse upload response'));\n }\n return;\n }\n\n let message = `Upload failed with status ${xhr.status}`;\n let isServerMessage = false;\n try {\n const parsed = JSON.parse(xhr.responseText);\n const serverMessage = parsed?.error?.message || parsed?.message;\n if (serverMessage) {\n message = serverMessage;\n isServerMessage = true;\n }\n } catch {\n // Keep the default status-based message.\n }\n reject(new UploadFileError(message, xhr.status, isServerMessage));\n };\n\n xhr.onerror = () => {\n cleanup();\n reject(new UploadFileError('Network error occurred'));\n };\n\n xhr.onabort = () => {\n cleanup();\n reject(new UploadAbortedError());\n };\n\n xhr.send(formData);\n });\n};\n\nexport const uploadFileViaXHR = async <T = File>(\n url: string,\n token: string | null | undefined,\n formData: FormData,\n signal: AbortSignal,\n onProgress?: UploadProgressCallback\n): Promise<T> => {\n try {\n return await sendUploadViaXHR<T>(url, token, formData, signal, onProgress);\n } catch (error) {\n if (!(error instanceof UploadFileError) || error.status !== 401) {\n throw error;\n }\n\n try {\n const refreshedToken = await attemptTokenRefresh();\n\n return await sendUploadViaXHR<T>(url, refreshedToken, formData, signal, onProgress);\n } catch (refreshError) {\n if (refreshError instanceof UploadFileError) {\n throw refreshError;\n }\n\n throw error;\n }\n }\n};\n"],"names":["UploadAbortedError","Error","message","name","UploadFileError","status","isServerMessage","sendUploadViaXHR","url","token","formData","signal","onProgress","Promise","resolve","reject","aborted","xhr","XMLHttpRequest","open","setRequestHeader","handleAbort","abort","addEventListener","cleanup","removeEventListener","upload","onprogress","event","lengthComputable","loaded","total","onload","JSON","parse","responseText","parsed","serverMessage","error","onerror","onabort","send","uploadFileViaXHR","refreshedToken","attemptTokenRefresh","refreshError"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sources":["../../../../admin/src/future/store/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport type { RootState } from './uploadProgress';\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;;;AAKA,MAAMA,gBAAAA,GAAmCC;AACzC,MAAMC,gBAAAA,GAAoDC;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.mjs","sources":["../../../../admin/src/future/store/hooks.ts"],"sourcesContent":["import { Dispatch } from '@reduxjs/toolkit';\nimport { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\n\nimport type { RootState } from './uploadProgress';\n\nconst useTypedDispatch: () => Dispatch = useDispatch;\nconst useTypedSelector: TypedUseSelectorHook<RootState> = useSelector;\n\nexport { useTypedSelector, useTypedDispatch };\n"],"names":["useTypedDispatch","useDispatch","useTypedSelector","useSelector"],"mappings":";;AAKA,MAAMA,gBAAAA,GAAmCC;AACzC,MAAMC,gBAAAA,GAAoDC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"uploadProgress.js","sources":["../../../../admin/src/future/store/uploadProgress.ts"],"sourcesContent":["import { createSelector, createSlice, type PayloadAction } from '@reduxjs/toolkit';\n\nimport type { File } from '../../../../shared/contracts/files';\n\nexport interface FileUploadError {\n name: string;\n message: string;\n}\n\nexport type FileProgressStatus = 'pending' | 'uploading' | 'complete' | 'error' | 'cancelled';\n\n/**\n * AI metadata generation phase for a single row, tracked independently from the\n * upload status: a metadata failure never turns a successful upload into an error.\n * `undefined` means the row has no metadata phase at all, i.e. AI metadata is\n * disabled — non-images do get a phase and come back `skipped` from the server.\n */\nexport type FileMetadataStatus = 'generating' | 'generated' | 'skipped' | 'failed';\n\nexport type FileMetadataResultStatus = Exclude<FileMetadataStatus, 'generating'>;\n\nexport interface FileProgress {\n name: string;\n index: number;\n status: FileProgressStatus;\n size: number;\n uploadedBytes: number;\n file?: File;\n /** When the server confirmed the upload. Set with the row's asset. */\n completedAt?: number;\n error?: string;\n metadataStatus?: FileMetadataStatus;\n}\n\nexport interface UploadProgressState {\n isVisible: boolean;\n isMinimized: boolean;\n totalFiles: number;\n files: FileProgress[];\n errors: FileUploadError[];\n uploadId: number;\n /**\n * Whether every row's size was known when the batch opened (the direct-file flow), so\n * the byte-weighted aggregate is meaningful. The URL flow learns sizes one row at a time.\n */\n reportsByteProgress: boolean;\n}\n\nexport interface RootState {\n uploadProgress: UploadProgressState;\n}\n\nconst initialState: UploadProgressState = {\n isVisible: false,\n isMinimized: false,\n totalFiles: 0,\n files: [],\n errors: [],\n uploadId: 0,\n reportsByteProgress: false,\n};\n\nconst uploadProgressSlice = createSlice({\n name: 'uploadProgress',\n initialState,\n reducers: {\n openUploadProgress(\n state,\n action: PayloadAction<{\n totalFiles: number;\n fileNames: string[];\n fileSizes?: number[];\n }>\n ) {\n state.isVisible = true;\n state.isMinimized = false;\n\n // Create pending files for upload\n const pendingFiles: FileProgress[] = action.payload.fileNames.map((name, index) => ({\n name,\n index,\n status: 'pending' as FileProgressStatus,\n size: action.payload.fileSizes?.[index] ?? 0,\n uploadedBytes: 0,\n }));\n\n state.files = pendingFiles;\n state.totalFiles = action.payload.totalFiles;\n state.errors = [];\n state.uploadId += 1;\n // Known sizes == the direct-file flow == the flow that streams bytes.\n state.reportsByteProgress = action.payload.fileSizes !== undefined;\n },\n /**\n * Rows for a second drop, joined to the batch already uploading. Indices\n * continue from the current length so the earlier drop's in-flight uploads\n * keep addressing their own rows.\n */\n appendUploadFiles(\n state,\n action: PayloadAction<{\n uploadId: number;\n fileNames: string[];\n fileSizes?: number[];\n }>\n ) {\n if (action.payload.uploadId !== state.uploadId) {\n return;\n }\n\n const offset = state.files.length;\n\n state.files.push(\n ...action.payload.fileNames.map((name, i) => ({\n name,\n index: offset + i,\n status: 'pending' as FileProgressStatus,\n size: action.payload.fileSizes?.[i] ?? 0,\n uploadedBytes: 0,\n }))\n );\n\n state.totalFiles += action.payload.fileNames.length;\n // The dialog may have been dismissed while the first drop was running.\n state.isVisible = true;\n state.isMinimized = false;\n },\n setFileUploading(\n state,\n action: PayloadAction<{ name: string; index: number; size: number; uploadId: number }>\n ) {\n const { index, size, uploadId } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n if (state.files[index]) {\n state.files[index].status = 'uploading';\n state.files[index].size = size;\n }\n },\n /**\n * `size` is optional and only sent by the URL flow, which learns the size from the\n * same server event that carries the first byte count — the row was created with\n * `size: 0`, and bytes clamped against a zero size would all read as zero. The\n * direct-file flow already knows the size up front and omits it.\n */\n setFileProgress(\n state,\n action: PayloadAction<{ index: number; bytes: number; uploadId: number; size?: number }>\n ) {\n const { index, bytes, size, uploadId } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n const file = state.files[index];\n if (file) {\n if (size !== undefined && file.size === 0) {\n file.size = size;\n }\n // Clamp to the known file size so the aggregate can never exceed 100%.\n file.uploadedBytes = Math.min(bytes, file.size);\n }\n },\n setFileComplete(\n state,\n action: PayloadAction<{ index: number; file: File; uploadId: number; completedAt: number }>\n ) {\n const { index, file, uploadId, completedAt } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n if (state.files[index]) {\n state.files[index].status = 'complete';\n state.files[index].file = file;\n state.files[index].completedAt = completedAt;\n // Reflect completion in the aggregate even if the final progress event was throttled.\n state.files[index].uploadedBytes = state.files[index].size;\n }\n },\n setFileError(\n state,\n action: PayloadAction<{ index: number; name: string; message: string; uploadId: number }>\n ) {\n const { index, name, message, uploadId } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n if (state.files[index]) {\n state.files[index].status = 'error';\n state.files[index].error = message;\n }\n state.errors = [...state.errors, { name, message }];\n },\n /**\n * Metadata generation started for a row.\n *\n * Metadata requests are fired-and-forgotten, so their callbacks can land after\n * a new batch has replaced `files` and reused the same row indices. Every\n * metadata payload therefore carries the `uploadId` it was fired for, and stale\n * ones are dropped instead of writing onto another batch's row.\n */\n setFileMetadataGenerating(state, action: PayloadAction<{ index: number; uploadId: number }>) {\n const { index, uploadId } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n if (state.files[index]) {\n state.files[index].metadataStatus = 'generating';\n }\n },\n /**\n * Terminal metadata outcome for a row. Never touches `status`/`error`/`errors`:\n * the upload itself already succeeded regardless of how generation went.\n */\n setFileMetadataResult(\n state,\n action: PayloadAction<{\n index: number;\n uploadId: number;\n status: FileMetadataResultStatus;\n }>\n ) {\n const { index, uploadId, status } = action.payload;\n if (uploadId !== state.uploadId) {\n return;\n }\n if (state.files[index]) {\n state.files[index].metadataStatus = status;\n }\n },\n addUploadErrors(state, action: PayloadAction<FileUploadError[]>) {\n state.errors = [...state.errors, ...action.payload];\n },\n closeUploadProgress(state) {\n state.isVisible = false;\n state.isMinimized = false;\n state.totalFiles = 0;\n state.files = [];\n state.errors = [];\n state.reportsByteProgress = false;\n },\n toggleMinimize(state) {\n state.isMinimized = !state.isMinimized;\n },\n cancelUpload(state) {\n // Mark all pending and uploading files as cancelled\n state.files = state.files.map((file) => {\n if (file.status === 'pending' || file.status === 'uploading') {\n return { ...file, status: 'cancelled' as FileProgressStatus };\n }\n return file;\n });\n },\n setUploadFailed(state, action: PayloadAction<{ message: string }>) {\n // Mark all pending and uploading files as errored when a catastrophic failure occurs\n state.files = state.files.map((file) => {\n if (file.status === 'pending' || file.status === 'uploading') {\n return {\n ...file,\n status: 'error' as FileProgressStatus,\n error: action.payload.message,\n };\n }\n return file;\n });\n state.errors = [...state.errors, { name: 'Upload Error', message: action.payload.message }];\n },\n retryCancelledFiles(state) {\n // Reset all cancelled files back to pending for retry\n state.files = state.files.map((file) => {\n if (file.status === 'cancelled') {\n return {\n ...file,\n status: 'pending' as FileProgressStatus,\n uploadedBytes: 0,\n // A retried row goes through the metadata phase again from scratch.\n metadataStatus: undefined,\n };\n }\n return file;\n });\n },\n },\n});\n\n/**\n * Assets whose own upload has already finished, newest batch only.\n *\n * The list behind the upload dialog uses these to show each asset the moment it\n * lands, instead of waiting for the batch mutation to invalidate the cache. Rows\n * only carry a `file` once the server has created it, so every entry here is a\n * real, persisted asset.\n */\nconst NO_FILES: FileProgress[] = [];\n\n/** An uploaded asset, with the moment the server confirmed it. */\nexport interface CompletedUpload {\n asset: File;\n completedAt: number;\n}\n\nexport const selectCompletedUploads = createSelector(\n // The plugin registers this slice in `register()`, so a host that has not\n // reached that point has no upload state — and therefore nothing to place.\n (state: Partial<RootState>) => state.uploadProgress?.files ?? NO_FILES,\n (files): CompletedUpload[] =>\n files.reduce<CompletedUpload[]>((completed, row) => {\n if (row.status === 'complete' && row.file && row.completedAt !== undefined) {\n completed.push({ asset: row.file, completedAt: row.completedAt });\n }\n\n return completed;\n }, [])\n);\n\n/**\n * Byte-weighted aggregate progress across the whole batch: `sum(uploadedBytes) / sum(size)`.\n *\n * Falls back to count-based progress (settled files / total files) when all sizes are\n * zero — e.g. URL-flow rows where the file size is unknown up front.\n */\nexport const selectAggregateProgress = createSelector(\n (state: RootState) => state.uploadProgress.files,\n (files): number => {\n if (files.length === 0) return 0;\n\n const totalSize = files.reduce((sum, f) => sum + f.size, 0);\n\n if (totalSize === 0) {\n const settled = files.filter(\n (f) => f.status === 'complete' || f.status === 'error' || f.status === 'cancelled'\n ).length;\n return Math.round((settled / files.length) * 100);\n }\n\n const uploadedBytes = files.reduce((sum, f) => sum + f.uploadedBytes, 0);\n return Math.round((uploadedBytes / totalSize) * 100);\n }\n);\n\n/**\n * Whether to show byte-weighted `selectAggregateProgress` rather than `selectCountBasedProgress`.\n *\n * Only the flag: byte-weighting needs every size up front. A URL batch learns sizes one row\n * at a time, so weighting over the sizes known so far makes the header jump backwards at\n * every file boundary.\n */\nexport const selectReportsByteProgress = createSelector(\n (state: RootState) => state.uploadProgress.reportsByteProgress,\n (reportsByteProgress): boolean => reportsByteProgress\n);\n\n/**\n * Row-weighted progress for a batch whose sizes are not known up front (the URL flow).\n * Each row is worth `1 / total`: settled rows count fully and an in-flight row contributes\n * `uploadedBytes / size` once it reports bytes, so a multi-URL batch climbs smoothly to\n * 33 → 67 → 100 and never moves backwards.\n *\n * Returns `null` until something has moved — 0% is the frozen signal this flow exists to\n * remove, so the header stays indeterminate until there's real progress.\n */\nexport const selectCountBasedProgress = createSelector(\n (state: RootState) => state.uploadProgress.files,\n (files): number | null => {\n const done = files.reduce((sum, f) => {\n if (f.status === 'complete' || f.status === 'error' || f.status === 'cancelled') {\n return sum + 1;\n }\n return f.size > 0 ? sum + Math.min(f.uploadedBytes / f.size, 1) : sum;\n }, 0);\n\n if (done === 0) {\n return null;\n }\n\n return Math.round((done / files.length) * 100);\n }\n);\n\n/**\n * Count-based metadata progress across the whole batch: `settled / expected`.\n *\n * Count-based rather than byte-weighted because the generation endpoint answers in one\n * go — there is no intermediate progress to weight.\n *\n * The denominator is every row *expected* to enter the phase, not just those that\n * already have. Generation is fired per file as each upload finishes, so counting only\n * started rows made the denominator grow mid-batch and the percentage jump backwards\n * (1/1 = 100%, then a second row starts and it drops to 1/2 = 50%), which flickered the\n * header subtitle on and off once per file.\n *\n * \"Expected\" is derived from upload outcome rather than from the AI-metadata flag:\n * - a row still uploading may yet enter the phase, so it counts toward the total;\n * - an errored or cancelled row never will, so it must not — otherwise a batch with\n * one failure could never reach 100%.\n *\n * Returns `null` when nothing has entered the phase and nothing is pending — i.e. AI\n * metadata is off, or the batch is done — so the header can hide the subtitle.\n */\nexport const selectMetadataProgress = createSelector(\n (state: RootState) => state.uploadProgress.files,\n (files): number | null => {\n const started = files.filter((f) => f.metadataStatus !== undefined);\n\n // Nothing has entered the phase yet: with no started row there is no evidence AI\n // metadata is even enabled, so stay silent rather than showing a premature 0%.\n if (started.length === 0) return null;\n\n // Rows whose upload is still in flight are counted in the denominator so the\n // percentage only ever climbs as the batch progresses.\n const pending = files.filter(\n (f) => f.metadataStatus === undefined && (f.status === 'pending' || f.status === 'uploading')\n ).length;\n\n const expected = started.length + pending;\n const settled = started.filter((f) => f.metadataStatus !== 'generating').length;\n\n return Math.round((settled / expected) * 100);\n }\n);\n\n/**\n * Whether the metadata phase is still ongoing for the batch as a whole.\n *\n * The header uses this — not `selectMetadataProgress === 100` — to decide when to drop\n * the subtitle. Two distinct reasons the phase can be unfinished:\n * - a row is generating right now;\n * - no row is generating this instant, but rows are still uploading and will enter the\n * phase when they finish.\n *\n * The second clause is what keeps the subtitle stable. Generation for file N typically\n * finishes before file N+1 finishes uploading, so a naive \"is anything generating?\"\n * check goes false between every pair of files and blinks the subtitle out and back in.\n */\nexport const selectIsGeneratingMetadata = createSelector(\n (state: RootState) => state.uploadProgress.files,\n (files): boolean => {\n if (files.some((f) => f.metadataStatus === 'generating')) return true;\n\n // Only bridge the gap if some row has already entered the phase — otherwise a batch\n // with AI metadata disabled would report the phase as ongoing for its whole upload.\n const hasStarted = files.some((f) => f.metadataStatus !== undefined);\n\n return hasStarted && files.some((f) => f.status === 'pending' || f.status === 'uploading');\n }\n);\n\n/**\n * How many rows reached each terminal metadata outcome, for the header's completion\n * message. `null` while the phase is unfinished — or was never entered at all — so the\n * caller has a single check for \"there is no settled outcome to report yet\".\n *\n * Counts are reported separately rather than collapsed into one total because they are\n * not interchangeable: only `generated` rows actually had metadata written, so only that\n * count can be claimed as a success. A batch of non-images settles entirely on `skipped`,\n * where \"generated on 0 files\" would be worse than saying nothing.\n */\nexport const selectMetadataOutcome = createSelector(\n (state: RootState) => state.uploadProgress.files,\n (files): { generated: number; skipped: number; failed: number } | null => {\n const started = files.filter((f) => f.metadataStatus !== undefined);\n\n if (started.length === 0) return null;\n\n // Mirrors `selectIsGeneratingMetadata`: the phase isn't over while a row is\n // generating, nor while a row is still uploading and has yet to enter it.\n const isOngoing =\n started.some((f) => f.metadataStatus === 'generating') ||\n files.some((f) => f.status === 'pending' || f.status === 'uploading');\n\n if (isOngoing) return null;\n\n return {\n generated: started.filter((f) => f.metadataStatus === 'generated').length,\n skipped: started.filter((f) => f.metadataStatus === 'skipped').length,\n failed: started.filter((f) => f.metadataStatus === 'failed').length,\n };\n }\n);\n\nexport const {\n openUploadProgress,\n appendUploadFiles,\n setFileUploading,\n setFileProgress,\n setFileComplete,\n setFileError,\n setFileMetadataGenerating,\n setFileMetadataResult,\n addUploadErrors,\n closeUploadProgress,\n toggleMinimize,\n cancelUpload,\n setUploadFailed,\n retryCancelledFiles,\n} = uploadProgressSlice.actions;\n\n/**\n * The merge/reset switch. Errored and cancelled rows count as settled, so a\n * batch that finished badly is still replaced by the next drop.\n */\nexport const isUploadInFlight = (files: ReadonlyArray<{ status: FileProgressStatus }>): boolean =>\n files.some((f) => f.status === 'pending' || f.status === 'uploading');\n\nexport const uploadProgressReducer = uploadProgressSlice.reducer;\n"],"names":["initialState","isVisible","isMinimized","totalFiles","files","errors","uploadId","reportsByteProgress","uploadProgressSlice","createSlice","name","reducers","openUploadProgress","state","action","pendingFiles","payload","fileNames","map","index","status","size","fileSizes","uploadedBytes","undefined","appendUploadFiles","offset","length","push","i","setFileUploading","setFileProgress","bytes","file","Math","min","setFileComplete","completedAt","setFileError","message","error","setFileMetadataGenerating","metadataStatus","setFileMetadataResult","addUploadErrors","closeUploadProgress","toggleMinimize","cancelUpload","setUploadFailed","retryCancelledFiles","NO_FILES","selectCompletedUploads","createSelector","uploadProgress","reduce","completed","row","asset","selectAggregateProgress","totalSize","sum","f","settled","filter","round","selectReportsByteProgress","selectCountBasedProgress","done","selectMetadataProgress","started","pending","expected","selectIsGeneratingMetadata","some","hasStarted","selectMetadataOutcome","isOngoing","generated","skipped","failed","actions","isUploadInFlight","uploadProgressReducer","reducer"],"mappings":"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"}