@payloadcms/ui 4.0.0-internal.a7ca468 → 4.0.0-internal.af6aad0

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 (558) hide show
  1. package/dist/elements/AddNewRelation/index.css +0 -4
  2. package/dist/elements/AddNewRelation/index.js +2 -2
  3. package/dist/elements/AddNewRelation/index.js.map +1 -1
  4. package/dist/elements/AppHeader/index.css +5 -0
  5. package/dist/elements/AppHeader/index.d.ts +1 -8
  6. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  7. package/dist/elements/AppHeader/index.js +4 -13
  8. package/dist/elements/AppHeader/index.js.map +1 -1
  9. package/dist/elements/ArrayAction/index.d.ts +1 -0
  10. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  11. package/dist/elements/ArrayAction/index.js +45 -32
  12. package/dist/elements/ArrayAction/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  14. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  15. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  16. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  17. package/dist/elements/Button/index.css +25 -2
  18. package/dist/elements/Button/index.d.ts.map +1 -1
  19. package/dist/elements/Button/index.js +2 -0
  20. package/dist/elements/Button/index.js.map +1 -1
  21. package/dist/elements/Button/types.d.ts +1 -1
  22. package/dist/elements/Button/types.d.ts.map +1 -1
  23. package/dist/elements/Button/types.js.map +1 -1
  24. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  25. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  26. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
  27. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  28. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  29. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  30. package/dist/elements/DefaultListViewTabs/index.css +1 -0
  31. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  32. package/dist/elements/DefaultListViewTabs/index.js +84 -62
  33. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  34. package/dist/elements/DocumentDrawer/types.d.ts +1 -1
  35. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  36. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  37. package/dist/elements/Drawer/index.css +10 -4
  38. package/dist/elements/Drawer/types.d.ts +2 -2
  39. package/dist/elements/Drawer/types.d.ts.map +1 -1
  40. package/dist/elements/Drawer/types.js.map +1 -1
  41. package/dist/elements/Dropzone/index.css +10 -4
  42. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  43. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  44. package/dist/elements/FileManager/index.css +0 -30
  45. package/dist/elements/FileManager/index.d.ts.map +1 -1
  46. package/dist/elements/FileManager/index.js +379 -287
  47. package/dist/elements/FileManager/index.js.map +1 -1
  48. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +22 -4
  49. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -1
  50. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +68 -49
  51. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  52. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +100 -15
  53. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
  54. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +97 -137
  55. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  56. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +1 -1
  57. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  58. package/dist/elements/Hierarchy/ColumnBrowser/index.js +51 -23
  59. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  60. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +26 -3
  61. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  62. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  63. package/dist/elements/Hierarchy/CreateNewButton/index.css +9 -0
  64. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts +9 -0
  65. package/dist/elements/Hierarchy/CreateNewButton/index.d.ts.map +1 -0
  66. package/dist/elements/Hierarchy/CreateNewButton/index.js +111 -0
  67. package/dist/elements/Hierarchy/CreateNewButton/index.js.map +1 -0
  68. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  69. package/dist/elements/Hierarchy/DocHeaderButton/index.js +6 -1
  70. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  71. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +1 -3
  72. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -1
  73. package/dist/elements/Hierarchy/Field/index.client.d.ts +5 -0
  74. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Field/index.client.js +120 -95
  76. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  77. package/dist/elements/Hierarchy/Field/index.css +3 -34
  78. package/dist/elements/Hierarchy/Modal/Footer/index.css +45 -0
  79. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +28 -0
  80. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
  81. package/dist/elements/Hierarchy/Modal/Footer/index.js +166 -0
  82. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
  83. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +18 -4
  84. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +88 -24
  86. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  87. package/dist/elements/Hierarchy/Modal/index.css +4 -53
  88. package/dist/elements/Hierarchy/Modal/index.d.ts +5 -2
  89. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  90. package/dist/elements/Hierarchy/Modal/index.js +136 -99
  91. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  92. package/dist/elements/Hierarchy/Modal/types.d.ts +15 -0
  93. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  94. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  95. package/dist/elements/Hierarchy/MoveMany/index.d.ts +7 -3
  96. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  97. package/dist/elements/Hierarchy/MoveMany/index.js +43 -170
  98. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  99. package/dist/elements/Hierarchy/Search/index.css +2 -9
  100. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
  101. package/dist/elements/Hierarchy/Search/index.js +6 -73
  102. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  103. package/dist/elements/Hierarchy/Search/types.d.ts +2 -6
  104. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -1
  105. package/dist/elements/Hierarchy/Search/types.js.map +1 -1
  106. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +0 -4
  107. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  108. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +101 -186
  109. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  110. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  111. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +1 -21
  112. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  113. package/dist/elements/Hierarchy/Tree/LoadMore/index.css +3 -3
  114. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +59 -29
  115. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +1 -1
  116. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  117. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +54 -10
  118. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  119. package/dist/elements/Hierarchy/Tree/index.css +8 -9
  120. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  121. package/dist/elements/Hierarchy/Tree/index.js +29 -47
  122. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  123. package/dist/elements/Hierarchy/Tree/types.d.ts +9 -1
  124. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -1
  125. package/dist/elements/Hierarchy/Tree/types.js.map +1 -1
  126. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  127. package/dist/elements/Hierarchy/Tree/useChildren.js +11 -1
  128. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  129. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts +22 -0
  130. package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts.map +1 -0
  131. package/dist/elements/Hierarchy/getFolderHierarchySlug.js +17 -0
  132. package/dist/elements/Hierarchy/getFolderHierarchySlug.js.map +1 -0
  133. package/dist/elements/Hierarchy/move/moveDocuments.d.ts +34 -0
  134. package/dist/elements/Hierarchy/move/moveDocuments.d.ts.map +1 -0
  135. package/dist/elements/Hierarchy/move/moveDocuments.js +94 -0
  136. package/dist/elements/Hierarchy/move/moveDocuments.js.map +1 -0
  137. package/dist/elements/IDLabel/index.css +6 -0
  138. package/dist/elements/IDLabel/index.d.ts +1 -1
  139. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  140. package/dist/elements/IDLabel/index.js +16 -21
  141. package/dist/elements/IDLabel/index.js.map +1 -1
  142. package/dist/elements/ListControls/index.d.ts.map +1 -1
  143. package/dist/elements/ListControls/index.js +3 -2
  144. package/dist/elements/ListControls/index.js.map +1 -1
  145. package/dist/elements/ListControls/types.d.ts +4 -0
  146. package/dist/elements/ListControls/types.d.ts.map +1 -1
  147. package/dist/elements/ListControls/types.js.map +1 -1
  148. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  149. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  150. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  151. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  152. package/dist/elements/Nav/NavSidebarToggle/index.js +1 -1
  153. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  154. package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
  155. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  156. package/dist/elements/Nav/NavWrapper/index.js +12 -18
  157. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  158. package/dist/elements/Nav/SidebarTabs/index.css +1 -2
  159. package/dist/elements/Nav/context.d.ts +0 -1
  160. package/dist/elements/Nav/context.d.ts.map +1 -1
  161. package/dist/elements/Nav/context.js +92 -67
  162. package/dist/elements/Nav/context.js.map +1 -1
  163. package/dist/elements/Nav/index.css +47 -42
  164. package/dist/elements/Nav/index.d.ts +4 -0
  165. package/dist/elements/Nav/index.d.ts.map +1 -1
  166. package/dist/elements/Nav/index.js +16 -1
  167. package/dist/elements/Nav/index.js.map +1 -1
  168. package/dist/elements/NavGroup/index.css +29 -15
  169. package/dist/elements/Popup/PopupButtonList/index.css +33 -17
  170. package/dist/elements/Popup/index.css +6 -0
  171. package/dist/elements/Popup/index.d.ts +10 -0
  172. package/dist/elements/Popup/index.d.ts.map +1 -1
  173. package/dist/elements/Popup/index.js +13 -6
  174. package/dist/elements/Popup/index.js.map +1 -1
  175. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  176. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  177. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  178. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  179. package/dist/elements/ReactSelect/types.d.ts +5 -0
  180. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  181. package/dist/elements/ReactSelect/types.js.map +1 -1
  182. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  183. package/dist/elements/RelationshipTable/index.js +5 -2
  184. package/dist/elements/RelationshipTable/index.js.map +1 -1
  185. package/dist/elements/SegmentedControl/index.css +58 -0
  186. package/dist/elements/SegmentedControl/index.d.ts +19 -0
  187. package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
  188. package/dist/elements/SegmentedControl/index.js +104 -0
  189. package/dist/elements/SegmentedControl/index.js.map +1 -0
  190. package/dist/elements/SelectAll/index.d.ts.map +1 -1
  191. package/dist/elements/SelectAll/index.js +1 -2
  192. package/dist/elements/SelectAll/index.js.map +1 -1
  193. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  194. package/dist/elements/SelectRow/index.js +1 -2
  195. package/dist/elements/SelectRow/index.js.map +1 -1
  196. package/dist/elements/SidebarRow/index.css +1 -5
  197. package/dist/elements/SidebarToggle/index.css +3 -1
  198. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  199. package/dist/elements/SortHeader/index.js +29 -26
  200. package/dist/elements/SortHeader/index.js.map +1 -1
  201. package/dist/elements/StepNav/DropTarget/index.css +20 -0
  202. package/dist/elements/StepNav/DropTarget/index.d.ts +16 -0
  203. package/dist/elements/StepNav/DropTarget/index.d.ts.map +1 -0
  204. package/dist/elements/StepNav/DropTarget/index.js +71 -0
  205. package/dist/elements/StepNav/DropTarget/index.js.map +1 -0
  206. package/dist/elements/StepNav/index.css +64 -14
  207. package/dist/elements/StepNav/index.d.ts.map +1 -1
  208. package/dist/elements/StepNav/index.js +147 -69
  209. package/dist/elements/StepNav/index.js.map +1 -1
  210. package/dist/elements/StepNav/types.d.ts +6 -0
  211. package/dist/elements/StepNav/types.d.ts.map +1 -1
  212. package/dist/elements/StepNav/types.js.map +1 -1
  213. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +5 -7
  214. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  215. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +14 -3
  216. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  217. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  218. package/dist/elements/Table/DefaultCell/index.js +3 -11
  219. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  220. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  221. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  222. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  223. package/dist/elements/Upload/index.css +39 -32
  224. package/dist/elements/Upload/index.d.ts.map +1 -1
  225. package/dist/elements/Upload/index.js +37 -99
  226. package/dist/elements/Upload/index.js.map +1 -1
  227. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  228. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  229. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  230. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  231. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  232. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  233. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  234. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  235. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  236. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  237. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  238. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  239. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  240. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts +18 -0
  241. package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts.map +1 -0
  242. package/dist/elements/UserMenu/HoverSubmenuGroup.js +38 -0
  243. package/dist/elements/UserMenu/HoverSubmenuGroup.js.map +1 -0
  244. package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
  245. package/dist/elements/UserMenu/LanguageMenu/index.js +83 -39
  246. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  247. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  248. package/dist/elements/UserMenu/SettingsMenu/index.js +57 -21
  249. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  250. package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
  251. package/dist/elements/UserMenu/ThemeMenu/index.js +83 -39
  252. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  253. package/dist/elements/UserMenu/index.css +32 -2
  254. package/dist/elements/UserMenu/index.d.ts +1 -0
  255. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  256. package/dist/elements/UserMenu/index.js +77 -51
  257. package/dist/elements/UserMenu/index.js.map +1 -1
  258. package/dist/elements/UserMenu/useHoverSubmenu.d.ts +21 -0
  259. package/dist/elements/UserMenu/useHoverSubmenu.d.ts.map +1 -0
  260. package/dist/elements/UserMenu/useHoverSubmenu.js +260 -0
  261. package/dist/elements/UserMenu/useHoverSubmenu.js.map +1 -0
  262. package/dist/elements/ViewModeToggle/index.d.ts +8 -0
  263. package/dist/elements/ViewModeToggle/index.d.ts.map +1 -0
  264. package/dist/elements/ViewModeToggle/index.js +29 -0
  265. package/dist/elements/ViewModeToggle/index.js.map +1 -0
  266. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  267. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  268. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  269. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  270. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  271. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  272. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  273. package/dist/elements/WhereBuilder/index.js +15 -4
  274. package/dist/elements/WhereBuilder/index.js.map +1 -1
  275. package/dist/exports/client/index.d.ts +6 -1
  276. package/dist/exports/client/index.d.ts.map +1 -1
  277. package/dist/exports/client/index.js +1 -1
  278. package/dist/exports/client/index.js.map +3 -3
  279. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  280. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  281. package/dist/fields/Array/ArrayRow.js +2 -0
  282. package/dist/fields/Array/ArrayRow.js.map +1 -1
  283. package/dist/fields/Array/index.d.ts.map +1 -1
  284. package/dist/fields/Array/index.js +38 -10
  285. package/dist/fields/Array/index.js.map +1 -1
  286. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  287. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  288. package/dist/fields/Blocks/BlockRow.js +2 -0
  289. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  290. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  291. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  292. package/dist/fields/Blocks/RowActions.js +22 -19
  293. package/dist/fields/Blocks/RowActions.js.map +1 -1
  294. package/dist/fields/Blocks/index.d.ts.map +1 -1
  295. package/dist/fields/Blocks/index.js +35 -7
  296. package/dist/fields/Blocks/index.js.map +1 -1
  297. package/dist/fields/Checkbox/Input.d.ts +2 -2
  298. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  299. package/dist/fields/Checkbox/Input.js +134 -152
  300. package/dist/fields/Checkbox/Input.js.map +1 -1
  301. package/dist/fields/Checkbox/index.css +168 -155
  302. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  303. package/dist/fields/Relationship/Input.js +24 -6
  304. package/dist/fields/Relationship/Input.js.map +1 -1
  305. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  306. package/dist/fields/Relationship/optionsReducer.js +2 -0
  307. package/dist/fields/Relationship/optionsReducer.js.map +1 -1
  308. package/dist/fields/Relationship/types.d.ts +24 -0
  309. package/dist/fields/Relationship/types.d.ts.map +1 -1
  310. package/dist/fields/Relationship/types.js.map +1 -1
  311. package/dist/fields/Upload/Input.d.ts.map +1 -1
  312. package/dist/fields/Upload/Input.js +44 -16
  313. package/dist/fields/Upload/Input.js.map +1 -1
  314. package/dist/fields/Upload/Input.spec.js +241 -0
  315. package/dist/fields/Upload/Input.spec.js.map +1 -0
  316. package/dist/forms/Form/index.d.ts.map +1 -1
  317. package/dist/forms/Form/index.js +4 -1
  318. package/dist/forms/Form/index.js.map +1 -1
  319. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  320. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
  321. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  322. package/dist/icons/CollapseLayers/index.css +5 -0
  323. package/dist/icons/CollapseLayers/index.d.ts +7 -0
  324. package/dist/icons/CollapseLayers/index.d.ts.map +1 -0
  325. package/dist/icons/CollapseLayers/index.js +23 -0
  326. package/dist/icons/CollapseLayers/index.js.map +1 -0
  327. package/dist/icons/Edit/index.d.ts +0 -1
  328. package/dist/icons/Edit/index.d.ts.map +1 -1
  329. package/dist/icons/Edit/index.js +4 -4
  330. package/dist/icons/Edit/index.js.map +1 -1
  331. package/dist/icons/Table/index.css +5 -0
  332. package/dist/icons/Table/index.d.ts +7 -0
  333. package/dist/icons/Table/index.d.ts.map +1 -0
  334. package/dist/icons/Table/index.js +25 -0
  335. package/dist/icons/Table/index.js.map +1 -0
  336. package/dist/providers/Actions/index.d.ts +1 -0
  337. package/dist/providers/Actions/index.d.ts.map +1 -1
  338. package/dist/providers/Actions/index.js +43 -11
  339. package/dist/providers/Actions/index.js.map +1 -1
  340. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  341. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  342. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  343. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  344. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  345. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  346. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  347. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  348. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  349. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  350. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  351. package/dist/providers/Auth/authSessionRequests.js +119 -0
  352. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  353. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  354. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  355. package/dist/providers/Auth/index.d.ts +2 -56
  356. package/dist/providers/Auth/index.d.ts.map +1 -1
  357. package/dist/providers/Auth/index.js +283 -135
  358. package/dist/providers/Auth/index.js.map +1 -1
  359. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  360. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  361. package/dist/providers/Auth/sessionActivity.js +49 -0
  362. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  363. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  364. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  365. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  366. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  367. package/dist/providers/Auth/sessionTiming.js +18 -0
  368. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  369. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  370. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  371. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  372. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  373. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  374. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  375. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  376. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  377. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  378. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  379. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  380. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  381. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  382. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  383. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  384. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  385. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  386. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  387. package/dist/providers/Auth/types.d.ts +65 -0
  388. package/dist/providers/Auth/types.d.ts.map +1 -0
  389. package/dist/providers/Auth/types.js +2 -0
  390. package/dist/providers/Auth/types.js.map +1 -0
  391. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  392. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  393. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  394. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  395. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  396. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  397. package/dist/providers/FormErrorHandler/index.d.ts +5 -1
  398. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  399. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  400. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  401. package/dist/providers/Hierarchy/index.js +53 -24
  402. package/dist/providers/Hierarchy/index.js.map +1 -1
  403. package/dist/providers/Hierarchy/types.d.ts +2 -0
  404. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  405. package/dist/providers/Hierarchy/types.js.map +1 -1
  406. package/dist/providers/HierarchyDnd/index.css +51 -0
  407. package/dist/providers/HierarchyDnd/index.d.ts +21 -0
  408. package/dist/providers/HierarchyDnd/index.d.ts.map +1 -0
  409. package/dist/providers/HierarchyDnd/index.js +163 -0
  410. package/dist/providers/HierarchyDnd/index.js.map +1 -0
  411. package/dist/providers/HierarchyDnd/types.d.ts +56 -0
  412. package/dist/providers/HierarchyDnd/types.d.ts.map +1 -0
  413. package/dist/providers/HierarchyDnd/types.js +21 -0
  414. package/dist/providers/HierarchyDnd/types.js.map +1 -0
  415. package/dist/providers/Locale/index.d.ts.map +1 -1
  416. package/dist/providers/Locale/index.js +41 -36
  417. package/dist/providers/Locale/index.js.map +1 -1
  418. package/dist/providers/Root/index.js +4 -4
  419. package/dist/providers/Root/index.js.map +1 -1
  420. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  421. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  422. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  423. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  424. package/dist/providers/RouteTransition/index.d.ts +2 -0
  425. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  426. package/dist/providers/RouteTransition/index.js +42 -14
  427. package/dist/providers/RouteTransition/index.js.map +1 -1
  428. package/dist/styles.css +1 -1
  429. package/dist/templates/Default/Wrapper/index.css +2 -1
  430. package/dist/templates/Default/Wrapper/index.d.ts +2 -0
  431. package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
  432. package/dist/templates/Default/Wrapper/index.js +12 -6
  433. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  434. package/dist/templates/Default/index.css +3 -1
  435. package/dist/templates/Default/index.d.ts +1 -0
  436. package/dist/templates/Default/index.d.ts.map +1 -1
  437. package/dist/templates/Default/index.js +19 -15
  438. package/dist/templates/Default/index.js.map +1 -1
  439. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  440. package/dist/utilities/formatMetadata.js +0 -5
  441. package/dist/utilities/formatMetadata.js.map +1 -1
  442. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  443. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  444. package/dist/utilities/getFilesFromClipboard.js +49 -0
  445. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  446. package/dist/utilities/slugify.d.ts.map +1 -1
  447. package/dist/utilities/slugify.js +1 -0
  448. package/dist/utilities/slugify.js.map +1 -1
  449. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  450. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  451. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  452. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  453. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  454. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  455. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  456. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  457. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  458. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  459. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  460. package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
  461. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  462. package/dist/views/Edit/index.d.ts.map +1 -1
  463. package/dist/views/Edit/index.js +3 -2
  464. package/dist/views/Edit/index.js.map +1 -1
  465. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  466. package/dist/views/HierarchyList/DocumentListSelection/index.js +100 -105
  467. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  468. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.css +216 -0
  469. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts +20 -0
  470. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts.map +1 -0
  471. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js +182 -0
  472. package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js.map +1 -0
  473. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.css +38 -0
  474. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts +15 -0
  475. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts.map +1 -0
  476. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js +85 -0
  477. package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js.map +1 -0
  478. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.css +98 -0
  479. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts +27 -0
  480. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts.map +1 -0
  481. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js +84 -0
  482. package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js.map +1 -0
  483. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts +19 -0
  484. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts.map +1 -0
  485. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js +100 -0
  486. package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js.map +1 -0
  487. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts +53 -0
  488. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts.map +1 -0
  489. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js +145 -0
  490. package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js.map +1 -0
  491. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts +8 -0
  492. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts.map +1 -0
  493. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js +21 -0
  494. package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js.map +1 -0
  495. package/dist/views/HierarchyList/HierarchyCards/index.css +115 -0
  496. package/dist/views/HierarchyList/HierarchyCards/index.d.ts +80 -0
  497. package/dist/views/HierarchyList/HierarchyCards/index.d.ts.map +1 -0
  498. package/dist/views/HierarchyList/HierarchyCards/index.js +457 -0
  499. package/dist/views/HierarchyList/HierarchyCards/index.js.map +1 -0
  500. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +6 -1
  501. package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
  502. package/dist/views/HierarchyList/HierarchyListHeader/index.js +10 -8
  503. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  504. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
  505. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +11 -10
  506. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  507. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  508. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +3 -6
  509. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  510. package/dist/views/HierarchyList/HierarchyTable/index.css +51 -0
  511. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +13 -1
  512. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  513. package/dist/views/HierarchyList/HierarchyTable/index.js +156 -38
  514. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  515. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +6 -0
  516. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  517. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  518. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  519. package/dist/views/HierarchyList/index.js +103 -20
  520. package/dist/views/HierarchyList/index.js.map +1 -1
  521. package/dist/views/List/ListHeader/index.d.ts +1 -10
  522. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  523. package/dist/views/List/ListHeader/index.js +1 -3
  524. package/dist/views/List/ListHeader/index.js.map +1 -1
  525. package/dist/views/List/ListSelection/index.d.ts.map +1 -1
  526. package/dist/views/List/ListSelection/index.js +138 -122
  527. package/dist/views/List/ListSelection/index.js.map +1 -1
  528. package/dist/views/List/handleHierarchy.d.ts +6 -1
  529. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  530. package/dist/views/List/handleHierarchy.js +34 -3
  531. package/dist/views/List/handleHierarchy.js.map +1 -1
  532. package/dist/views/List/index.client.d.ts.map +1 -1
  533. package/dist/views/List/index.client.js +128 -18
  534. package/dist/views/List/index.client.js.map +1 -1
  535. package/dist/views/List/index.css +5 -0
  536. package/dist/views/List/index.d.ts.map +1 -1
  537. package/dist/views/List/index.js +27 -16
  538. package/dist/views/List/index.js.map +1 -1
  539. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  540. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  541. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  542. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  543. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  544. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  545. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  546. package/dist/views/Root/getRouteData.js +8 -2
  547. package/dist/views/Root/getRouteData.js.map +1 -1
  548. package/dist/views/Root/index.d.ts.map +1 -1
  549. package/dist/views/Root/index.js +1 -0
  550. package/dist/views/Root/index.js.map +1 -1
  551. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  552. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  553. package/package.json +4 -4
  554. package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +0 -36
  555. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +0 -13
  556. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +0 -1
  557. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +0 -141
  558. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePasteFromClipboard.js","names":["c","_c","useModal","validateMimeType","useCallback","toast","useTranslation","useUploadControls","getFileOrUrlFromClipboard","pasteURLDrawerSlug","usePasteFromClipboard","t0","$","handleFileSelection","handleUrlSubmit","setFileUrl","uploadConfig","openModal","t","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","t1","result","isClipboardAccessDenied","t2","err","DOMException","name","error","type","pastedFile","files","mimeTypes","length","pasteURL","url","didFetchSucceed"],"sources":["../../../src/elements/Upload/usePasteFromClipboard.ts"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { validateMimeType } from 'payload/shared'\nimport { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadControls } from '../../providers/UploadControls/index.js'\nimport { getFileOrUrlFromClipboard } from '../../utilities/getFilesFromClipboard.js'\nimport { pasteURLDrawerSlug } from './UploadFromURLModal/index.js'\n\ntype UsePasteFromClipboardArgs = {\n readonly handleFileSelection: (files: FileList) => void\n readonly handleUrlSubmit: (urlOverride?: string) => Promise<boolean>\n readonly setFileUrl: (url: string) => void\n readonly uploadConfig: Pick<SanitizedCollectionConfig['upload'], 'mimeTypes' | 'pasteURL'>\n}\n\n/**\n * Shared by the `Upload` and `FileManager` elements: reads the clipboard and routes the result\n * to file selection, URL fetching, or the paste-URL modal depending on what was found.\n */\nexport const usePasteFromClipboard = ({\n handleFileSelection,\n handleUrlSubmit,\n setFileUrl,\n uploadConfig,\n}: UsePasteFromClipboardArgs): (() => Promise<void>) => {\n const { openModal } = useModal()\n const { t } = useTranslation()\n const { setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl } =\n useUploadControls()\n\n return useCallback(async () => {\n let result: Awaited<ReturnType<typeof getFileOrUrlFromClipboard>> = null\n let isClipboardAccessDenied = false\n\n try {\n result = await getFileOrUrlFromClipboard()\n } catch (err) {\n // Permission denied is the one clipboard failure that should still let the user paste a\n // URL manually when pasteURL is enabled - any other failure keeps the old error toast.\n if (err instanceof DOMException && err.name === 'NotAllowedError') {\n isClipboardAccessDenied = true\n } else {\n toast.error(t('error:unableToReadClipboard'))\n return\n }\n }\n\n if (result?.type === 'file') {\n const [pastedFile] = result.files\n if (\n uploadConfig?.mimeTypes?.length &&\n !validateMimeType(pastedFile.type, uploadConfig.mimeTypes)\n ) {\n toast.error(t('error:invalidFileType'))\n return\n }\n handleFileSelection(result.files)\n return\n }\n\n if (uploadConfig?.pasteURL === false) {\n toast.error(\n isClipboardAccessDenied\n ? t('error:unableToReadClipboard')\n : t('error:noFileFoundInClipboard'),\n )\n return\n }\n\n if (result?.type === 'url') {\n setFileUrl(result.url)\n const didFetchSucceed = await handleUrlSubmit(result.url)\n if (!didFetchSucceed) {\n openModal(pasteURLDrawerSlug)\n }\n return\n }\n\n openModal(pasteURLDrawerSlug)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }, [\n handleFileSelection,\n handleUrlSubmit,\n openModal,\n setFileUrl,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n t,\n uploadConfig,\n ])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,QAAQ,QAAQ;AACzB,SAASC,gBAAgB,QAAQ;AACjC,SAASC,WAAW,QAAQ;AAC5B,SAASC,KAAK,QAAQ;AAEtB,SAASC,cAAc,QAAQ;AAC/B,SAASC,iBAAiB,QAAQ;AAClC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,kBAAkB,QAAQ;AASnC;;;;AAIA,OAAO,MAAMC,qBAAA,GAAwBC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAY,mBAAA;IAAAC,eAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAL,EAKV;EAC1B;IAAAM;EAAA,IAAsBf,QAAA;EACtB;IAAAgB;EAAA,IAAcZ,cAAA;EACd;IAAAa,oBAAA;IAAAC,wBAAA;IAAAC;EAAA,IACEd,iBAAA;EAAA,IAAAe,EAAA;EAAA,IAAAV,CAAA,QAAAC,mBAAA,IAAAD,CAAA,QAAAE,eAAA,IAAAF,CAAA,QAAAK,SAAA,IAAAL,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAO,oBAAA,IAAAP,CAAA,QAAAQ,wBAAA,IAAAR,CAAA,QAAAS,uBAAA,IAAAT,CAAA,QAAAM,CAAA,IAAAN,CAAA,QAAAI,YAAA;IAEiBM,EAAA,SAAAA,CAAA;MACjB,IAAAC,MAAA;MACA,IAAAC,uBAAA;MAA8B;MAAA;QAG5BD,MAAA,CAAAA,CAAA,CAAAA,KAAA,CAAeA,2BAAA;MAAf,SAAAE,EAAA;QACOC,KAAA,CAAAA,GAAA,CAAAA,CAAA,CAAAA,EAAA;QAAA,IAGHA,GAAA,YAAAC,YAAe,IAAgBD,GAAA,CAAAE,IAAA,KAAa;UAC9CJ,uBAAA,CAAAA,CAAA,CAAAA,IAAA;QAAA;UAEAnB,KAAA,CAAAwB,KAAA,CAAYX,CAAA,CAAE;UAAA;QAAA;MAAA;MAAA,IAKdK,MAAA,EAAAO,IAAA,KAAiB;QACnB,OAAAC,UAAA,IAAqBR,MAAA,CAAAS,KAAA;QAAY,IAE/BhB,YAAA,EAAAiB,SAAA,EAAAC,MAAA,KACC/B,gBAAA,CAAiB4B,UAAA,CAAAD,IAAA,EAAiBd,YAAA,CAAAiB,SAAsB;UAEzD5B,KAAA,CAAAwB,KAAA,CAAYX,CAAA,CAAE;UAAA;QAAA;QAGhBL,mBAAA,CAAoBU,MAAA,CAAAS,KAAY;QAAA;MAAA;MAAA,IAI9BhB,YAAA,EAAAmB,QAAA,UAA2B;QAC7B9B,KAAA,CAAAwB,KAAA,CACEL,uBAAA,GACIN,CAAA,CAAE,iCACFA,CAAA,CAAE;QAAA;MAAA;MAAA,IAKNK,MAAA,EAAAO,IAAA,KAAiB;QACnBf,UAAA,CAAWQ,MAAA,CAAAa,GAAU;QACrB,MAAAC,eAAA,SAA8BvB,eAAA,CAAgBS,MAAA,CAAAa,GAAU;QAAA,KACnDC,eAAA;UACHpB,SAAA,CAAAR,kBAAU;QAAA;QAAA;MAAA;MAKdQ,SAAA,CAAAR,kBAAU;MACVY,uBAAA,CAAwB;MACxBF,oBAAA,KAAqB;MACrBC,wBAAA,KAAyB;IAAA;IAC3BR,CAAA,MAAAC,mBAAA;IAAAD,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAK,SAAA;IAAAL,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAO,oBAAA;IAAAP,CAAA,MAAAQ,wBAAA;IAAAR,CAAA,MAAAS,uBAAA;IAAAT,CAAA,MAAAM,CAAA;IAAAN,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,OApDOU,EA8DN;AAAA,CACH","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ import type { SanitizedCollectionConfig } from 'payload';
