@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,18 +1,21 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
- import { useRef, useCallback } from 'react';
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import { useState, useRef, useCallback } from 'react';
3
3
  import * as ToggleGroup from '@radix-ui/react-toggle-group';
4
4
  import { usePersistentState, Layouts, useElementOnScreen } from '@strapi/admin/strapi-admin';
5
- import { Box, VisuallyHidden, SimpleMenu, MenuItem, Flex, Loader, Typography } from '@strapi/design-system';
6
- import { ChevronDown, Files, List, GridFour } from '@strapi/icons';
5
+ import { Box, VisuallyHidden, Flex, SimpleMenu, MenuItem, Loader, Typography } from '@strapi/design-system';
6
+ import { List, GridFour, Folder, Files, Link, ChevronDown } from '@strapi/icons';
7
7
  import { useIntl } from 'react-intl';
8
8
  import { styled } from 'styled-components';
9
- import { useUploadFilesStreamMutation } from '../../services/api.mjs';
9
+ import { useUploadFilesStreamMutation, useUploadFromUrlsMutation } from '../../services/api.mjs';
10
10
  import { useGetFoldersQuery } from '../../services/folders.mjs';
11
11
  import { getTranslationKey } from '../../utils/translations.mjs';
12
+ import { useAssetDetailsParam, AssetDetailsDrawer } from './components/AssetDetails/AssetDetailsDrawer.mjs';
12
13
  import { AssetsGrid } from './components/AssetsGrid.mjs';
13
14
  import { AssetsTable } from './components/AssetsTable.mjs';
15
+ import { CreateFolderDialog } from './components/CreateFolderDialog.mjs';
14
16
  import { DropZoneWithOverlay, DropFilesMessage } from './components/DropZone/UploadDropZone.mjs';
15
17
  import { UploadDropZoneProvider } from './components/DropZone/UploadDropZoneContext.mjs';
18
+ import { ImportFromUrlDialog } from './components/ImportFromUrlDialog.mjs';
16
19
  import { localStorageKeys, viewOptions } from './constants.mjs';
17
20
  import { useFolderInfo } from './hooks/useFolderInfo.mjs';
18
21
  import { useFolderNavigation } from './hooks/useFolderNavigation.mjs';
@@ -21,7 +24,7 @@ import { useInfiniteAssets } from './hooks/useInfiniteAssets.mjs';
21
24
  const INTERSECTION_OPTIONS = {
22
25
  threshold: 0.1
23
26
  };
