@payloadcms/ui 4.0.0-internal.4c792ad → 4.0.0-internal.5214550

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 (595) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/css/colors.css +3 -0
  3. package/dist/css/forms.css +6 -3
  4. package/dist/css/theme.css +2 -1
  5. package/dist/css/utilities.css +3 -2
  6. package/dist/elements/AddNewRelation/index.css +28 -28
  7. package/dist/elements/AppHeader/index.d.ts +2 -1
  8. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  9. package/dist/elements/AppHeader/index.js +9 -0
  10. package/dist/elements/AppHeader/index.js.map +1 -1
  11. package/dist/elements/ArrayAction/index.js +2 -2
  12. package/dist/elements/ArrayAction/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/ActionsBar/index.css +4 -8
  14. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  15. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/ActionsBar/index.js +15 -22
  17. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/AddFilesView/index.css +14 -8
  19. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  20. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  21. package/dist/elements/BulkUpload/AddFilesView/index.js +41 -36
  22. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  23. package/dist/elements/BulkUpload/AddingFilesView/index.css +158 -6
  24. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +5 -1
  25. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  26. package/dist/elements/BulkUpload/AddingFilesView/index.js +134 -65
  27. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  28. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  29. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  31. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  32. package/dist/elements/BulkUpload/EditForm/index.js +16 -17
  33. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  34. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  35. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  36. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  37. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  38. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +78 -64
  39. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  40. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  41. package/dist/elements/BulkUpload/EditMany/index.js +28 -10
  42. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  43. package/dist/elements/BulkUpload/FileSidebar/index.css +63 -143
  44. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  45. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -175
  46. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  47. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  48. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  49. package/dist/elements/BulkUpload/index.css +48 -0
  50. package/dist/elements/BulkUpload/index.d.ts +6 -5
  51. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  52. package/dist/elements/BulkUpload/index.js +42 -41
  53. package/dist/elements/BulkUpload/index.js.map +1 -1
  54. package/dist/elements/Button/index.d.ts.map +1 -1
  55. package/dist/elements/Button/index.js +5 -0
  56. package/dist/elements/Button/index.js.map +1 -1
  57. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  58. package/dist/elements/ClipboardAction/index.js +1 -0
  59. package/dist/elements/ClipboardAction/index.js.map +1 -1
  60. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  61. package/dist/elements/Collapsible/index.js +2 -0
  62. package/dist/elements/Collapsible/index.js.map +1 -1
  63. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  64. package/dist/elements/ColumnSelection/Popup.js +1 -5
  65. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  66. package/dist/elements/CopyLocaleData/index.js +1 -1
  67. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  68. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  69. package/dist/elements/CreateDocumentButton/index.js +0 -1
  70. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  71. package/dist/elements/DatePicker/index.css +9 -9
  72. package/dist/elements/DatePicker/index.js +1 -1
  73. package/dist/elements/DatePicker/index.js.map +1 -1
  74. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  75. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  76. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  77. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  78. package/dist/elements/Dialog/DialogModal/index.d.ts +5 -0
  79. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  80. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  81. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  82. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  83. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  84. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  85. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  86. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  87. package/dist/elements/Dialog/index.css +7 -1
  88. package/dist/elements/DocumentControls/index.css +1 -1
  89. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  90. package/dist/elements/DocumentControls/index.js +11 -1
  91. package/dist/elements/DocumentControls/index.js.map +1 -1
  92. package/dist/elements/DocumentFields/index.css +14 -2
  93. package/dist/elements/DocumentFields/index.d.ts +5 -0
  94. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  95. package/dist/elements/DocumentFields/index.js +9 -1
  96. package/dist/elements/DocumentFields/index.js.map +1 -1
  97. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  98. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  99. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  100. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  101. package/dist/elements/DocumentHeader/index.js +2 -3
  102. package/dist/elements/DocumentHeader/index.js.map +1 -1
  103. package/dist/elements/DraggableSortable/DragOverlayPreview/index.css +1 -1
  104. package/dist/elements/DrawerActionHeader/index.css +1 -1
  105. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  106. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  107. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  108. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  109. package/dist/elements/DrawerHeader/index.js.map +1 -0
  110. package/dist/elements/Dropzone/index.css +5 -13
  111. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +1 -1
  112. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  113. package/dist/elements/EditUpload/index.css +97 -158
  114. package/dist/elements/EditUpload/index.d.ts +2 -1
  115. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  116. package/dist/elements/EditUpload/index.js +209 -231
  117. package/dist/elements/EditUpload/index.js.map +1 -1
  118. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  119. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  120. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  121. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  122. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  123. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  124. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  125. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  126. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  127. package/dist/elements/FileDetails/StaticFileDetails/index.css +140 -0
  128. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  129. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  130. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  131. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  132. package/dist/elements/FileDetails/index.d.ts +1 -1
  133. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  134. package/dist/elements/FileDetails/index.js.map +1 -1
  135. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  136. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  137. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  138. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  139. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  140. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  141. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  142. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  143. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  144. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  145. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  146. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  147. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  148. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  149. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  150. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  151. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  152. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  153. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  154. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  155. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  156. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  157. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  158. package/dist/elements/FileManager/FileToolbar/index.js +106 -0
  159. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  160. package/dist/elements/FileManager/index.css +154 -0
  161. package/dist/elements/FileManager/index.d.ts +19 -0
  162. package/dist/elements/FileManager/index.d.ts.map +1 -0
  163. package/dist/elements/FileManager/index.js +424 -0
  164. package/dist/elements/FileManager/index.js.map +1 -0
  165. package/dist/elements/GroupBy/Popup.d.ts.map +1 -1
  166. package/dist/elements/GroupBy/Popup.js +0 -1
  167. package/dist/elements/GroupBy/Popup.js.map +1 -1
  168. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +5 -3
  169. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +1 -0
  170. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +1 -1
  171. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  172. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  173. package/dist/elements/Hierarchy/DocHeaderButton/index.js +12 -12
  174. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  175. package/dist/elements/Hierarchy/Field/index.client.js +14 -14
  176. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  177. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -0
  178. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -0
  179. package/dist/elements/Hierarchy/Modal/index.css +88 -0
  180. package/dist/elements/Hierarchy/Modal/index.d.ts +20 -0
  181. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -0
  182. package/dist/elements/Hierarchy/{Drawer → Modal}/index.js +105 -81
  183. package/dist/elements/Hierarchy/Modal/index.js.map +1 -0
  184. package/dist/elements/Hierarchy/{Drawer → Modal}/types.d.ts +22 -18
  185. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -0
  186. package/dist/elements/Hierarchy/Modal/types.js.map +1 -0
  187. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts +30 -0
  188. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -0
  189. package/dist/elements/Hierarchy/{Drawer/useHierarchyDrawer.js → Modal/useHierarchyModal.js} +51 -50
  190. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -0
  191. package/dist/elements/Hierarchy/MoveMany/index.d.ts +2 -2
  192. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  193. package/dist/elements/Hierarchy/MoveMany/index.js +9 -9
  194. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  195. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +38 -13
  196. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  197. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +37 -31
  198. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  199. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  200. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  201. package/dist/elements/Hierarchy/Tree/index.js +18 -5
  202. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  203. package/dist/elements/ListControls/index.d.ts.map +1 -1
  204. package/dist/elements/ListControls/index.js +1 -2
  205. package/dist/elements/ListControls/index.js.map +1 -1
  206. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  207. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  208. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  209. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  210. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  211. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  212. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  213. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  214. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +4 -4
  215. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  216. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  217. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  218. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  219. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  220. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +26 -43
  221. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  222. package/dist/elements/LivePreview/Window/index.css +6 -0
  223. package/dist/elements/MiniCarousel/index.css +94 -0
  224. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  225. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  226. package/dist/elements/MiniCarousel/index.js +84 -0
  227. package/dist/elements/MiniCarousel/index.js.map +1 -0
  228. package/dist/elements/Nav/SettingsMenuButton/index.css +5 -0
  229. package/dist/elements/Nav/SettingsMenuButton/index.d.ts +1 -1
  230. package/dist/elements/Nav/SettingsMenuButton/index.d.ts.map +1 -1
  231. package/dist/elements/Nav/SettingsMenuButton/index.js +1 -1
  232. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  233. package/dist/elements/Nav/index.css +2 -2
  234. package/dist/elements/NavGroup/index.css +1 -1
  235. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
  236. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  237. package/dist/elements/Popup/PopupTrigger/index.js +3 -0
  238. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  239. package/dist/elements/Popup/index.d.ts +7 -1
  240. package/dist/elements/Popup/index.d.ts.map +1 -1
  241. package/dist/elements/Popup/index.js +3 -1
  242. package/dist/elements/Popup/index.js.map +1 -1
  243. package/dist/elements/PreviewSizes/index.css +149 -0
  244. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  245. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  246. package/dist/elements/PreviewSizes/index.js +1 -1
  247. package/dist/elements/PreviewSizes/index.js.map +1 -1
  248. package/dist/elements/ReactSelect/DropdownIndicator/index.css +1 -1
  249. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
  250. package/dist/elements/ReactSelect/DropdownIndicator/index.js +19 -12
  251. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  252. package/dist/elements/ReactSelect/index.css +2 -2
  253. package/dist/elements/ReactSelect/index.js +1 -1
  254. package/dist/elements/ReactSelect/index.js.map +1 -1
  255. package/dist/elements/ReactSelect/types.d.ts +1 -0
  256. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  257. package/dist/elements/ReactSelect/types.js.map +1 -1
  258. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  259. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  260. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  261. package/dist/elements/RelationshipTable/index.css +1 -2
  262. package/dist/elements/Search/SearchInput/index.js +1 -1
  263. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  264. package/dist/elements/SidebarRow/index.css +0 -2
  265. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  266. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +32 -13
  267. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  268. package/dist/elements/Table/index.css +7 -2
  269. package/dist/elements/Thumbnail/index.css +41 -0
  270. package/dist/elements/Thumbnail/index.d.ts +3 -3
  271. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  272. package/dist/elements/Thumbnail/index.js +1 -1
  273. package/dist/elements/Thumbnail/index.js.map +1 -1
  274. package/dist/elements/TimezonePicker/index.css +1 -1
  275. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  276. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  277. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  278. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  279. package/dist/elements/Upload/index.css +134 -45
  280. package/dist/elements/Upload/index.d.ts +3 -8
  281. package/dist/elements/Upload/index.d.ts.map +1 -1
  282. package/dist/elements/Upload/index.js +71 -92
  283. package/dist/elements/Upload/index.js.map +1 -1
  284. package/dist/elements/UserMenu/index.d.ts +1 -0
  285. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  286. package/dist/elements/UserMenu/index.js +2 -1
  287. package/dist/elements/UserMenu/index.js.map +1 -1
  288. package/dist/exports/client/index.d.ts +8 -4
  289. package/dist/exports/client/index.d.ts.map +1 -1
  290. package/dist/exports/client/index.js +1 -2
  291. package/dist/exports/client/index.js.map +4 -4
  292. package/dist/exports/rsc/index.d.ts +3 -0
  293. package/dist/exports/rsc/index.d.ts.map +1 -1
  294. package/dist/exports/rsc/index.js +3 -0
  295. package/dist/exports/rsc/index.js.map +1 -1
  296. package/dist/exports/shared/index.js +2 -2
  297. package/dist/exports/shared/index.js.map +2 -2
  298. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +1 -1
  299. package/dist/fields/Blocks/BlockSelector/index.css +2 -5
  300. package/dist/fields/Blocks/SectionTitle/index.d.ts.map +1 -1
  301. package/dist/fields/Blocks/SectionTitle/index.js +1 -0
  302. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  303. package/dist/fields/Checkbox/index.css +2 -2
  304. package/dist/fields/ConfirmPassword/index.d.ts +4 -0
  305. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  306. package/dist/fields/ConfirmPassword/index.js +37 -33
  307. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  308. package/dist/fields/Group/index.css +4 -10
  309. package/dist/fields/Number/Input.d.ts.map +1 -1
  310. package/dist/fields/Number/Input.js +62 -46
  311. package/dist/fields/Number/Input.js.map +1 -1
  312. package/dist/fields/Number/index.css +19 -0
  313. package/dist/fields/Number/types.d.ts +10 -0
  314. package/dist/fields/Number/types.d.ts.map +1 -1
  315. package/dist/fields/Number/types.js.map +1 -1
  316. package/dist/fields/Password/input.d.ts.map +1 -1
  317. package/dist/fields/Password/input.js +33 -29
  318. package/dist/fields/Password/input.js.map +1 -1
  319. package/dist/fields/Password/types.d.ts +4 -0
  320. package/dist/fields/Password/types.d.ts.map +1 -1
  321. package/dist/fields/Password/types.js.map +1 -1
  322. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  323. package/dist/fields/Relationship/Input.js +4 -0
  324. package/dist/fields/Relationship/Input.js.map +1 -1
  325. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  326. package/dist/fields/Relationship/types.d.ts +4 -0
  327. package/dist/fields/Relationship/types.d.ts.map +1 -1
  328. package/dist/fields/Relationship/types.js.map +1 -1
  329. package/dist/fields/Select/Input.d.ts +4 -0
  330. package/dist/fields/Select/Input.d.ts.map +1 -1
  331. package/dist/fields/Select/Input.js +45 -40
  332. package/dist/fields/Select/Input.js.map +1 -1
  333. package/dist/fields/Slug/index.d.ts +7 -5
  334. package/dist/fields/Slug/index.d.ts.map +1 -1
  335. package/dist/fields/Slug/index.js +6 -4
  336. package/dist/fields/Slug/index.js.map +1 -1
  337. package/dist/fields/Text/Input.d.ts.map +1 -1
  338. package/dist/fields/Text/Input.js +44 -37
  339. package/dist/fields/Text/Input.js.map +1 -1
  340. package/dist/fields/Text/types.d.ts +9 -0
  341. package/dist/fields/Text/types.d.ts.map +1 -1
  342. package/dist/fields/Text/types.js.map +1 -1
  343. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  344. package/dist/fields/Textarea/Input.js +27 -23
  345. package/dist/fields/Textarea/Input.js.map +1 -1
  346. package/dist/fields/Textarea/index.css +1 -1
  347. package/dist/fields/Textarea/types.d.ts +4 -0
  348. package/dist/fields/Textarea/types.d.ts.map +1 -1
  349. package/dist/fields/Textarea/types.js.map +1 -1
  350. package/dist/fields/Upload/Input.d.ts.map +1 -1
  351. package/dist/fields/Upload/Input.js +12 -11
  352. package/dist/fields/Upload/Input.js.map +1 -1
  353. package/dist/fields/Upload/index.js +1 -1
  354. package/dist/fields/Upload/index.js.map +1 -1
  355. package/dist/fields/index.d.ts.map +1 -1
  356. package/dist/fields/index.js +2 -0
  357. package/dist/fields/index.js.map +1 -1
  358. package/dist/forms/Form/types.d.ts +2 -2
  359. package/dist/forms/Form/types.d.ts.map +1 -1
  360. package/dist/forms/Form/types.js.map +1 -1
  361. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  362. package/dist/forms/RenderFields/RenderField.js +10 -0
  363. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  364. package/dist/forms/RenderFields/index.css +4 -4
  365. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  366. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  367. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +21 -5
  368. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  369. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -2
  370. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  371. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  372. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -2
  373. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  374. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  375. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -2
  376. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  377. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  378. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  379. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  380. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  381. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  382. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  383. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  384. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  385. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  386. package/dist/graphics/Icon/index.js +1 -1
  387. package/dist/graphics/Icon/index.js.map +1 -1
  388. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  389. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  390. package/dist/hooks/useElementHeightVariable.js +53 -0
  391. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  392. package/dist/icons/Crop/index.css +5 -0
  393. package/dist/icons/Crop/index.d.ts +7 -0
  394. package/dist/icons/Crop/index.d.ts.map +1 -0
  395. package/dist/icons/Crop/index.js +24 -0
  396. package/dist/icons/Crop/index.js.map +1 -0
  397. package/dist/icons/Download/index.css +5 -0
  398. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  399. package/dist/icons/Download/index.d.ts.map +1 -0
  400. package/dist/icons/Download/index.js +27 -0
  401. package/dist/icons/Download/index.js.map +1 -0
  402. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  403. package/dist/icons/NewTab/index.d.ts +7 -0
  404. package/dist/icons/NewTab/index.d.ts.map +1 -0
  405. package/dist/icons/NewTab/index.js +25 -0
  406. package/dist/icons/NewTab/index.js.map +1 -0
  407. package/dist/icons/Replace/index.css +5 -0
  408. package/dist/icons/Replace/index.d.ts +6 -0
  409. package/dist/icons/Replace/index.d.ts.map +1 -0
  410. package/dist/icons/Replace/index.js +20 -0
  411. package/dist/icons/Replace/index.js.map +1 -0
  412. package/dist/icons/Reset/index.css +5 -0
  413. package/dist/icons/Reset/index.d.ts +7 -0
  414. package/dist/icons/Reset/index.d.ts.map +1 -0
  415. package/dist/icons/Reset/index.js +25 -0
  416. package/dist/icons/Reset/index.js.map +1 -0
  417. package/dist/icons/Swap/index.js +1 -1
  418. package/dist/icons/Swap/index.js.map +1 -1
  419. package/dist/providers/Auth/index.d.ts +3 -5
  420. package/dist/providers/Auth/index.d.ts.map +1 -1
  421. package/dist/providers/Auth/index.js +3 -8
  422. package/dist/providers/Auth/index.js.map +1 -1
  423. package/dist/providers/DocumentInfo/types.d.ts +2 -2
  424. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  425. package/dist/providers/DocumentInfo/types.js.map +1 -1
  426. package/dist/providers/Root/index.d.ts +2 -2
  427. package/dist/providers/Root/index.d.ts.map +1 -1
  428. package/dist/providers/Root/index.js.map +1 -1
  429. package/dist/scss/app.scss +3 -2
  430. package/dist/styles.css +15 -7
  431. package/dist/templates/Default/index.d.ts.map +1 -1
  432. package/dist/templates/Default/index.js +7 -1
  433. package/dist/templates/Default/index.js.map +1 -1
  434. package/dist/utilities/buildFormState.d.ts.map +1 -1
  435. package/dist/utilities/buildFormState.js +1 -0
  436. package/dist/utilities/buildFormState.js.map +1 -1
  437. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  438. package/dist/utilities/copyDataFromLocale.js +1 -0
  439. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  440. package/dist/utilities/formatRelativeDate.d.ts +15 -0
  441. package/dist/utilities/formatRelativeDate.d.ts.map +1 -0
  442. package/dist/utilities/formatRelativeDate.js +62 -0
  443. package/dist/utilities/formatRelativeDate.js.map +1 -0
  444. package/dist/utilities/getDocPreferences.d.ts +2 -2
  445. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  446. package/dist/utilities/getDocPreferences.js.map +1 -1
  447. package/dist/utilities/getDocumentData.d.ts +2 -2
  448. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  449. package/dist/utilities/getDocumentData.js.map +1 -1
  450. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  451. package/dist/utilities/getGlobalData.js.map +1 -1
  452. package/dist/utilities/getHasScheduledPublish.d.ts +2 -2
  453. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  454. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  455. package/dist/utilities/getIsLocked.d.ts +2 -2
  456. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  457. package/dist/utilities/getIsLocked.js.map +1 -1
  458. package/dist/utilities/getVersions.d.ts +2 -2
  459. package/dist/utilities/getVersions.d.ts.map +1 -1
  460. package/dist/utilities/getVersions.js +2 -5
  461. package/dist/utilities/getVersions.js.map +1 -1
  462. package/dist/utilities/handleAuthRedirect.d.ts +2 -2
  463. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  464. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  465. package/dist/utilities/handleFormStateLocking.d.ts +2 -2
  466. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  467. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  468. package/dist/utilities/handleLivePreview.d.ts +1 -0
  469. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  470. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  471. package/dist/utilities/isURLAllowed.js +9 -3
  472. package/dist/utilities/isURLAllowed.js.map +1 -1
  473. package/dist/utilities/recentlyViewed.d.ts +16 -0
  474. package/dist/utilities/recentlyViewed.d.ts.map +1 -0
  475. package/dist/utilities/recentlyViewed.js +21 -0
  476. package/dist/utilities/recentlyViewed.js.map +1 -0
  477. package/dist/utilities/recentlyViewed.spec.js +92 -0
  478. package/dist/utilities/recentlyViewed.spec.js.map +1 -0
  479. package/dist/utilities/slugify.d.ts +1 -1
  480. package/dist/utilities/slugify.js +1 -1
  481. package/dist/utilities/slugify.js.map +1 -1
  482. package/dist/views/API/index.client.js +2 -2
  483. package/dist/views/API/index.client.js.map +1 -1
  484. package/dist/views/Account/ResetPreferences/index.d.ts +2 -2
  485. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  486. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  487. package/dist/views/Account/Settings/index.d.ts +2 -2
  488. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  489. package/dist/views/Account/Settings/index.js.map +1 -1
  490. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts.map +1 -1
  491. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js +27 -23
  492. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js.map +1 -1
  493. package/dist/views/Dashboard/Default/ModularDashboard/index.css +2 -0
  494. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +2 -2
  495. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  496. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -2
  497. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  498. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +2 -2
  499. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -1
  500. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -1
  501. package/dist/views/Document/index.d.ts.map +1 -1
  502. package/dist/views/Document/index.js +18 -1
  503. package/dist/views/Document/index.js.map +1 -1
  504. package/dist/views/Document/recordRecentlyViewed.d.ts +12 -0
  505. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -0
  506. package/dist/views/Document/recordRecentlyViewed.js +40 -0
  507. package/dist/views/Document/recordRecentlyViewed.js.map +1 -0
  508. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  509. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  510. package/dist/views/Document/renderDocumentSlots.js +47 -1
  511. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  512. package/dist/views/Edit/index.css +143 -6
  513. package/dist/views/Edit/index.d.ts +1 -1
  514. package/dist/views/Edit/index.d.ts.map +1 -1
  515. package/dist/views/Edit/index.js +34 -31
  516. package/dist/views/Edit/index.js.map +1 -1
  517. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  518. package/dist/views/List/ListHeader/index.css +5 -0
  519. package/dist/views/List/index.client.js +3 -3
  520. package/dist/views/List/index.client.js.map +1 -1
  521. package/dist/views/List/index.d.ts.map +1 -1
  522. package/dist/views/List/index.js +1 -7
  523. package/dist/views/List/index.js.map +1 -1
  524. package/dist/views/Logout/LogoutClient.js +28 -32
  525. package/dist/views/Logout/LogoutClient.js.map +1 -1
  526. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  527. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -0
  528. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  529. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  530. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -0
  531. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  532. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  533. package/dist/views/Version/SelectComparison/index.js +1 -0
  534. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  535. package/dist/views/Versions/fetchVersions.d.ts +4 -4
  536. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  537. package/dist/views/Versions/fetchVersions.js.map +1 -1
  538. package/dist/views/Versions/types.d.ts +2 -2
  539. package/dist/views/Versions/types.d.ts.map +1 -1
  540. package/dist/views/Versions/types.js.map +1 -1
  541. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  542. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -0
  543. package/dist/widgets/CollectionQuery/SortField/index.js +118 -0
  544. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -0
  545. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts +18 -0
  546. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts.map +1 -0
  547. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js +91 -0
  548. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js.map +1 -0
  549. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +100 -0
  550. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +1 -0
  551. package/dist/widgets/CollectionQuery/index.css +64 -0
  552. package/dist/widgets/CollectionQuery/index.d.ts +16 -0
  553. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -0
  554. package/dist/widgets/CollectionQuery/index.js +328 -0
  555. package/dist/widgets/CollectionQuery/index.js.map +1 -0
  556. package/dist/widgets/RecentlyViewed/CollectionsField/index.css +14 -0
  557. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +10 -0
  558. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -0
  559. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +76 -0
  560. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -0
  561. package/dist/widgets/RecentlyViewed/index.d.ts +10 -0
  562. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -0
  563. package/dist/widgets/RecentlyViewed/index.js +148 -0
  564. package/dist/widgets/RecentlyViewed/index.js.map +1 -0
  565. package/dist/widgets/WidgetCard/index.css +155 -0
  566. package/dist/widgets/WidgetCard/index.d.ts +19 -0
  567. package/dist/widgets/WidgetCard/index.d.ts.map +1 -0
  568. package/dist/widgets/WidgetCard/index.js +49 -0
  569. package/dist/widgets/WidgetCard/index.js.map +1 -0
  570. package/package.json +6 -510
  571. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  572. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  573. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  574. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  575. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  576. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +0 -1
  577. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +0 -1
  578. package/dist/elements/Hierarchy/Drawer/index.css +0 -90
  579. package/dist/elements/Hierarchy/Drawer/index.d.ts +0 -20
  580. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +0 -1
  581. package/dist/elements/Hierarchy/Drawer/index.js.map +0 -1
  582. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +0 -1
  583. package/dist/elements/Hierarchy/Drawer/types.js.map +0 -1
  584. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +0 -30
  585. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +0 -1
  586. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +0 -1
  587. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  588. package/dist/elements/PreviewSizes/index.scss +0 -147
  589. package/dist/elements/Thumbnail/index.scss +0 -53
  590. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  591. package/dist/icons/ExternalLink/index.js +0 -26
  592. package/dist/icons/ExternalLink/index.js.map +0 -1
  593. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.d.ts +0 -0
  594. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.js +0 -0
  595. /package/dist/elements/Hierarchy/{Drawer → Modal}/types.js +0 -0
