@strapi/upload 5.37.0 → 5.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/dist/admin/ai/components/AIAssetCard.js.map +1 -1
  2. package/dist/admin/ai/components/AIAssetCard.mjs +1 -1
  3. package/dist/admin/ai/components/AIAssetCard.mjs.map +1 -1
  4. package/dist/admin/ai/components/AIUploadModal.js.map +1 -1
  5. package/dist/admin/ai/components/AIUploadModal.mjs +1 -1
  6. package/dist/admin/ai/components/AIUploadModal.mjs.map +1 -1
  7. package/dist/admin/components/AssetCard/AssetCard.js.map +1 -1
  8. package/dist/admin/components/AssetCard/AssetCard.mjs.map +1 -1
  9. package/dist/admin/components/AssetCard/AssetCardBase.js.map +1 -1
  10. package/dist/admin/components/AssetCard/AssetCardBase.mjs.map +1 -1
  11. package/dist/admin/components/AssetCard/AudioAssetCard.js.map +1 -1
  12. package/dist/admin/components/AssetCard/AudioAssetCard.mjs.map +1 -1
  13. package/dist/admin/components/AssetCard/AudioPreview.js.map +1 -1
  14. package/dist/admin/components/AssetCard/AudioPreview.mjs.map +1 -1
  15. package/dist/admin/components/AssetCard/DocAssetCard.js.map +1 -1
  16. package/dist/admin/components/AssetCard/DocAssetCard.mjs.map +1 -1
  17. package/dist/admin/components/AssetCard/ImageAssetCard.js.map +1 -1
  18. package/dist/admin/components/AssetCard/ImageAssetCard.mjs.map +1 -1
  19. package/dist/admin/components/AssetCard/UploadingAssetCard.js.map +1 -1
  20. package/dist/admin/components/AssetCard/UploadingAssetCard.mjs.map +1 -1
  21. package/dist/admin/components/AssetCard/VideoAssetCard.js.map +1 -1
  22. package/dist/admin/components/AssetCard/VideoAssetCard.mjs.map +1 -1
  23. package/dist/admin/components/AssetCard/VideoPreview.js.map +1 -1
  24. package/dist/admin/components/AssetCard/VideoPreview.mjs.map +1 -1
  25. package/dist/admin/components/AssetDialog/AssetDialog.js.map +1 -1
  26. package/dist/admin/components/AssetDialog/AssetDialog.mjs.map +1 -1
  27. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js +1 -1
  28. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.js.map +1 -1
  29. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs +1 -1
  30. package/dist/admin/components/AssetDialog/BrowseStep/BrowseStep.mjs.map +1 -1
  31. package/dist/admin/components/AssetDialog/BrowseStep/Filters.js.map +1 -1
  32. package/dist/admin/components/AssetDialog/BrowseStep/Filters.mjs.map +1 -1
  33. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.js.map +1 -1
  34. package/dist/admin/components/AssetDialog/BrowseStep/PageSize.mjs.map +1 -1
  35. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.js.map +1 -1
  36. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/Pagination.mjs.map +1 -1
  37. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.js.map +1 -1
  38. package/dist/admin/components/AssetDialog/BrowseStep/PaginationFooter/PaginationFooter.mjs.map +1 -1
  39. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.js.map +1 -1
  40. package/dist/admin/components/AssetDialog/BrowseStep/SearchAsset/SearchAsset.mjs.map +1 -1
  41. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.js.map +1 -1
  42. package/dist/admin/components/AssetDialog/BrowseStep/utils/isSelectable.mjs.map +1 -1
  43. package/dist/admin/components/AssetDialog/DialogFooter.js.map +1 -1
  44. package/dist/admin/components/AssetDialog/DialogFooter.mjs.map +1 -1
  45. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.js.map +1 -1
  46. package/dist/admin/components/AssetDialog/SelectedStep/SelectedStep.mjs.map +1 -1
  47. package/dist/admin/components/AssetGridList/AssetGridList.js.map +1 -1
  48. package/dist/admin/components/AssetGridList/AssetGridList.mjs.map +1 -1
  49. package/dist/admin/components/AssetGridList/Draggable.js.map +1 -1
  50. package/dist/admin/components/AssetGridList/Draggable.mjs.map +1 -1
  51. package/dist/admin/components/Breadcrumbs/Breadcrumbs.js.map +1 -1
  52. package/dist/admin/components/Breadcrumbs/Breadcrumbs.mjs.map +1 -1
  53. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.js.map +1 -1
  54. package/dist/admin/components/Breadcrumbs/CrumbSimpleMenuAsync.mjs.map +1 -1
  55. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.js.map +1 -1
  56. package/dist/admin/components/BulkMoveDialog/BulkMoveDialog.mjs.map +1 -1
  57. package/dist/admin/components/ContextInfo/ContextInfo.js.map +1 -1
  58. package/dist/admin/components/ContextInfo/ContextInfo.mjs.map +1 -1
  59. package/dist/admin/components/CopyLinkButton/CopyLinkButton.js.map +1 -1
  60. package/dist/admin/components/CopyLinkButton/CopyLinkButton.mjs.map +1 -1
  61. package/dist/admin/components/EditAssetDialog/DialogHeader.js.map +1 -1
  62. package/dist/admin/components/EditAssetDialog/DialogHeader.mjs.map +1 -1
  63. package/dist/admin/components/EditAssetDialog/EditAssetContent.js.map +1 -1
  64. package/dist/admin/components/EditAssetDialog/EditAssetContent.mjs.map +1 -1
  65. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.js.map +1 -1
  66. package/dist/admin/components/EditAssetDialog/PreviewBox/AssetPreview.mjs.map +1 -1
  67. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.js.map +1 -1
  68. package/dist/admin/components/EditAssetDialog/PreviewBox/CroppingActions.mjs.map +1 -1
  69. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.js.map +1 -1
  70. package/dist/admin/components/EditAssetDialog/PreviewBox/FocalPointActions.mjs.map +1 -1
  71. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js +1 -4
  72. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.js.map +1 -1
  73. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs +1 -4
  74. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewBox.mjs.map +1 -1
  75. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.js.map +1 -1
  76. package/dist/admin/components/EditAssetDialog/PreviewBox/PreviewComponents.mjs.map +1 -1
  77. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.js.map +1 -1
  78. package/dist/admin/components/EditAssetDialog/RemoveAssetDialog.mjs.map +1 -1
  79. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.js.map +1 -1
  80. package/dist/admin/components/EditAssetDialog/ReplaceMediaButton.mjs.map +1 -1
  81. package/dist/admin/components/EditFolderDialog/EditFolderDialog.js.map +1 -1
  82. package/dist/admin/components/EditFolderDialog/EditFolderDialog.mjs.map +1 -1
  83. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.js.map +1 -1
  84. package/dist/admin/components/EditFolderDialog/ModalHeader/ModalHeader.mjs.map +1 -1
  85. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.js.map +1 -1
  86. package/dist/admin/components/EditFolderDialog/RemoveFolderDialog.mjs.map +1 -1
  87. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.js.map +1 -1
  88. package/dist/admin/components/EmptyAssets/EmptyAssetGrid.mjs.map +1 -1
  89. package/dist/admin/components/EmptyAssets/EmptyAssets.js.map +1 -1
  90. package/dist/admin/components/EmptyAssets/EmptyAssets.mjs.map +1 -1
  91. package/dist/admin/components/FilterList/FilterList.js.map +1 -1
  92. package/dist/admin/components/FilterList/FilterList.mjs.map +1 -1
  93. package/dist/admin/components/FilterList/FilterTag.js.map +1 -1
  94. package/dist/admin/components/FilterList/FilterTag.mjs.map +1 -1
  95. package/dist/admin/components/FilterPopover/FilterPopover.js.map +1 -1
  96. package/dist/admin/components/FilterPopover/FilterPopover.mjs.map +1 -1
  97. package/dist/admin/components/FilterPopover/FilterValueInput.js.map +1 -1
  98. package/dist/admin/components/FilterPopover/FilterValueInput.mjs.map +1 -1
  99. package/dist/admin/components/FilterPopover/utils/getFilterList.js.map +1 -1
  100. package/dist/admin/components/FilterPopover/utils/getFilterList.mjs.map +1 -1
  101. package/dist/admin/components/FolderCard/FolderCard/FolderCard.js.map +1 -1
  102. package/dist/admin/components/FolderCard/FolderCard/FolderCard.mjs.map +1 -1
  103. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.js.map +1 -1
  104. package/dist/admin/components/FolderCard/FolderCardBody/FolderCardBody.mjs.map +1 -1
  105. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.js.map +1 -1
  106. package/dist/admin/components/FolderCard/FolderCardBodyAction/FolderCardBodyAction.mjs.map +1 -1
  107. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.js.map +1 -1
  108. package/dist/admin/components/FolderCard/FolderCardCheckbox/FolderCardCheckbox.mjs.map +1 -1
  109. package/dist/admin/components/FolderCard/contexts/FolderCard.js.map +1 -1
  110. package/dist/admin/components/FolderCard/contexts/FolderCard.mjs.map +1 -1
  111. package/dist/admin/components/FolderGridList/FolderGridList.js.map +1 -1
  112. package/dist/admin/components/FolderGridList/FolderGridList.mjs.map +1 -1
  113. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.js.map +1 -1
  114. package/dist/admin/components/MediaLibraryDialog/MediaLibraryDialog.mjs.map +1 -1
  115. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.js.map +1 -1
  116. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAsset.mjs.map +1 -1
  117. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.js.map +1 -1
  118. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssetActions.mjs.map +1 -1
  119. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.js.map +1 -1
  120. package/dist/admin/components/MediaLibraryInput/Carousel/CarouselAssets.mjs.map +1 -1
  121. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.js.map +1 -1
  122. package/dist/admin/components/MediaLibraryInput/Carousel/EmptyStateAsset.mjs.map +1 -1
  123. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.js.map +1 -1
  124. package/dist/admin/components/MediaLibraryInput/MediaLibraryInput.mjs.map +1 -1
  125. package/dist/admin/components/SelectTree/Option.js.map +1 -1
  126. package/dist/admin/components/SelectTree/Option.mjs.map +1 -1
  127. package/dist/admin/components/SelectTree/SelectTree.js.map +1 -1
  128. package/dist/admin/components/SelectTree/SelectTree.mjs +1 -1
  129. package/dist/admin/components/SelectTree/SelectTree.mjs.map +1 -1
  130. package/dist/admin/components/SelectTree/utils/flattenTree.js.map +1 -1
  131. package/dist/admin/components/SelectTree/utils/flattenTree.mjs.map +1 -1
  132. package/dist/admin/components/SelectTree/utils/getOpenValues.js.map +1 -1
  133. package/dist/admin/components/SelectTree/utils/getOpenValues.mjs.map +1 -1
  134. package/dist/admin/components/SelectTree/utils/getValuesToClose.js.map +1 -1
  135. package/dist/admin/components/SelectTree/utils/getValuesToClose.mjs.map +1 -1
  136. package/dist/admin/components/SortPicker/SortPicker.js.map +1 -1
  137. package/dist/admin/components/SortPicker/SortPicker.mjs.map +1 -1
  138. package/dist/admin/components/TableList/CellContent.js.map +1 -1
  139. package/dist/admin/components/TableList/CellContent.mjs.map +1 -1
  140. package/dist/admin/components/TableList/PreviewCell.js.map +1 -1
  141. package/dist/admin/components/TableList/PreviewCell.mjs +1 -1
  142. package/dist/admin/components/TableList/PreviewCell.mjs.map +1 -1
  143. package/dist/admin/components/TableList/TableList.js.map +1 -1
  144. package/dist/admin/components/TableList/TableList.mjs +1 -1
  145. package/dist/admin/components/TableList/TableList.mjs.map +1 -1
  146. package/dist/admin/components/TableList/TableRows.js.map +1 -1
  147. package/dist/admin/components/TableList/TableRows.mjs.map +1 -1
  148. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.js.map +1 -1
  149. package/dist/admin/components/UploadAssetDialog/AddAssetStep/AddAssetStep.mjs.map +1 -1
  150. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.js.map +1 -1
  151. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromComputerForm.mjs.map +1 -1
  152. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.js.map +1 -1
  153. package/dist/admin/components/UploadAssetDialog/AddAssetStep/FromUrlForm.mjs.map +1 -1
  154. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.js.map +1 -1
  155. package/dist/admin/components/UploadAssetDialog/PendingAssetStep/PendingAssetStep.mjs.map +1 -1
  156. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.js.map +1 -1
  157. package/dist/admin/components/UploadAssetDialog/UploadAssetDialog.mjs.map +1 -1
  158. package/dist/admin/components/UploadProgress/UploadProgress.js.map +1 -1
  159. package/dist/admin/components/UploadProgress/UploadProgress.mjs.map +1 -1
  160. package/dist/admin/constants.js.map +1 -1
  161. package/dist/admin/constants.mjs.map +1 -1
  162. package/dist/admin/future/App.js.map +1 -1
  163. package/dist/admin/future/App.mjs.map +1 -1
  164. package/dist/admin/future/components/Drawer.js +189 -0
  165. package/dist/admin/future/components/Drawer.js.map +1 -0
  166. package/dist/admin/future/components/Drawer.mjs +166 -0
  167. package/dist/admin/future/components/Drawer.mjs.map +1 -0
  168. package/dist/admin/future/components/UploadProgressDialog.js +60 -101
  169. package/dist/admin/future/components/UploadProgressDialog.js.map +1 -1
  170. package/dist/admin/future/components/UploadProgressDialog.mjs +62 -84
  171. package/dist/admin/future/components/UploadProgressDialog.mjs.map +1 -1
  172. package/dist/admin/future/pages/Assets/AssetsPage.js +155 -100
  173. package/dist/admin/future/pages/Assets/AssetsPage.js.map +1 -1
  174. package/dist/admin/future/pages/Assets/AssetsPage.mjs +160 -105
  175. package/dist/admin/future/pages/Assets/AssetsPage.mjs.map +1 -1
  176. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js +406 -0
  177. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.js.map +1 -0
  178. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs +384 -0
  179. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.mjs.map +1 -0
  180. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js +215 -0
  181. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.js.map +1 -0
  182. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs +194 -0
  183. package/dist/admin/future/pages/Assets/components/AssetDetails/AssetPreview.mjs.map +1 -0
  184. package/dist/admin/future/pages/Assets/components/AssetsGrid.js +37 -8
  185. package/dist/admin/future/pages/Assets/components/AssetsGrid.js.map +1 -1
  186. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs +38 -9
  187. package/dist/admin/future/pages/Assets/components/AssetsGrid.mjs.map +1 -1
  188. package/dist/admin/future/pages/Assets/components/AssetsTable.js +35 -5
  189. package/dist/admin/future/pages/Assets/components/AssetsTable.js.map +1 -1
  190. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs +37 -7
  191. package/dist/admin/future/pages/Assets/components/AssetsTable.mjs.map +1 -1
  192. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js +143 -0
  193. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.js.map +1 -0
  194. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs +141 -0
  195. package/dist/admin/future/pages/Assets/components/CreateFolderDialog.mjs.map +1 -0
  196. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.js.map +1 -1
  197. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZone.mjs.map +1 -1
  198. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.js.map +1 -1
  199. package/dist/admin/future/pages/Assets/components/DropZone/UploadDropZoneContext.mjs.map +1 -1
  200. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js +127 -0
  201. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.js.map +1 -0
  202. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs +106 -0
  203. package/dist/admin/future/pages/Assets/components/ImportFromUrlDialog.mjs.map +1 -0
  204. package/dist/admin/future/pages/Assets/constants.js.map +1 -1
  205. package/dist/admin/future/pages/Assets/constants.mjs.map +1 -1
  206. package/dist/admin/future/pages/Assets/hooks/useFolderInfo.js.map +1 -1
  207. package/dist/admin/future/pages/Assets/hooks/useFolderInfo.mjs.map +1 -1
  208. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.js.map +1 -1
  209. package/dist/admin/future/pages/Assets/hooks/useFolderNavigation.mjs.map +1 -1
  210. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.js.map +1 -1
  211. package/dist/admin/future/pages/Assets/hooks/useInfiniteAssets.mjs.map +1 -1
  212. package/dist/admin/future/services/api.js +181 -97
  213. package/dist/admin/future/services/api.js.map +1 -1
  214. package/dist/admin/future/services/api.mjs +181 -98
  215. package/dist/admin/future/services/api.mjs.map +1 -1
  216. package/dist/admin/future/services/assets.js +14 -1
  217. package/dist/admin/future/services/assets.js.map +1 -1
  218. package/dist/admin/future/services/assets.mjs +14 -2
  219. package/dist/admin/future/services/assets.mjs.map +1 -1
  220. package/dist/admin/future/services/folders.js +16 -1
  221. package/dist/admin/future/services/folders.js.map +1 -1
  222. package/dist/admin/future/services/folders.mjs +16 -2
  223. package/dist/admin/future/services/folders.mjs.map +1 -1
  224. package/dist/admin/future/store/hooks.js.map +1 -1
  225. package/dist/admin/future/store/hooks.mjs.map +1 -1
  226. package/dist/admin/future/store/uploadProgress.js +7 -4
  227. package/dist/admin/future/store/uploadProgress.js.map +1 -1
  228. package/dist/admin/future/store/uploadProgress.mjs +7 -4
  229. package/dist/admin/future/store/uploadProgress.mjs.map +1 -1
  230. package/dist/admin/future/utils/files.js +105 -3
  231. package/dist/admin/future/utils/files.js.map +1 -1
  232. package/dist/admin/future/utils/files.mjs +104 -4
  233. package/dist/admin/future/utils/files.mjs.map +1 -1
  234. package/dist/admin/future/utils/getAssetIcon.js +3 -3
  235. package/dist/admin/future/utils/getAssetIcon.js.map +1 -1
  236. package/dist/admin/future/utils/getAssetIcon.mjs +4 -4
  237. package/dist/admin/future/utils/getAssetIcon.mjs.map +1 -1
  238. package/dist/admin/future/utils/translations.js.map +1 -1
  239. package/dist/admin/future/utils/translations.mjs.map +1 -1
  240. package/dist/admin/hooks/useAIMetadataJob.js.map +1 -1
  241. package/dist/admin/hooks/useAIMetadataJob.mjs.map +1 -1
  242. package/dist/admin/hooks/useAiAvailability.js.map +1 -1
  243. package/dist/admin/hooks/useAiAvailability.mjs.map +1 -1
  244. package/dist/admin/hooks/useAssets.js.map +1 -1
  245. package/dist/admin/hooks/useAssets.mjs.map +1 -1
  246. package/dist/admin/hooks/useBulkEdit.js.map +1 -1
  247. package/dist/admin/hooks/useBulkEdit.mjs.map +1 -1
  248. package/dist/admin/hooks/useBulkMove.js.map +1 -1
  249. package/dist/admin/hooks/useBulkMove.mjs.map +1 -1
  250. package/dist/admin/hooks/useBulkRemove.js.map +1 -1
  251. package/dist/admin/hooks/useBulkRemove.mjs.map +1 -1
  252. package/dist/admin/hooks/useConfig.js.map +1 -1
  253. package/dist/admin/hooks/useConfig.mjs.map +1 -1
  254. package/dist/admin/hooks/useCropImg.js.map +1 -1
  255. package/dist/admin/hooks/useCropImg.mjs.map +1 -1
  256. package/dist/admin/hooks/useEditAsset.js.map +1 -1
  257. package/dist/admin/hooks/useEditAsset.mjs.map +1 -1
  258. package/dist/admin/hooks/useEditFolder.js.map +1 -1
  259. package/dist/admin/hooks/useEditFolder.mjs.map +1 -1
  260. package/dist/admin/hooks/useFolder.js.map +1 -1
  261. package/dist/admin/hooks/useFolder.mjs.map +1 -1
  262. package/dist/admin/hooks/useFolderStructure.js.map +1 -1
  263. package/dist/admin/hooks/useFolderStructure.mjs.map +1 -1
  264. package/dist/admin/hooks/useFolders.js.map +1 -1
  265. package/dist/admin/hooks/useFolders.mjs.map +1 -1
  266. package/dist/admin/hooks/useMediaLibraryPermissions.js.map +1 -1
  267. package/dist/admin/hooks/useMediaLibraryPermissions.mjs.map +1 -1
  268. package/dist/admin/hooks/useModalQueryParams.js.map +1 -1
  269. package/dist/admin/hooks/useModalQueryParams.mjs.map +1 -1
  270. package/dist/admin/hooks/usePersistentState.js.map +1 -1
  271. package/dist/admin/hooks/usePersistentState.mjs.map +1 -1
  272. package/dist/admin/hooks/useRemoveAsset.js.map +1 -1
  273. package/dist/admin/hooks/useRemoveAsset.mjs.map +1 -1
  274. package/dist/admin/hooks/useSelectionState.js.map +1 -1
  275. package/dist/admin/hooks/useSelectionState.mjs.map +1 -1
  276. package/dist/admin/hooks/useSettings.js.map +1 -1
  277. package/dist/admin/hooks/useSettings.mjs.map +1 -1
  278. package/dist/admin/hooks/useTracking.js.map +1 -1
  279. package/dist/admin/hooks/useTracking.mjs.map +1 -1
  280. package/dist/admin/hooks/useUpload.js.map +1 -1
  281. package/dist/admin/hooks/useUpload.mjs.map +1 -1
  282. package/dist/admin/hooks/utils/renameKeys.js.map +1 -1
  283. package/dist/admin/hooks/utils/renameKeys.mjs.map +1 -1
  284. package/dist/admin/index.js.map +1 -1
  285. package/dist/admin/index.mjs.map +1 -1
  286. package/dist/admin/package.json.js +1 -152
  287. package/dist/admin/package.json.js.map +1 -1
  288. package/dist/admin/package.json.mjs +2 -141
  289. package/dist/admin/package.json.mjs.map +1 -1
  290. package/dist/admin/pages/App/App.js.map +1 -1
  291. package/dist/admin/pages/App/App.mjs.map +1 -1
  292. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.js.map +1 -1
  293. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs +3 -3
  294. package/dist/admin/pages/App/ConfigureTheView/ConfigureTheView.mjs.map +1 -1
  295. package/dist/admin/pages/App/ConfigureTheView/components/Settings.js.map +1 -1
  296. package/dist/admin/pages/App/ConfigureTheView/components/Settings.mjs.map +1 -1
  297. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.js.map +1 -1
  298. package/dist/admin/pages/App/ConfigureTheView/state/actionTypes.mjs.map +1 -1
  299. package/dist/admin/pages/App/ConfigureTheView/state/actions.js.map +1 -1
  300. package/dist/admin/pages/App/ConfigureTheView/state/actions.mjs.map +1 -1
  301. package/dist/admin/pages/App/ConfigureTheView/state/init.js.map +1 -1
  302. package/dist/admin/pages/App/ConfigureTheView/state/init.mjs.map +1 -1
  303. package/dist/admin/pages/App/ConfigureTheView/state/reducer.js.map +1 -1
  304. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs +1 -1
  305. package/dist/admin/pages/App/ConfigureTheView/state/reducer.mjs.map +1 -1
  306. package/dist/admin/pages/App/MediaLibrary.js +1 -1
  307. package/dist/admin/pages/App/MediaLibrary.js.map +1 -1
  308. package/dist/admin/pages/App/MediaLibrary.mjs +2 -2
  309. package/dist/admin/pages/App/MediaLibrary.mjs.map +1 -1
  310. package/dist/admin/pages/App/components/BulkActions.js.map +1 -1
  311. package/dist/admin/pages/App/components/BulkActions.mjs.map +1 -1
  312. package/dist/admin/pages/App/components/BulkDeleteButton.js.map +1 -1
  313. package/dist/admin/pages/App/components/BulkDeleteButton.mjs.map +1 -1
  314. package/dist/admin/pages/App/components/BulkMoveButton.js.map +1 -1
  315. package/dist/admin/pages/App/components/BulkMoveButton.mjs.map +1 -1
  316. package/dist/admin/pages/App/components/EmptyOrNoPermissions.js.map +1 -1
  317. package/dist/admin/pages/App/components/EmptyOrNoPermissions.mjs.map +1 -1
  318. package/dist/admin/pages/App/components/Filters.js.map +1 -1
  319. package/dist/admin/pages/App/components/Filters.mjs.map +1 -1
  320. package/dist/admin/pages/App/components/Header.js.map +1 -1
  321. package/dist/admin/pages/App/components/Header.mjs +2 -2
  322. package/dist/admin/pages/App/components/Header.mjs.map +1 -1
  323. package/dist/admin/pages/SettingsPage/SettingsPage.js.map +1 -1
  324. package/dist/admin/pages/SettingsPage/SettingsPage.mjs.map +1 -1
  325. package/dist/admin/pages/SettingsPage/reducer.js.map +1 -1
  326. package/dist/admin/pages/SettingsPage/reducer.mjs.map +1 -1
  327. package/dist/admin/pluginId.js.map +1 -1
  328. package/dist/admin/pluginId.mjs.map +1 -1
  329. package/dist/admin/src/future/components/Drawer.d.ts +32 -0
  330. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetDetailsDrawer.d.ts +8 -0
  331. package/dist/admin/src/future/pages/Assets/components/AssetDetails/AssetPreview.d.ts +6 -0
  332. package/dist/admin/src/future/pages/Assets/components/AssetsGrid.d.ts +2 -1
  333. package/dist/admin/src/future/pages/Assets/components/AssetsTable.d.ts +2 -1
  334. package/dist/admin/src/future/pages/Assets/components/CreateFolderDialog.d.ts +8 -0
  335. package/dist/admin/src/future/pages/Assets/components/ImportFromUrlDialog.d.ts +7 -0
  336. package/dist/admin/src/future/services/api.d.ts +10 -1
  337. package/dist/admin/src/future/services/assets.d.ts +2 -2
  338. package/dist/admin/src/future/services/folders.d.ts +1 -1
  339. package/dist/admin/src/future/store/uploadProgress.d.ts +1 -1
  340. package/dist/admin/src/future/utils/files.d.ts +70 -0
  341. package/dist/admin/translations/en.json.js +35 -3
  342. package/dist/admin/translations/en.json.js.map +1 -1
  343. package/dist/admin/translations/en.json.mjs +35 -3
  344. package/dist/admin/translations/en.json.mjs.map +1 -1
  345. package/dist/admin/translations/es.json.js +1 -1
  346. package/dist/admin/translations/es.json.mjs +1 -1
  347. package/dist/admin/utils/appendSearchParamsToUrl.js.map +1 -1
  348. package/dist/admin/utils/appendSearchParamsToUrl.mjs.map +1 -1
  349. package/dist/admin/utils/containsAssetFilter.js.map +1 -1
  350. package/dist/admin/utils/containsAssetFilter.mjs.map +1 -1
  351. package/dist/admin/utils/createAssetUrl.js.map +1 -1
  352. package/dist/admin/utils/createAssetUrl.mjs.map +1 -1
  353. package/dist/admin/utils/displayedFilters.js.map +1 -1
  354. package/dist/admin/utils/displayedFilters.mjs.map +1 -1
  355. package/dist/admin/utils/downloadFile.js.map +1 -1
  356. package/dist/admin/utils/downloadFile.mjs.map +1 -1
  357. package/dist/admin/utils/findRecursiveFolderByValue.js.map +1 -1
  358. package/dist/admin/utils/findRecursiveFolderByValue.mjs.map +1 -1
  359. package/dist/admin/utils/formatBytes.js.map +1 -1
  360. package/dist/admin/utils/formatBytes.mjs.map +1 -1
  361. package/dist/admin/utils/formatDuration.js.map +1 -1
  362. package/dist/admin/utils/formatDuration.mjs.map +1 -1
  363. package/dist/admin/utils/getAPIInnerErrors.js.map +1 -1
  364. package/dist/admin/utils/getAPIInnerErrors.mjs.map +1 -1
  365. package/dist/admin/utils/getAllowedFiles.js.map +1 -1
  366. package/dist/admin/utils/getAllowedFiles.mjs.map +1 -1
  367. package/dist/admin/utils/getBreadcrumbDataCM.js.map +1 -1
  368. package/dist/admin/utils/getBreadcrumbDataCM.mjs.map +1 -1
  369. package/dist/admin/utils/getBreadcrumbDataML.js.map +1 -1
  370. package/dist/admin/utils/getBreadcrumbDataML.mjs.map +1 -1
  371. package/dist/admin/utils/getFileExtension.js.map +1 -1
  372. package/dist/admin/utils/getFileExtension.mjs.map +1 -1
  373. package/dist/admin/utils/getFolderParents.js.map +1 -1
  374. package/dist/admin/utils/getFolderParents.mjs.map +1 -1
  375. package/dist/admin/utils/getFolderURL.js.map +1 -1
  376. package/dist/admin/utils/getFolderURL.mjs.map +1 -1
  377. package/dist/admin/utils/getTrad.js.map +1 -1
  378. package/dist/admin/utils/getTrad.mjs.map +1 -1
  379. package/dist/admin/utils/icons.js.map +1 -1
  380. package/dist/admin/utils/icons.mjs +1 -1
  381. package/dist/admin/utils/icons.mjs.map +1 -1
  382. package/dist/admin/utils/moveElement.js.map +1 -1
  383. package/dist/admin/utils/moveElement.mjs.map +1 -1
  384. package/dist/admin/utils/normalizeAPIError.js.map +1 -1
  385. package/dist/admin/utils/normalizeAPIError.mjs.map +1 -1
  386. package/dist/admin/utils/prefixFileUrlWithBackendUrl.js.map +1 -1
  387. package/dist/admin/utils/prefixFileUrlWithBackendUrl.mjs.map +1 -1
  388. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -1
  389. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -1
  390. package/dist/admin/utils/rawFileToAsset.js.map +1 -1
  391. package/dist/admin/utils/rawFileToAsset.mjs.map +1 -1
  392. package/dist/admin/utils/toSingularTypes.js.map +1 -1
  393. package/dist/admin/utils/toSingularTypes.mjs.map +1 -1
  394. package/dist/admin/utils/typeFromMime.js.map +1 -1
  395. package/dist/admin/utils/typeFromMime.mjs.map +1 -1
  396. package/dist/admin/utils/urlYupSchema.js.map +1 -1
  397. package/dist/admin/utils/urlYupSchema.mjs.map +1 -1
  398. package/dist/admin/utils/urlsToAssets.js.map +1 -1
  399. package/dist/admin/utils/urlsToAssets.mjs.map +1 -1
  400. package/dist/server/bootstrap.js.map +1 -1
  401. package/dist/server/bootstrap.mjs.map +1 -1
  402. package/dist/server/config.js.map +1 -1
  403. package/dist/server/config.mjs.map +1 -1
  404. package/dist/server/constants.js.map +1 -1
  405. package/dist/server/constants.mjs.map +1 -1
  406. package/dist/server/content-types/file.js.map +1 -1
  407. package/dist/server/content-types/file.mjs.map +1 -1
  408. package/dist/server/content-types/folder.js.map +1 -1
  409. package/dist/server/content-types/folder.mjs +1 -1
  410. package/dist/server/content-types/folder.mjs.map +1 -1
  411. package/dist/server/content-types/index.js.map +1 -1
  412. package/dist/server/content-types/index.mjs.map +1 -1
  413. package/dist/server/controllers/admin-file.js.map +1 -1
  414. package/dist/server/controllers/admin-file.mjs +1 -1
  415. package/dist/server/controllers/admin-file.mjs.map +1 -1
  416. package/dist/server/controllers/admin-folder-file.js.map +1 -1
  417. package/dist/server/controllers/admin-folder-file.mjs +2 -2
  418. package/dist/server/controllers/admin-folder-file.mjs.map +1 -1
  419. package/dist/server/controllers/admin-folder.js.map +1 -1
  420. package/dist/server/controllers/admin-folder.mjs +1 -1
  421. package/dist/server/controllers/admin-folder.mjs.map +1 -1
  422. package/dist/server/controllers/admin-settings.js.map +1 -1
  423. package/dist/server/controllers/admin-settings.mjs.map +1 -1
  424. package/dist/server/controllers/admin-upload.js +144 -0
  425. package/dist/server/controllers/admin-upload.js.map +1 -1
  426. package/dist/server/controllers/admin-upload.mjs +147 -3
  427. package/dist/server/controllers/admin-upload.mjs.map +1 -1
  428. package/dist/server/controllers/content-api.js.map +1 -1
  429. package/dist/server/controllers/content-api.mjs.map +1 -1
  430. package/dist/server/controllers/index.js.map +1 -1
  431. package/dist/server/controllers/index.mjs.map +1 -1
  432. package/dist/server/controllers/utils/find-entity-and-check-permissions.js.map +1 -1
  433. package/dist/server/controllers/utils/find-entity-and-check-permissions.mjs.map +1 -1
  434. package/dist/server/controllers/utils/folders.js.map +1 -1
  435. package/dist/server/controllers/utils/folders.mjs.map +1 -1
  436. package/dist/server/controllers/validation/admin/configureView.js.map +1 -1
  437. package/dist/server/controllers/validation/admin/configureView.mjs.map +1 -1
  438. package/dist/server/controllers/validation/admin/folder-file.js.map +1 -1
  439. package/dist/server/controllers/validation/admin/folder-file.mjs.map +1 -1
  440. package/dist/server/controllers/validation/admin/folder.js.map +1 -1
  441. package/dist/server/controllers/validation/admin/folder.mjs.map +1 -1
  442. package/dist/server/controllers/validation/admin/settings.js.map +1 -1
  443. package/dist/server/controllers/validation/admin/settings.mjs.map +1 -1
  444. package/dist/server/controllers/validation/admin/upload.js.map +1 -1
  445. package/dist/server/controllers/validation/admin/upload.mjs.map +1 -1
  446. package/dist/server/controllers/validation/admin/utils.js.map +1 -1
  447. package/dist/server/controllers/validation/admin/utils.mjs.map +1 -1
  448. package/dist/server/controllers/validation/content-api/upload.js.map +1 -1
  449. package/dist/server/controllers/validation/content-api/upload.mjs.map +1 -1
  450. package/dist/server/controllers/view-configuration.js.map +1 -1
  451. package/dist/server/controllers/view-configuration.mjs.map +1 -1
  452. package/dist/server/graphql.js.map +1 -1
  453. package/dist/server/graphql.mjs.map +1 -1
  454. package/dist/server/index.js +8 -8
  455. package/dist/server/middlewares/upload.js.map +1 -1
  456. package/dist/server/middlewares/upload.mjs.map +1 -1
  457. package/dist/server/models/ai-metadata-job.js.map +1 -1
  458. package/dist/server/models/ai-metadata-job.mjs.map +1 -1
  459. package/dist/server/register.js.map +1 -1
  460. package/dist/server/register.mjs.map +1 -1
  461. package/dist/server/routes/admin.js +10 -0
  462. package/dist/server/routes/admin.js.map +1 -1
  463. package/dist/server/routes/admin.mjs +10 -0
  464. package/dist/server/routes/admin.mjs.map +1 -1
  465. package/dist/server/routes/content-api.js.map +1 -1
  466. package/dist/server/routes/content-api.mjs.map +1 -1
  467. package/dist/server/routes/index.js.map +1 -1
  468. package/dist/server/routes/index.mjs +4 -4
  469. package/dist/server/routes/index.mjs.map +1 -1
  470. package/dist/server/routes/validation/upload.js.map +1 -1
  471. package/dist/server/routes/validation/upload.mjs.map +1 -1
  472. package/dist/server/routes/view-configuration.js.map +1 -1
  473. package/dist/server/routes/view-configuration.mjs.map +1 -1
  474. package/dist/server/services/ai-metadata-jobs.js.map +1 -1
  475. package/dist/server/services/ai-metadata-jobs.mjs.map +1 -1
  476. package/dist/server/services/ai-metadata.js.map +1 -1
  477. package/dist/server/services/ai-metadata.mjs.map +1 -1
  478. package/dist/server/services/api-upload-folder.js.map +1 -1
  479. package/dist/server/services/api-upload-folder.mjs.map +1 -1
  480. package/dist/server/services/extensions/index.js.map +1 -1
  481. package/dist/server/services/extensions/index.mjs.map +1 -1
  482. package/dist/server/services/extensions/utils.js.map +1 -1
  483. package/dist/server/services/extensions/utils.mjs.map +1 -1
  484. package/dist/server/services/file.js +120 -1
  485. package/dist/server/services/file.js.map +1 -1
  486. package/dist/server/services/file.mjs +122 -3
  487. package/dist/server/services/file.mjs.map +1 -1
  488. package/dist/server/services/folder.js.map +1 -1
  489. package/dist/server/services/folder.mjs +1 -1
  490. package/dist/server/services/folder.mjs.map +1 -1
  491. package/dist/server/services/image-manipulation.js.map +1 -1
  492. package/dist/server/services/image-manipulation.mjs +1 -1
  493. package/dist/server/services/image-manipulation.mjs.map +1 -1
  494. package/dist/server/services/index.js.map +1 -1
  495. package/dist/server/services/index.mjs.map +1 -1
  496. package/dist/server/services/metrics.js.map +1 -1
  497. package/dist/server/services/metrics.mjs.map +1 -1
  498. package/dist/server/services/provider.js.map +1 -1
  499. package/dist/server/services/provider.mjs.map +1 -1
  500. package/dist/server/services/upload.js.map +1 -1
  501. package/dist/server/services/upload.mjs +1 -1
  502. package/dist/server/services/upload.mjs.map +1 -1
  503. package/dist/server/services/weekly-metrics.js.map +1 -1
  504. package/dist/server/services/weekly-metrics.mjs.map +1 -1
  505. package/dist/server/src/controllers/admin-upload.d.ts +13 -0
  506. package/dist/server/src/controllers/admin-upload.d.ts.map +1 -1
  507. package/dist/server/src/controllers/index.d.ts +1 -0
  508. package/dist/server/src/controllers/index.d.ts.map +1 -1
  509. package/dist/server/src/index.d.ts +2 -0
  510. package/dist/server/src/index.d.ts.map +1 -1
  511. package/dist/server/src/routes/admin.d.ts.map +1 -1
  512. package/dist/server/src/services/file.d.ts +15 -0
  513. package/dist/server/src/services/file.d.ts.map +1 -1
  514. package/dist/server/src/services/index.d.ts +1 -0
  515. package/dist/server/src/services/index.d.ts.map +1 -1
  516. package/dist/server/utils/cron.js.map +1 -1
  517. package/dist/server/utils/cron.mjs.map +1 -1
  518. package/dist/server/utils/images.js.map +1 -1
  519. package/dist/server/utils/images.mjs.map +1 -1
  520. package/dist/server/utils/index.js.map +1 -1
  521. package/dist/server/utils/index.mjs.map +1 -1
  522. package/dist/server/utils/mime-validation.js.map +1 -1
  523. package/dist/server/utils/mime-validation.mjs.map +1 -1
  524. package/dist/shared/contracts/files.d.ts +11 -0
  525. package/dist/shared/contracts/files.d.ts.map +1 -1
  526. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"UploadProgressDialog.mjs","sources":["../../../../admin/src/future/components/UploadProgressDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as Dialog from '@radix-ui/react-dialog';\nimport { Box, Flex, IconButton, TextButton, Typography } from '@strapi/design-system';\nimport {\n ArrowsCounterClockwise,\n Check,\n CheckCircle,\n ChevronDown,\n Cross,\n CrossCircle,\n MinusCircle,\n Upload,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\nimport { abortUpload, useRetryCancelledFilesStreamMutation } from '../services/api';\nimport { useTypedDispatch, useTypedSelector } from '../store/hooks';\nimport { closeUploadProgress, toggleMinimize, cancelUpload } from '../store/uploadProgress';\nimport { getTranslationKey } from '../utils/translations';\n\nimport type { FileProgress, FileProgressStatus } from '../store/uploadProgress';\n\n/* -------------------------------------------------------------------------------------------------\n * DialogHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderStatusMessage = ({ title, subtitle }: { title: string; subtitle?: string }) => {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingLeft={2}>\n <Dialog.Title>\n <Typography variant=\"omega\">{title}</Typography>\n </Dialog.Title>\n <Dialog.Description>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n </Dialog.Description>\n </Flex>\n );\n};\n\nconst HeaderStatusIcon = styled(Flex)`\n padding: ${({ theme }) => theme.spaces[3]};\n border-radius: ${({ theme }) => `${theme.borderRadius} 0 0 ${theme.borderRadius}`};\n\n > svg {\n height: 24px;\n width: 24px;\n }\n`;\n\nconst HeaderStatusWrapper = styled(Dialog.Title)`\n display: flex;\n align-items: center;\n`;\n\ntype HeaderStatusProps = {\n status: 'uploading' | 'success' | 'error' | 'canceled';\n progress?: number;\n totalFiles: number;\n};\n\nconst HeaderStatus = ({ status, progress, totalFiles }: HeaderStatusProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"danger200\">\n <Cross fill=\"danger700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.failed'),\n defaultMessage: 'Upload failed',\n })}\n subtitle={formatMessage({\n id: getTranslationKey('upload.progress.failed.subtitle'),\n defaultMessage: 'Please try to upload files again',\n })}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'success') {\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"success200\">\n <Check fill=\"success700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.success'),\n defaultMessage: 'Upload successful!',\n })}\n subtitle={formatMessage(\n {\n id: getTranslationKey('upload.progress.success.subtitle'),\n defaultMessage: '{count} files uploaded successfully',\n },\n { count: totalFiles }\n )}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'canceled') {\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"neutral200\">\n <MinusCircle fill=\"neutral700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.canceled'),\n defaultMessage: 'Upload canceled',\n })}\n subtitle={formatMessage({\n id: getTranslationKey('upload.progress.canceled.subtitle'),\n defaultMessage: 'Some files were not uploaded',\n })}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'uploading') {\n const progressPercentage = progress ? Math.round(progress) : 0;\n\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"primary200\">\n <Upload fill=\"primary700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage(\n {\n id: getTranslationKey('upload.progress.uploading.withCount'),\n defaultMessage: 'Uploading {total} items ({percentage}%)',\n },\n {\n total: totalFiles,\n percentage: progressPercentage,\n }\n )}\n />\n </HeaderStatusWrapper>\n );\n }\n\n return null;\n};\n\nconst HeaderIconButton = styled(IconButton)`\n &:hover {\n background: transparent;\n }\n`;\n\nconst ChevronWrapper = styled.span<{ $isMinimized: boolean }>`\n display: flex;\n transition: transform 0.5s ease-in-out;\n transform: ${({ $isMinimized }) => ($isMinimized ? 'rotate(180deg)' : 'rotate(0deg)')};\n`;\n\nconst HEADER_COLOR_MAP = {\n uploading: { background: 'primary100' },\n canceled: { background: 'neutral100' },\n success: { background: 'success100' },\n error: { background: 'danger100' },\n} as const;\n\nconst DialogHeader = ({ handleClose }: { handleClose: () => void }) => {\n const { formatMessage } = useIntl();\n\n const { isMinimized, progress, files, uploadId, totalFiles } = useTypedSelector(\n (state) => state.uploadProgress\n );\n const dispatch = useTypedDispatch();\n const [retryCancelledFiles] = useRetryCancelledFilesStreamMutation();\n\n const isComplete = progress === 100;\n const isAllUploaded = isComplete && files.every((f) => f.status !== 'uploading');\n const isAllErrored = isComplete && files.length > 0 && files.every((f) => f.status === 'error');\n const hasCancelledFiles = files.some((f) => f.status === 'cancelled');\n const isSuccess = isComplete && isAllUploaded && !isAllErrored && !hasCancelledFiles;\n const status = ((): HeaderStatusProps['status'] => {\n if (isAllErrored) return 'error';\n if (isSuccess) return 'success';\n if (hasCancelledFiles) return 'canceled';\n\n return 'uploading';\n })();\n\n const handleCancel = () => {\n abortUpload(uploadId);\n dispatch(cancelUpload());\n };\n\n const handleRetry = async () => {\n try {\n await retryCancelledFiles().unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleToggleMinimize = () => {\n dispatch(toggleMinimize());\n };\n\n return (\n <Flex\n background={HEADER_COLOR_MAP[status].background}\n justifyContent=\"space-between\"\n margin={1}\n hasRadius\n >\n <HeaderStatus status={status} progress={progress} totalFiles={totalFiles} />\n <Flex gap={1}>\n {!isAllUploaded && (\n <TextButton onClick={handleCancel} fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('upload.progress.cancel'),\n defaultMessage: 'Cancel',\n })}\n </TextButton>\n )}\n {hasCancelledFiles && (\n <TextButton onClick={handleRetry} fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('upload.progress.retry'),\n defaultMessage: 'Retry',\n })}\n </TextButton>\n )}\n <HeaderIconButton\n onClick={handleToggleMinimize}\n label={formatMessage({\n id: getTranslationKey(\n isMinimized ? 'upload.progress.maximize' : 'upload.progress.minimize'\n ),\n defaultMessage: isMinimized ? 'Maximize' : 'Minimize',\n })}\n variant=\"ghost\"\n >\n <ChevronWrapper $isMinimized={isMinimized}>\n <ChevronDown />\n </ChevronWrapper>\n </HeaderIconButton>\n {isComplete && (\n <HeaderIconButton\n onClick={handleClose}\n label={formatMessage({\n id: getTranslationKey('upload.progress.close'),\n defaultMessage: 'Close',\n })}\n variant=\"ghost\"\n >\n <Cross />\n </HeaderIconButton>\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadProgressDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst indeterminate = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n`;\n\nconst IndeterminateBar = styled.div`\n width: 100%;\n height: ${({ theme }) => theme.spaces[1]};\n background-color: ${({ theme }) => theme.colors.neutral200};\n border-radius: 4px;\n overflow: hidden;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 25%;\n background-color: ${({ theme }) => theme.colors.primary700};\n border-radius: 4px;\n animation: ${indeterminate} 1.5s ease-in-out infinite;\n }\n`;\n\nconst FileRow = ({\n icon,\n fileName,\n children,\n}: {\n icon: React.ReactNode;\n fileName: string;\n children: React.ReactNode;\n}) => {\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" justifyContent=\"center\" gap={1} width=\"100%\">\n <Flex gap={2}>\n {icon}\n <Typography variant=\"omega\" fontWeight=\"semiBold\" ellipsis>\n {fileName}\n </Typography>\n </Flex>\n {children}\n </Flex>\n );\n};\n\nconst FileRowRenderer = ({ file }: { file: FileProgress }) => {\n const { formatMessage } = useIntl();\n const isError = file.status === 'error';\n const isCurrentFile = file.status === 'uploading';\n const isCompleted = file.status === 'complete';\n const isCancelled = file.status === 'cancelled';\n\n if (isCurrentFile) {\n return (\n <FileRow icon={<ArrowsCounterClockwise fill=\"secondary600\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.uploading'),\n defaultMessage: 'Uploading...',\n })}\n </Typography>\n <IndeterminateBar />\n </FileRow>\n );\n }\n\n if (isError) {\n return (\n <FileRow icon={<CrossCircle fill=\"danger500\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {file.error}\n </Typography>\n </FileRow>\n );\n }\n\n if (isCancelled) {\n return (\n <FileRow icon={<MinusCircle fill=\"neutral600\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.canceled'),\n defaultMessage: 'Canceled',\n })}\n </Typography>\n </FileRow>\n );\n }\n\n if (isCompleted) {\n return (\n <FileRow icon={<CheckCircle fill=\"success500\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.uploaded'),\n defaultMessage: 'Uploaded',\n })}\n </Typography>\n </FileRow>\n );\n }\n\n return null;\n};\n\nconst DialogContent = styled(Dialog.Content)`\n position: fixed;\n bottom: ${({ theme }) => theme.spaces[4]};\n right: ${({ theme }) => theme.spaces[4]};\n width: 400px;\n background-color: ${({ theme }) => theme.colors.neutral0};\n border-radius: ${({ theme }) => theme.borderRadius};\n box-shadow: ${({ theme }) => theme.shadows.popupShadow};\n z-index: 1000;\n overflow: hidden;\n border: 1px solid ${({ theme }) => theme.colors.neutral150};\n\n &:focus {\n outline: none;\n }\n`;\n\nconst CompletedFilesList = styled(Flex)`\n max-height: 200px;\n overflow-y: auto;\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n width: 100%;\n`;\n\nconst AnimatedContent = styled.div<{ $isVisible: boolean }>`\n display: grid;\n grid-template-rows: ${({ $isVisible }) => ($isVisible ? '1fr' : '0fr')};\n transition: grid-template-rows 0.3s ease-in-out;\n\n > div {\n overflow: hidden;\n }\n`;\n\nexport const UploadProgressDialog = () => {\n const dispatch = useTypedDispatch();\n const { isVisible, isMinimized, files } = useTypedSelector((state) => state.uploadProgress);\n\n const currentFile = files.find((f) => f.status === 'uploading');\n const completedFiles = files\n .filter((f) => f.status === 'complete' || f.status === 'error' || f.status === 'cancelled')\n .sort((a, b) => {\n // Sort priority: error > cancelled > complete\n const priority: Record<FileProgressStatus, number> = {\n error: 0,\n cancelled: 1,\n complete: 2,\n uploading: 3,\n pending: 4,\n };\n return priority[a.status] - priority[b.status];\n });\n\n const handleClose = () => {\n dispatch(closeUploadProgress());\n };\n\n return (\n <Dialog.Root open={isVisible} modal={false}>\n <Dialog.Portal>\n <DialogContent\n // The accessible name is set by Dialog.Title and is dynamic,\n // use a data-testid to ensure a stable target for e2e tests\n data-testid=\"upload-progress-dialog\"\n >\n <DialogHeader handleClose={handleClose} />\n\n <AnimatedContent $isVisible={!isMinimized}>\n <Box>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n >\n {currentFile && <FileRowRenderer file={currentFile} />}\n\n {completedFiles.length > 0 && (\n <CompletedFilesList>\n {completedFiles.map((file) => (\n <FileRowRenderer key={file.index} file={file} />\n ))}\n </CompletedFilesList>\n )}\n </Flex>\n </Box>\n </AnimatedContent>\n </DialogContent>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n"],"names":["HeaderStatusMessage","title","subtitle","_jsxs","Flex","direction","alignItems","paddingLeft","_jsx","Dialog","Title","Typography","variant","Description","textColor","HeaderStatusIcon","styled","theme","spaces","borderRadius","HeaderStatusWrapper","HeaderStatus","status","progress","totalFiles","formatMessage","useIntl","background","Cross","fill","id","getTranslationKey","defaultMessage","Check","count","MinusCircle","progressPercentage","Math","round","Upload","total","percentage","HeaderIconButton","IconButton","ChevronWrapper","span","$isMinimized","HEADER_COLOR_MAP","uploading","canceled","success","error","DialogHeader","handleClose","isMinimized","files","uploadId","useTypedSelector","state","uploadProgress","dispatch","useTypedDispatch","retryCancelledFiles","useRetryCancelledFilesStreamMutation","isComplete","isAllUploaded","every","f","isAllErrored","length","hasCancelledFiles","some","isSuccess","handleCancel","abortUpload","cancelUpload","handleRetry","unwrap","handleToggleMinimize","toggleMinimize","justifyContent","margin","hasRadius","gap","TextButton","onClick","fontWeight","label","ChevronDown","indeterminate","keyframes","IndeterminateBar","div","colors","neutral200","primary700","FileRow","icon","fileName","children","width","ellipsis","FileRowRenderer","file","isError","isCurrentFile","isCompleted","isCancelled","ArrowsCounterClockwise","name","CrossCircle","CheckCircle","DialogContent","Content","neutral0","shadows","popupShadow","neutral150","CompletedFilesList","AnimatedContent","$isVisible","UploadProgressDialog","isVisible","currentFile","find","completedFiles","filter","sort","a","b","priority","cancelled","complete","pending","closeUploadProgress","Root","open","modal","Portal","data-testid","Box","paddingTop","paddingBottom","paddingRight","map","index"],"mappings":"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"}