2
+ type UseUploadFromUrlArgs = {
3
+ readonly collectionSlug: string;
4
+ readonly onFileFetched: (file: File) => void;
5
+ readonly uploadConfig: Pick<SanitizedCollectionConfig['upload'], 'mimeTypes' | 'pasteURL'>;
6
+ };
7
+ type UseUploadFromUrlResult = {
8
+ readonly fileUrl: string;
9
+ readonly handleUrlSubmit: (urlOverride?: string) => Promise<boolean>;
10
+ readonly isValidUrl: boolean;
11
+ readonly setFileUrl: (url: string) => void;
12
+ };
13
+ /**
14
+ * Shared by the `Upload` and `FileManager` elements to fetch a file from a pasted URL, first
15
+ * attempting a client-side fetch and falling back to a server-side proxy fetch when the
16
+ * collection's `pasteURL.allowList` is configured (needed to work around CORS-restricted URLs).
17
+ */
18
+ export declare const useUploadFromUrl: ({ collectionSlug, onFileFetched, uploadConfig, }: UseUploadFromUrlArgs) => UseUploadFromUrlResult;
19
+ export {};
20
+ //# sourceMappingURL=useUploadFromUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUploadFromUrl.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/useUploadFromUrl.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAaxD,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC,CAAA;CAC3F,CAAA;AAED,KAAK,sBAAsB,GAAG;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACpE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;CAC3C,CAAA;AAaD;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,qDAI1B,oBAAoB,KAAG,sBAyGzB,CAAA"}
@@ -0,0 +1,201 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { useModal } from '@faceless-ui/modal';
5
+ import { formatAdminURL, validateMimeType } from 'payload/shared';
6
+ import { useCallback, useState } from 'react';
7
+ import { toast } from 'sonner';
8
+ import { useConfig } from '../../providers/Config/index.js';
9
+ import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
10
+ import { useTranslation } from '../../providers/Translation/index.js';
11
+ import { useUploadControls } from '../../providers/UploadControls/index.js';
12
+ import { pasteURLDrawerSlug } from './UploadFromURLModal/index.js';
13
+ const getFileNameFromUrl = ({
14
+ overrideFileName,
15
+ url
16
+ }) => {
17
+ const rawSegment = url.split('/').pop() || '';
18
+ return overrideFileName || decodeURIComponent(rawSegment.split('?')[0]);
19
+ };
20
+ /**
21
+ * Shared by the `Upload` and `FileManager` elements to fetch a file from a pasted URL, first
22
+ * attempting a client-side fetch and falling back to a server-side proxy fetch when the
23
+ * collection's `pasteURL.allowList` is configured (needed to work around CORS-restricted URLs).
24
+ */
25
+ export const useUploadFromUrl = t0 => {
26
+ const $ = _c(28);
27
+ const {
28
+ collectionSlug,
29
+ onFileFetched,
30
+ uploadConfig
31
+ } = t0;
32
+ const {
33
+ config: t1
34
+ } = useConfig();
35
+ const {
36
+ routes: t2
37
+ } = t1;
38
+ const {
39
+ api
40
+ } = t2;
41
+ const {
42
+ closeModal
43
+ } = useModal();
44
+ const {
45
+ id,
46
+ setUploadStatus
47
+ } = useDocumentInfo();
48
+ const {
49
+ t
50
+ } = useTranslation();
51
+ const {
52
+ uploadControlFileName
53
+ } = useUploadControls();
54
+ const [fileUrl, setFileUrl] = useState("");
55
+ let t3;
56
+ if ($[0] !== fileUrl) {
57
+ t3 = fileUrl && URL.canParse(fileUrl);
58
+ $[0] = fileUrl;
59
+ $[1] = t3;
60
+ } else {
61
+ t3 = $[1];
62
+ }
63
+ const isValidUrl = Boolean(t3);
64
+ const useServerSideFetch = typeof uploadConfig?.pasteURL === "object" && uploadConfig.pasteURL.allowList?.length > 0;
65
+ let t4;
66
+ if ($[2] !== closeModal || $[3] !== onFileFetched || $[4] !== setUploadStatus || $[5] !== t || $[6] !== uploadConfig || $[7] !== uploadControlFileName) {
67
+ t4 = t5 => {
68
+ const {
69
+ blob,
70
+ url
71
+ } = t5;
72
+ if (uploadConfig?.mimeTypes?.length && !validateMimeType(blob.type, uploadConfig.mimeTypes)) {
73
+ toast.error(t("error:invalidFileType"));
74
+ setUploadStatus("failed");
75
+ return false;
76
+ }
77
+ const fileName = getFileNameFromUrl({
78
+ overrideFileName: uploadControlFileName,
79
+ url
80
+ });
81
+ onFileFetched(new File([blob], fileName, {
82
+ type: blob.type
83
+ }));
84
+ setUploadStatus("idle");
85
+ closeModal(pasteURLDrawerSlug);
86
+ setFileUrl("");
87
+ return true;
88
+ };
89
+ $[2] = closeModal;
90
+ $[3] = onFileFetched;
91
+ $[4] = setUploadStatus;
92
+ $[5] = t;
93
+ $[6] = uploadConfig;
94
+ $[7] = uploadControlFileName;
95
+ $[8] = t4;
96
+ } else {
97
+ t4 = $[8];
98
+ }
99
+ const acceptFetchedBlob = t4;
100
+ let t5;
101
+ if ($[9] !== acceptFetchedBlob) {
102
+ t5 = async url_0 => {
103
+ const response = await fetch(url_0);
104
+ if (!response.ok) {
105
+ throw new Error(`Fetch failed with status: ${response.status}`);
106
+ }
107
+ const blob_0 = await response.blob();
108
+ return acceptFetchedBlob({
109
+ blob: blob_0,
110
+ url: url_0
111
+ });
112
+ };
113
+ $[9] = acceptFetchedBlob;
114
+ $[10] = t5;
115
+ } else {
116
+ t5 = $[10];
117
+ }
118
+ const fetchFileFromClient = t5;
119
+ let t6;
120
+ if ($[11] !== acceptFetchedBlob || $[12] !== api || $[13] !== collectionSlug || $[14] !== id) {
121
+ t6 = async url_1 => {
122
+ const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : "?"}src=${encodeURIComponent(url_1)}`;
123
+ const response_0 = await fetch(formatAdminURL({
124
+ apiRoute: api,
125
+ path: pasteURL
126
+ }));
127
+ if (!response_0.ok) {
128
+ throw new Error(`Fetch failed with status: ${response_0.status}`);
129
+ }
130
+ const blob_1 = await response_0.blob();
131
+ return acceptFetchedBlob({
132
+ blob: blob_1,
133
+ url: url_1
134
+ });
135
+ };
136
+ $[11] = acceptFetchedBlob;
137
+ $[12] = api;
138
+ $[13] = collectionSlug;
139
+ $[14] = id;
140
+ $[15] = t6;
141
+ } else {
142
+ t6 = $[15];
143
+ }
144
+ const fetchFileFromServerProxy = t6;
145
+ let t7;
146
+ if ($[16] !== fetchFileFromClient || $[17] !== fetchFileFromServerProxy || $[18] !== fileUrl || $[19] !== setUploadStatus || $[20] !== t || $[21] !== uploadConfig?.pasteURL || $[22] !== useServerSideFetch) {
147
+ t7 = async urlOverride => {
148
+ const urlToFetch = urlOverride ?? fileUrl;
149
+ if (!urlToFetch || !URL.canParse(urlToFetch) || uploadConfig?.pasteURL === false) {
150
+ return false;
151
+ }
152
+ setUploadStatus("uploading");
153
+ ;
154
+ try {
155
+ return await fetchFileFromClient(urlToFetch);
156
+ } catch (t8) {
157
+ if (!useServerSideFetch) {
158
+ toast.error(t("error:fileFetchFailed"));
159
+ setUploadStatus("failed");
160
+ return false;
161
+ }
162
+ }
163
+ ;
164
+ try {
165
+ return await fetchFileFromServerProxy(urlToFetch);
166
+ } catch (t9) {
167
+ toast.error(t("error:urlNotAllowed"));
168
+ setUploadStatus("failed");
169
+ return false;
170
+ }
171
+ };
172
+ $[16] = fetchFileFromClient;
173
+ $[17] = fetchFileFromServerProxy;
174
+ $[18] = fileUrl;
175
+ $[19] = setUploadStatus;
176
+ $[20] = t;
177
+ $[21] = uploadConfig?.pasteURL;
178
+ $[22] = useServerSideFetch;
179
+ $[23] = t7;
180
+ } else {
181
+ t7 = $[23];
182
+ }
183
+ const handleUrlSubmit = t7;
184
+ let t8;
185
+ if ($[24] !== fileUrl || $[25] !== handleUrlSubmit || $[26] !== isValidUrl) {
186
+ t8 = {
187
+ fileUrl,
188
+ handleUrlSubmit,
189
+ isValidUrl,
190
+ setFileUrl
191
+ };
192
+ $[24] = fileUrl;
193
+ $[25] = handleUrlSubmit;
194
+ $[26] = isValidUrl;
195
+ $[27] = t8;
196
+ } else {
197
+ t8 = $[27];
198
+ }
199
+ return t8;
200
+ };
201
+ //# sourceMappingURL=useUploadFromUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUploadFromUrl.js","names":["c","_c","useModal","formatAdminURL","validateMimeType","useCallback","useState","toast","useConfig","useDocumentInfo","useTranslation","useUploadControls","pasteURLDrawerSlug","getFileNameFromUrl","overrideFileName","url","rawSegment","split","pop","decodeURIComponent","useUploadFromUrl","t0","$","collectionSlug","onFileFetched","uploadConfig","config","t1","routes","t2","api","closeModal","id","setUploadStatus","t","uploadControlFileName","fileUrl","setFileUrl","t3","URL","canParse","isValidUrl","Boolean","useServerSideFetch","pasteURL","allowList","length","t4","t5","blob","mimeTypes","type","error","fileName","File","acceptFetchedBlob","url_0","response","fetch","ok","Error","status","blob_0","fetchFileFromClient","t6","url_1","encodeURIComponent","response_0","apiRoute","path","blob_1","fetchFileFromServerProxy","t7","urlOverride","urlToFetch","t8","t9","handleUrlSubmit"],"sources":["../../../src/elements/Upload/useUploadFromUrl.ts"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, validateMimeType } from 'payload/shared'\nimport { useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadControls } from '../../providers/UploadControls/index.js'\nimport { pasteURLDrawerSlug } from './UploadFromURLModal/index.js'\n\ntype UseUploadFromUrlArgs = {\n readonly collectionSlug: string\n readonly onFileFetched: (file: File) => void\n readonly uploadConfig: Pick<SanitizedCollectionConfig['upload'], 'mimeTypes' | 'pasteURL'>\n}\n\ntype UseUploadFromUrlResult = {\n readonly fileUrl: string\n readonly handleUrlSubmit: (urlOverride?: string) => Promise<boolean>\n readonly isValidUrl: boolean\n readonly setFileUrl: (url: string) => void\n}\n\nconst getFileNameFromUrl = ({\n overrideFileName,\n url,\n}: {\n overrideFileName: null | string\n url: string\n}): string => {\n const rawSegment = url.split('/').pop() || ''\n return overrideFileName || decodeURIComponent(rawSegment.split('?')[0])\n}\n\n/**\n * Shared by the `Upload` and `FileManager` elements to fetch a file from a pasted URL, first\n * attempting a client-side fetch and falling back to a server-side proxy fetch when the\n * collection's `pasteURL.allowList` is configured (needed to work around CORS-restricted URLs).\n */\nexport const useUploadFromUrl = ({\n collectionSlug,\n onFileFetched,\n uploadConfig,\n}: UseUploadFromUrlArgs): UseUploadFromUrlResult => {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n const { closeModal } = useModal()\n const { id, setUploadStatus } = useDocumentInfo()\n const { t } = useTranslation()\n const { uploadControlFileName } = useUploadControls()\n\n const [fileUrl, setFileUrl] = useState('')\n\n const isValidUrl = Boolean(fileUrl && URL.canParse(fileUrl))\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const acceptFetchedBlob = useCallback(\n ({ blob, url }: { blob: Blob; url: string }): boolean => {\n if (uploadConfig?.mimeTypes?.length && !validateMimeType(blob.type, uploadConfig.mimeTypes)) {\n toast.error(t('error:invalidFileType'))\n setUploadStatus('failed')\n return false\n }\n\n const fileName = getFileNameFromUrl({ overrideFileName: uploadControlFileName, url })\n onFileFetched(new File([blob], fileName, { type: blob.type }))\n setUploadStatus('idle')\n closeModal(pasteURLDrawerSlug)\n setFileUrl('')\n return true\n },\n [closeModal, onFileFetched, setUploadStatus, t, uploadConfig, uploadControlFileName],\n )\n\n const fetchFileFromClient = useCallback(\n async (url: string): Promise<boolean> => {\n const response = await fetch(url)\n\n if (!response.ok) {\n throw new Error(`Fetch failed with status: ${response.status}`)\n }\n\n const blob = await response.blob()\n return acceptFetchedBlob({ blob, url })\n },\n [acceptFetchedBlob],\n )\n\n const fetchFileFromServerProxy = useCallback(\n async (url: string): Promise<boolean> => {\n const pasteURL: `/${string}` = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(url)}`\n const response = await fetch(formatAdminURL({ apiRoute: api, path: pasteURL }))\n\n if (!response.ok) {\n throw new Error(`Fetch failed with status: ${response.status}`)\n }\n\n const blob = await response.blob()\n return acceptFetchedBlob({ blob, url })\n },\n [acceptFetchedBlob, api, collectionSlug, id],\n )\n\n const handleUrlSubmit = useCallback(\n async (urlOverride?: string): Promise<boolean> => {\n const urlToFetch = urlOverride ?? fileUrl\n\n if (!urlToFetch || !URL.canParse(urlToFetch) || uploadConfig?.pasteURL === false) {\n return false\n }\n\n setUploadStatus('uploading')\n\n try {\n return await fetchFileFromClient(urlToFetch)\n } catch (_clientError) {\n if (!useServerSideFetch) {\n toast.error(t('error:fileFetchFailed'))\n setUploadStatus('failed')\n return false\n }\n }\n\n try {\n return await fetchFileFromServerProxy(urlToFetch)\n } catch (_serverError) {\n toast.error(t('error:urlNotAllowed'))\n setUploadStatus('failed')\n return false\n }\n },\n [\n fetchFileFromClient,\n fetchFileFromServerProxy,\n fileUrl,\n setUploadStatus,\n t,\n uploadConfig,\n useServerSideFetch,\n ],\n )\n\n return { fileUrl, handleUrlSubmit, isValidUrl, setFileUrl }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,31 @@
1
+ @layer payload-default {
2
+ .upload-dropzone-content {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ gap: var(--spacer-2);
7
+ width: 100%;
8
+ }
9
+
10
+ .upload-dropzone-content__buttons {
11
+ display: flex;
12
+ gap: var(--spacer-2);
13
+ align-items: center;
14
+ }
15
+
16
+ .upload-dropzone-content__or-text {
17
+ color: var(--color-text-tertiary);
18
+ text-transform: lowercase;
19
+ }
20
+
21
+ .upload-dropzone-content__drag-text {
22
+ flex-shrink: 0;
23
+ margin: 0;
24
+ text-transform: lowercase;
25
+ color: var(--color-text-tertiary);
26
+ }
27
+
28
+ .upload-dropzone-content__hidden-input {
29
+ display: none;
30
+ }
31
+ }
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import './index.css';
3
+ export type UploadDropzoneContentProps = {
4
+ readonly acceptMimeTypes?: string;
5
+ readonly className?: string;
6
+ /** Extra controls rendered alongside the select/paste buttons, e.g. the single-upload field's custom `UploadControls`. */
7
+ readonly extraControls?: React.ReactNode;
8
+ /** Allows selecting more than one file at once, used by the bulk upload drawer. */
9
+ readonly multiple?: boolean;
10
+ readonly onFilesSelected: (files: FileList) => void;
11
+ readonly onPasteFromClipboard: () => void;
12
+ /** Additional className kept on the paste button for callers with existing selectors depending on it. */
13
+ readonly pasteButtonClassName?: string;
14
+ readonly pasteTooltip: string;
15
+ };
16
+ export declare function UploadDropzoneContent({ acceptMimeTypes, className, extraControls, multiple, onFilesSelected, onPasteFromClipboard, pasteButtonClassName, pasteTooltip, }: UploadDropzoneContentProps): React.JSX.Element;
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAA;IACjC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,0HAA0H;IAC1H,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxC,mFAAmF;IACnF,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAA;IACzC,yGAAyG;IACzG,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,wBAAgB,qBAAqB,CAAC,EACpC,eAAe,EACf,SAAS,EACT,aAAa,EACb,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,YAAY,GACb,EAAE,0BAA0B,qBA0C5B"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import React from 'react';
5
+ import { useTranslation } from '../../providers/Translation/index.js';
6
+ import { Button } from '../Button/index.js';
7
+ import './index.css';
8
+ const baseClass = 'upload-dropzone-content';
9
+ export function UploadDropzoneContent({
10
+ acceptMimeTypes,
11
+ className,
12
+ extraControls,
13
+ multiple,
14
+ onFilesSelected,
15
+ onPasteFromClipboard,
16
+ pasteButtonClassName,
17
+ pasteTooltip
18
+ }) {
19
+ const {
20
+ t
21
+ } = useTranslation();
22
+ const inputRef = React.useRef(null);
23
+ return /*#__PURE__*/_jsxs("div", {
24
+ className: [baseClass, className].filter(Boolean).join(' '),
25
+ children: [/*#__PURE__*/_jsxs("div", {
26
+ className: `${baseClass}__buttons`,
27
+ children: [/*#__PURE__*/_jsx(Button, {
28
+ buttonStyle: "secondary",
29
+ onClick: () => inputRef.current?.click(),
30
+ size: "medium",
31
+ children: t('upload:selectFile')
32
+ }), /*#__PURE__*/_jsx("input", {
33
+ accept: acceptMimeTypes,
34
+ "aria-hidden": "true",
35
+ className: `${baseClass}__hidden-input`,
36
+ hidden: true,
37
+ multiple: multiple,
38
+ onChange: e => {
39
+ if (e.target.files && e.target.files.length > 0) {
40
+ onFilesSelected(e.target.files);
41
+ }
42
+ },
43
+ ref: inputRef,
44
+ type: "file"
45
+ }), /*#__PURE__*/_jsx("span", {
46
+ className: `${baseClass}__or-text`,
47
+ children: t('general:or')
48
+ }), /*#__PURE__*/_jsx(Button, {
49
+ buttonStyle: "secondary",
50
+ className: [`${baseClass}__pasteFromClipboard`, pasteButtonClassName].filter(Boolean).join(' '),
51
+ icon: "clipboard",
52
+ onClick: onPasteFromClipboard,
53
+ size: "medium",
54
+ tooltip: pasteTooltip
55
+ }), extraControls]
56
+ }), /*#__PURE__*/_jsxs("p", {
57
+ className: `${baseClass}__drag-text`,
58
+ children: [t('general:or'), " ", t('upload:dragAndDrop')]
59
+ })]
60
+ });
61
+ }
62
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","useTranslation","Button","baseClass","UploadDropzoneContent","acceptMimeTypes","className","extraControls","multiple","onFilesSelected","onPasteFromClipboard","pasteButtonClassName","pasteTooltip","t","inputRef","useRef","_jsxs","filter","Boolean","join","_jsx","buttonStyle","onClick","current","click","size","accept","hidden","onChange","e","target","files","length","ref","type","icon","tooltip"],"sources":["../../../src/elements/UploadDropzoneContent/index.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport './index.css'\n\nconst baseClass = 'upload-dropzone-content'\n\nexport type UploadDropzoneContentProps = {\n readonly acceptMimeTypes?: string\n readonly className?: string\n /** Extra controls rendered alongside the select/paste buttons, e.g. the single-upload field's custom `UploadControls`. */\n readonly extraControls?: React.ReactNode\n /** Allows selecting more than one file at once, used by the bulk upload drawer. */\n readonly multiple?: boolean\n readonly onFilesSelected: (files: FileList) => void\n readonly onPasteFromClipboard: () => void\n /** Additional className kept on the paste button for callers with existing selectors depending on it. */\n readonly pasteButtonClassName?: string\n readonly pasteTooltip: string\n}\n\nexport function UploadDropzoneContent({\n acceptMimeTypes,\n className,\n extraControls,\n multiple,\n onFilesSelected,\n onPasteFromClipboard,\n pasteButtonClassName,\n pasteTooltip,\n}: UploadDropzoneContentProps) {\n const { t } = useTranslation()\n const inputRef = React.useRef<HTMLInputElement>(null)\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <div className={`${baseClass}__buttons`}>\n <Button buttonStyle=\"secondary\" onClick={() => inputRef.current?.click()} size=\"medium\">\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n multiple={multiple}\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n onFilesSelected(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n <span className={`${baseClass}__or-text`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"secondary\"\n className={[`${baseClass}__pasteFromClipboard`, pasteButtonClassName]\n .filter(Boolean)\n .join(' ')}\n icon=\"clipboard\"\n onClick={onPasteFromClipboard}\n size=\"medium\"\n tooltip={pasteTooltip}\n />\n {extraControls}\n </div>\n <p className={`${baseClass}__drag-text`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAgBlB,OAAO,SAASC,sBAAsB;EACpCC,eAAe;EACfC,SAAS;EACTC,aAAa;EACbC,QAAQ;EACRC,eAAe;EACfC,oBAAoB;EACpBC,oBAAoB;EACpBC;AAAY,CACe;EAC3B,MAAM;IAAEC;EAAC,CAAE,GAAGZ,cAAA;EACd,MAAMa,QAAA,GAAWd,KAAA,CAAMe,MAAM,CAAmB;EAEhD,oBACEC,KAAA,CAAC;IAAIV,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACW,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DH,KAAA,CAAC;MAAIV,SAAA,EAAW,GAAGH,SAAA,WAAoB;8BACrCiB,IAAA,CAAClB,MAAA;QAAOmB,WAAA,EAAY;QAAYC,OAAA,EAASA,CAAA,KAAMR,QAAA,CAASS,OAAO,EAAEC,KAAA;QAASC,IAAA,EAAK;kBAC5EZ,CAAA,CAAE;uBAELO,IAAA,CAAC;QACCM,MAAA,EAAQrB,eAAA;QACR,eAAY;QACZC,SAAA,EAAW,GAAGH,SAAA,gBAAyB;QACvCwB,MAAM;QACNnB,QAAA,EAAUA,QAAA;QACVoB,QAAA,EAAWC,CAAA;UACT,IAAIA,CAAA,CAAEC,MAAM,CAACC,KAAK,IAAIF,CAAA,CAAEC,MAAM,CAACC,KAAK,CAACC,MAAM,GAAG,GAAG;YAC/CvB,eAAA,CAAgBoB,CAAA,CAAEC,MAAM,CAACC,KAAK;UAChC;QACF;QACAE,GAAA,EAAKnB,QAAA;QACLoB,IAAA,EAAK;uBAEPd,IAAA,CAAC;QAAKd,SAAA,EAAW,GAAGH,SAAA,WAAoB;kBAAGU,CAAA,CAAE;uBAC7CO,IAAA,CAAClB,MAAA;QACCmB,WAAA,EAAY;QACZf,SAAA,EAAW,CAAC,GAAGH,SAAA,sBAA+B,EAAEQ,oBAAA,CAAqB,CAClEM,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;QACRgB,IAAA,EAAK;QACLb,OAAA,EAASZ,oBAAA;QACTe,IAAA,EAAK;QACLW,OAAA,EAASxB;UAEVL,aAAA;qBAEHS,KAAA,CAAC;MAAEV,SAAA,EAAW,GAAGH,SAAA,aAAsB;iBACpCU,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;AAI7B","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ type HoverSubmenuGroupContextValue = {
3
+ activeId: null | string;
4
+ setActiveId: React.Dispatch<React.SetStateAction<null | string>>;
5
+ };
6
+ /**
7
+ * Coordinates a set of sibling hover-opened submenus (e.g. Theme / Language / Settings)
8
+ * so that only one can be open at a time. Without this, each submenu only knows about
9
+ * its own trigger + content hit region, so hovering a new sibling can open its submenu
10
+ * while a previously-hovered sibling's submenu is still considered "inside its own zone"
11
+ * and never closes.
12
+ */
13
+ export declare const HoverSubmenuGroupProvider: React.FC<{
14
+ children: React.ReactNode;
15
+ }>;
16
+ export declare const useHoverSubmenuGroup: () => HoverSubmenuGroupContextValue;
17
+ export {};
18
+ //# sourceMappingURL=HoverSubmenuGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverSubmenuGroup.d.ts","sourceRoot":"","sources":["../../../src/elements/UserMenu/HoverSubmenuGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAE3D,KAAK,6BAA6B,GAAG;IACnC,QAAQ,EAAE,IAAI,GAAG,MAAM,CAAA;IACvB,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAA;CACjE,CAAA;AAID;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAU7E,CAAA;AAED,eAAO,MAAM,oBAAoB,qCAAsC,CAAA"}
@@ -0,0 +1,38 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import React, { createContext, use, useState } from 'react';
6
+ const HoverSubmenuGroupContext = /*#__PURE__*/createContext(null);
7
+ /**
8
+ * Coordinates a set of sibling hover-opened submenus (e.g. Theme / Language / Settings)
9
+ * so that only one can be open at a time. Without this, each submenu only knows about
10
+ * its own trigger + content hit region, so hovering a new sibling can open its submenu
11
+ * while a previously-hovered sibling's submenu is still considered "inside its own zone"
12
+ * and never closes.
13
+ */
14
+ export const HoverSubmenuGroupProvider = t0 => {
15
+ const $ = _c(3);
16
+ const {
17
+ children
18
+ } = t0;
19
+ const [activeId, setActiveId] = useState(null);
20
+ let t1;
21
+ if ($[0] !== activeId || $[1] !== children) {
22
+ t1 = _jsx(HoverSubmenuGroupContext, {
23
+ value: {
24
+ activeId,
25
+ setActiveId
26
+ },
27
+ children
28
+ });
29
+ $[0] = activeId;
30
+ $[1] = children;
31
+ $[2] = t1;
32
+ } else {
33
+ t1 = $[2];
34
+ }
35
+ return t1;
36
+ };
37
+ export const useHoverSubmenuGroup = () => use(HoverSubmenuGroupContext);
38
+ //# sourceMappingURL=HoverSubmenuGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HoverSubmenuGroup.js","names":["c","_c","React","createContext","use","useState","HoverSubmenuGroupContext","HoverSubmenuGroupProvider","t0","$","children","activeId","setActiveId","t1","_jsx","value","useHoverSubmenuGroup"],"sources":["../../../src/elements/UserMenu/HoverSubmenuGroup.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use, useState } from 'react'\n\ntype HoverSubmenuGroupContextValue = {\n activeId: null | string\n setActiveId: React.Dispatch<React.SetStateAction<null | string>>\n}\n\nconst HoverSubmenuGroupContext = createContext<HoverSubmenuGroupContextValue | null>(null)\n\n/**\n * Coordinates a set of sibling hover-opened submenus (e.g. Theme / Language / Settings)\n * so that only one can be open at a time. Without this, each submenu only knows about\n * its own trigger + content hit region, so hovering a new sibling can open its submenu\n * while a previously-hovered sibling's submenu is still considered \"inside its own zone\"\n * and never closes.\n */\nexport const HoverSubmenuGroupProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [activeId, setActiveId] = useState<null | string>(null)\n\n return (\n <HoverSubmenuGroupContext value={{ activeId, setActiveId }}>\n {children}\n </HoverSubmenuGroupContext>\n )\n}\n\nexport const useHoverSubmenuGroup = () => use(HoverSubmenuGroupContext)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,QAAQ,QAAQ;AAOpD,MAAMC,wBAAA,gBAA2BH,aAAA,CAAoD;AAErF;;;;;;;AAOA,OAAO,MAAMI,yBAAA,GAAqEC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS;EAAA,IAAAF,EAElF;EACC,OAAAG,QAAA,EAAAC,WAAA,IAAgCP,QAAA,KAAwB;EAAA,IAAAQ,EAAA;EAAA,IAAAJ,CAAA,QAAAE,QAAA,IAAAF,CAAA,QAAAC,QAAA;IAGtDG,EAAA,GAAAC,IAAA,CAAAR,wBAAA;MAAAS,KAAA;QAAAJ,QAAA;QAAAC;MAAA;MAAAF;IAAA,C;;;;;;;SAAAG,E;CAIJ;AAEA,OAAO,MAAMG,oBAAA,GAAuBA,CAAA,KAAMZ,GAAA,CAAIE,wBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/UserMenu/LanguageMenu/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAsBvC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CACnC,CAsDA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/elements/UserMenu/LanguageMenu/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAsBvC,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;CACnC,CA+DA,CAAA"}
@@ -7,6 +7,7 @@ import { ChevronIcon } from '../../../icons/Chevron/index.js';
7
7
  import { LanguageIcon } from '../../../icons/Language/index.js';