24
- const AssetsView = ({ view, folderId })=>{
27
+ const AssetsView = ({ view, folderId, onAssetItemClick })=>{
25
28
  const { formatMessage } = useIntl();
26
29
  const { assets, isLoading: isLoadingAssets, isFetchingMore, hasNextPage, fetchNextPage, error } = useInfiniteAssets({
27
30
  folder: folderId
@@ -80,10 +83,12 @@ const AssetsView = ({ view, folderId })=>{
80
83
  children: [
81
84
  isGridView ? /*#__PURE__*/ jsx(AssetsGrid, {
82
85
  folders: folders,
83
- assets: assets
86
+ assets: assets,
87
+ onAssetItemClick: onAssetItemClick
84
88
  }) : /*#__PURE__*/ jsx(AssetsTable, {
85
89
  assets: assets,
86
- folders: folders
90
+ folders: folders,
91
+ onAssetItemClick: onAssetItemClick
87
92
  }),
88
93
  /*#__PURE__*/ jsx("div", {
89
94
  ref: loadMoreRef,
@@ -137,7 +142,7 @@ const StyledToggleItem = styled(ToggleGroup.Item)`
137
142
  height: 1.6rem;
138
143
  }
139
144
  `;
140
- const HeaderWrapper = styled.div`
145
+ const HeaderWrapper = styled(Box)`
141
146
  [data-strapi-header] {
142
147
  background: ${({ theme })=>theme.colors.neutral0};
143
148
 
@@ -148,6 +153,7 @@ const HeaderWrapper = styled.div`
148
153
  `;
149
154
  const AssetsPage = ()=>{
150
155
  const { formatMessage } = useIntl();
156
+ const { openDetails } = useAssetDetailsParam();
151
157
  const { currentFolderId } = useFolderNavigation();
152
158
  const { title, itemCount } = useFolderInfo(currentFolderId);
153
159
  const itemCountLabel = formatMessage({
@@ -156,14 +162,18 @@ const AssetsPage = ()=>{
156
162
  }, {
157
163
  count: itemCount
158
164
  });
165
+ const [isCreateFolderDialogOpen, setIsCreateFolderDialogOpen] = useState(false);
159
166
  // View state
160
167
  const [view, setView] = usePersistentState(localStorageKeys.view, viewOptions.GRID);
161
168
  const isGridView = view === viewOptions.GRID;
169
+ // Dialog state
170
+ const [isUrlDialogOpen, setIsUrlDialogOpen] = useState(false);
162
171
  // Refs
163
172
  const fileInputRef = useRef(null);
164
173
  const uploadDropZoneRef = useRef(null);
165
174
  // Upload handlers
166
175
  const [uploadFilesStream] = useUploadFilesStreamMutation();
176
+ const [uploadFromUrls] = useUploadFromUrlsMutation();
167
177
  const uploadFilesToFolder = async (files, folderId)=>{
168
178
  if (files.length === 0) return;
169
179
  const formData = new FormData();
@@ -200,94 +210,126 @@ const AssetsPage = ()=>{
200
210
  const handleDrop = async (files)=>{
201
211
  await uploadFilesToFolder(files, currentFolderId);
202
212
  };
203
- return /*#__PURE__*/ jsx(UploadDropZoneProvider, {
204
- onDrop: handleDrop,
205
- children: /*#__PURE__*/ jsx(Box, {
206
- ref: uploadDropZoneRef,
207
- children: /*#__PURE__*/ jsxs(Layouts.Root, {
208
- minHeight: "100vh",
209
- background: "neutral0",
210
- children: [
211
- /*#__PURE__*/ jsx(VisuallyHidden, {
212
- children: /*#__PURE__*/ jsx("input", {
213
- type: "file",
214
- ref: fileInputRef,
215
- onChange: handleFileChange,
216
- multiple: true
217
- })
218
- }),
219
- /*#__PURE__*/ jsx(HeaderWrapper, {
220
- children: /*#__PURE__*/ jsx(Layouts.Header, {
221
- title: `${title} (${itemCountLabel})`,
222
- primaryAction: /*#__PURE__*/ jsx(SimpleMenu, {
223
- popoverPlacement: "bottom-end",
224
- variant: "default",
225
- endIcon: /*#__PURE__*/ jsx(ChevronDown, {}),
226
- label: formatMessage({
227
- id: getTranslationKey('new'),
228
- defaultMessage: 'New'
229
- }),
230
- children: /*#__PURE__*/ jsx(MenuItem, {
231
- onSelect: handleFileSelect,
232
- startIcon: /*#__PURE__*/ jsx(Files, {}),
233
- children: formatMessage({
234
- id: getTranslationKey('import-files'),
235
- defaultMessage: 'Import files'
236
- })
213
+ const handleUrlUpload = async (urls)=>{
214
+ try {
215
+ await uploadFromUrls({
216
+ urls,
217
+ folderId: currentFolderId
218
+ }).unwrap();
219
+ } catch (error) {
220
+ // Error is already dispatched to store from the API queryFn
221
+ }
222
+ };
223
+ return /*#__PURE__*/ jsxs(Fragment, {
224
+ children: [
225
+ /*#__PURE__*/ jsx(UploadDropZoneProvider, {
226
+ onDrop: handleDrop,
227
+ children: /*#__PURE__*/ jsx(Box, {
228
+ ref: uploadDropZoneRef,
229
+ children: /*#__PURE__*/ jsxs(Layouts.Root, {
230
+ minHeight: "100vh",
231
+ background: "neutral0",
232
+ children: [
233
+ /*#__PURE__*/ jsx(VisuallyHidden, {
234
+ children: /*#__PURE__*/ jsx("input", {
235
+ type: "file",
236
+ ref: fileInputRef,
237
+ onChange: handleFileChange,
238
+ multiple: true
237
239
  })
238
240
  }),
239
- subtitle: /*#__PURE__*/ jsxs(Flex, {
240
- justifyContent: "space-between",
241
- alignItems: "center",
242
- gap: 4,
243
- width: "100%",
244
- children: [
245
- /*#__PURE__*/ jsx(Flex, {
246
- gap: 4,
247
- alignItems: "center",
248
- children: "TODO: Filters and search"
241
+ /*#__PURE__*/ jsx(HeaderWrapper, {
242
+ children: /*#__PURE__*/ jsx(Layouts.Header, {
243
+ title: `${title} (${itemCountLabel})`,
244
+ primaryAction: /*#__PURE__*/ jsxs(SimpleMenu, {
245
+ popoverPlacement: "bottom-end",
246
+ variant: "default",
247
+ endIcon: /*#__PURE__*/ jsx(ChevronDown, {}),
248
+ label: formatMessage({
249
+ id: getTranslationKey('new'),
250
+ defaultMessage: 'New'
251
+ }),
252
+ children: [
253
+ /*#__PURE__*/ jsx(MenuItem, {
254
+ onSelect: ()=>setIsCreateFolderDialogOpen(true),
255
+ startIcon: /*#__PURE__*/ jsx(Folder, {}),
256
+ children: formatMessage({
257
+ id: getTranslationKey('folder.create.title'),
258
+ defaultMessage: 'New folder'
259
+ })
260
+ }),
261
+ /*#__PURE__*/ jsx(MenuItem, {
262
+ onSelect: handleFileSelect,
263
+ startIcon: /*#__PURE__*/ jsx(Files, {}),
264
+ children: formatMessage({
265
+ id: getTranslationKey('import-files'),
266
+ defaultMessage: 'Import files'
267
+ })
268
+ }),
269
+ /*#__PURE__*/ jsx(MenuItem, {
270
+ onSelect: ()=>setIsUrlDialogOpen(true),
271
+ startIcon: /*#__PURE__*/ jsx(Link, {}),
272
+ children: formatMessage({
273
+ id: getTranslationKey('import-from-url'),
274
+ defaultMessage: 'Import from URL'
275
+ })
276
+ })
277
+ ]
249
278
  }),
250
- /*#__PURE__*/ jsxs(Flex, {
251
- gap: 4,
279
+ subtitle: /*#__PURE__*/ jsxs(Flex, {
280
+ justifyContent: "space-between",
252
281
  alignItems: "center",
282
+ gap: 4,
283
+ width: "100%",
253
284
  children: [
254
- /*#__PURE__*/ jsx(Box, {
255
- children: "TODO: Sort"
285
+ /*#__PURE__*/ jsx(Flex, {
286
+ gap: 4,
287
+ alignItems: "center",
288
+ children: "TODO: Filters and search"
256
289
  }),
257
- /*#__PURE__*/ jsxs(StyledToggleGroup, {
258
- type: "single",
259
- value: isGridView ? 'grid' : 'table',
260
- onValueChange: (value)=>value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE),
261
- "aria-label": formatMessage({
262
- id: getTranslationKey('view.switch.label'),
263
- defaultMessage: 'View options'
264
- }),
290
+ /*#__PURE__*/ jsxs(Flex, {
291
+ gap: 4,
292
+ alignItems: "center",
265
293
  children: [
266
- /*#__PURE__*/ jsxs(StyledToggleItem, {
267
- value: "table",
268
- "aria-label": formatMessage({
269
- id: getTranslationKey('view.table'),
270
- defaultMessage: 'Table view'
271
- }),
272
- children: [
273
- /*#__PURE__*/ jsx(List, {}),
274
- formatMessage({
275
- id: getTranslationKey('view.table'),
276
- defaultMessage: 'Table view'
277
- })
278
- ]
294
+ /*#__PURE__*/ jsx(Box, {
295
+ children: "TODO: Sort"
279
296
  }),
280
- /*#__PURE__*/ jsxs(StyledToggleItem, {
281
- value: "grid",
297
+ /*#__PURE__*/ jsxs(StyledToggleGroup, {
298
+ type: "single",
299
+ value: isGridView ? 'grid' : 'table',
300
+ onValueChange: (value)=>value && setView(value === 'grid' ? viewOptions.GRID : viewOptions.TABLE),
282
301
  "aria-label": formatMessage({
283
- id: getTranslationKey('view.grid'),
284
- defaultMessage: 'Grid view'
302
+ id: getTranslationKey('view.switch.label'),
303
+ defaultMessage: 'View options'
285
304
  }),
286
305
  children: [
287
- /*#__PURE__*/ jsx(GridFour, {}),
288
- formatMessage({
289
- id: getTranslationKey('view.grid'),
290
- defaultMessage: 'Grid view'
306
+ /*#__PURE__*/ jsxs(StyledToggleItem, {
307
+ value: "table",
308
+ "aria-label": formatMessage({
309
+ id: getTranslationKey('view.table'),
310
+ defaultMessage: 'Table view'
311
+ }),
312
+ children: [
313
+ /*#__PURE__*/ jsx(List, {}),
314
+ formatMessage({
315
+ id: getTranslationKey('view.table'),
316
+ defaultMessage: 'Table view'
317
+ })
318
+ ]
319
+ }),
320
+ /*#__PURE__*/ jsxs(StyledToggleItem, {
321
+ value: "grid",
322
+ "aria-label": formatMessage({
323
+ id: getTranslationKey('view.grid'),
324
+ defaultMessage: 'Grid view'
325
+ }),
326
+ children: [
327
+ /*#__PURE__*/ jsx(GridFour, {}),
328
+ formatMessage({
329
+ id: getTranslationKey('view.grid'),
330
+ defaultMessage: 'Grid view'
331
+ })
332
+ ]
291
333
  })
292
334
  ]
293
335
  })
@@ -295,27 +337,40 @@ const AssetsPage = ()=>{
295
337
  })
296
338
  ]
297
339
  })
298
- ]
299
- })
300
- })
301
- }),
302
- /*#__PURE__*/ jsx(Layouts.Content, {
303
- children: /*#__PURE__*/ jsxs(DropZoneWithOverlay, {
304
- children: [
305
- /*#__PURE__*/ jsx(DropFilesMessage, {
306
- uploadDropZoneRef: uploadDropZoneRef,
307
- folderName: title
308
- }),
309
- /*#__PURE__*/ jsx(AssetsView, {
310
- view: view,
311
- folderId: currentFolderId
312
340
  })
313
- ]
314
- })
341
+ }),
342
+ /*#__PURE__*/ jsx(Layouts.Content, {
343
+ children: /*#__PURE__*/ jsxs(DropZoneWithOverlay, {
344
+ children: [
345
+ /*#__PURE__*/ jsx(DropFilesMessage, {
346
+ uploadDropZoneRef: uploadDropZoneRef,
347
+ folderName: title
348
+ }),
349
+ /*#__PURE__*/ jsx(AssetsView, {
350
+ view: view,
351
+ folderId: currentFolderId,
352
+ onAssetItemClick: openDetails
353
+ })
354
+ ]
355
+ })
356
+ })
357
+ ]
315
358
  })
316
- ]
317
- })
318
- })
359
+ })
360
+ }),
361
+ /*#__PURE__*/ jsx(CreateFolderDialog, {
362
+ open: isCreateFolderDialogOpen,
363
+ folderName: title,
364
+ parentFolderId: currentFolderId,
365
+ onClose: ()=>setIsCreateFolderDialogOpen(false)
366
+ }),
367
+ /*#__PURE__*/ jsx(ImportFromUrlDialog, {
368
+ open: isUrlDialogOpen,
369
+ onClose: ()=>setIsUrlDialogOpen(false),
370
+ onUpload: handleUrlUpload
371
+ }),
372
+ /*#__PURE__*/ jsx(AssetDetailsDrawer, {})
373
+ ]
319
374
  });
320
375
  };
321
376
 
@@ -1 +1 @@
1
- {"version":3,"file":"AssetsPage.mjs","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.mjs","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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"}