1
+ {"version":3,"file":"UploadProgressDialog.mjs","sources":["../../../../admin/src/future/components/UploadProgressDialog.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, IconButton, TextButton, Typography } from '@strapi/design-system';\nimport {\n ArrowsCounterClockwise,\n Check,\n CheckCircle,\n ChevronDown,\n Cross,\n CrossCircle,\n MinusCircle,\n Upload,\n} from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled, keyframes } from 'styled-components';\n\nimport { abortUpload, useRetryCancelledFilesStreamMutation } from '../services/api';\nimport { useTypedDispatch, useTypedSelector } from '../store/hooks';\nimport { closeUploadProgress, toggleMinimize, cancelUpload } from '../store/uploadProgress';\nimport { getTranslationKey } from '../utils/translations';\n\nimport { Drawer } from './Drawer';\n\nimport type { FileProgress, FileProgressStatus } from '../store/uploadProgress';\n\n/* -------------------------------------------------------------------------------------------------\n * DialogHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst HeaderStatusMessage = ({ title, subtitle }: { title: string; subtitle?: string }) => {\n return (\n <Flex direction=\"column\" alignItems=\"flex-start\" paddingLeft={2}>\n <Drawer.Title>\n <Typography variant=\"omega\">{title}</Typography>\n </Drawer.Title>\n <Drawer.Description>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {subtitle}\n </Typography>\n </Drawer.Description>\n </Flex>\n );\n};\n\nconst HeaderStatusIcon = styled(Flex)`\n padding: ${({ theme }) => theme.spaces[3]};\n border-radius: ${({ theme }) => `${theme.borderRadius} 0 0 ${theme.borderRadius}`};\n\n > svg {\n height: 24px;\n width: 24px;\n }\n`;\n\nconst HeaderStatusWrapper = styled(Flex)`\n align-items: center;\n`;\n\ntype HeaderStatusProps = {\n status: 'uploading' | 'success' | 'error' | 'canceled';\n progress?: number;\n totalFiles: number;\n successfulCount: number;\n errorCount: number;\n};\n\nconst HeaderStatus = ({\n status,\n progress,\n totalFiles,\n successfulCount,\n errorCount,\n}: HeaderStatusProps) => {\n const { formatMessage } = useIntl();\n\n if (status === 'error') {\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"danger200\">\n <Cross fill=\"danger700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.failed'),\n defaultMessage: 'Upload failed',\n })}\n subtitle={formatMessage({\n id: getTranslationKey('upload.progress.failed.subtitle'),\n defaultMessage: 'Please try to upload files again',\n })}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'success') {\n const subtitle =\n errorCount > 0\n ? formatMessage(\n {\n id: getTranslationKey('upload.progress.success.subtitle.withErrors'),\n defaultMessage: '{successCount} uploaded, {errorCount} failed',\n },\n { successCount: successfulCount, errorCount }\n )\n : formatMessage(\n {\n id: getTranslationKey('upload.progress.success.subtitle'),\n defaultMessage: '{count} files uploaded successfully',\n },\n { count: successfulCount }\n );\n\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"success200\">\n <Check fill=\"success700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.success'),\n defaultMessage: 'Upload successful!',\n })}\n subtitle={subtitle}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'canceled') {\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"neutral200\">\n <MinusCircle fill=\"neutral700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage({\n id: getTranslationKey('upload.progress.canceled'),\n defaultMessage: 'Upload canceled',\n })}\n subtitle={formatMessage({\n id: getTranslationKey('upload.progress.canceled.subtitle'),\n defaultMessage: 'Some files were not uploaded',\n })}\n />\n </HeaderStatusWrapper>\n );\n }\n\n if (status === 'uploading') {\n const progressPercentage = progress ? Math.round(progress) : 0;\n\n return (\n <HeaderStatusWrapper>\n <HeaderStatusIcon background=\"primary200\">\n <Upload fill=\"primary700\" />\n </HeaderStatusIcon>\n <HeaderStatusMessage\n title={formatMessage(\n {\n id: getTranslationKey('upload.progress.uploading.withCount'),\n defaultMessage: 'Uploading {total} items ({percentage}%)',\n },\n {\n total: totalFiles,\n percentage: progressPercentage,\n }\n )}\n />\n </HeaderStatusWrapper>\n );\n }\n\n return null;\n};\n\nconst HeaderIconButton = styled(IconButton)`\n &:hover {\n background: transparent;\n }\n`;\n\nconst ChevronWrapper = styled.span<{ $isMinimized: boolean }>`\n display: flex;\n transition: transform 0.5s ease-in-out;\n transform: ${({ $isMinimized }) => ($isMinimized ? 'rotate(180deg)' : 'rotate(0deg)')};\n`;\n\nconst HEADER_COLOR_MAP = {\n uploading: { background: 'primary100' },\n canceled: { background: 'neutral100' },\n success: { background: 'success100' },\n error: { background: 'danger100' },\n} as const;\n\nconst DialogHeader = ({ handleClose }: { handleClose: () => void }) => {\n const { formatMessage } = useIntl();\n\n const { isMinimized, progress, files, uploadId, totalFiles } = useTypedSelector(\n (state) => state.uploadProgress\n );\n const dispatch = useTypedDispatch();\n const [retryCancelledFiles] = useRetryCancelledFilesStreamMutation();\n\n const isComplete = progress === 100;\n const isAllUploaded = isComplete && files.every((f) => f.status !== 'uploading');\n const isAllErrored = isComplete && files.length > 0 && files.every((f) => f.status === 'error');\n const hasCancelledFiles = files.some((f) => f.status === 'cancelled');\n const successfulCount = files.filter((f) => f.status === 'complete').length;\n const errorCount = files.filter((f) => f.status === 'error').length;\n // Success includes partial success (some files succeeded, even if some failed)\n const isSuccess = isComplete && isAllUploaded && successfulCount > 0 && !hasCancelledFiles;\n const status = ((): HeaderStatusProps['status'] => {\n if (isAllErrored) return 'error';\n if (isSuccess) return 'success';\n if (hasCancelledFiles) return 'canceled';\n\n return 'uploading';\n })();\n\n const handleCancel = () => {\n abortUpload(uploadId);\n dispatch(cancelUpload());\n };\n\n const handleRetry = async () => {\n try {\n await retryCancelledFiles().unwrap();\n } catch {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleToggleMinimize = () => {\n dispatch(toggleMinimize());\n };\n\n return (\n <Flex\n background={HEADER_COLOR_MAP[status].background}\n justifyContent=\"space-between\"\n margin={1}\n hasRadius\n >\n <HeaderStatus\n status={status}\n progress={progress}\n totalFiles={totalFiles}\n successfulCount={successfulCount}\n errorCount={errorCount}\n />\n <Flex gap={1}>\n {!isAllUploaded && (\n <TextButton onClick={handleCancel} fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('upload.progress.cancel'),\n defaultMessage: 'Cancel',\n })}\n </TextButton>\n )}\n {hasCancelledFiles && (\n <TextButton onClick={handleRetry} fontWeight=\"bold\">\n {formatMessage({\n id: getTranslationKey('upload.progress.retry'),\n defaultMessage: 'Retry',\n })}\n </TextButton>\n )}\n <HeaderIconButton\n onClick={handleToggleMinimize}\n label={formatMessage({\n id: getTranslationKey(\n isMinimized ? 'upload.progress.maximize' : 'upload.progress.minimize'\n ),\n defaultMessage: isMinimized ? 'Maximize' : 'Minimize',\n })}\n variant=\"ghost\"\n >\n <ChevronWrapper $isMinimized={isMinimized}>\n <ChevronDown />\n </ChevronWrapper>\n </HeaderIconButton>\n {isComplete && (\n <Drawer.CloseButton\n onClose={handleClose}\n label={formatMessage({\n id: getTranslationKey('upload.progress.close'),\n defaultMessage: 'Close',\n })}\n />\n )}\n </Flex>\n </Flex>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * UploadProgressDialog\n * -----------------------------------------------------------------------------------------------*/\n\nconst indeterminate = keyframes`\n 0% {\n transform: translateX(-100%);\n }\n 100% {\n transform: translateX(400%);\n }\n`;\n\nconst IndeterminateBar = styled.div`\n width: 100%;\n height: ${({ theme }) => theme.spaces[1]};\n background-color: ${({ theme }) => theme.colors.neutral200};\n border-radius: 4px;\n overflow: hidden;\n position: relative;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n width: 25%;\n background-color: ${({ theme }) => theme.colors.primary700};\n border-radius: 4px;\n animation: ${indeterminate} 1.5s ease-in-out infinite;\n }\n`;\n\nconst FileRow = ({\n icon,\n fileName,\n children,\n}: {\n icon: React.ReactNode;\n fileName: string;\n children: React.ReactNode;\n}) => {\n return (\n <Flex direction=\"column\" alignItems=\"stretch\" justifyContent=\"center\" gap={1} width=\"100%\">\n <Flex gap={2}>\n {icon}\n <Typography variant=\"omega\" fontWeight=\"semiBold\" ellipsis>\n {fileName}\n </Typography>\n </Flex>\n {children}\n </Flex>\n );\n};\n\nconst FileRowRenderer = ({ file }: { file: FileProgress }) => {\n const { formatMessage } = useIntl();\n const isError = file.status === 'error';\n const isCurrentFile = file.status === 'uploading';\n const isCompleted = file.status === 'complete';\n const isCancelled = file.status === 'cancelled';\n\n if (isCurrentFile) {\n return (\n <FileRow icon={<ArrowsCounterClockwise fill=\"secondary600\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.uploading'),\n defaultMessage: 'Uploading...',\n })}\n </Typography>\n <IndeterminateBar />\n </FileRow>\n );\n }\n\n if (isError) {\n return (\n <FileRow icon={<CrossCircle fill=\"danger500\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {file.error}\n </Typography>\n </FileRow>\n );\n }\n\n if (isCancelled) {\n return (\n <FileRow icon={<MinusCircle fill=\"neutral600\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.canceled'),\n defaultMessage: 'Canceled',\n })}\n </Typography>\n </FileRow>\n );\n }\n\n if (isCompleted) {\n return (\n <FileRow icon={<CheckCircle fill=\"success500\" />} fileName={file.name}>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {formatMessage({\n id: getTranslationKey('upload.progress.file.uploaded'),\n defaultMessage: 'Uploaded',\n })}\n </Typography>\n </FileRow>\n );\n }\n\n return null;\n};\n\nconst CompletedFilesList = styled(Flex)`\n flex-direction: column;\n gap: ${({ theme }) => theme.spaces[2]};\n width: 100%;\n`;\n\nexport const UploadProgressDialog = () => {\n const dispatch = useTypedDispatch();\n const { isVisible, isMinimized, files } = useTypedSelector((state) => state.uploadProgress);\n\n const currentFile = files.find((f) => f.status === 'uploading');\n const completedFiles = files\n .filter((f) => f.status === 'complete' || f.status === 'error' || f.status === 'cancelled')\n .sort((a, b) => {\n // Sort priority: error > cancelled > complete\n const priority: Record<FileProgressStatus, number> = {\n error: 0,\n cancelled: 1,\n complete: 2,\n uploading: 3,\n pending: 4,\n };\n return priority[a.status] - priority[b.status];\n });\n\n const handleClose = () => {\n dispatch(closeUploadProgress());\n };\n\n return (\n <Drawer.Root isVisible={isVisible} onClose={handleClose}>\n <Drawer.Body animationDirection=\"up\" width=\"41.6rem\" maxHeight=\"34.2rem\">\n <DialogHeader handleClose={handleClose} />\n <Drawer.ScrollableContent isContentExpanded={!isMinimized}>\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n paddingTop={4}\n paddingBottom={4}\n paddingLeft={4}\n paddingRight={4}\n >\n {currentFile && <FileRowRenderer file={currentFile} />}\n\n {completedFiles.length > 0 && (\n <CompletedFilesList>\n {completedFiles.map((file) => (\n <FileRowRenderer key={file.index} file={file} />\n ))}\n </CompletedFilesList>\n )}\n </Flex>\n </Drawer.ScrollableContent>\n </Drawer.Body>\n </Drawer.Root>\n );\n};\n"],"names":["HeaderStatusMessage","title","subtitle","_jsxs","Flex","direction","alignItems","paddingLeft","_jsx","Drawer","Title","Typography","variant","Description","textColor","HeaderStatusIcon","styled","theme","spaces","borderRadius","HeaderStatusWrapper","HeaderStatus","status","progress","totalFiles","successfulCount","errorCount","formatMessage","useIntl","background","Cross","fill","id","getTranslationKey","defaultMessage","successCount","count","Check","MinusCircle","progressPercentage","Math","round","Upload","total","percentage","HeaderIconButton","IconButton","ChevronWrapper","span","$isMinimized","HEADER_COLOR_MAP","uploading","canceled","success","error","DialogHeader","handleClose","isMinimized","files","uploadId","useTypedSelector","state","uploadProgress","dispatch","useTypedDispatch","retryCancelledFiles","useRetryCancelledFilesStreamMutation","isComplete","isAllUploaded","every","f","isAllErrored","length","hasCancelledFiles","some","filter","isSuccess","handleCancel","abortUpload","cancelUpload","handleRetry","unwrap","handleToggleMinimize","toggleMinimize","justifyContent","margin","hasRadius","gap","TextButton","onClick","fontWeight","label","ChevronDown","CloseButton","onClose","indeterminate","keyframes","IndeterminateBar","div","colors","neutral200","primary700","FileRow","icon","fileName","children","width","ellipsis","FileRowRenderer","file","isError","isCurrentFile","isCompleted","isCancelled","ArrowsCounterClockwise","name","CrossCircle","CheckCircle","CompletedFilesList","UploadProgressDialog","isVisible","currentFile","find","completedFiles","sort","a","b","priority","cancelled","complete","pending","closeUploadProgress","Root","Body","animationDirection","maxHeight","ScrollableContent","isContentExpanded","paddingTop","paddingBottom","paddingRight","map","index"],"mappings":"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"}
@@ -11,10 +11,13 @@ var styledComponents = require('styled-components');
11
11
  var api = require('../../services/api.js');