8
8
  import { useTranslation } from '../../../providers/Translation/index.js';
9
9
  import { Popup, PopupList } from '../../Popup/index.js';
10
+ import { useHoverSubmenu } from '../useHoverSubmenu.js';
10
11
  export const LanguageMenuContent = () => {
11
12
  const $ = _c(4);
12
13
  const {
@@ -46,13 +47,21 @@ export const LanguageMenuContent = () => {
46
47
  return t0;
47
48
  };
48
49
  export const LanguageMenu = t0 => {
49
- const $ = _c(5);
50
+ const $ = _c(15);
50
51
  const {
51
52
  onMobileOpen
52
53
  } = t0;
53
54
  const {
54
55
  t
55
56
  } = useTranslation();
57
+ const {
58
+ close,
59
+ contentRef,
60
+ isOpen,
61
+ keepOpen,
62
+ open,
63
+ triggerRef
64
+ } = useHoverSubmenu("language");
56
65
  if (onMobileOpen) {
57
66
  let t1;
58
67
  if ($[0] !== onMobileOpen || $[1] !== t) {
@@ -62,7 +71,7 @@ export const LanguageMenu = t0 => {
62
71
  onClick: onMobileOpen,
63
72
  type: "button",
64
73
  children: [_jsx("span", {
65
- className: "popup-button-list__submenu-icon",
74
+ className: "popup-button-list__icon",
66
75
  children: _jsx(LanguageIcon, {
67
76
  size: 24
68
77
  })
@@ -86,48 +95,83 @@ export const LanguageMenu = t0 => {
86
95
  return t1;
87
96
  }
88
97
  let t1;
89
- if ($[3] !== t) {
90
- t1 = _jsx(Popup, {
91
- renderButton: t2 => {
92
- const {
93
- active,
94
- onClick,
95
- onKeyDown,
96
- ...aria
97
- } = t2;
98
- return _jsxs("button", {
99
- ...aria,
100
- className: ["popup-button-list__button", "popup-button-list__button--submenu-trigger", active && "popup-button-list__button--selected"].filter(Boolean).join(" "),
101
- onClick,
102
- onKeyDown,
103
- type: "button",
104
- children: [_jsx("span", {
105
- className: "popup-button-list__submenu-icon",
106
- children: _jsx(LanguageIcon, {
107
- size: 24
108
- })
109
- }), _jsx("span", {
110
- className: "popup-button-list__label",
111
- children: t("general:language")
112
- }), _jsx("span", {
113
- className: "popup-button-list__chevron",
114
- children: _jsx(ChevronIcon, {
115
- direction: "right",
116
- size: 16
117
- })
118
- })]
119
- });
120
- },
98
+ if ($[3] !== close) {
99
+ t1 = nextOpen => {
100
+ if (!nextOpen) {
101
+ close();
102
+ }
103
+ };
104
+ $[3] = close;
105
+ $[4] = t1;
106
+ } else {
107
+ t1 = $[4];
108
+ }
109
+ let t2;
110
+ if ($[5] !== open || $[6] !== t || $[7] !== triggerRef) {
111
+ t2 = t3 => {
112
+ const {
113
+ active,
114
+ onClick,
115
+ onKeyDown,
116
+ ...aria
117
+ } = t3;
118
+ return _jsxs("button", {
119
+ ...aria,
120
+ className: "popup-button-list__button popup-button-list__button--submenu-trigger popup-button-list__button--submenu-trigger-language",
121
+ onClick,
122
+ onKeyDown,
123
+ onMouseEnter: open,
124
+ ref: triggerRef,
125
+ type: "button",
126
+ children: [_jsx("span", {
127
+ className: "popup-button-list__icon",
128
+ children: _jsx(LanguageIcon, {
129
+ size: 24
130
+ })
131
+ }), _jsx("span", {
132
+ className: "popup-button-list__label",
133
+ children: t("general:language")
134
+ }), _jsx("span", {
135
+ className: "popup-button-list__chevron",
136
+ children: _jsx(ChevronIcon, {
137
+ direction: "right",
138
+ size: 16
139
+ })
140
+ })]
141
+ });
142
+ };
143
+ $[5] = open;
144
+ $[6] = t;
145
+ $[7] = triggerRef;
146
+ $[8] = t2;
147
+ } else {
148
+ t2 = $[8];
149
+ }
150
+ let t3;
151
+ if ($[9] !== contentRef || $[10] !== isOpen || $[11] !== keepOpen || $[12] !== t1 || $[13] !== t2) {
152
+ t3 = _jsx(Popup, {
153
+ forceOpen: isOpen,
154
+ onToggleOpen: t1,
155
+ renderButton: t2,
121
156
  side: "left",
122
157
  size: "large",
123
158
  theme: "dark",
124
- children: _jsx(LanguageMenuContent, {})
159
+ children: _jsx("div", {
160
+ className: "popup-button-list__submenu-content-language",
161
+ onMouseEnter: keepOpen,
162
+ ref: contentRef,
163
+ children: _jsx(LanguageMenuContent, {})
164
+ })
125
165
  });
126
- $[3] = t;
127
- $[4] = t1;
166
+ $[9] = contentRef;
167
+ $[10] = isOpen;
168
+ $[11] = keepOpen;
169
+ $[12] = t1;
170
+ $[13] = t2;
171
+ $[14] = t3;
128
172
  } else {
129
- t1 = $[4];
173
+ t3 = $[14];
130
174
  }
131
- return t1;
175
+ return t3;
132
176
  };
133
177
  //# sourceMappingURL=index.js.map