@@ -8,6 +8,7 @@ import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react
8
8
  import { toast } from 'sonner';
9
9
  import { FieldError } from '../../fields/FieldError/index.js';
10
10
  import { fieldBaseClass } from '../../fields/shared/index.js';
11
+ import { TextInput } from '../../fields/Text/Input.js';
11
12
  import { useForm, useFormProcessing } from '../../forms/Form/index.js';
12
13
  import { useField } from '../../forms/useField/index.js';
13
14
  import { useConfig } from '../../providers/Config/index.js';
@@ -24,6 +25,8 @@ import './index.css';
24
25
  import { FileDetails } from '../FileDetails/index.js';
25
26
  import { PreviewSizes } from '../PreviewSizes/index.js';
26
27
  import { Thumbnail } from '../Thumbnail/index.js';
28
+ import { pasteURLDrawerSlug, UploadFromURLModal } from './UploadFromURLModal/index.js';
29
+ export { pasteURLDrawerSlug };
27
30
  const baseClass = 'file-field';
28
31
  export const editDrawerSlug = 'edit-upload';
29
32
  export const sizePreviewSlug = 'preview-sizes';
@@ -73,7 +76,7 @@ export const UploadActions = t0 => {
73
76
  size: "medium",
74
77
  children: t("upload:previewSizes")
75
78
  }), enableAdjustments && _jsx(Button, {
76
- buttonStyle: "pill",
79
+ buttonStyle: "secondary",
77
80
  className: `${baseClass}__edit`,
78
81
  margin: false,
79
82
  onClick: () => {
@@ -112,7 +115,7 @@ export const Upload = props => {
112
115
  let t0;
113
116
  if ($[0] !== props || $[1] !== resetUploadEdits || $[2] !== updateUploadEdits || $[3] !== uploadEdits) {
114
117
  t0 = _jsx(UploadControlsProvider, {
115
- children: _jsx(Upload_v4, {
118
+ children: _jsx(UploadComponent, {
116
119
  ...props,
117
120
  resetUploadEdits,
118
121
  updateUploadEdits,
@@ -129,7 +132,7 @@ export const Upload = props => {
129
132
  }
130
133
  return t0;
131
134
  };
132
- export const Upload_v4 = props => {
135
+ const UploadComponent = props => {
133
136
  const {
134
137
  collectionSlug,
135
138
  customActions,
@@ -159,6 +162,10 @@ export const Upload_v4 = props => {
159
162
  const {
160
163
  t
161
164
  } = useTranslation();
165
+ const {
166
+ closeModal,
167
+ openModal
168
+ } = useModal();
162
169
  const {
163
170
  setModified
164
171
  } = useForm();
@@ -181,9 +188,7 @@ export const Upload_v4 = props => {
181
188
  const [fileSrc, setFileSrc] = useState(null);
182
189
  const [removedFile, setRemovedFile] = useState(false);
183
190
  const [filename, setFilename] = useState(value?.name || '');
184
- const [showUrlInput, setShowUrlInput] = useState(false);
185
191
  const [fileUrl, setFileUrl] = useState('');
186
- const urlInputRef = useRef(null);
187
192
  const inputRef = useRef(null);
188
193
  const useServerSideFetch = typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0;
189
194
  const handleFileChange = useCallback(({
@@ -194,7 +199,6 @@ export const Upload_v4 = props => {
194
199
  setFileSrc(URL.createObjectURL(file));
195
200
  }
196
201
  setValue(file);
197
- setShowUrlInput(false);
198
202
  setUploadControlFileUrl('');
199
203
  setUploadControlFileName(null);
200
204
  setUploadControlFile(null);
@@ -234,7 +238,6 @@ export const Upload_v4 = props => {
234
238
  setFileSrc('');
235
239
  setFileUrl('');
236
240
  resetUploadEdits();
237
- setShowUrlInput(false);
238
241
  setUploadControlFileUrl('');
239
242
  setUploadControlFileName(null);
240
243
  setUploadControlFile(null);
@@ -243,8 +246,9 @@ export const Upload_v4 = props => {
243
246
  setModified(true);
244
247
  updateUploadEdits(args);
245
248
  }, [setModified, updateUploadEdits]);
249
+ const isValidUrl = Boolean(fileUrl && URL.canParse(fileUrl));
246
250
  const handleUrlSubmit = useCallback(async () => {
247
- if (!fileUrl || uploadConfig?.pasteURL === false) {
251
+ if (!fileUrl || !URL.canParse(fileUrl) || uploadConfig?.pasteURL === false) {
248
252
  return;
249
253
  }
250
254
  setUploadStatus('uploading');
@@ -255,7 +259,8 @@ export const Upload_v4 = props => {
255
259
  throw new Error(`Fetch failed with status: ${clientResponse.status}`);
256
260
  }
257
261
  const blob = await clientResponse.blob();
258
- const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '');
262
+ const rawSegment = fileUrl.split('/').pop() || '';
263
+ const fileName = uploadControlFileName || decodeURIComponent(rawSegment.split('?')[0]);
259
264
  const file_0 = new File([blob], fileName, {
260
265
  type: blob.type
261
266
  });
@@ -263,6 +268,8 @@ export const Upload_v4 = props => {
263
268
  file: file_0
264
269
  });
265
270
  setUploadStatus('idle');
271
+ closeModal(pasteURLDrawerSlug);
272
+ setFileUrl('');
266
273
  return; // Exit if client-side fetch succeeds
267
274
  } catch (_clientError) {
268
275
  if (!useServerSideFetch) {
@@ -283,7 +290,8 @@ export const Upload_v4 = props => {
283
290
  throw new Error(`Fetch failed with status: ${serverResponse.status}`);
284
291
  }
285
292
  const blob_0 = await serverResponse.blob();
286
- const fileName_0 = decodeURIComponent(fileUrl.split('/').pop() || '');
293
+ const rawSegment_0 = fileUrl.split('/').pop() || '';
294
+ const fileName_0 = decodeURIComponent(rawSegment_0.split('?')[0]);
287
295
  const file_1 = new File([blob_0], fileName_0, {
288
296
  type: blob_0.type
289
297
  });
@@ -291,11 +299,13 @@ export const Upload_v4 = props => {
291
299
  file: file_1
292
300
  });
293
301
  setUploadStatus('idle');
302
+ closeModal(pasteURLDrawerSlug);
303
+ setFileUrl('');
294
304
  } catch (_serverError) {
295
305
  toast.error('The provided URL is not allowed.');
296
306
  setUploadStatus('failed');
297
307
  }
298
- }, [api, collectionSlug, fileUrl, handleFileChange, id, setUploadStatus, uploadConfig, uploadControlFileName, useServerSideFetch]);
308
+ }, [api, closeModal, collectionSlug, fileUrl, handleFileChange, id, setUploadStatus, uploadConfig, uploadControlFileName, useServerSideFetch]);
299
309
  useEffect(() => {
300
310
  if (initialState?.file?.value instanceof File) {
301
311
  setFileSrc(URL.createObjectURL(initialState.file.value));
@@ -303,10 +313,12 @@ export const Upload_v4 = props => {
303
313
  }
304
314
  }, [initialState]);
305
315
  useEffect(() => {
306
- if (showUrlInput && urlInputRef.current) {
307
- // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true
308
- }
309
- }, [showUrlInput]);
316
+ return () => {
317
+ if (fileSrc?.startsWith('blob:')) {
318
+ URL.revokeObjectURL(fileSrc);
319
+ }
320
+ };
321
+ }, [fileSrc]);
310
322
  useEffect(() => {
311
323
  if (isFormSubmitting) {
312
324
  setRemovedFile(false);
@@ -343,6 +355,40 @@ export const Upload_v4 = props => {
343
355
  };
344
356
  void handleControlFile();
345
357
  }, [uploadControlFile, handleFileChange]);
358
+ const drawers = /*#__PURE__*/_jsxs(React.Fragment, {
359
+ children: [(value || data?.filename) && /*#__PURE__*/_jsx(EditDepthProvider, {
360
+ children: /*#__PURE__*/_jsx(EditUpload, {
361
+ fileName: value?.name || data?.filename,
362
+ fileSrc: data?.url || fileSrc,
363
+ imageCacheTag: imageCacheTag,
364
+ initialCrop: uploadEdits?.crop ?? undefined,
365
+ initialFocalPoint: {
366
+ x: uploadEdits?.focalPoint?.x || data?.focalX || 50,
367
+ y: uploadEdits?.focalPoint?.y || data?.focalY || 50
368
+ },
369
+ onSave: onEditsSave,
370
+ showCrop: showCrop,
371
+ showFocalPoint: showFocalPoint
372
+ })
373
+ }), data && hasImageSizes && /*#__PURE__*/_jsx(Drawer, {
374
+ className: `${baseClass}__previewDrawer`,
375
+ hoverTitle: true,
376
+ slug: sizePreviewSlug,
377
+ title: t('upload:sizesFor', {
378
+ label: data.filename
379
+ }),
380
+ children: /*#__PURE__*/_jsx(PreviewSizes, {
381
+ doc: data,
382
+ imageCacheTag: imageCacheTag,
383
+ uploadConfig: uploadConfig
384
+ })
385
+ }), uploadConfig?.pasteURL !== false && /*#__PURE__*/_jsx(UploadFromURLModal, {
386
+ fileUrl: fileUrl,
387
+ handleUrlSubmit: handleUrlSubmit,
388
+ isValidUrl: isValidUrl,
389
+ setFileUrl: setFileUrl
390
+ })]
391
+ });
346
392
  return /*#__PURE__*/_jsxs("div", {
347
393
  className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
348
394
  children: [/*#__PURE__*/_jsx(FieldError, {
@@ -360,7 +406,7 @@ export const Upload_v4 = props => {
360
406
  uploadConfig: uploadConfig
361
407
  }), (!uploadConfig.hideFileInputOnCreate && !data?.filename || removedFile) && /*#__PURE__*/_jsxs("div", {
362
408
  className: `${baseClass}__upload`,
363
- children: [!value && !showUrlInput && /*#__PURE__*/_jsx(Dropzone, {
409
+ children: [!value && /*#__PURE__*/_jsx(Dropzone, {
364
410
  onChange: handleFileSelection,
365
411
  children: /*#__PURE__*/_jsxs("div", {
366
412
  className: `${baseClass}__dropzoneContent`,
@@ -394,7 +440,7 @@ export const Upload_v4 = props => {
394
440
  }), /*#__PURE__*/_jsx(Button, {
395
441
  buttonStyle: "pill",
396
442
  onClick: () => {
397
- setShowUrlInput(true);
443
+ openModal(pasteURLDrawerSlug);
398
444
  setUploadControlFileUrl('');
399
445
  setUploadControlFile(null);
400
446
  setUploadControlFileName(null);
@@ -408,44 +454,15 @@ export const Upload_v4 = props => {
408
454
  children: [t('general:or'), " ", t('upload:dragAndDrop')]
409
455
  })]
410
456
  })
411
- }), showUrlInput && /*#__PURE__*/_jsxs(React.Fragment, {
412
- children: [/*#__PURE__*/_jsxs("div", {
413
- className: `${baseClass}__remote-file-wrap`,
414
- children: [/*#__PURE__*/_jsx("input", {
415
- className: `${baseClass}__remote-file`,
416
- onChange: e_1 => {
417
- setFileUrl(e_1.target.value);
418
- },
419
- ref: urlInputRef,
420
- title: fileUrl,
421
- type: "text",
422
- value: fileUrl
423
- }), /*#__PURE__*/_jsx("div", {
424
- className: `${baseClass}__add-file-wrap`,
425
- children: /*#__PURE__*/_jsx("button", {
426
- className: `${baseClass}__add-file`,
427
- onClick: () => {
428
- void handleUrlSubmit();
429
- },
430
- type: "button",
431
- children: t('upload:addFile')
432
- })
433
- })]
434
- }), /*#__PURE__*/_jsx(Button, {
457
+ }), value && fileSrc && /*#__PURE__*/_jsxs(React.Fragment, {
458
+ children: [/*#__PURE__*/_jsx(Button, {
435
459
  buttonStyle: "ghost",
436
460
  className: `${baseClass}__remove`,
437
461
  icon: "x",
438
- onClick: () => {
439
- setShowUrlInput(false);
440
- setUploadControlFileUrl('');
441
- setUploadControlFile(null);
442
- setUploadControlFileName(null);
443
- },
462
+ onClick: handleFileRemoval,
444
463
  round: true,
445
464
  tooltip: t('general:cancel')
446
- })]
447
- }), value && fileSrc && /*#__PURE__*/_jsxs(React.Fragment, {
448
- children: [/*#__PURE__*/_jsx("div", {
465
+ }), /*#__PURE__*/_jsx("div", {
449
466
  className: `${baseClass}__thumbnail-wrap`,
450
467
  children: /*#__PURE__*/_jsx(Thumbnail, {
451
468
  collectionSlug: collectionSlug,
@@ -453,11 +470,10 @@ export const Upload_v4 = props => {
453
470
  })
454
471
  }), /*#__PURE__*/_jsxs("div", {
455
472
  className: `${baseClass}__file-adjustments`,
456
- children: [/*#__PURE__*/_jsx("input", {
457
- className: `${baseClass}__filename`,
473
+ children: [/*#__PURE__*/_jsx(TextInput, {
474
+ label: t('upload:fileName'),
458
475
  onChange: handleFileNameChange,
459
- title: filename || value.name,
460
- type: "text",
476
+ path: "filename",
461
477
  value: filename || value.name
462
478
  }), /*#__PURE__*/_jsx(UploadActions, {
463
479
  customActions: customActions,
@@ -465,46 +481,9 @@ export const Upload_v4 = props => {
465
481
  enablePreviewSizes: hasImageSizes && data?.filename && !removedFile,
466
482
  mimeType: value.type
467
483
  })]
468
- }), /*#__PURE__*/_jsx(Button, {
469
- buttonStyle: "ghost",
470
- className: `${baseClass}__remove`,
471
- icon: "x",
472
- onClick: handleFileRemoval,
473
- round: true,
474
- tooltip: t('general:cancel')
475
484
  })]
476
485
  })]
477
- }), (value || data?.filename) && /*#__PURE__*/_jsx(EditDepthProvider, {
478
- children: /*#__PURE__*/_jsx(Drawer, {
479
- Header: null,
480
- slug: editDrawerSlug,
481
- children: /*#__PURE__*/_jsx(EditUpload, {
482
- fileName: value?.name || data?.filename,
483
- fileSrc: data?.url || fileSrc,
484
- imageCacheTag: imageCacheTag,
485
- initialCrop: uploadEdits?.crop ?? undefined,
486
- initialFocalPoint: {
487
- x: uploadEdits?.focalPoint?.x || data?.focalX || 50,
488
- y: uploadEdits?.focalPoint?.y || data?.focalY || 50
489
- },
490
- onSave: onEditsSave,
491
- showCrop: showCrop,
492
- showFocalPoint: showFocalPoint
493
- })
494
- })
495
- }), data && hasImageSizes && /*#__PURE__*/_jsx(Drawer, {
496
- className: `${baseClass}__previewDrawer`,
497
- hoverTitle: true,
498
- slug: sizePreviewSlug,
499
- title: t('upload:sizesFor', {
500
- label: data.filename
501
- }),
502
- children: /*#__PURE__*/_jsx(PreviewSizes, {
503
- doc: data,
504
- imageCacheTag: imageCacheTag,
505
- uploadConfig: uploadConfig
506
- })
507
- })]
486
+ }), drawers]
508
487
  });
509
488
  };
510
489
  function _temp(CustomAction, i) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","formatAdminURL","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","setModified","id","data","docPermissions","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","_clientError","error","encodeURIComponent","serverResponse","apiRoute","_serverError","current","canRemoveUpload","update","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.css'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"medium\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"medium\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, data, docPermissions, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL: `/${string}` = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: pasteURL,\n }),\n )\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"medium\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"medium\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || data?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={data?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {data && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,EAAEC,OAAO,QAAQ;AACxC,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC1E,SAASC,KAAK,QAAQ;AAEtB,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,EAAEC,iBAAiB,QAAQ;AAC3C,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,sBAAsB,EAAEC,iBAAiB,QAAQ;AAC1D,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,QAAQ;AACvB,SAASC,QAAQ,QAAQ;AACzB,SAASC,UAAU,QAAQ;AAC3B,OAAO;AACP,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAE1B,MAAMC,SAAA,GAAY;AAClB,OAAO,MAAMC,cAAA,GAAiB;AAC9B,OAAO,MAAMC,eAAA,GAAkB;AAE/B,MAAMC,QAAA,GAAYC,KAAA;EAChB,IAAI,CAACA,KAAA,IAASA,KAAA,KAAUC,SAAA,EAAW;IACjC,OAAO;EACT;EAEA,IAAID,KAAA,KAAU,CAACA,KAAA,CAAME,IAAI,IAAIF,KAAA,CAAME,IAAI,KAAK,EAAC,GAAI;IAC/C,OAAO;EACT;EAEA,OAAO;AACT;AASA,OAAO,MAAMC,aAAA,GAAgBC,EAAA;EAAA,MAAAC,CAAA,GAAAvC,EAAA;EAAC;IAAAwC,aAAA;IAAAC,iBAAA;IAAAC,kBAAA;IAAAC;EAAA,IAAAL,EAKV;EAClB;IAAAM;EAAA,IAAczB,cAAA;EACd;IAAA0B;EAAA,IAAsB5C,QAAA;EAAA,IAAA6C,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,aAAA,IAAAD,CAAA,QAAAE,iBAAA,IAAAF,CAAA,QAAAG,kBAAA,IAAAH,CAAA,QAAAI,QAAA,IAAAJ,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAK,CAAA;IAMbG,EAAA,GAAAC,MAAA,CAAAC,GAAA;IAAAC,GAAA;MAJT,MAAAC,oBAAA,GACEhD,OAAA,CAAQwC,QAAA,KAAaA,QAAA,KAAa,mBAAmBA,QAAA,KAAa;MAAA,IAEhE,CAACQ,oBAAA,KAAyB,CAACX,aAAA,IAAiBA,aAAA,CAAAY,MAAA,MAAyB;QAChEL,EAAA;QAAA,MAAAG,GAAA;MAAA;MAIPJ,EAAA,GAAAO,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAAxB,SAAA,kBAA8B;QAAAyB,QAAA,GAC3CJ,oBAAA,IACCE,KAAA,CAAAjD,KAAA,CAAAC,QAAA;UAAAkD,QAAA,GACGb,kBAAA,IACCc,IAAA,CAAAjC,MAAA;YAAAkC,WAAA,EACc;YAAAH,SAAA,EACD,GAAAxB,SAAA,gBAA4B;YAAA4B,MAAA;YAAAC,OAAA,EAAAA,CAAA;cAGrCd,SAAA,CAAAb,eAAU;YAAA;YAAA4B,IAAA,EAEP;YAAAL,QAAA,EAEJX,CAAA,CAAE;UAAA,C,GAGNH,iBAAA,IACCe,IAAA,CAAAjC,MAAA;YAAAkC,WAAA,EACc;YAAAH,SAAA,EACD,GAAAxB,SAAA,QAAoB;YAAA4B,MAAA;YAAAC,OAAA,EAAAA,CAAA;cAG7Bd,SAAA,CAAAd,cAAU;YAAA;YAAA6B,IAAA,EAEP;YAAAL,QAAA,EAEJX,CAAA,CAAE;UAAA,C;YAMVJ,aAAA,IACCA,aAAA,CAAAqB,GAAA,CAAAC,KAEA;MAAA,C;;;;;;;;;;;;;;;;;SAnCJhB,E;CAsCJ;AAWA,OAAO,MAAMiB,MAAA,GAAgCC,KAAA;EAAA,MAAAzB,CAAA,GAAAvC,EAAA;EAC3C;IAAAiE,gBAAA;IAAAC,iBAAA;IAAAC;EAAA,IAA6D7C,cAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAC,CAAA,QAAAyB,KAAA,IAAAzB,CAAA,QAAA0B,gBAAA,IAAA1B,CAAA,QAAA2B,iBAAA,IAAA3B,CAAA,QAAA4B,WAAA;IAE3D7B,EAAA,GAAAkB,IAAA,CAAApC,sBAAA;MAAAmC,QAAA,EACEC,IAAA,CAAAY,SAAA;QAAA,GACMJ,KAAK;QAAAC,gBAAA;QAAAC,iBAAA;QAAAC;MAAA,C;;;;;;;;;;SAFb7B,E;CASJ;AAQA,OAAO,MAAM8B,SAAA,GAAuCJ,KAAA;EAClD,MAAM;IACJK,cAAc;IACd7B,aAAa;IACb8B,YAAY;IACZC,QAAQ;IACRN,gBAAgB;IAChBC,iBAAiB;IACjBM,YAAY;IACZC,cAAc;IACdN;EAAW,CACZ,GAAGH,KAAA;EAEJ,MAAM;IACJU,oBAAoB;IACpBC,wBAAwB;IACxBC,uBAAuB;IACvBC,iBAAiB;IACjBC,qBAAqB;IACrBC;EAAoB,CACrB,GAAG1D,iBAAA;EAEJ,MAAM;IACJ2D,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG;IAAE;EAChB,CACF,GAAGlE,SAAA;EAEJ,MAAM;IAAE4B;EAAC,CAAE,GAAGzB,cAAA;EACd,MAAM;IAAEgE;EAAW,CAAE,GAAGtE,OAAA;EACxB,MAAM;IAAEuE,EAAE;IAAEC,IAAI;IAAEC,cAAc;IAAEC;EAAe,CAAE,GAAGtE,eAAA;EACtD,MAAMuE,gBAAA,GAAmB1E,iBAAA;EACzB,MAAM;IAAE2E,YAAY;IAAEC,QAAQ;IAAEC,SAAS;IAAEzD;EAAK,CAAE,GAAGnB,QAAA,CAAe;IAClE6E,IAAA,EAAM;IACN3D;EACF;EAEA,MAAM,CAAC4D,OAAA,EAASC,UAAA,CAAW,GAAGrF,QAAA,CAAwB;EACtD,MAAM,CAACsF,WAAA,EAAaC,cAAA,CAAe,GAAGvF,QAAA,CAAS;EAC/C,MAAM,CAACwF,QAAA,EAAUC,WAAA,CAAY,GAAGzF,QAAA,CAAiByB,KAAA,EAAOE,IAAA,IAAQ;EAChE,MAAM,CAAC+D,YAAA,EAAcC,eAAA,CAAgB,GAAG3F,QAAA,CAAS;EACjD,MAAM,CAAC4F,OAAA,EAASC,UAAA,CAAW,GAAG7F,QAAA,CAAiB;EAE/C,MAAM8F,WAAA,GAAc/F,MAAA,CAAyB;EAC7C,MAAMgG,QAAA,GAAWhG,MAAA,CAAyB;EAE1C,MAAMiG,kBAAA,GACJ,OAAOjC,YAAA,EAAckC,QAAA,KAAa,YAAYlC,YAAA,CAAakC,QAAQ,CAACC,SAAS,EAAEvD,MAAA,GAAS;EAE1F,MAAMwD,gBAAA,GAAmBtG,WAAA,CACvB,CAAC;IAAEuG,IAAI;IAAEC,SAAA,GAAY;EAAI,CAA8C;IACrE,IAAIA,SAAA,IAAaD,IAAA,YAAgBE,IAAA,EAAM;MACrCjB,UAAA,CAAWkB,GAAA,CAAIC,eAAe,CAACJ,IAAA;IACjC;IAEAnB,QAAA,CAASmB,IAAA;IACTT,eAAA,CAAgB;IAChBxB,uBAAA,CAAwB;IACxBD,wBAAA,CAAyB;IACzBD,oBAAA,CAAqB;IAErB,IAAI,OAAOH,QAAA,KAAa,YAAY;MAClCA,QAAA,CAASsC,IAAA;IACX;EACF,GACA,CAACtC,QAAA,EAAUmB,QAAA,EAAUhB,oBAAA,EAAsBC,wBAAA,EAA0BC,uBAAA,CAAwB;EAG/F,MAAMsC,UAAA,GAAaA,CAACC,YAAA,EAAoBC,OAAA;IACtC;IACA,MAAMC,OAAA,GAAU,IAAIN,IAAA,CAAK,CAACI,YAAA,CAAa,EAAEC,OAAA,EAAS;MAChDE,IAAA,EAAMH,YAAA,CAAaG,IAAI;MACvBC,YAAA,EAAcJ,YAAA,CAAaI;IAC7B;IACA,OAAOF,OAAA;EACT;EAEA,MAAMG,oBAAA,GAAuBpH,KAAA,CAAME,WAAW,CAC3CmH,CAAA;IACC,MAAMC,eAAA,GAAkBD,CAAA,CAAEE,MAAM,CAACzF,KAAK;IAEtC,IAAIA,KAAA,EAAO;MACT0E,gBAAA,CAAiB;QAAEC,IAAA,EAAMK,UAAA,CAAWhF,KAAA,EAAOwF,eAAA;QAAkBZ,SAAA,EAAW;MAAM;MAC9EZ,WAAA,CAAYwB,eAAA;IACd;EACF,GACA,CAACd,gBAAA,EAAkB1E,KAAA,CAAM;EAG3B,MAAM0F,mBAAA,GAAsBtH,WAAA,CACzBuH,KAAA;IACC,MAAMC,YAAA,GAAeD,KAAA,GAAQ,EAAE;IAC/BjB,gBAAA,CAAiB;MAAEC,IAAA,EAAMiB;IAAa;EACxC,GACA,CAAClB,gBAAA,CAAiB;EAGpB,MAAMmB,iBAAA,GAAoBzH,WAAA,CAAY;IACpC0F,cAAA,CAAe;IACfY,gBAAA,CAAiB;MAAEC,IAAA,EAAM;IAAK;IAC9Bf,UAAA,CAAW;IACXQ,UAAA,CAAW;IACXrC,gBAAA;IACAmC,eAAA,CAAgB;IAChBxB,uBAAA,CAAwB;IACxBD,wBAAA,CAAyB;IACzBD,oBAAA,CAAqB;EACvB,GAAG,CACDkC,gBAAA,EACA3C,gBAAA,EACAS,oBAAA,EACAC,wBAAA,EACAC,uBAAA,CACD;EAED,MAAMoD,WAAA,GAAc1H,WAAA,CACjB2H,IAAA;IACC9C,WAAA,CAAY;IACZjB,iBAAA,CAAkB+D,IAAA;EACpB,GACA,CAAC9C,WAAA,EAAajB,iBAAA,CAAkB;EAGlC,MAAMgE,eAAA,GAAkB5H,WAAA,CAAY;IAClC,IAAI,CAAC+F,OAAA,IAAW7B,YAAA,EAAckC,QAAA,KAAa,OAAO;MAChD;IACF;IAEAnB,eAAA,CAAgB;IAChB,IAAI;MACF;MACA,MAAM4C,cAAA,GAAiB,MAAMC,KAAA,CAAM/B,OAAA;MAEnC,IAAI,CAAC8B,cAAA,CAAeE,EAAE,EAAE;QACtB,MAAM,IAAIC,KAAA,CAAM,6BAA6BH,cAAA,CAAeI,MAAM,EAAE;MACtE;MAEA,MAAMC,IAAA,GAAO,MAAML,cAAA,CAAeK,IAAI;MACtC,MAAMC,QAAA,GAAW3D,qBAAA,IAAyB4D,kBAAA,CAAmBrC,OAAA,CAAQsC,KAAK,CAAC,KAAKC,GAAG,MAAM;MACzF,MAAM/B,MAAA,GAAO,IAAIE,IAAA,CAAK,CAACyB,IAAA,CAAK,EAAEC,QAAA,EAAU;QAAEnB,IAAA,EAAMkB,IAAA,CAAKlB;MAAK;MAE1DV,gBAAA,CAAiB;QAAEC,IAAA,EAAAA;MAAK;MACxBtB,eAAA,CAAgB;MAChB,QAAO;IACT,EAAE,OAAOsD,YAAA,EAAc;MACrB,IAAI,CAACpC,kBAAA,EAAoB;QACvB;QACA/F,KAAA,CAAMoI,KAAK,CAAC;QACZvD,eAAA,CAAgB;QAChB;MACF;IACF;IAEA;IACA,IAAI;MACF,MAAMmB,QAAA,GAAyB,IAAIrC,cAAA,aAA2Be,EAAA,GAAK,IAAIA,EAAA,GAAK,GAAG,UAAU2D,kBAAA,CAAmB1C,OAAA,GAAU;MACtH,MAAM2C,cAAA,GAAiB,MAAMZ,KAAA,CAC3BlI,cAAA,CAAe;QACb+I,QAAA,EAAU/D,GAAA;QACVU,IAAA,EAAMc;MACR;MAGF,IAAI,CAACsC,cAAA,CAAeX,EAAE,EAAE;QACtB,MAAM,IAAIC,KAAA,CAAM,6BAA6BU,cAAA,CAAeT,MAAM,EAAE;MACtE;MAEA,MAAMC,MAAA,GAAO,MAAMQ,cAAA,CAAeR,IAAI;MACtC,MAAMC,UAAA,GAAWC,kBAAA,CAAmBrC,OAAA,CAAQsC,KAAK,CAAC,KAAKC,GAAG,MAAM;MAChE,MAAM/B,MAAA,GAAO,IAAIE,IAAA,CAAK,CAACyB,MAAA,CAAK,EAAEC,UAAA,EAAU;QAAEnB,IAAA,EAAMkB,MAAA,CAAKlB;MAAK;MAE1DV,gBAAA,CAAiB;QAAEC,IAAA,EAAAA;MAAK;MACxBtB,eAAA,CAAgB;IAClB,EAAE,OAAO2D,YAAA,EAAc;MACrBxI,KAAA,CAAMoI,KAAK,CAAC;MACZvD,eAAA,CAAgB;IAClB;EACF,GAAG,CACDL,GAAA,EACAb,cAAA,EACAgC,OAAA,EACAO,gBAAA,EACAxB,EAAA,EACAG,eAAA,EACAf,YAAA,EACAM,qBAAA,EACA2B,kBAAA,CACD;EAEDlG,SAAA,CAAU;IACR,IAAI+D,YAAA,EAAcuC,IAAA,EAAM3E,KAAA,YAAiB6E,IAAA,EAAM;MAC7CjB,UAAA,CAAWkB,GAAA,CAAIC,eAAe,CAAC3C,YAAA,CAAauC,IAAI,CAAC3E,KAAK;MACtD8D,cAAA,CAAe;IACjB;EACF,GAAG,CAAC1B,YAAA,CAAa;EAEjB/D,SAAA,CAAU;IACR,IAAI4F,YAAA,IAAgBI,WAAA,CAAY4C,OAAO,EAAE;MACvC;IAAA;EAEJ,GAAG,CAAChD,YAAA,CAAa;EAEjB5F,SAAA,CAAU;IACR,IAAIiF,gBAAA,EAAkB;MACpBQ,cAAA,CAAe;IACjB;EACF,GAAG,CAACR,gBAAA,CAAiB;EAErB,MAAM4D,eAAA,GAAkB9D,cAAA,EAAgB+D,MAAA;EAExC,MAAMC,aAAA,GAAgB9E,YAAA,EAAc+E,UAAA,EAAYnG,MAAA,GAAS;EACzD,MAAMoG,gBAAA,GAAmBC,OAAA,CAAQjF,YAAA,EAAckF,aAAA;EAC/C;EACA,MAAMC,iBAAA,GAAoBnF,YAAA,EAAcoF,UAAA,KAAe;EAEvD,MAAM;IAAEC,IAAA,EAAMC,QAAA,GAAW,IAAI;IAAEF,UAAA,GAAa;EAAI,CAAE,GAAGpF,YAAA;EAErD,MAAMuF,cAAA,GAAiBH,UAAA,KAAeN,aAAA,IAAiBE,gBAAA,IAAoBG,iBAAgB;EAE3F,MAAMK,eAAA,GAAkBxF,YAAA,CAAayF,SAAS,EAAEC,IAAA,CAAK;EAErD,MAAMC,aAAA,GAAgB3F,YAAA,EAAc4F,SAAA,IAAa/E,IAAA,EAAMgF,SAAA;EAEvD9J,SAAA,CAAU;IACR,MAAM+J,oBAAA,GAAuB,MAAAA,CAAA;MAC3B,IAAIvF,oBAAA,EAAsB;QACxBuB,UAAA,CAAWvB,oBAAA;QACX,MAAMmD,eAAA;MACR;IACF;IAEA,KAAKoC,oBAAA;EACP,GAAG,CAACvF,oBAAA,EAAsBmD,eAAA,CAAgB;EAE1C3H,SAAA,CAAU;IACR,MAAMgK,iBAAA,GAAoBA,CAAA;MACxB,IAAI1F,iBAAA,EAAmB;QACrB+B,gBAAA,CAAiB;UAAEC,IAAA,EAAMhC;QAAkB;MAC7C;IACF;IAEA,KAAK0F,iBAAA;EACP,GAAG,CAAC1F,iBAAA,EAAmB+B,gBAAA,CAAiB;EAExC,oBACEvD,KAAA,CAAC;IAAIC,SAAA,EAAW,CAAC1C,cAAA,EAAgBkB,SAAA,CAAU,CAAC0I,MAAM,CAACf,OAAA,EAASS,IAAI,CAAC;4BAC/D1G,IAAA,CAAC7C,UAAA;MAAW8J,OAAA,EAAShF,YAAA;MAAcE,SAAA,EAAWA;QAC7CN,IAAA,IAAQA,IAAA,CAAKY,QAAQ,IAAI,CAACF,WAAA,iBACzBvC,IAAA,CAAC7B,WAAA;MACC0C,cAAA,EAAgBA,cAAA;MAChBqG,mBAAA,EAAqBlI,aAAA;MACrBmI,GAAA,EAAKtF,IAAA;MACL5C,iBAAA,EAAmBqH,QAAA,IAAYC,cAAA;MAC/Ba,YAAA,EAAcxB,eAAA,GAAkBrB,iBAAA,GAAoB5F,SAAA;MACpDmH,aAAA,EAAeA,aAAA;MACfuB,cAAA,EAAgBrG,YAAA,CAAaqG,cAAc;MAC3CV,aAAA,EAAeA,aAAA;MACf3F,YAAA,EAAcA;QAGhB,EAAEA,YAAA,CAAasG,qBAAqB,IAAI,CAACzF,IAAA,EAAMY,QAAA,IAAaF,WAAU,kBACtE1C,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAGxB,SAAA,UAAmB;iBACnC,CAACI,KAAA,IAAS,CAACiE,YAAA,iBACV3C,IAAA,CAAC/B,QAAA;QAAS8C,QAAA,EAAUqD,mBAAA;kBAClB,aAAAvE,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGxB,SAAA,mBAA4B;kCAC7CuB,KAAA,CAAC;YAAIC,SAAA,EAAW,GAAGxB,SAAA,mBAA4B;oCAC7C0B,IAAA,CAACjC,MAAA;cACCkC,WAAA,EAAY;cACZE,OAAA,EAASA,CAAA;gBACP,IAAI6C,QAAA,CAAS2C,OAAO,EAAE;kBACpB3C,QAAA,CAAS2C,OAAO,CAAC4B,KAAK;gBACxB;cACF;cACAnH,IAAA,EAAK;wBAEJhB,CAAA,CAAE;6BAELY,IAAA,CAAC;cACCwH,MAAA,EAAQhB,eAAA;cACR,eAAY;cACZ1G,SAAA,EAAW,GAAGxB,SAAA,gBAAyB;cACvCmJ,MAAM;cACN1G,QAAA,EAAWkD,GAAA;gBACT,IAAIA,GAAA,CAAEE,MAAM,CAACE,KAAK,IAAIJ,GAAA,CAAEE,MAAM,CAACE,KAAK,CAACzE,MAAM,GAAG,GAAG;kBAC/CwE,mBAAA,CAAoBH,GAAA,CAAEE,MAAM,CAACE,KAAK;gBACpC;cACF;cACAqD,GAAA,EAAK1E,QAAA;cACLc,IAAA,EAAK;gBAEN9C,YAAA,EAAckC,QAAA,KAAa,sBAC1BrD,KAAA,CAAChD,QAAA;sCACCmD,IAAA,CAAC;gBAAKF,SAAA,EAAW,GAAGxB,SAAA,UAAmB;0BAAGc,CAAA,CAAE;+BAC5CY,IAAA,CAACjC,MAAA;gBACCkC,WAAA,EAAY;gBACZE,OAAA,EAASA,CAAA;kBACPyC,eAAA,CAAgB;kBAChBxB,uBAAA,CAAwB;kBACxBF,oBAAA,CAAqB;kBACrBC,wBAAA,CAAyB;gBAC3B;gBACAf,IAAA,EAAK;0BAEJhB,CAAA,CAAE;;gBAKR6B,cAAA,GAAiBA,cAAA,GAAiB;2BAErCpB,KAAA,CAAC;YAAEC,SAAA,EAAW,GAAGxB,SAAA,mBAA4B;uBAC1Cc,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;UAK5BuD,YAAA,iBACC9C,KAAA,CAACjD,KAAA,CAAMC,QAAQ;gCACbgD,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGxB,SAAA,oBAA6B;kCAE9C0B,IAAA,CAAC;YACCF,SAAA,EAAW,GAAGxB,SAAA,eAAwB;YACtCyC,QAAA,EAAWkD,GAAA;cACTnB,UAAA,CAAWmB,GAAA,CAAEE,MAAM,CAACzF,KAAK;YAC3B;YACAgJ,GAAA,EAAK3E,WAAA;YACL4E,KAAA,EAAO9E,OAAA;YACPiB,IAAA,EAAK;YACLpF,KAAA,EAAOmE;2BAET7C,IAAA,CAAC;YAAIF,SAAA,EAAW,GAAGxB,SAAA,iBAA0B;sBAC3C,aAAA0B,IAAA,CAAC;cACCF,SAAA,EAAW,GAAGxB,SAAA,YAAqB;cACnC6B,OAAA,EAASA,CAAA;gBACP,KAAKuE,eAAA;cACP;cACAZ,IAAA,EAAK;wBAEJ1E,CAAA,CAAE;;;yBAITY,IAAA,CAACjC,MAAA;UACCkC,WAAA,EAAY;UACZH,SAAA,EAAW,GAAGxB,SAAA,UAAmB;UACjCsJ,IAAA,EAAK;UACLzH,OAAA,EAASA,CAAA;YACPyC,eAAA,CAAgB;YAChBxB,uBAAA,CAAwB;YACxBF,oBAAA,CAAqB;YACrBC,wBAAA,CAAyB;UAC3B;UACA0G,KAAK;UACLC,OAAA,EAAS1I,CAAA,CAAE;;UAIhBV,KAAA,IAAS2D,OAAA,iBACRxC,KAAA,CAACjD,KAAA,CAAMC,QAAQ;gCACbmD,IAAA,CAAC;UAAIF,SAAA,EAAW,GAAGxB,SAAA,kBAA2B;oBAC5C,aAAA0B,IAAA,CAAC3B,SAAA;YACCwC,cAAA,EAAgBA,cAAA;YAChBwB,OAAA,EAAS1F,OAAA,CAAQ+B,KAAA,CAAMoF,IAAI,IAAIzB,OAAA,GAAU;;yBAG7CxC,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAGxB,SAAA,oBAA6B;kCAE9C0B,IAAA,CAAC;YACCF,SAAA,EAAW,GAAGxB,SAAA,YAAqB;YACnCyC,QAAA,EAAUiD,oBAAA;YACV2D,KAAA,EAAOlF,QAAA,IAAY/D,KAAA,CAAME,IAAI;YAC7BkF,IAAA,EAAK;YACLpF,KAAA,EAAO+D,QAAA,IAAY/D,KAAA,CAAME;2BAE3BoB,IAAA,CAACnB,aAAA;YACCG,aAAA,EAAeA,aAAA;YACfC,iBAAA,EAAmBqH,QAAA,IAAYC,cAAA;YAC/BrH,kBAAA,EAAoB4G,aAAA,IAAiBjE,IAAA,EAAMY,QAAA,IAAY,CAACF,WAAA;YACxDpD,QAAA,EAAUT,KAAA,CAAMoF;;yBAGpB9D,IAAA,CAACjC,MAAA;UACCkC,WAAA,EAAY;UACZH,SAAA,EAAW,GAAGxB,SAAA,UAAmB;UACjCsJ,IAAA,EAAK;UACLzH,OAAA,EAASoE,iBAAA;UACTsD,KAAK;UACLC,OAAA,EAAS1I,CAAA,CAAE;;;QAMnB,CAAAV,KAAA,IAASmD,IAAA,EAAMY,QAAO,kBACtBzC,IAAA,CAACtC,iBAAA;gBACC,aAAAsC,IAAA,CAAChC,MAAA;QAAO+J,MAAA,EAAQ;QAAMC,IAAA,EAAMzJ,cAAA;kBAC1B,aAAAyB,IAAA,CAAC9B,UAAA;UACC+G,QAAA,EAAUvG,KAAA,EAAOE,IAAA,IAAQiD,IAAA,EAAMY,QAAA;UAC/BJ,OAAA,EAASR,IAAA,EAAMoG,GAAA,IAAO5F,OAAA;UACtBsE,aAAA,EAAeA,aAAA;UACfuB,WAAA,EAAavH,WAAA,EAAa0F,IAAA,IAAQ1H,SAAA;UAClCwJ,iBAAA,EAAmB;YACjBC,CAAA,EAAGzH,WAAA,EAAayF,UAAA,EAAYgC,CAAA,IAAKvG,IAAA,EAAMwG,MAAA,IAAU;YACjDC,CAAA,EAAG3H,WAAA,EAAayF,UAAA,EAAYkC,CAAA,IAAKzG,IAAA,EAAM0G,MAAA,IAAU;UACnD;UACAC,MAAA,EAAQhE,WAAA;UACR8B,QAAA,EAAUA,QAAA;UACVC,cAAA,EAAgBA;;;QAKvB1E,IAAA,IAAQiE,aAAA,iBACP9F,IAAA,CAAChC,MAAA;MACC8B,SAAA,EAAW,GAAGxB,SAAA,iBAA0B;MACxCmK,UAAU;MACVT,IAAA,EAAMxJ,eAAA;MACNmJ,KAAA,EAAOvI,CAAA,CAAE,mBAAmB;QAAEsJ,KAAA,EAAO7G,IAAA,CAAKY;MAAS;gBAEnD,aAAAzC,IAAA,CAAC5B,YAAA;QAAa+I,GAAA,EAAKtF,IAAA;QAAM8E,aAAA,EAAeA,aAAA;QAAe3F,YAAA,EAAcA;;;;AAK/E;AA9f6B,SAAAV,MAAAqI,YAAA,EAAAC,CAAA;EAAA,OAmDZ5I,IAAA,CAAApD,KAAA,CAAAC,QAAA;IAAAkD,QAAA,EAAyB4I;EAAA,GAAJC,CAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","formatAdminURL","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","TextInput","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","pasteURLDrawerSlug","UploadFromURLModal","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","UploadComponent","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","closeModal","setModified","id","data","docPermissions","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","fileUrl","setFileUrl","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","isValidUrl","Boolean","canParse","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","rawSegment","split","pop","fileName","decodeURIComponent","_clientError","error","encodeURIComponent","serverResponse","apiRoute","_serverError","startsWith","revokeObjectURL","canRemoveUpload","update","hasImageSizes","imageSizes","hasResizeOptions","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","drawers","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","slug","title","label","doc","filter","message","customUploadActions","handleRemove","hideRemoveFile","hideFileInputOnCreate","current","click","accept","hidden","ref","icon","round","tooltip","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { TextInput } from '../../fields/Text/Input.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.css'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { pasteURLDrawerSlug, UploadFromURLModal } from './UploadFromURLModal/index.js'\n\nexport { pasteURLDrawerSlug }\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"medium\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"secondary\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"medium\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <UploadComponent\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\ntype UploadComponentProps = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nconst UploadComponent: React.FC<UploadComponentProps> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { closeModal, openModal } = useModal()\n const { setModified } = useForm()\n const { id, data, docPermissions, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const isValidUrl = Boolean(fileUrl && URL.canParse(fileUrl))\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || !URL.canParse(fileUrl) || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const rawSegment = fileUrl.split('/').pop() || ''\n const fileName = uploadControlFileName || decodeURIComponent(rawSegment.split('?')[0])\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n closeModal(pasteURLDrawerSlug)\n setFileUrl('')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL: `/${string}` = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: pasteURL,\n }),\n )\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const rawSegment = fileUrl.split('/').pop() || ''\n const fileName = decodeURIComponent(rawSegment.split('?')[0])\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n closeModal(pasteURLDrawerSlug)\n setFileUrl('')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n closeModal,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n return () => {\n if (fileSrc?.startsWith('blob:')) {\n URL.revokeObjectURL(fileSrc)\n }\n }\n }, [fileSrc])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n const drawers = (\n <React.Fragment>\n {(value || data?.filename) && (\n <EditDepthProvider>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={data?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </EditDepthProvider>\n )}\n {data && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n {uploadConfig?.pasteURL !== false && (\n <UploadFromURLModal\n fileUrl={fileUrl}\n handleUrlSubmit={handleUrlSubmit}\n isValidUrl={isValidUrl}\n setFileUrl={setFileUrl}\n />\n )}\n </React.Fragment>\n )\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"medium\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n openModal(pasteURLDrawerSlug)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"medium\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n <TextInput\n label={t('upload:fileName')}\n onChange={handleFileNameChange}\n path=\"filename\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n </React.Fragment>\n )}\n </div>\n )}\n {drawers}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ import type { UserMenuSettingsGroup } from './SettingsMenu/index.js';
3
3
  import './index.css';
4
4
  type UserMenuProps = {
5
5
  CustomAvatar?: React.ReactNode;
6
+ CustomLogoutButton?: React.ReactNode;
6
7
  settingsItemGroups?: UserMenuSettingsGroup[];
7
8
  };
8
9
  export declare const UserMenu: React.FC<UserMenuProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UserMenu/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAcpE,OAAO,aAAa,CAAA;AAIpB,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAyJ5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UserMenu/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAA;AAcpE,OAAO,aAAa,CAAA;AAIpB,KAAK,aAAa,GAAG;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACpC,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA+J5C,CAAA"}
@@ -23,6 +23,7 @@ export const UserMenu = t0 => {
23
23
  const $ = _c(7);
24
24
  const {
25
25
  CustomAvatar,
26
+ CustomLogoutButton,
26
27
  settingsItemGroups: t1
27
28
  } = t0;
28
29
  const settingsItemGroups = t1 === undefined ? [] : t1;
@@ -189,7 +190,7 @@ export const UserMenu = t0 => {
189
190
  })
190
191
  }), _jsx(MenuSeparator, {})]
191
192
  }), _jsx(PopupList.MenuItem, {
192
- children: _jsx(PopupList.Button, {
193
+ children: CustomLogoutButton ?? _jsx(PopupList.Button, {
193
194
  href: logoutHref,
194
195
  icon: _jsx(LogOutIcon, {}),
195
196
  children: t("authentication:logOut")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({ CustomAvatar, settingsItemGroups = [] }) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}