12
12
  var folders = require('../../services/folders.js');
13
13
  var translations = require('../../utils/translations.js');
14
+ var AssetDetailsDrawer = require('./components/AssetDetails/AssetDetailsDrawer.js');
14
15
  var AssetsGrid = require('./components/AssetsGrid.js');
15
16
  var AssetsTable = require('./components/AssetsTable.js');
17
+ var CreateFolderDialog = require('./components/CreateFolderDialog.js');
16
18
  var UploadDropZone = require('./components/DropZone/UploadDropZone.js');
17
19
  var UploadDropZoneContext = require('./components/DropZone/UploadDropZoneContext.js');
20
+ var ImportFromUrlDialog = require('./components/ImportFromUrlDialog.js');
18
21
  var constants = require('./constants.js');
19
22
  var useFolderInfo = require('./hooks/useFolderInfo.js');
20
23
  var useFolderNavigation = require('./hooks/useFolderNavigation.js');
@@ -42,7 +45,7 @@ var ToggleGroup__namespace = /*#__PURE__*/_interopNamespaceDefault(ToggleGroup);
42
45
  const INTERSECTION_OPTIONS = {
43
46
  threshold: 0.1
44
47
  };
45
- const AssetsView = ({ view, folderId })=>{
48
+ const AssetsView = ({ view, folderId, onAssetItemClick })=>{
46
49
  const { formatMessage } = reactIntl.useIntl();
47
50
  const { assets, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error } = useInfiniteAssets.useInfiniteAssets({
48
51
  folder: folderId
@@ -101,10 +104,12 @@ const AssetsView = ({ view, folderId })=>{
101
104
  children: [
102
105
  isGridView ? /*#__PURE__*/ jsxRuntime.jsx(AssetsGrid.AssetsGrid, {
103
106
  folders: folders$1,
104
- assets: assets
107
+ assets: assets,
108
+ onAssetItemClick: onAssetItemClick
105
109
  }) : /*#__PURE__*/ jsxRuntime.jsx(AssetsTable.AssetsTable, {
106
110
  assets: assets,
107
- folders: folders$1
111
+ folders: folders$1,
112
+ onAssetItemClick: onAssetItemClick
108
113
  }),
109
114
  /*#__PURE__*/ jsxRuntime.jsx("div", {
110
115
  ref: loadMoreRef,
@@ -158,7 +163,7 @@ const StyledToggleItem = styledComponents.styled(ToggleGroup__namespace.Item)`
158
163
  height: 1.6rem;
159
164
  }
160
165
  `;
161
- const HeaderWrapper = styledComponents.styled.div`
166
+ const HeaderWrapper = styledComponents.styled(designSystem.Box)`
162
167
  [data-strapi-header] {
163
168
  background: ${({ theme })=>theme.colors.neutral0};
164
169
 
@@ -169,6 +174,7 @@ const HeaderWrapper = styledComponents.styled.div`
169
174
  `;
170
175
  const AssetsPage = ()=>{
171
176
  const { formatMessage } = reactIntl.useIntl();
177
+ const { openDetails } = AssetDetailsDrawer.useAssetDetailsParam();
172
178
  const { currentFolderId } = useFolderNavigation.useFolderNavigation();
173
179
  const { title, itemCount } = useFolderInfo.useFolderInfo(currentFolderId);
174
180
  const itemCountLabel = formatMessage({
@@ -177,14 +183,18 @@ const AssetsPage = ()=>{
177
183
  }, {
178
184
  count: itemCount
179
185
  });
186
+ const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = React.useState(false);
180
187
  // View state
181
188
  const [view, setView] = strapiAdmin.usePersistentState(constants.localStorageKeys.view, constants.viewOptions.GRID);
182
189
  const isGridView = view === constants.viewOptions.GRID;
190
+ // Dialog state
191
+ const [isUrlDialogOpen, setIsUrlDialogOpen] = React.useState(false);
183
192
  // Refs
184
193
  const fileInputRef = React.useRef(null);
185
194
  const uploadDropZoneRef = React.useRef(null);
186
195
  // Upload handlers
187
196
  const [uploadFilesStream] = api.useUploadFilesStreamMutation();
197
+ const [uploadFromUrls] = api.useUploadFromUrlsMutation();
188
198
  const uploadFilesToFolder = async (files, folderId)=>{
189
199
  if (files.length === 0) return;
190
200
  const formData = new FormData();
@@ -221,94 +231,126 @@ const AssetsPage = ()=>{
221
231
  const handleDrop = async (files)=>{
222
232
  await uploadFilesToFolder(files, currentFolderId);
223
233
  };
224
- return /*#__PURE__*/ jsxRuntime.jsx(UploadDropZoneContext.UploadDropZoneProvider, {
225
- onDrop: handleDrop,
226
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
227
- ref: uploadDropZoneRef,
228
- children: /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, {
229
- minHeight: "100vh",
230
- background: "neutral0",
231
- children: [
232
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
233
- children: /*#__PURE__*/ jsxRuntime.jsx("input", {
234
- type: "file",
235
- ref: fileInputRef,
236
- onChange: handleFileChange,
237
- multiple: true
238
- })
239
- }),
240
- /*#__PURE__*/ jsxRuntime.jsx(HeaderWrapper, {
241
- children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
242
- title: `${title} (${itemCountLabel})`,
243
- primaryAction: /*#__PURE__*/ jsxRuntime.jsx(designSystem.SimpleMenu, {
244
- popoverPlacement: "bottom-end",
245
- variant: "default",
246
- endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {}),
247
- label: formatMessage({
248
- id: translations.getTranslationKey('new'),
249
- defaultMessage: 'New'
250
- }),
251
- children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
252
- onSelect: handleFileSelect,
253
- startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Files, {}),
254
- children: formatMessage({
255
- id: translations.getTranslationKey('import-files'),
256
- defaultMessage: 'Import files'
257
- })
234
+ const handleUrlUpload = async (urls)=>{
235
+ try {
236
+ await uploadFromUrls({
237
+ urls,
238
+ folderId: currentFolderId
239
+ }).unwrap();
240
+ } catch (error) {
241
+ // Error is already dispatched to store from the API queryFn
242
+ }
243
+ };
244
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
245
+ children: [
246
+ /*#__PURE__*/ jsxRuntime.jsx(UploadDropZoneContext.UploadDropZoneProvider, {
247
+ onDrop: handleDrop,
248
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
249
+ ref: uploadDropZoneRef,
250
+ children: /*#__PURE__*/ jsxRuntime.jsxs(strapiAdmin.Layouts.Root, {
251
+ minHeight: "100vh",
252
+ background: "neutral0",
253
+ children: [
254
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
255
+ children: /*#__PURE__*/ jsxRuntime.jsx("input", {
256
+ type: "file",
257
+ ref: fileInputRef,
258
+ onChange: handleFileChange,
259
+ multiple: true
258
260
  })
259
261
  }),
260
- subtitle: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
261
- justifyContent: "space-between",
262
- alignItems: "center",
263
- gap: 4,
264
- width: "100%",
265
- children: [
266
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
267
- gap: 4,
268
- alignItems: "center",
269
- children: "TODO: Filters and search"
262
+ /*#__PURE__*/ jsxRuntime.jsx(HeaderWrapper, {
263
+ children: /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Header, {
264
+ title: `${title} (${itemCountLabel})`,
265
+ primaryAction: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.SimpleMenu, {
266
+ popoverPlacement: "bottom-end",
267
+ variant: "default",
268
+ endIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.ChevronDown, {}),
269
+ label: formatMessage({
270
+ id: translations.getTranslationKey('new'),
271
+ defaultMessage: 'New'
272
+ }),
273
+ children: [
274
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
275
+ onSelect: ()=>setIsCreateFolderDialogOpen(true),
276
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Folder, {}),
277
+ children: formatMessage({
278
+ id: translations.getTranslationKey('folder.create.title'),
279
+ defaultMessage: 'New folder'
280
+ })
281
+ }),
282
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
283
+ onSelect: handleFileSelect,
284
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Files, {}),
285
+ children: formatMessage({
286
+ id: translations.getTranslationKey('import-files'),
287
+ defaultMessage: 'Import files'
288
+ })
289
+ }),
290
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.MenuItem, {
291
+ onSelect: ()=>setIsUrlDialogOpen(true),
292
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Link, {}),
293
+ children: formatMessage({
294
+ id: translations.getTranslationKey('import-from-url'),
295
+ defaultMessage: 'Import from URL'
296
+ })
297
+ })
298
+ ]
270
299
  }),
271
- /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
272
- gap: 4,
300
+ subtitle: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
301
+ justifyContent: "space-between",
273
302
  alignItems: "center",
303
+ gap: 4,
304
+ width: "100%",
274
305
  children: [
275
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
276
- children: "TODO: Sort"
306
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Flex, {
307
+ gap: 4,
308
+ alignItems: "center",
309
+ children: "TODO: Filters and search"
277
310
  }),
278
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleGroup, {
279
- type: "single",
280
- value: isGridView ? 'grid' : 'table',
281
- onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
282
- "aria-label": formatMessage({
283
- id: translations.getTranslationKey('view.switch.label'),
284
- defaultMessage: 'View options'
285
- }),
311
+ /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
312
+ gap: 4,
313
+ alignItems: "center",
286
314
  children: [
287
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
288
- value: "table",
289
- "aria-label": formatMessage({
290
- id: translations.getTranslationKey('view.table'),
291
- defaultMessage: 'Table view'
292
- }),
293
- children: [
294
- /*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
295
- formatMessage({
296
- id: translations.getTranslationKey('view.table'),
297
- defaultMessage: 'Table view'
298
- })
299
- ]
315
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
316
+ children: "TODO: Sort"
300
317
  }),
301
- /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
302
- value: "grid",
318
+ /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleGroup, {
319
+ type: "single",
320
+ value: isGridView ? 'grid' : 'table',
321
+ onValueChange: (value)=>value && setView(value === 'grid' ? constants.viewOptions.GRID : constants.viewOptions.TABLE),
303
322
  "aria-label": formatMessage({
304
- id: translations.getTranslationKey('view.grid'),
305
- defaultMessage: 'Grid view'
323
+ id: translations.getTranslationKey('view.switch.label'),
324
+ defaultMessage: 'View options'
306
325
  }),
307
326
  children: [
308
- /*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
309
- formatMessage({
310
- id: translations.getTranslationKey('view.grid'),
311
- defaultMessage: 'Grid view'
327
+ /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
328
+ value: "table",
329
+ "aria-label": formatMessage({
330
+ id: translations.getTranslationKey('view.table'),
331
+ defaultMessage: 'Table view'
332
+ }),
333
+ children: [
334
+ /*#__PURE__*/ jsxRuntime.jsx(icons.List, {}),
335
+ formatMessage({
336
+ id: translations.getTranslationKey('view.table'),
337
+ defaultMessage: 'Table view'
338
+ })
339
+ ]
340
+ }),
341
+ /*#__PURE__*/ jsxRuntime.jsxs(StyledToggleItem, {
342
+ value: "grid",
343
+ "aria-label": formatMessage({
344
+ id: translations.getTranslationKey('view.grid'),
345
+ defaultMessage: 'Grid view'
346
+ }),
347
+ children: [
348
+ /*#__PURE__*/ jsxRuntime.jsx(icons.GridFour, {}),
349
+ formatMessage({
350
+ id: translations.getTranslationKey('view.grid'),
351
+ defaultMessage: 'Grid view'
352
+ })
353
+ ]
312
354
  })
313
355
  ]
314
356
  })
@@ -316,27 +358,40 @@ const AssetsPage = ()=>{
316
358
  })
317
359
  ]
318
360
  })
319
- ]
320
- })
321
- })
322
- }),
323
- /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
324
- children: /*#__PURE__*/ jsxRuntime.jsxs(UploadDropZone.DropZoneWithOverlay, {
325
- children: [
326
- /*#__PURE__*/ jsxRuntime.jsx(UploadDropZone.DropFilesMessage, {
327
- uploadDropZoneRef: uploadDropZoneRef,
328
- folderName: title
329
- }),
330
- /*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
331
- view: view,
332
- folderId: currentFolderId
333
361
  })
334
- ]
335
- })
362
+ }),
363
+ /*#__PURE__*/ jsxRuntime.jsx(strapiAdmin.Layouts.Content, {
364
+ children: /*#__PURE__*/ jsxRuntime.jsxs(UploadDropZone.DropZoneWithOverlay, {
365
+ children: [
366
+ /*#__PURE__*/ jsxRuntime.jsx(UploadDropZone.DropFilesMessage, {
367
+ uploadDropZoneRef: uploadDropZoneRef,
368
+ folderName: title
369
+ }),
370
+ /*#__PURE__*/ jsxRuntime.jsx(AssetsView, {
371
+ view: view,
372
+ folderId: currentFolderId,
373
+ onAssetItemClick: openDetails
374
+ })
375
+ ]
376
+ })
377
+ })
378
+ ]
336
379
  })
337
- ]
338
- })
339
- })
380
+ })
381
+ }),
382
+ /*#__PURE__*/ jsxRuntime.jsx(CreateFolderDialog.CreateFolderDialog, {
383
+ open: isCreateFolderDialogOpen,
384
+ folderName: title,
385
+ parentFolderId: currentFolderId,
386
+ onClose: ()=>setIsCreateFolderDialogOpen(false)
387
+ }),
388
+ /*#__PURE__*/ jsxRuntime.jsx(ImportFromUrlDialog.ImportFromUrlDialog, {
389
+ open: isUrlDialogOpen,
390
+ onClose: ()=>setIsUrlDialogOpen(false),
391
+ onUpload: handleUrlUpload
392
+ }),
393
+ /*#__PURE__*/ jsxRuntime.jsx(AssetDetailsDrawer.AssetDetailsDrawer, {})
394
+ ]
340
395
  });
341
396
  };
342
397
 
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsPage.js","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ChevronDown, Files, GridFour as GridIcon, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUploadFilesStreamMutation } from '../../services/api';\nimport { useGetFoldersQuery } from '../../services/folders';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsTable } from './components/AssetsTable';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\n\nimport type { UploadFileInfo } from '../../../../../shared/contracts/files';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folderId: number | null;\n}\n\nconst AssetsView = ({ view, folderId }: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n const {\n assets,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n } = useInfiniteAssets({ folder: folderId });\n const { data: folders = [], isLoading: isLoadingFolders } = useGetFoldersQuery({\n parentId: folderId,\n });\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\n );\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n return (\n <Box padding={8}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n </Typography>\n </Box>\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} />\n ) : (\n <AssetsTable assets={assets} folders={folders} />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border: none;\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral150};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled.div`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n\n const { currentFolderId } = useFolderNavigation();\n const { title, itemCount } = useFolderInfo(currentFolderId);\n const itemCountLabel = formatMessage(\n {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n },\n { count: itemCount }\n );\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFilesStream] = useUploadFilesStreamMutation();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFilesStream({ formData, totalFiles: files.length }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n return (\n <UploadDropZoneProvider onDrop={handleDrop}>\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root minHeight=\"100vh\" background=\"neutral0\">\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={`${title} (${itemCountLabel})`}\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n subtitle={\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={4} width=\"100%\">\n <Flex gap={4} alignItems=\"center\">\n TODO: Filters and search\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <Box>TODO: Sort</Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView view={view} folderId={currentFolderId} />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </UploadDropZoneProvider>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","AssetsView","view","folderId","formatMessage","useIntl","assets","isLoading","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","useInfiniteAssets","folder","data","folders","isLoadingFolders","useGetFoldersQuery","parentId","isGridView","viewOptions","GRID","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","id","defaultMessage","Box","Typography","textColor","getTranslationKey","length","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","StyledToggleGroup","styled","ToggleGroup","Root","theme","colors","neutral200","borderRadius","StyledToggleItem","Item","spaces","neutral0","neutral800","fontSizes","fontWeights","semiBold","primary100","neutral150","HeaderWrapper","AssetsPage","currentFolderId","useFolderNavigation","title","itemCount","useFolderInfo","itemCountLabel","count","setView","usePersistentState","localStorageKeys","fileInputRef","useRef","uploadDropZoneRef","uploadFilesStream","useUploadFilesStreamMutation","uploadFilesToFolder","files","formData","FormData","fileInfoArray","forEach","file","append","push","name","caption","alternativeText","JSON","stringify","totalFiles","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","UploadDropZoneProvider","onDrop","Layouts","minHeight","background","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Files","subtitle","alignItems","gap","width","onValueChange","TABLE","aria-label","List","GridIcon","Content","DropZoneWithOverlay","DropFilesMessage","folderName"],"mappings":"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"}
1
+ {"version":3,"file":"AssetsPage.js","sources":["../../../../../admin/src/future/pages/Assets/AssetsPage.tsx"],"sourcesContent":["import { useRef, useCallback, useState, type ChangeEvent } from 'react';\n\nimport * as ToggleGroup from '@radix-ui/react-toggle-group';\nimport { Layouts, useElementOnScreen, usePersistentState } from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n Loader,\n MenuItem,\n SimpleMenu,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { ChevronDown, Files, Folder, GridFour as GridIcon, Link, List } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { useUploadFilesStreamMutation, useUploadFromUrlsMutation } from '../../services/api';\nimport { useGetFoldersQuery } from '../../services/folders';\nimport { getTranslationKey } from '../../utils/translations';\n\nimport {\n AssetDetailsDrawer,\n useAssetDetailsParam,\n} from './components/AssetDetails/AssetDetailsDrawer';\nimport { AssetsGrid } from './components/AssetsGrid';\nimport { AssetsTable } from './components/AssetsTable';\nimport { CreateFolderDialog } from './components/CreateFolderDialog';\nimport { DropFilesMessage, DropZoneWithOverlay } from './components/DropZone/UploadDropZone';\nimport { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext';\nimport { ImportFromUrlDialog } from './components/ImportFromUrlDialog';\nimport { localStorageKeys, viewOptions } from './constants';\nimport { useFolderInfo } from './hooks/useFolderInfo';\nimport { useFolderNavigation } from './hooks/useFolderNavigation';\nimport { useInfiniteAssets } from './hooks/useInfiniteAssets';\n\nimport type { UploadFileInfo } from '../../../../../shared/contracts/files';\n\nconst INTERSECTION_OPTIONS: IntersectionObserverInit = { threshold: 0.1 };\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsView\n * -----------------------------------------------------------------------------------------------*/\n\ninterface AssetsViewProps {\n view: number;\n folderId: number | null;\n onAssetItemClick: (assetId: number) => void;\n}\n\nconst AssetsView = ({ view, folderId, onAssetItemClick }: AssetsViewProps) => {\n const { formatMessage } = useIntl();\n const {\n assets,\n isLoading: isLoadingAssets,\n isFetchingMore,\n hasNextPage,\n fetchNextPage,\n error,\n } = useInfiniteAssets({ folder: folderId });\n const { data: folders = [], isLoading: isLoadingFolders } = useGetFoldersQuery({\n parentId: folderId,\n });\n\n const isGridView = view === viewOptions.GRID;\n const isLoading = isLoadingAssets || isLoadingFolders;\n\n const loadMoreRef = useElementOnScreen<HTMLDivElement>(\n useCallback(\n (isVisible) => {\n if (isVisible && hasNextPage && !isFetchingMore) {\n fetchNextPage();\n }\n },\n [hasNextPage, isFetchingMore, fetchNextPage]\n ),\n INTERSECTION_OPTIONS\n );\n\n if (isLoading) {\n return (\n <Flex justifyContent=\"center\" padding={8}>\n <Loader>{formatMessage({ id: 'app.loading', defaultMessage: 'Loading...' })}</Loader>\n </Flex>\n );\n }\n\n if (error) {\n return (\n <Box padding={8}>\n <Typography textColor=\"danger600\">\n {formatMessage({\n id: getTranslationKey('list.assets.error'),\n defaultMessage: 'An error occurred while fetching assets.',\n })}\n </Typography>\n </Box>\n );\n }\n\n if (folders.length === 0 && assets.length === 0) {\n return (\n <Box padding={8}>\n <Typography textColor=\"neutral600\">\n {formatMessage({\n id: 'app.components.EmptyStateLayout.content-document',\n defaultMessage: 'No content found',\n })}\n </Typography>\n </Box>\n );\n }\n return (\n <>\n {isGridView ? (\n <AssetsGrid folders={folders} assets={assets} onAssetItemClick={onAssetItemClick} />\n ) : (\n <AssetsTable assets={assets} folders={folders} onAssetItemClick={onAssetItemClick} />\n )}\n <div ref={loadMoreRef} style={{ height: 1 }} />\n {isFetchingMore && (\n <Flex justifyContent=\"center\" padding={4}>\n <Loader>\n {formatMessage({\n id: getTranslationKey('list.assets.loading-more'),\n defaultMessage: 'Loading more assets...',\n })}\n </Loader>\n </Flex>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * AssetsPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst StyledToggleGroup = styled(ToggleGroup.Root)`\n display: flex;\n border: 1px solid ${({ theme }) => theme.colors.neutral200};\n border-radius: ${({ theme }) => theme.borderRadius};\n overflow: hidden;\n`;\n\nconst StyledToggleItem = styled(ToggleGroup.Item)`\n display: flex;\n align-items: center;\n gap: ${({ theme }) => theme.spaces[2]};\n padding: ${({ theme }) => `${theme.spaces[2]} ${theme.spaces[4]}`};\n border: none;\n background: ${({ theme }) => theme.colors.neutral0};\n color: ${({ theme }) => theme.colors.neutral800};\n cursor: pointer;\n font-size: ${({ theme }) => theme.fontSizes[1]};\n font-weight: ${({ theme }) => theme.fontWeights.semiBold};\n\n &:hover {\n background: ${({ theme }) => theme.colors.primary100};\n }\n\n &[data-state='on'] {\n background: ${({ theme }) => theme.colors.neutral150};\n }\n\n svg {\n width: 1.6rem;\n height: 1.6rem;\n }\n`;\n\nconst HeaderWrapper = styled(Box)`\n [data-strapi-header] {\n background: ${({ theme }) => theme.colors.neutral0};\n\n h1 {\n font-size: 1.8rem;\n }\n }\n`;\n\nexport const AssetsPage = () => {\n const { formatMessage } = useIntl();\n const { openDetails } = useAssetDetailsParam();\n\n const { currentFolderId } = useFolderNavigation();\n const { title, itemCount } = useFolderInfo(currentFolderId);\n const itemCountLabel = formatMessage(\n {\n id: getTranslationKey('header.content.item-count'),\n defaultMessage: '{count, plural, =1 {# item} other {# items}}',\n },\n { count: itemCount }\n );\n\n const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);\n\n // View state\n const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);\n const isGridView = view === viewOptions.GRID;\n\n // Dialog state\n const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);\n\n // Refs\n const fileInputRef = useRef<HTMLInputElement>(null);\n const uploadDropZoneRef = useRef<HTMLDivElement>(null);\n\n // Upload handlers\n const [uploadFilesStream] = useUploadFilesStreamMutation();\n const [uploadFromUrls] = useUploadFromUrlsMutation();\n\n const uploadFilesToFolder = async (files: globalThis.File[], folderId: number | null) => {\n if (files.length === 0) return;\n\n const formData = new FormData();\n const fileInfoArray: UploadFileInfo[] = [];\n\n files.forEach((file) => {\n formData.append('files', file);\n fileInfoArray.push({\n name: file.name,\n caption: null,\n alternativeText: null,\n folder: folderId,\n });\n });\n\n formData.append('fileInfo', JSON.stringify(fileInfoArray));\n try {\n await uploadFilesStream({ formData, totalFiles: files.length }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n const handleFileSelect = () => {\n fileInputRef.current?.click();\n };\n\n const handleFileChange = async (e: ChangeEvent<HTMLInputElement>) => {\n const files = e.target.files;\n if (files && files.length > 0) {\n await uploadFilesToFolder(Array.from(files), currentFolderId);\n }\n e.target.value = '';\n };\n\n const handleDrop = async (files: globalThis.File[]) => {\n await uploadFilesToFolder(files, currentFolderId);\n };\n\n const handleUrlUpload = async (urls: string[]) => {\n try {\n await uploadFromUrls({ urls, folderId: currentFolderId }).unwrap();\n } catch (error) {\n // Error is already dispatched to store from the API queryFn\n }\n };\n\n return (\n <>\n <UploadDropZoneProvider onDrop={handleDrop}>\n <Box ref={uploadDropZoneRef}>\n <Layouts.Root minHeight=\"100vh\" background=\"neutral0\">\n <VisuallyHidden>\n <input type=\"file\" ref={fileInputRef} onChange={handleFileChange} multiple />\n </VisuallyHidden>\n\n <HeaderWrapper>\n <Layouts.Header\n title={`${title} (${itemCountLabel})`}\n primaryAction={\n <SimpleMenu\n popoverPlacement=\"bottom-end\"\n variant=\"default\"\n endIcon={<ChevronDown />}\n label={formatMessage({ id: getTranslationKey('new'), defaultMessage: 'New' })}\n >\n <MenuItem\n onSelect={() => setIsCreateFolderDialogOpen(true)}\n startIcon={<Folder />}\n >\n {formatMessage({\n id: getTranslationKey('folder.create.title'),\n defaultMessage: 'New folder',\n })}\n </MenuItem>\n <MenuItem onSelect={handleFileSelect} startIcon={<Files />}>\n {formatMessage({\n id: getTranslationKey('import-files'),\n defaultMessage: 'Import files',\n })}\n </MenuItem>\n <MenuItem onSelect={() => setIsUrlDialogOpen(true)} startIcon={<Link />}>\n {formatMessage({\n id: getTranslationKey('import-from-url'),\n defaultMessage: 'Import from URL',\n })}\n </MenuItem>\n </SimpleMenu>\n }\n subtitle={\n <Flex justifyContent=\"space-between\" alignItems=\"center\" gap={4} width=\"100%\">\n <Flex gap={4} alignItems=\"center\">\n TODO: Filters and search\n </Flex>\n\n <Flex gap={4} alignItems=\"center\">\n <Box>TODO: Sort</Box>\n <StyledToggleGroup\n type=\"single\"\n value={isGridView ? 'grid' : 'table'}\n onValueChange={(value) =>\n value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE)\n }\n aria-label={formatMessage({\n id: getTranslationKey('view.switch.label'),\n defaultMessage: 'View options',\n })}\n >\n <StyledToggleItem\n value=\"table\"\n aria-label={formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n >\n <List />\n {formatMessage({\n id: getTranslationKey('view.table'),\n defaultMessage: 'Table view',\n })}\n </StyledToggleItem>\n <StyledToggleItem\n value=\"grid\"\n aria-label={formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n >\n <GridIcon />\n {formatMessage({\n id: getTranslationKey('view.grid'),\n defaultMessage: 'Grid view',\n })}\n </StyledToggleItem>\n </StyledToggleGroup>\n </Flex>\n </Flex>\n }\n />\n </HeaderWrapper>\n\n <Layouts.Content>\n <DropZoneWithOverlay>\n <DropFilesMessage uploadDropZoneRef={uploadDropZoneRef} folderName={title} />\n <AssetsView view={view} folderId={currentFolderId} onAssetItemClick={openDetails} />\n </DropZoneWithOverlay>\n </Layouts.Content>\n </Layouts.Root>\n </Box>\n </UploadDropZoneProvider>\n <CreateFolderDialog\n open={isCreateFolderDialogOpen}\n folderName={title}\n parentFolderId={currentFolderId}\n onClose={() => setIsCreateFolderDialogOpen(false)}\n />\n <ImportFromUrlDialog\n open={isUrlDialogOpen}\n onClose={() => setIsUrlDialogOpen(false)}\n onUpload={handleUrlUpload}\n />\n <AssetDetailsDrawer />\n </>\n );\n};\n"],"names":["INTERSECTION_OPTIONS","threshold","AssetsView","view","folderId","onAssetItemClick","formatMessage","useIntl","assets","isLoading","isLoadingAssets","isFetchingMore","hasNextPage","fetchNextPage","error","useInfiniteAssets","folder","data","folders","isLoadingFolders","useGetFoldersQuery","parentId","isGridView","viewOptions","GRID","loadMoreRef","useElementOnScreen","useCallback","isVisible","_jsx","Flex","justifyContent","padding","Loader","id","defaultMessage","Box","Typography","textColor","getTranslationKey","length","_jsxs","_Fragment","AssetsGrid","AssetsTable","div","ref","style","height","StyledToggleGroup","styled","ToggleGroup","Root","theme","colors","neutral200","borderRadius","StyledToggleItem","Item","spaces","neutral0","neutral800","fontSizes","fontWeights","semiBold","primary100","neutral150","HeaderWrapper","AssetsPage","openDetails","useAssetDetailsParam","currentFolderId","useFolderNavigation","title","itemCount","useFolderInfo","itemCountLabel","count","isCreateFolderDialogOpen","setIsCreateFolderDialogOpen","useState","setView","usePersistentState","localStorageKeys","isUrlDialogOpen","setIsUrlDialogOpen","fileInputRef","useRef","uploadDropZoneRef","uploadFilesStream","useUploadFilesStreamMutation","uploadFromUrls","useUploadFromUrlsMutation","uploadFilesToFolder","files","formData","FormData","fileInfoArray","forEach","file","append","push","name","caption","alternativeText","JSON","stringify","totalFiles","unwrap","handleFileSelect","current","click","handleFileChange","e","target","Array","from","value","handleDrop","handleUrlUpload","urls","UploadDropZoneProvider","onDrop","Layouts","minHeight","background","VisuallyHidden","input","type","onChange","multiple","Header","primaryAction","SimpleMenu","popoverPlacement","variant","endIcon","ChevronDown","label","MenuItem","onSelect","startIcon","Folder","Files","Link","subtitle","alignItems","gap","width","onValueChange","TABLE","aria-label","List","GridIcon","Content","DropZoneWithOverlay","DropFilesMessage","folderName","CreateFolderDialog","open","parentFolderId","onClose","ImportFromUrlDialog","onUpload","AssetDetailsDrawer"],"mappings":"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"}