@payloadcms/ui 4.0.0-internal.2fddfc0 → 4.0.0-internal.3aa3d85

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 +0 -1
  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 +9 -1
  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 +5 -509
  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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","qs","Fragment","useCallback","toast","Button","ConfirmationModal","useModal","useConfig","useTranslation","confirmResetModalSlug","ResetPreferences","t0","$","user","openModal","t","config","t1","routes","t2","api","apiRoute","t3","stringifiedQuery","stringify","depth","where","equals","id","addQueryPrefix","res","fetch","path","credentials","headers","method","json","message","ok","success","error","t4","_err","handleResetPreferences","t5","_jsxs","children","_jsx","className","buttonStyle","onClick","body","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/views/Account/ResetPreferences/index.tsx"],"sourcesContent":["'use client'\nimport type { TypedUser } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { ConfirmationModal } from '../../../elements/ConfirmationModal/index.js'\nimport { useModal } from '../../../elements/Modal/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nconst confirmResetModalSlug = 'confirm-reset-modal'\n\nexport const ResetPreferences: React.FC<{\n readonly user?: TypedUser\n}> = ({ user }) => {\n const { openModal } = useModal()\n const { t } = useTranslation()\n const {\n config: {\n routes: { api: apiRoute },\n },\n } = useConfig()\n\n const handleResetPreferences = useCallback(async () => {\n if (!user) {\n return\n }\n\n const stringifiedQuery = qs.stringify(\n {\n depth: 0,\n where: {\n 'user.value': {\n equals: user.id,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await fetch(\n formatAdminURL({\n apiRoute,\n path: `/payload-preferences${stringifiedQuery}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'DELETE',\n },\n )\n\n const json = await res.json()\n const message = json.message\n\n if (res.ok) {\n toast.success(message)\n } else {\n toast.error(message)\n }\n } catch (_err) {\n // swallow error\n }\n }, [apiRoute, user])\n\n return (\n <Fragment>\n <div className=\"payload-reset-preferences\">\n <Button buttonStyle=\"secondary\" onClick={() => openModal(confirmResetModalSlug)}>\n {t('general:resetPreferences')}\n </Button>\n </div>\n <ConfirmationModal\n body={t('general:resetPreferencesDescription')}\n confirmingLabel={t('general:resettingPreferences')}\n heading={t('general:resetPreferences')}\n modalSlug={confirmResetModalSlug}\n onConfirm={handleResetPreferences}\n />\n </Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AACpB,SAASC,QAAQ,EAAEC,WAAW,QAAQ;AACtC,SAASC,KAAK,QAAQ;AAEtB,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,qBAAA,GAAwB;AAE9B,OAAO,MAAMC,gBAAA,GAERC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe;EAAA,IAAAF,EAAQ;EACZ;IAAAG;EAAA,IAAsBR,QAAA;EACtB;IAAAS;EAAA,IAAcP,cAAA;EACd;IAAAQ,MAAA,EAAAC;EAAA,IAIIV,SAAA;EAHM;IAAAW,MAAA,EAAAC;EAAA,IAAAF,EAEP;EADS;IAAAG,GAAA,EAAAC;EAAA,IAAAF,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAV,CAAA,QAAAS,QAAA,IAAAT,CAAA,QAAAC,IAAA;IAIcS,EAAA,SAAAA,CAAA;MAAA,KACpCT,IAAA;QAAA;MAAA;MAIL,MAAAU,gBAAA,GAAyBvB,EAAA,CAAAwB,SAAA;QAAAC,KAAA;QAAAC,KAAA;UAAA;YAAAC,MAAA,EAKTd,IAAA,CAAAe;UAAA;QAAA;MAAA;QAAAC,cAAA;MAAA,CAIS;MAAA;MAAA;QAIvB,MAAAC,GAAA,SAAkBC,KAAA,CAChBhC,cAAA;UAAAsB,QAAA;UAAAW,IAAA,EAEQ,uBAAuBT,gBAAA;QAAkB,CACjD;UAAAU,WAAA,EAEe;UAAAC,OAAA;YAAA,gBAEK;UAAA;UAAAC,MAAA,EAEV;QAAA,CACV;QAGF,MAAAC,IAAA,SAAmBN,GAAA,CAAAM,IAAA,CAAQ;QAC3B,MAAAC,OAAA,GAAgBD,IAAA,CAAAC,OAAA;QAAY,IAExBP,GAAA,CAAAQ,EAAA;UACFnC,KAAA,CAAAoC,OAAA,CAAcF,OAAA;QAAA;UAEdlC,KAAA,CAAAqC,KAAA,CAAYH,OAAA;QAAA;MAAA,SAAAI,EAAA;QAEPC,KAAA,CAAAA,IAAA,CAAAA,CAAA,CAAAA,EAAA;MAAA;IAAA;IAGX9B,CAAA,MAAAS,QAAA;IAAAT,CAAA,MAAAC,IAAA;IAAAD,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EA3CA,MAAA+B,sBAAA,GAA+BrB,EA2CZ;EAAA,IAAAmB,EAAA;EAAA,IAAA7B,CAAA,QAAAE,SAAA;IAK4B2B,EAAA,GAAAA,CAAA,KAAM3B,SAAA,CAAAL,qBAAU;IAAAA,CAAA,MAAAA,SAAA;IAAAA,CAAA,MAAAA,EAAA;EAAA;IAAAA,EAAA,GAAAA,CAAA;EAAA;EAAA,IAAAA,EAAA;EAAA,IAAAA,CAAA,QAAAA,sBAAA,IAAAA,CAAA,QAAAA,CAAA,IAAAA,CAAA,QAAAA,EAAA;IAF7DmC,EAAA,GAAAC,KAAA,CAAA5C,QAAA;MAAA6C,QAAA,GACEC,IAAA,CAAC;QAAAC,SAAA,EAAc;QAAAF,QAAA,EACbC,IAAA,CAAA3C,MAAA;UAAA6C,WAAA,EAAoB;UAAAC,OAAA,EAAqBT,EAAgB;UAAAhC,QAAA,EACtDM,CAAA,CAAE;QAAA,C;UAGPgC,IAAA,CAAA1C,iBAAA;QAAA8C,IAAA,EACQpC,CAAA,CAAE;QAAAqC,eAAA,EACSrC,CAAA,CAAE;QAAAsC,OAAA,EACVtC,CAAA,CAAE;QAAAuC,SAAA,EAAA7C,qBAAA;QAAA8C,SAAA,EAEAZ;MAAA,C;;;;;;;;;SAXfC,E;CAeJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","formatAdminURL","qs","Fragment","useCallback","toast","Button","ConfirmationModal","useModal","useConfig","useTranslation","confirmResetModalSlug","ResetPreferences","t0","$","user","openModal","t","config","t1","routes","t2","api","apiRoute","t3","stringifiedQuery","stringify","depth","where","equals","id","addQueryPrefix","res","fetch","path","credentials","headers","method","json","message","ok","success","error","t4","_err","handleResetPreferences","t5","_jsxs","children","_jsx","className","buttonStyle","onClick","body","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../../src/views/Account/ResetPreferences/index.tsx"],"sourcesContent":["'use client'\nimport type { User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport { Fragment, useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport { Button } from '../../../elements/Button/index.js'\nimport { ConfirmationModal } from '../../../elements/ConfirmationModal/index.js'\nimport { useModal } from '../../../elements/Modal/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nconst confirmResetModalSlug = 'confirm-reset-modal'\n\nexport const ResetPreferences: React.FC<{\n readonly user?: User\n}> = ({ user }) => {\n const { openModal } = useModal()\n const { t } = useTranslation()\n const {\n config: {\n routes: { api: apiRoute },\n },\n } = useConfig()\n\n const handleResetPreferences = useCallback(async () => {\n if (!user) {\n return\n }\n\n const stringifiedQuery = qs.stringify(\n {\n depth: 0,\n where: {\n 'user.value': {\n equals: user.id,\n },\n },\n },\n { addQueryPrefix: true },\n )\n\n try {\n const res = await fetch(\n formatAdminURL({\n apiRoute,\n path: `/payload-preferences${stringifiedQuery}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'DELETE',\n },\n )\n\n const json = await res.json()\n const message = json.message\n\n if (res.ok) {\n toast.success(message)\n } else {\n toast.error(message)\n }\n } catch (_err) {\n // swallow error\n }\n }, [apiRoute, user])\n\n return (\n <Fragment>\n <div className=\"payload-reset-preferences\">\n <Button buttonStyle=\"secondary\" onClick={() => openModal(confirmResetModalSlug)}>\n {t('general:resetPreferences')}\n </Button>\n </div>\n <ConfirmationModal\n body={t('general:resetPreferencesDescription')}\n confirmingLabel={t('general:resettingPreferences')}\n heading={t('general:resetPreferences')}\n modalSlug={confirmResetModalSlug}\n onConfirm={handleResetPreferences}\n />\n </Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AACpB,SAASC,QAAQ,EAAEC,WAAW,QAAQ;AACtC,SAASC,KAAK,QAAQ;AAEtB,SAASC,MAAM,QAAQ;AACvB,SAASC,iBAAiB,QAAQ;AAClC,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAE/B,MAAMC,qBAAA,GAAwB;AAE9B,OAAO,MAAMC,gBAAA,GAERC,EAAA;EAAA,MAAAC,CAAA,GAAAd,EAAA;EAAC;IAAAe;EAAA,IAAAF,EAAQ;EACZ;IAAAG;EAAA,IAAsBR,QAAA;EACtB;IAAAS;EAAA,IAAcP,cAAA;EACd;IAAAQ,MAAA,EAAAC;EAAA,IAIIV,SAAA;EAHM;IAAAW,MAAA,EAAAC;EAAA,IAAAF,EAEP;EADS;IAAAG,GAAA,EAAAC;EAAA,IAAAF,EAAiB;EAAA,IAAAG,EAAA;EAAA,IAAAV,CAAA,QAAAS,QAAA,IAAAT,CAAA,QAAAC,IAAA;IAIcS,EAAA,SAAAA,CAAA;MAAA,KACpCT,IAAA;QAAA;MAAA;MAIL,MAAAU,gBAAA,GAAyBvB,EAAA,CAAAwB,SAAA;QAAAC,KAAA;QAAAC,KAAA;UAAA;YAAAC,MAAA,EAKTd,IAAA,CAAAe;UAAA;QAAA;MAAA;QAAAC,cAAA;MAAA,CAIS;MAAA;MAAA;QAIvB,MAAAC,GAAA,SAAkBC,KAAA,CAChBhC,cAAA;UAAAsB,QAAA;UAAAW,IAAA,EAEQ,uBAAuBT,gBAAA;QAAkB,CACjD;UAAAU,WAAA,EAEe;UAAAC,OAAA;YAAA,gBAEK;UAAA;UAAAC,MAAA,EAEV;QAAA,CACV;QAGF,MAAAC,IAAA,SAAmBN,GAAA,CAAAM,IAAA,CAAQ;QAC3B,MAAAC,OAAA,GAAgBD,IAAA,CAAAC,OAAA;QAAY,IAExBP,GAAA,CAAAQ,EAAA;UACFnC,KAAA,CAAAoC,OAAA,CAAcF,OAAA;QAAA;UAEdlC,KAAA,CAAAqC,KAAA,CAAYH,OAAA;QAAA;MAAA,SAAAI,EAAA;QAEPC,KAAA,CAAAA,IAAA,CAAAA,CAAA,CAAAA,EAAA;MAAA;IAAA;IAGX9B,CAAA,MAAAS,QAAA;IAAAT,CAAA,MAAAC,IAAA;IAAAD,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EA3CA,MAAA+B,sBAAA,GAA+BrB,EA2CZ;EAAA,IAAAmB,EAAA;EAAA,IAAA7B,CAAA,QAAAE,SAAA;IAK4B2B,EAAA,GAAAA,CAAA,KAAM3B,SAAA,CAAAL,qBAAU;IAAAA,CAAA,MAAAA,SAAA;IAAAA,CAAA,MAAAA,EAAA;EAAA;IAAAA,EAAA,GAAAA,CAAA;EAAA;EAAA,IAAAA,EAAA;EAAA,IAAAA,CAAA,QAAAA,sBAAA,IAAAA,CAAA,QAAAA,CAAA,IAAAA,CAAA,QAAAA,EAAA;IAF7DmC,EAAA,GAAAC,KAAA,CAAA5C,QAAA;MAAA6C,QAAA,GACEC,IAAA,CAAC;QAAAC,SAAA,EAAc;QAAAF,QAAA,EACbC,IAAA,CAAA3C,MAAA;UAAA6C,WAAA,EAAoB;UAAAC,OAAA,EAAqBT,EAAgB;UAAAhC,QAAA,EACtDM,CAAA,CAAE;QAAA,C;UAGPgC,IAAA,CAAA1C,iBAAA;QAAA8C,IAAA,EACQpC,CAAA,CAAE;QAAAqC,eAAA,EACSrC,CAAA,CAAE;QAAAsC,OAAA,EACVtC,CAAA,CAAE;QAAAuC,SAAA,EAAA7C,qBAAA;QAAA8C,SAAA,EAEAZ;MAAA,C;;;;;;;;;SAXfC,E;CAeJ","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { I18n } from '@payloadcms/translations';
2
- import type { BasePayload, Config, LanguageOptions, TypedUser } from 'payload';
2
+ import type { BasePayload, Config, LanguageOptions, User } from 'payload';
3
3
  import React from 'react';
4
4
  import './index.css';
5
5
  export declare const Settings: React.FC<{
@@ -8,6 +8,6 @@ export declare const Settings: React.FC<{
8
8
  readonly languageOptions: LanguageOptions;
9
9
  readonly payload: BasePayload;
10
10
  readonly theme: Config['admin']['theme'];
11
- readonly user?: TypedUser;
11
+ readonly user?: User;
12
12
  }>;
13
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Account/Settings/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE9E,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAA;CAC1B,CAeA,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Account/Settings/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEzE,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAA;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAA;CACrB,CAeA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","FieldLabel","AccountLanguageSelector","LanguageSelector","AccountResetPreferences","ResetPreferences","AccountToggleHighContrast","ToggleHighContrast","AccountToggleTheme","ToggleTheme","baseClass","Settings","props","className","i18n","languageOptions","theme","user","_jsxs","filter","Boolean","join","_jsx","t","htmlFor","label"],"sources":["../../../../src/views/Account/Settings/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { BasePayload, Config, LanguageOptions, TypedUser } from 'payload'\n\nimport React from 'react'\n\n/* eslint-disable payload/no-imports-from-exports-dir -- Server component must reference exports/client bundle for proper client boundary in prod builds */\nimport {\n FieldLabel,\n AccountLanguageSelector as LanguageSelector,\n AccountResetPreferences as ResetPreferences,\n AccountToggleHighContrast as ToggleHighContrast,\n AccountToggleTheme as ToggleTheme,\n} from '../../../exports/client/index.js'\n/* eslint-enable payload/no-imports-from-exports-dir */\nimport './index.css'\n\nconst baseClass = 'payload-settings'\n\nexport const Settings: React.FC<{\n readonly className?: string\n readonly i18n: I18n\n readonly languageOptions: LanguageOptions\n readonly payload: BasePayload\n readonly theme: Config['admin']['theme']\n readonly user?: TypedUser\n}> = (props) => {\n const { className, i18n, languageOptions, theme, user } = props\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <h3>{i18n.t('general:payloadSettings')}</h3>\n <div className={`${baseClass}__language`}>\n <FieldLabel htmlFor=\"language-select\" label={i18n.t('general:language')} />\n <LanguageSelector languageOptions={languageOptions} />\n </div>\n {theme === 'all' && <ToggleTheme />}\n <ToggleHighContrast />\n <ResetPreferences user={user} />\n </div>\n )\n}\n"],"mappings":";AAGA,OAAOA,KAAA,MAAW;AAElB;AACA,SACEC,UAAU,EACVC,uBAAA,IAA2BC,gBAAgB,EAC3CC,uBAAA,IAA2BC,gBAAgB,EAC3CC,yBAAA,IAA6BC,kBAAkB,EAC/CC,kBAAA,IAAsBC,WAAW,QAC5B;AACP;AACA,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAOPC,KAAA;EACJ,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC,eAAe;IAAEC,KAAK;IAAEC;EAAI,CAAE,GAAGL,KAAA;EAE1D,oBACEM,KAAA,CAAC;IAAIL,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACM,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DC,IAAA,CAAC;gBAAIR,IAAA,CAAKS,CAAC,CAAC;qBACZL,KAAA,CAAC;MAAIL,SAAA,EAAW,GAAGH,SAAA,YAAqB;8BACtCY,IAAA,CAACrB,UAAA;QAAWuB,OAAA,EAAQ;QAAkBC,KAAA,EAAOX,IAAA,CAAKS,CAAC,CAAC;uBACpDD,IAAA,CAACnB,gBAAA;QAAiBY,eAAA,EAAiBA;;QAEpCC,KAAA,KAAU,sBAASM,IAAA,CAACb,WAAA,O,aACrBa,IAAA,CAACf,kBAAA,O,aACDe,IAAA,CAACjB,gBAAA;MAAiBY,IAAA,EAAMA;;;AAG9B","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","FieldLabel","AccountLanguageSelector","LanguageSelector","AccountResetPreferences","ResetPreferences","AccountToggleHighContrast","ToggleHighContrast","AccountToggleTheme","ToggleTheme","baseClass","Settings","props","className","i18n","languageOptions","theme","user","_jsxs","filter","Boolean","join","_jsx","t","htmlFor","label"],"sources":["../../../../src/views/Account/Settings/index.tsx"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type { BasePayload, Config, LanguageOptions, User } from 'payload'\n\nimport React from 'react'\n\n/* eslint-disable payload/no-imports-from-exports-dir -- Server component must reference exports/client bundle for proper client boundary in prod builds */\nimport {\n FieldLabel,\n AccountLanguageSelector as LanguageSelector,\n AccountResetPreferences as ResetPreferences,\n AccountToggleHighContrast as ToggleHighContrast,\n AccountToggleTheme as ToggleTheme,\n} from '../../../exports/client/index.js'\n/* eslint-enable payload/no-imports-from-exports-dir */\nimport './index.css'\n\nconst baseClass = 'payload-settings'\n\nexport const Settings: React.FC<{\n readonly className?: string\n readonly i18n: I18n\n readonly languageOptions: LanguageOptions\n readonly payload: BasePayload\n readonly theme: Config['admin']['theme']\n readonly user?: User\n}> = (props) => {\n const { className, i18n, languageOptions, theme, user } = props\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <h3>{i18n.t('general:payloadSettings')}</h3>\n <div className={`${baseClass}__language`}>\n <FieldLabel htmlFor=\"language-select\" label={i18n.t('general:language')} />\n <LanguageSelector languageOptions={languageOptions} />\n </div>\n {theme === 'all' && <ToggleTheme />}\n <ToggleHighContrast />\n <ResetPreferences user={user} />\n </div>\n )\n}\n"],"mappings":";AAGA,OAAOA,KAAA,MAAW;AAElB;AACA,SACEC,UAAU,EACVC,uBAAA,IAA2BC,gBAAgB,EAC3CC,uBAAA,IAA2BC,gBAAgB,EAC3CC,yBAAA,IAA6BC,kBAAkB,EAC/CC,kBAAA,IAAsBC,WAAW,QAC5B;AACP;AACA,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,QAAA,GAOPC,KAAA;EACJ,MAAM;IAAEC,SAAS;IAAEC,IAAI;IAAEC,eAAe;IAAEC,KAAK;IAAEC;EAAI,CAAE,GAAGL,KAAA;EAE1D,oBACEM,KAAA,CAAC;IAAIL,SAAA,EAAW,CAACH,SAAA,EAAWG,SAAA,CAAU,CAACM,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;4BAC1DC,IAAA,CAAC;gBAAIR,IAAA,CAAKS,CAAC,CAAC;qBACZL,KAAA,CAAC;MAAIL,SAAA,EAAW,GAAGH,SAAA,YAAqB;8BACtCY,IAAA,CAACrB,UAAA;QAAWuB,OAAA,EAAQ;QAAkBC,KAAA,EAAOX,IAAA,CAAKS,CAAC,CAAC;uBACpDD,IAAA,CAACnB,gBAAA;QAAiBY,eAAA,EAAiBA;;QAEpCC,KAAA,KAAU,sBAASM,IAAA,CAACb,WAAA,O,aACrBa,IAAA,CAACf,kBAAA,O,aACDe,IAAA,CAACjB,gBAAA;MAAiBY,IAAA,EAAMA;;;AAG9B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetConfigDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAA;AAEtD,OAAO,KAA4D,MAAM,OAAO,CAAA;AAgBhF,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC/C,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAMD,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,GACX,EAAE,uBAAuB,qBAwHzB"}
1
+ {"version":3,"file":"WidgetConfigDrawer.d.ts","sourceRoot":"","sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,SAAS,CAAA;AAEtD,OAAO,KAA4D,MAAM,OAAO,CAAA;AAiBhF,KAAK,uBAAuB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IAC/C,MAAM,EAAE,YAAY,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC,CAAA;AAMD,wBAAgB,kBAAkB,CAAC,EACjC,UAAU,EACV,MAAM,EACN,MAAM,EACN,UAAU,GACX,EAAE,uBAAuB,qBA0HzB"}
@@ -4,6 +4,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
5
  import { v4 as uuid } from 'uuid';
6
6
  import { Drawer } from '../../../../elements/Drawer/index.js';
7
+ import { Gutter } from '../../../../elements/Gutter/index.js';
7
8
  import { useModal } from '../../../../elements/Modal/index.js';
8
9
  import { ShimmerEffect } from '../../../../elements/ShimmerEffect/index.js';
9
10
  import { Form } from '../../../../forms/Form/index.js';
@@ -106,30 +107,33 @@ export function WidgetConfigDrawer({
106
107
  return /*#__PURE__*/_jsx(Drawer, {
107
108
  slug: drawerSlug,
108
109
  title: `${t('general:edit')} ${widgetLabel}`,
109
- children: initialState === false ? /*#__PURE__*/_jsx(ShimmerEffect, {
110
- height: "250px"
111
- }) : /*#__PURE__*/_jsx(OperationProvider, {
112
- operation: "update",
113
- children: /*#__PURE__*/_jsxs(Form, {
114
- fields: fields,
115
- initialState: initialState,
116
- onChange: [onChange],
117
- onSubmit: (_, data) => {
118
- onSave(mergeLocaleData(widgetData ?? {}, data, localeCode, fields));
119
- closeModal(drawerSlug);
120
- },
121
- uuid: formUUID,
122
- children: [/*#__PURE__*/_jsx(RenderFields, {
110
+ children: /*#__PURE__*/_jsx(Gutter, {
111
+ className: "widget-config-drawer__content",
112
+ children: initialState === false ? /*#__PURE__*/_jsx(ShimmerEffect, {
113
+ height: "250px"
114
+ }) : /*#__PURE__*/_jsx(OperationProvider, {
115
+ operation: "update",
116
+ children: /*#__PURE__*/_jsxs(Form, {
123
117
  fields: fields,
124
- forceRender: true,
125
- parentIndexPath: "",
126
- parentPath: "",
127
- parentSchemaPath: widget.slug,
128
- permissions: true,
129
- readOnly: false
130
- }), /*#__PURE__*/_jsx(FormSubmit, {
131
- children: t('fields:saveChanges')
132
- })]
118
+ initialState: initialState,
119
+ onChange: [onChange],
120
+ onSubmit: (_, data) => {
121
+ onSave(mergeLocaleData(widgetData ?? {}, data, localeCode, fields));
122
+ closeModal(drawerSlug);
123
+ },
124
+ uuid: formUUID,
125
+ children: [/*#__PURE__*/_jsx(RenderFields, {
126
+ fields: fields,
127
+ forceRender: true,
128
+ parentIndexPath: "",
129
+ parentPath: "",
130
+ parentSchemaPath: widget.slug,
131
+ permissions: true,
132
+ readOnly: false
133
+ }), /*#__PURE__*/_jsx(FormSubmit, {
134
+ children: t('fields:saveChanges')
135
+ })]
136
+ })
133
137
  })
134
138
  })
135
139
  });
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetConfigDrawer.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","v4","uuid","Drawer","useModal","ShimmerEffect","Form","RenderFields","FormSubmit","useLocale","OperationProvider","useServerFunctions","useTranslation","abortAndIgnore","extractLocaleData","mergeLocaleData","EMPTY_WIDGET_PREFERENCES","fields","WidgetConfigDrawer","drawerSlug","onSave","widget","widgetData","closeModal","modalState","getFormState","t","locale","localeCode","code","onChangeAbortControllerRef","initialState","setInitialState","isOpen","Boolean","formUUID","widgetLabel","label","slug","length","controller","AbortController","loadInitialState","localeFilteredData","state","data","docPermissions","docPreferences","operation","renderAllFields","schemaPath","signal","widgetSlug","onChange","formState","prevFormState","current","_jsx","title","height","_jsxs","onSubmit","_","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","readOnly"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientWidget, FormState } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport { Drawer } from '../../../../elements/Drawer/index.js'\nimport { useModal } from '../../../../elements/Modal/index.js'\nimport { ShimmerEffect } from '../../../../elements/ShimmerEffect/index.js'\nimport { Form } from '../../../../forms/Form/index.js'\nimport { RenderFields } from '../../../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../../../forms/Submit/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { OperationProvider } from '../../../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { abortAndIgnore } from '../../../../utilities/abortAndIgnore.js'\nimport { extractLocaleData, mergeLocaleData } from './utils/localeUtils.js'\n\ntype WidgetConfigDrawerProps = {\n drawerSlug: string\n onSave: (data: Record<string, unknown>) => void\n widget: ClientWidget\n widgetData?: Record<string, unknown>\n}\n\nconst EMPTY_WIDGET_PREFERENCES = {\n fields: {},\n}\n\nexport function WidgetConfigDrawer({\n drawerSlug,\n onSave,\n widget,\n widgetData,\n}: WidgetConfigDrawerProps) {\n const { closeModal, modalState } = useModal()\n const { getFormState } = useServerFunctions()\n const { t } = useTranslation()\n const locale = useLocale()\n const localeCode = locale?.code ?? 'en'\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n\n const [initialState, setInitialState] = useState<false | FormState | undefined>(false)\n\n const isOpen = Boolean(modalState?.[drawerSlug]?.isOpen)\n const formUUID = useMemo(() => uuid(), [])\n const widgetLabel = useMemo(\n () => (typeof widget.label === 'string' ? widget.label : widget.slug),\n [widget.label, widget.slug],\n )\n const fields = useMemo(() => widget.fields ?? [], [widget.fields])\n\n useEffect(() => {\n if (!isOpen || fields.length === 0) {\n setInitialState(false)\n return\n }\n\n const controller = new AbortController()\n\n const loadInitialState = async () => {\n const localeFilteredData = extractLocaleData(widgetData ?? {}, localeCode, fields)\n\n const { state } = await getFormState({\n data: localeFilteredData,\n docPermissions: {\n fields: true,\n },\n docPreferences: EMPTY_WIDGET_PREFERENCES,\n locale: localeCode,\n operation: 'update',\n renderAllFields: true,\n schemaPath: widget.slug,\n signal: controller.signal,\n widgetSlug: widget.slug,\n })\n\n if (state) {\n setInitialState(state)\n }\n }\n\n void loadInitialState()\n\n return () => {\n abortAndIgnore(controller)\n }\n }, [fields, getFormState, isOpen, localeCode, widget.slug, widgetData])\n\n const onChange = useCallback(\n async ({ formState: prevFormState }: { formState: FormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n docPermissions: {\n fields: true,\n },\n docPreferences: EMPTY_WIDGET_PREFERENCES,\n formState: prevFormState,\n operation: 'update',\n schemaPath: widget.slug,\n signal: controller.signal,\n widgetSlug: widget.slug,\n })\n\n if (!state) {\n return prevFormState\n }\n\n return state\n },\n [getFormState, widget.slug],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n return (\n <Drawer slug={drawerSlug} title={`${t('general:edit')} ${widgetLabel}`}>\n {initialState === false ? (\n <ShimmerEffect height=\"250px\" />\n ) : (\n <OperationProvider operation=\"update\">\n <Form\n fields={fields}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(_, data) => {\n onSave(mergeLocaleData(widgetData ?? {}, data, localeCode, fields))\n closeModal(drawerSlug)\n }}\n uuid={formUUID}\n >\n <RenderFields\n fields={fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={widget.slug}\n permissions={true}\n readOnly={false}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n </OperationProvider>\n )}\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"WidgetConfigDrawer.js","names":["React","useCallback","useEffect","useMemo","useRef","useState","v4","uuid","Drawer","Gutter","useModal","ShimmerEffect","Form","RenderFields","FormSubmit","useLocale","OperationProvider","useServerFunctions","useTranslation","abortAndIgnore","extractLocaleData","mergeLocaleData","EMPTY_WIDGET_PREFERENCES","fields","WidgetConfigDrawer","drawerSlug","onSave","widget","widgetData","closeModal","modalState","getFormState","t","locale","localeCode","code","onChangeAbortControllerRef","initialState","setInitialState","isOpen","Boolean","formUUID","widgetLabel","label","slug","length","controller","AbortController","loadInitialState","localeFilteredData","state","data","docPermissions","docPreferences","operation","renderAllFields","schemaPath","signal","widgetSlug","onChange","formState","prevFormState","current","_jsx","title","className","height","_jsxs","onSubmit","_","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","readOnly"],"sources":["../../../../../src/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientWidget, FormState } from 'payload'\n\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport { Drawer } from '../../../../elements/Drawer/index.js'\nimport { Gutter } from '../../../../elements/Gutter/index.js'\nimport { useModal } from '../../../../elements/Modal/index.js'\nimport { ShimmerEffect } from '../../../../elements/ShimmerEffect/index.js'\nimport { Form } from '../../../../forms/Form/index.js'\nimport { RenderFields } from '../../../../forms/RenderFields/index.js'\nimport { FormSubmit } from '../../../../forms/Submit/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { OperationProvider } from '../../../../providers/Operation/index.js'\nimport { useServerFunctions } from '../../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { abortAndIgnore } from '../../../../utilities/abortAndIgnore.js'\nimport { extractLocaleData, mergeLocaleData } from './utils/localeUtils.js'\n\ntype WidgetConfigDrawerProps = {\n drawerSlug: string\n onSave: (data: Record<string, unknown>) => void\n widget: ClientWidget\n widgetData?: Record<string, unknown>\n}\n\nconst EMPTY_WIDGET_PREFERENCES = {\n fields: {},\n}\n\nexport function WidgetConfigDrawer({\n drawerSlug,\n onSave,\n widget,\n widgetData,\n}: WidgetConfigDrawerProps) {\n const { closeModal, modalState } = useModal()\n const { getFormState } = useServerFunctions()\n const { t } = useTranslation()\n const locale = useLocale()\n const localeCode = locale?.code ?? 'en'\n const onChangeAbortControllerRef = useRef<AbortController>(null)\n\n const [initialState, setInitialState] = useState<false | FormState | undefined>(false)\n\n const isOpen = Boolean(modalState?.[drawerSlug]?.isOpen)\n const formUUID = useMemo(() => uuid(), [])\n const widgetLabel = useMemo(\n () => (typeof widget.label === 'string' ? widget.label : widget.slug),\n [widget.label, widget.slug],\n )\n const fields = useMemo(() => widget.fields ?? [], [widget.fields])\n\n useEffect(() => {\n if (!isOpen || fields.length === 0) {\n setInitialState(false)\n return\n }\n\n const controller = new AbortController()\n\n const loadInitialState = async () => {\n const localeFilteredData = extractLocaleData(widgetData ?? {}, localeCode, fields)\n\n const { state } = await getFormState({\n data: localeFilteredData,\n docPermissions: {\n fields: true,\n },\n docPreferences: EMPTY_WIDGET_PREFERENCES,\n locale: localeCode,\n operation: 'update',\n renderAllFields: true,\n schemaPath: widget.slug,\n signal: controller.signal,\n widgetSlug: widget.slug,\n })\n\n if (state) {\n setInitialState(state)\n }\n }\n\n void loadInitialState()\n\n return () => {\n abortAndIgnore(controller)\n }\n }, [fields, getFormState, isOpen, localeCode, widget.slug, widgetData])\n\n const onChange = useCallback(\n async ({ formState: prevFormState }: { formState: FormState }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state } = await getFormState({\n docPermissions: {\n fields: true,\n },\n docPreferences: EMPTY_WIDGET_PREFERENCES,\n formState: prevFormState,\n operation: 'update',\n schemaPath: widget.slug,\n signal: controller.signal,\n widgetSlug: widget.slug,\n })\n\n if (!state) {\n return prevFormState\n }\n\n return state\n },\n [getFormState, widget.slug],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n return (\n <Drawer slug={drawerSlug} title={`${t('general:edit')} ${widgetLabel}`}>\n <Gutter className=\"widget-config-drawer__content\">\n {initialState === false ? (\n <ShimmerEffect height=\"250px\" />\n ) : (\n <OperationProvider operation=\"update\">\n <Form\n fields={fields}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(_, data) => {\n onSave(mergeLocaleData(widgetData ?? {}, data, localeCode, fields))\n closeModal(drawerSlug)\n }}\n uuid={formUUID}\n >\n <RenderFields\n fields={fields}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\"\n parentSchemaPath={widget.slug}\n permissions={true}\n readOnly={false}\n />\n <FormSubmit>{t('fields:saveChanges')}</FormSubmit>\n </Form>\n </OperationProvider>\n )}\n </Gutter>\n </Drawer>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,6 +14,8 @@
14
14
 
15
15
  .widget-config-drawer__content {
16
16
  height: 100%;
17
+ padding-top: var(--gutter-v);
18
+ padding-bottom: var(--gutter-v);
17
19
 
18
20
  .form-submit {
19
21
  margin-top: var(--spacer-2-5);
@@ -46,9 +46,9 @@ export const RenderWidget = t0 => {
46
46
  setComponent(React.createElement("div", {
47
47
  style: {
48
48
  background: "var(--theme-error-50)",
49
- border: "1px solid var(--theme-error-200)",
49
+ border: "var(--stroke-width-small) solid var(--theme-error-200)",
50
50
  borderRadius: "4px",
51
- color: "var(--theme-error-text)",
51
+ color: "var(--color-text-danger)",
52
52
  padding: "20px",
53
53
  textAlign: "center"
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RenderWidget.js","names":["c","_c","React","useCallback","useEffect","useRef","ShimmerEffect","useServerFunctions","RenderWidget","t0","$","widgetData","widgetId","Component","setComponent","useState","serverFunction","requestIDRef","t1","render","requestID","current","widgetSlug","slice","lastIndexOf","result","name","args","component","t2","createElement","style","background","border","borderRadius","color","padding","textAlign","renderWidget","t3","t4","Symbol","for","_jsx","height","_Fragment","children"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect, useRef } from 'react'\n\nimport type {\n RenderWidgetServerFnArgs,\n RenderWidgetServerFnReturnType,\n} from './renderWidgetServerFn.js'\n\nimport { ShimmerEffect } from '../../../../../elements/ShimmerEffect/index.js'\nimport { useServerFunctions } from '../../../../../providers/ServerFunctions/index.js'\n\n/**\n * Utility to render a widget on-demand on the client.\n */\nexport const RenderWidget: React.FC<{\n /**\n * Instance-specific data for this widget\n */\n widgetData?: Record<string, unknown>\n /**\n * Unique ID for this widget instance (format: \"slug-timestamp\")\n */\n widgetId: string\n}> = ({ widgetData, widgetId }) => {\n const [Component, setComponent] = React.useState<null | React.ReactNode>(null)\n const { serverFunction } = useServerFunctions()\n const requestIDRef = useRef(0)\n\n const renderWidget = useCallback(() => {\n async function render() {\n const requestID = ++requestIDRef.current\n setComponent(null)\n\n try {\n const widgetSlug = widgetId.slice(0, widgetId.lastIndexOf('-'))\n\n const result = (await serverFunction({\n name: 'render-widget',\n args: {\n widgetData,\n widgetSlug,\n } as RenderWidgetServerFnArgs,\n })) as RenderWidgetServerFnReturnType\n\n if (requestID !== requestIDRef.current) {\n return\n }\n\n setComponent(result.component)\n } catch (_error) {\n if (requestID !== requestIDRef.current) {\n return\n }\n\n // Log error but don't expose details to console in production\n\n // Fallback error component\n setComponent(\n React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-error-50)',\n border: '1px solid var(--theme-error-200)',\n borderRadius: '4px',\n color: 'var(--theme-error-text)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n 'Failed to load widget. Please try again later.',\n ),\n )\n }\n }\n void render()\n }, [serverFunction, widgetData, widgetId])\n\n useEffect(() => {\n void renderWidget()\n }, [renderWidget])\n\n if (!Component) {\n return <ShimmerEffect height=\"100%\" />\n }\n\n return <>{Component}</>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAOtD,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AAEnC;;;AAGA,OAAO,MAAMC,YAAA,GASRC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,UAAA;IAAAC;EAAA,IAAAH,EAAwB;EAC5B,OAAAI,SAAA,EAAAC,YAAA,IAAkCZ,KAAA,CAAAa,QAAA,KAAuC;EACzE;IAAAC;EAAA,IAA2BT,kBAAA;EAC3B,MAAAU,YAAA,GAAqBZ,MAAA,EAAO;EAAA,IAAAa,EAAA;EAAA,IAAAR,CAAA,QAAAM,cAAA,IAAAN,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAE,QAAA;IAEKM,EAAA,GAAAA,CAAA;MAC/B,MAAAC,MAAA,kBAAAA,OAAA;QACE,MAAAC,SAAA,GAAoBH,YAAA,CAAAI,OAAA,GAAAJ,YAAA,CAAAI,OAAA,IAAoB;QACxCP,YAAA,KAAa;QAAA;QAAA;UAGX,MAAAQ,UAAA,GAAmBV,QAAA,CAAAW,KAAA,IAAkBX,QAAA,CAAAY,WAAA,CAAqB;UAE1D,MAAAC,MAAA,SAAsBT,cAAA;YAAAU,IAAA,EACd;YAAAC,IAAA;cAAAhB,UAAA;cAAAW;YAAA;UAAA,CAKR;UAAA,IAEIF,SAAA,KAAcH,YAAA,CAAAI,OAAoB;YAAA;UAAA;UAItCP,YAAA,CAAaW,MAAA,CAAAG,SAAgB;QAAA,SAAAC,EAAA;UAAA,IAEzBT,SAAA,KAAcH,YAAA,CAAAI,OAAoB;YAAA;UAAA;UAOtCP,YAAA,CACEZ,KAAA,CAAA4B,aAAA,CACE;YAAAC,KAAA;cAAAC,UAAA,EAGgB;cAAAC,MAAA,EACJ;cAAAC,YAAA,EACM;cAAAC,KAAA,EACP;cAAAC,OAAA,EACE;cAAAC,SAAA,EACE;YAAA;UAAA,GAGf;QAAA;MAAA;MAKHlB,MAAA;IAAA;IACPT,CAAA,MAAAM,cAAA;IAAAN,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAhDA,MAAA4B,YAAA,GAAqBpB,EAgDoB;EAAA,IAAAW,EAAA;EAAA,IAAAU,EAAA;EAAA,IAAA7B,CAAA,QAAA4B,YAAA;IAE/BT,EAAA,GAAAA,CAAA;MACHS,YAAA;IAAA;IACJC,EAAA,IAACD,YAAA;IAAa5B,CAAA,MAAA4B,YAAA;IAAA5B,CAAA,MAAAmB,EAAA;IAAAnB,CAAA,MAAA6B,EAAA;EAAA;IAAAV,EAAA,GAAAnB,CAAA;IAAA6B,EAAA,GAAA7B,CAAA;EAAA;EAFjBN,SAAA,CAAUyB,EAEV,EAAGU,EAAc;EAAA,KAEZ1B,SAAA;IAAA,IAAA2B,EAAA;IAAA,IAAA9B,CAAA,QAAA+B,MAAA,CAAAC,GAAA;MACIF,EAAA,GAAAG,IAAA,CAAArC,aAAA;QAAAsC,MAAA,EAAsB;MAAA,C;;;;;WAAtBJ,E;;;;IAGFA,EAAA,GAAAG,IAAA,CAAAE,SAAA;MAAAC,QAAA,EAAGjC;IAAA,C;;;;;;SAAH2B,E;CACT","ignoreList":[]}
1
+ {"version":3,"file":"RenderWidget.js","names":["c","_c","React","useCallback","useEffect","useRef","ShimmerEffect","useServerFunctions","RenderWidget","t0","$","widgetData","widgetId","Component","setComponent","useState","serverFunction","requestIDRef","t1","render","requestID","current","widgetSlug","slice","lastIndexOf","result","name","args","component","t2","createElement","style","background","border","borderRadius","color","padding","textAlign","renderWidget","t3","t4","Symbol","for","_jsx","height","_Fragment","children"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useEffect, useRef } from 'react'\n\nimport type {\n RenderWidgetServerFnArgs,\n RenderWidgetServerFnReturnType,\n} from './renderWidgetServerFn.js'\n\nimport { ShimmerEffect } from '../../../../../elements/ShimmerEffect/index.js'\nimport { useServerFunctions } from '../../../../../providers/ServerFunctions/index.js'\n\n/**\n * Utility to render a widget on-demand on the client.\n */\nexport const RenderWidget: React.FC<{\n /**\n * Instance-specific data for this widget\n */\n widgetData?: Record<string, unknown>\n /**\n * Unique ID for this widget instance (format: \"slug-timestamp\")\n */\n widgetId: string\n}> = ({ widgetData, widgetId }) => {\n const [Component, setComponent] = React.useState<null | React.ReactNode>(null)\n const { serverFunction } = useServerFunctions()\n const requestIDRef = useRef(0)\n\n const renderWidget = useCallback(() => {\n async function render() {\n const requestID = ++requestIDRef.current\n setComponent(null)\n\n try {\n const widgetSlug = widgetId.slice(0, widgetId.lastIndexOf('-'))\n\n const result = (await serverFunction({\n name: 'render-widget',\n args: {\n widgetData,\n widgetSlug,\n } as RenderWidgetServerFnArgs,\n })) as RenderWidgetServerFnReturnType\n\n if (requestID !== requestIDRef.current) {\n return\n }\n\n setComponent(result.component)\n } catch (_error) {\n if (requestID !== requestIDRef.current) {\n return\n }\n\n // Log error but don't expose details to console in production\n\n // Fallback error component\n setComponent(\n React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-error-50)',\n border: 'var(--stroke-width-small) solid var(--theme-error-200)',\n borderRadius: '4px',\n color: 'var(--color-text-danger)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n 'Failed to load widget. Please try again later.',\n ),\n )\n }\n }\n void render()\n }, [serverFunction, widgetData, widgetId])\n\n useEffect(() => {\n void renderWidget()\n }, [renderWidget])\n\n if (!Component) {\n return <ShimmerEffect height=\"100%\" />\n }\n\n return <>{Component}</>\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAEA,OAAOC,KAAA,IAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAOtD,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AAEnC;;;AAGA,OAAO,MAAMC,YAAA,GASRC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,UAAA;IAAAC;EAAA,IAAAH,EAAwB;EAC5B,OAAAI,SAAA,EAAAC,YAAA,IAAkCZ,KAAA,CAAAa,QAAA,KAAuC;EACzE;IAAAC;EAAA,IAA2BT,kBAAA;EAC3B,MAAAU,YAAA,GAAqBZ,MAAA,EAAO;EAAA,IAAAa,EAAA;EAAA,IAAAR,CAAA,QAAAM,cAAA,IAAAN,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAE,QAAA;IAEKM,EAAA,GAAAA,CAAA;MAC/B,MAAAC,MAAA,kBAAAA,OAAA;QACE,MAAAC,SAAA,GAAoBH,YAAA,CAAAI,OAAA,GAAAJ,YAAA,CAAAI,OAAA,IAAoB;QACxCP,YAAA,KAAa;QAAA;QAAA;UAGX,MAAAQ,UAAA,GAAmBV,QAAA,CAAAW,KAAA,IAAkBX,QAAA,CAAAY,WAAA,CAAqB;UAE1D,MAAAC,MAAA,SAAsBT,cAAA;YAAAU,IAAA,EACd;YAAAC,IAAA;cAAAhB,UAAA;cAAAW;YAAA;UAAA,CAKR;UAAA,IAEIF,SAAA,KAAcH,YAAA,CAAAI,OAAoB;YAAA;UAAA;UAItCP,YAAA,CAAaW,MAAA,CAAAG,SAAgB;QAAA,SAAAC,EAAA;UAAA,IAEzBT,SAAA,KAAcH,YAAA,CAAAI,OAAoB;YAAA;UAAA;UAOtCP,YAAA,CACEZ,KAAA,CAAA4B,aAAA,CACE;YAAAC,KAAA;cAAAC,UAAA,EAGgB;cAAAC,MAAA,EACJ;cAAAC,YAAA,EACM;cAAAC,KAAA,EACP;cAAAC,OAAA,EACE;cAAAC,SAAA,EACE;YAAA;UAAA,GAGf;QAAA;MAAA;MAKHlB,MAAA;IAAA;IACPT,CAAA,MAAAM,cAAA;IAAAN,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAE,QAAA;IAAAF,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAhDA,MAAA4B,YAAA,GAAqBpB,EAgDoB;EAAA,IAAAW,EAAA;EAAA,IAAAU,EAAA;EAAA,IAAA7B,CAAA,QAAA4B,YAAA;IAE/BT,EAAA,GAAAA,CAAA;MACHS,YAAA;IAAA;IACJC,EAAA,IAACD,YAAA;IAAa5B,CAAA,MAAA4B,YAAA;IAAA5B,CAAA,MAAAmB,EAAA;IAAAnB,CAAA,MAAA6B,EAAA;EAAA;IAAAV,EAAA,GAAAnB,CAAA;IAAA6B,EAAA,GAAA7B,CAAA;EAAA;EAFjBN,SAAA,CAAUyB,EAEV,EAAGU,EAAc;EAAA,KAEZ1B,SAAA;IAAA,IAAA2B,EAAA;IAAA,IAAA9B,CAAA,QAAA+B,MAAA,CAAAC,GAAA;MACIF,EAAA,GAAAG,IAAA,CAAArC,aAAA;QAAAsC,MAAA,EAAsB;MAAA,C;;;;;WAAtBJ,E;;;;IAGFA,EAAA,GAAAG,IAAA,CAAAE,SAAA;MAAAC,QAAA,EAAGjC;IAAA,C;;;;;;SAAH2B,E;CACT","ignoreList":[]}
@@ -29,7 +29,7 @@ export const renderWidgetHandler = ({
29
29
  component: React.createElement('div', {
30
30
  style: {
31
31
  background: 'var(--theme-elevation-50)',
32
- border: '1px solid var(--theme-elevation-200)',
32
+ border: 'var(--stroke-width-small) solid var(--theme-elevation-200)',
33
33
  borderRadius: '4px',
34
34
  color: 'var(--theme-text)',
35
35
  padding: '20px',
@@ -67,7 +67,7 @@ export const renderWidgetHandler = ({
67
67
  component: React.createElement('div', {
68
68
  style: {
69
69
  background: 'var(--theme-error-50)',
70
- border: '1px solid var(--theme-error-200)',
70
+ border: 'var(--stroke-width-small) solid var(--theme-error-200)',
71
71
  borderRadius: '4px',
72
72
  color: 'var(--theme-error-text)',
73
73
  padding: '20px',
@@ -1 +1 @@
1
- {"version":3,"file":"renderWidgetServerFn.js","names":["React","RenderServerComponent","extractLocaleData","renderWidgetHandler","cookies","locale","permissions","req","widgetData","widgetSlug","user","Error","widgets","payload","config","admin","dashboard","importMap","widgetConfig","find","widget","slug","component","createElement","style","background","border","borderRadius","color","padding","textAlign","localeFilteredData","fields","length","serverProps","Component","error","errorMessage","message","String","logger","err","msg"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.ts"],"sourcesContent":["import type { Field, ServerFunction, WidgetServerProps } from 'payload'\n\nimport React from 'react'\n\nimport { RenderServerComponent } from '../../../../../elements/RenderServerComponent/index.js'\nimport { extractLocaleData } from '../utils/localeUtils.js'\n\nexport type RenderWidgetServerFnArgs = {\n /**\n * Instance-specific data for this widget\n */\n widgetData?: Record<string, unknown>\n /**\n * The slug of the widget to render\n */\n widgetSlug: string\n}\n\nexport type RenderWidgetServerFnReturnType = {\n component: React.ReactNode\n}\n\n/**\n * Server function to render a widget on-demand.\n * Similar to render-field but specifically for dashboard widgets.\n */\nexport const renderWidgetHandler: ServerFunction<\n RenderWidgetServerFnArgs,\n RenderWidgetServerFnReturnType\n> = ({ cookies, locale, permissions, req, widgetData, widgetSlug }) => {\n if (!req.user) {\n throw new Error('Unauthorized')\n }\n\n const { widgets } = req.payload.config.admin.dashboard\n const { importMap } = req.payload\n\n // Find the widget configuration\n const widgetConfig = widgets.find((widget) => widget.slug === widgetSlug)\n\n if (!widgetConfig) {\n return {\n component: React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-elevation-50)',\n border: '1px solid var(--theme-elevation-200)',\n borderRadius: '4px',\n color: 'var(--theme-text)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n `Widget \"${widgetSlug}\" not found`,\n ),\n }\n }\n\n try {\n const localeFilteredData = widgetConfig.fields?.length\n ? extractLocaleData(widgetData || {}, req.locale || 'en', widgetConfig.fields)\n : widgetData || {}\n\n const serverProps: WidgetServerProps = {\n cookies,\n locale,\n permissions,\n req,\n widgetData: localeFilteredData,\n widgetSlug,\n }\n\n // Render the widget server component\n const component = RenderServerComponent({\n Component: widgetConfig.Component,\n importMap,\n serverProps,\n })\n\n return { component }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n\n req.payload.logger.error({\n err: error,\n msg: `Error rendering widget \"${widgetSlug}\": ${errorMessage}`,\n })\n\n return {\n component: React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-error-50)',\n border: '1px solid var(--theme-error-200)',\n borderRadius: '4px',\n color: 'var(--theme-error-text)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n 'Error loading widget',\n ),\n }\n }\n}\n"],"mappings":"AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,iBAAiB,QAAQ;AAiBlC;;;;AAIA,OAAO,MAAMC,mBAAA,GAGTA,CAAC;EAAEC,OAAO;EAAEC,MAAM;EAAEC,WAAW;EAAEC,GAAG;EAAEC,UAAU;EAAEC;AAAU,CAAE;EAChE,IAAI,CAACF,GAAA,CAAIG,IAAI,EAAE;IACb,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,MAAM;IAAEC;EAAO,CAAE,GAAGL,GAAA,CAAIM,OAAO,CAACC,MAAM,CAACC,KAAK,CAACC,SAAS;EACtD,MAAM;IAAEC;EAAS,CAAE,GAAGV,GAAA,CAAIM,OAAO;EAEjC;EACA,MAAMK,YAAA,GAAeN,OAAA,CAAQO,IAAI,CAAEC,MAAA,IAAWA,MAAA,CAAOC,IAAI,KAAKZ,UAAA;EAE9D,IAAI,CAACS,YAAA,EAAc;IACjB,OAAO;MACLI,SAAA,EAAWtB,KAAA,CAAMuB,aAAa,CAC5B,OACA;QACEC,KAAA,EAAO;UACLC,UAAA,EAAY;UACZC,MAAA,EAAQ;UACRC,YAAA,EAAc;UACdC,KAAA,EAAO;UACPC,OAAA,EAAS;UACTC,SAAA,EAAW;QACb;MACF,GACA,WAAWrB,UAAA,aAAuB;IAEtC;EACF;EAEA,IAAI;IACF,MAAMsB,kBAAA,GAAqBb,YAAA,CAAac,MAAM,EAAEC,MAAA,GAC5C/B,iBAAA,CAAkBM,UAAA,IAAc,CAAC,GAAGD,GAAA,CAAIF,MAAM,IAAI,MAAMa,YAAA,CAAac,MAAM,IAC3ExB,UAAA,IAAc,CAAC;IAEnB,MAAM0B,WAAA,GAAiC;MACrC9B,OAAA;MACAC,MAAA;MACAC,WAAA;MACAC,GAAA;MACAC,UAAA,EAAYuB,kBAAA;MACZtB;IACF;IAEA;IACA,MAAMa,SAAA,GAAYrB,qBAAA,CAAsB;MACtCkC,SAAA,EAAWjB,YAAA,CAAaiB,SAAS;MACjClB,SAAA;MACAiB;IACF;IAEA,OAAO;MAAEZ;IAAU;EACrB,EAAE,OAAOc,KAAA,EAAO;IACd,MAAMC,YAAA,GAAeD,KAAA,YAAiBzB,KAAA,GAAQyB,KAAA,CAAME,OAAO,GAAGC,MAAA,CAAOH,KAAA;IAErE7B,GAAA,CAAIM,OAAO,CAAC2B,MAAM,CAACJ,KAAK,CAAC;MACvBK,GAAA,EAAKL,KAAA;MACLM,GAAA,EAAK,2BAA2BjC,UAAA,MAAgB4B,YAAA;IAClD;IAEA,OAAO;MACLf,SAAA,EAAWtB,KAAA,CAAMuB,aAAa,CAC5B,OACA;QACEC,KAAA,EAAO;UACLC,UAAA,EAAY;UACZC,MAAA,EAAQ;UACRC,YAAA,EAAc;UACdC,KAAA,EAAO;UACPC,OAAA,EAAS;UACTC,SAAA,EAAW;QACb;MACF,GACA;IAEJ;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"renderWidgetServerFn.js","names":["React","RenderServerComponent","extractLocaleData","renderWidgetHandler","cookies","locale","permissions","req","widgetData","widgetSlug","user","Error","widgets","payload","config","admin","dashboard","importMap","widgetConfig","find","widget","slug","component","createElement","style","background","border","borderRadius","color","padding","textAlign","localeFilteredData","fields","length","serverProps","Component","error","errorMessage","message","String","logger","err","msg"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.ts"],"sourcesContent":["import type { Field, ServerFunction, WidgetServerProps } from 'payload'\n\nimport React from 'react'\n\nimport { RenderServerComponent } from '../../../../../elements/RenderServerComponent/index.js'\nimport { extractLocaleData } from '../utils/localeUtils.js'\n\nexport type RenderWidgetServerFnArgs = {\n /**\n * Instance-specific data for this widget\n */\n widgetData?: Record<string, unknown>\n /**\n * The slug of the widget to render\n */\n widgetSlug: string\n}\n\nexport type RenderWidgetServerFnReturnType = {\n component: React.ReactNode\n}\n\n/**\n * Server function to render a widget on-demand.\n * Similar to render-field but specifically for dashboard widgets.\n */\nexport const renderWidgetHandler: ServerFunction<\n RenderWidgetServerFnArgs,\n RenderWidgetServerFnReturnType\n> = ({ cookies, locale, permissions, req, widgetData, widgetSlug }) => {\n if (!req.user) {\n throw new Error('Unauthorized')\n }\n\n const { widgets } = req.payload.config.admin.dashboard\n const { importMap } = req.payload\n\n // Find the widget configuration\n const widgetConfig = widgets.find((widget) => widget.slug === widgetSlug)\n\n if (!widgetConfig) {\n return {\n component: React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-elevation-50)',\n border: 'var(--stroke-width-small) solid var(--theme-elevation-200)',\n borderRadius: '4px',\n color: 'var(--theme-text)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n `Widget \"${widgetSlug}\" not found`,\n ),\n }\n }\n\n try {\n const localeFilteredData = widgetConfig.fields?.length\n ? extractLocaleData(widgetData || {}, req.locale || 'en', widgetConfig.fields)\n : widgetData || {}\n\n const serverProps: WidgetServerProps = {\n cookies,\n locale,\n permissions,\n req,\n widgetData: localeFilteredData,\n widgetSlug,\n }\n\n // Render the widget server component\n const component = RenderServerComponent({\n Component: widgetConfig.Component,\n importMap,\n serverProps,\n })\n\n return { component }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error)\n\n req.payload.logger.error({\n err: error,\n msg: `Error rendering widget \"${widgetSlug}\": ${errorMessage}`,\n })\n\n return {\n component: React.createElement(\n 'div',\n {\n style: {\n background: 'var(--theme-error-50)',\n border: 'var(--stroke-width-small) solid var(--theme-error-200)',\n borderRadius: '4px',\n color: 'var(--theme-error-text)',\n padding: '20px',\n textAlign: 'center',\n },\n },\n 'Error loading widget',\n ),\n }\n }\n}\n"],"mappings":"AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,qBAAqB,QAAQ;AACtC,SAASC,iBAAiB,QAAQ;AAiBlC;;;;AAIA,OAAO,MAAMC,mBAAA,GAGTA,CAAC;EAAEC,OAAO;EAAEC,MAAM;EAAEC,WAAW;EAAEC,GAAG;EAAEC,UAAU;EAAEC;AAAU,CAAE;EAChE,IAAI,CAACF,GAAA,CAAIG,IAAI,EAAE;IACb,MAAM,IAAIC,KAAA,CAAM;EAClB;EAEA,MAAM;IAAEC;EAAO,CAAE,GAAGL,GAAA,CAAIM,OAAO,CAACC,MAAM,CAACC,KAAK,CAACC,SAAS;EACtD,MAAM;IAAEC;EAAS,CAAE,GAAGV,GAAA,CAAIM,OAAO;EAEjC;EACA,MAAMK,YAAA,GAAeN,OAAA,CAAQO,IAAI,CAAEC,MAAA,IAAWA,MAAA,CAAOC,IAAI,KAAKZ,UAAA;EAE9D,IAAI,CAACS,YAAA,EAAc;IACjB,OAAO;MACLI,SAAA,EAAWtB,KAAA,CAAMuB,aAAa,CAC5B,OACA;QACEC,KAAA,EAAO;UACLC,UAAA,EAAY;UACZC,MAAA,EAAQ;UACRC,YAAA,EAAc;UACdC,KAAA,EAAO;UACPC,OAAA,EAAS;UACTC,SAAA,EAAW;QACb;MACF,GACA,WAAWrB,UAAA,aAAuB;IAEtC;EACF;EAEA,IAAI;IACF,MAAMsB,kBAAA,GAAqBb,YAAA,CAAac,MAAM,EAAEC,MAAA,GAC5C/B,iBAAA,CAAkBM,UAAA,IAAc,CAAC,GAAGD,GAAA,CAAIF,MAAM,IAAI,MAAMa,YAAA,CAAac,MAAM,IAC3ExB,UAAA,IAAc,CAAC;IAEnB,MAAM0B,WAAA,GAAiC;MACrC9B,OAAA;MACAC,MAAA;MACAC,WAAA;MACAC,GAAA;MACAC,UAAA,EAAYuB,kBAAA;MACZtB;IACF;IAEA;IACA,MAAMa,SAAA,GAAYrB,qBAAA,CAAsB;MACtCkC,SAAA,EAAWjB,YAAA,CAAaiB,SAAS;MACjClB,SAAA;MACAiB;IACF;IAEA,OAAO;MAAEZ;IAAU;EACrB,EAAE,OAAOc,KAAA,EAAO;IACd,MAAMC,YAAA,GAAeD,KAAA,YAAiBzB,KAAA,GAAQyB,KAAA,CAAME,OAAO,GAAGC,MAAA,CAAOH,KAAA;IAErE7B,GAAA,CAAIM,OAAO,CAAC2B,MAAM,CAACJ,KAAK,CAAC;MACvBK,GAAA,EAAKL,KAAA;MACLM,GAAA,EAAK,2BAA2BjC,UAAA,MAAgB4B,YAAA;IAClD;IAEA,OAAO;MACLf,SAAA,EAAWtB,KAAA,CAAMuB,aAAa,CAC5B,OACA;QACEC,KAAA,EAAO;UACLC,UAAA,EAAY;UACZC,MAAA,EAAQ;UACRC,YAAA,EAAc;UACdC,KAAA,EAAO;UACPC,OAAA,EAAS;UACTC,SAAA,EAAW;QACb;MACF,GACA;IAEJ;EACF;AACF","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { BasePayload, TypedUser } from 'payload';
1
+ import type { BasePayload, User } from 'payload';
2
2
  import type { WidgetItem } from '../index.client.js';
3
- export declare function getItemsFromPreferences(payload: BasePayload, user: TypedUser): Promise<null | WidgetItem[]>;
3
+ export declare function getItemsFromPreferences(payload: BasePayload, user: User): Promise<null | WidgetItem[]>;
4
4
  //# sourceMappingURL=getItemsFromPreferences.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getItemsFromPreferences.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAIrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC,CAe9B"}
1
+ {"version":3,"file":"getItemsFromPreferences.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAIhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAIpD,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,GACT,OAAO,CAAC,IAAI,GAAG,UAAU,EAAE,CAAC,CAe9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"getItemsFromPreferences.js","names":["PREFERENCE_KEYS","getPreferences","getItemsFromPreferences","payload","user","savedPreferences","DASHBOARD_LAYOUT","id","collection","value","layouts"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"sourcesContent":["import type { BasePayload, TypedUser } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\n\nimport type { WidgetItem } from '../index.client.js'\n\nimport { getPreferences } from '../../../../../utilities/upsertPreferences.js'\n\nexport async function getItemsFromPreferences(\n payload: BasePayload,\n user: TypedUser,\n): Promise<null | WidgetItem[]> {\n const savedPreferences = await getPreferences(\n PREFERENCE_KEYS.DASHBOARD_LAYOUT,\n payload,\n user.id,\n user.collection,\n )\n if (\n !savedPreferences?.value ||\n typeof savedPreferences.value !== 'object' ||\n !('layouts' in savedPreferences.value)\n ) {\n return null\n }\n return savedPreferences.value.layouts as null | WidgetItem[]\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAIhC,SAASC,cAAc,QAAQ;AAE/B,OAAO,eAAeC,wBACpBC,OAAoB,EACpBC,IAAe;EAEf,MAAMC,gBAAA,GAAmB,MAAMJ,cAAA,CAC7BD,eAAA,CAAgBM,gBAAgB,EAChCH,OAAA,EACAC,IAAA,CAAKG,EAAE,EACPH,IAAA,CAAKI,UAAU;EAEjB,IACE,CAACH,gBAAA,EAAkBI,KAAA,IACnB,OAAOJ,gBAAA,CAAiBI,KAAK,KAAK,YAClC,EAAE,aAAaJ,gBAAA,CAAiBI,KAAK,CAAD,EACpC;IACA,OAAO;EACT;EACA,OAAOJ,gBAAA,CAAiBI,KAAK,CAACC,OAAO;AACvC","ignoreList":[]}
1
+ {"version":3,"file":"getItemsFromPreferences.js","names":["PREFERENCE_KEYS","getPreferences","getItemsFromPreferences","payload","user","savedPreferences","DASHBOARD_LAYOUT","id","collection","value","layouts"],"sources":["../../../../../../src/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.ts"],"sourcesContent":["import type { BasePayload, User } from 'payload'\n\nimport { PREFERENCE_KEYS } from 'payload/shared'\n\nimport type { WidgetItem } from '../index.client.js'\n\nimport { getPreferences } from '../../../../../utilities/upsertPreferences.js'\n\nexport async function getItemsFromPreferences(\n payload: BasePayload,\n user: User,\n): Promise<null | WidgetItem[]> {\n const savedPreferences = await getPreferences(\n PREFERENCE_KEYS.DASHBOARD_LAYOUT,\n payload,\n user.id,\n user.collection,\n )\n if (\n !savedPreferences?.value ||\n typeof savedPreferences.value !== 'object' ||\n !('layouts' in savedPreferences.value)\n ) {\n return null\n }\n return savedPreferences.value.layouts as null | WidgetItem[]\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAIhC,SAASC,cAAc,QAAQ;AAE/B,OAAO,eAAeC,wBACpBC,OAAoB,EACpBC,IAAU;EAEV,MAAMC,gBAAA,GAAmB,MAAMJ,cAAA,CAC7BD,eAAA,CAAgBM,gBAAgB,EAChCH,OAAA,EACAC,IAAA,CAAKG,EAAE,EACPH,IAAA,CAAKI,UAAU;EAEjB,IACE,CAACH,gBAAA,EAAkBI,KAAA,IACnB,OAAOJ,gBAAA,CAAiBI,KAAK,KAAK,YAClC,EAAE,aAAaJ,gBAAA,CAAiBI,KAAK,CAAD,EACpC;IACA,OAAO;EACT;EACA,OAAOJ,gBAAA,CAAiBI,KAAK,CAACC,OAAO;AACvC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,EAEvB,iBAAiB,EACjB,gBAAgB,EAChB,gCAAgC,EACjC,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AA4BzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,gBAAgB,CAAC,uBAAuB,CAAC,GACzC,KAAK,CAAC,EAAE,GACR,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,0PAgBlC;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,EAAE,gCAAgC,CAAA;CAC5C,GAAG,oBAAoB,KAAG,OAAO,CAAC;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CA0YA,CAAA;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,oBAAoB,+QAe7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Document/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EAEpB,IAAI,EACJ,uBAAuB,EACvB,uBAAuB,EAEvB,iBAAiB,EACjB,gBAAgB,EAChB,gCAAgC,EACjC,MAAM,SAAS,CAAA;AAIhB,OAAO,KAAK,MAAM,OAAO,CAAA;AA6BzB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAEtD,MAAM,MAAM,YAAY,GACpB,iBAAiB,GACjB,gBAAgB,CAAC,uBAAuB,CAAC,GACzC,KAAK,CAAC,EAAE,GACR,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,cAAc,GAAU,0PAgBlC;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,wBAAwB,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,CAAA;IACzC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,EAAE,gCAAgC,CAAA;CAC5C,GAAG,oBAAoB,KAAG,OAAO,CAAC;IACjC,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAsZA,CAAA;AAED,wBAAsB,YAAY,CAAC,KAAK,EAAE,oBAAoB,+QAuB7D"}
@@ -21,6 +21,7 @@ import { getPreferences } from '../../utilities/upsertPreferences.js';
21
21
  import { NotFoundView } from '../NotFound/index.js';
22
22
  import { UnauthorizedViewWithGutter } from '../Unauthorized/index.js';
23
23
  import { getDocumentView } from './getDocumentView.js';
24
+ import { recordRecentlyViewed } from './recordRecentlyViewed.js';
24
25
  import { renderDocumentSlots } from './renderDocumentSlots.js';
25
26
  export { getDocumentView } from './getDocumentView.js';
26
27
  /**
@@ -160,6 +161,13 @@ export const renderDocument = async ({
160
161
  // get entity preferences
161
162
  getPreferences(collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`, payload, req.user.id, req.user.collection)]);
162
163
  const operation = collectionSlug && idFromArgs || globalSlug ? 'update' : 'create';
164
+ // Record the document as recently viewed (collections only, never on the create route or for
165
+ // trashed docs). Runs concurrently with the work below and never throws.
166
+ const recentlyViewedPromise = collectionSlug && idFromArgs && doc && !isTrashedDoc ? recordRecentlyViewed({
167
+ id: idFromArgs,
168
+ collectionSlug,
169
+ req
170
+ }) : undefined;
163
171
  const [{
164
172
  hasPublishedDoc,
165
173
  mostRecentVersionIsAutosaved,
@@ -199,6 +207,7 @@ export const renderDocument = async ({
199
207
  payload,
200
208
  user
201
209
  })]);
210
+ await recentlyViewedPromise;
202
211
  const documentViewServerProps = {
203
212
  doc,
204
213
  hasPublishedDoc,
@@ -292,6 +301,7 @@ export const renderDocument = async ({
292
301
  const documentSlots = renderDocumentSlots({
293
302
  id,
294
303
  collectionConfig,
304
+ doc: doc,
295
305
  globalConfig,
296
306
  hasSavePermission,
297
307
  locale,
@@ -363,7 +373,7 @@ export const renderDocument = async ({
363
373
  children: /*#__PURE__*/_jsxs(LivePreviewProvider, {
364
374
  breakpoints: livePreviewConfig?.breakpoints,
365
375
  isLivePreviewEnabled: isLivePreviewEnabled && operation !== 'create',
366
- isLivePreviewing: Boolean(entityPreferences?.value?.editViewType === 'live-preview' && livePreviewURL),
376
+ isLivePreviewing: Boolean((entityPreferences?.value?.editViewType === undefined ? livePreviewConfig?.openByDefault : entityPreferences.value.editViewType === 'live-preview') && livePreviewURL),
367
377
  isPreviewEnabled: Boolean(isPreviewEnabled),
368
378
  previewURL: previewURL,
369
379
  typeofLivePreviewURL: typeof livePreviewConfig?.url,
@@ -398,6 +408,13 @@ export async function DocumentView(props) {
398
408
  if (error?.message === 'NEXT_REDIRECT') {
399
409
  throw error;
400
410
  }
411
+ // The TanStack adapter's `req.server.redirect()` throws `redirect:<url>` as a
412
+ // control-flow signal — the target is already recorded on `req.server` and
413
+ // honored upstream in `loadAdminPage`. It isn't a real error, so swallow it
414
+ // without logging, mirroring the `NEXT_REDIRECT` guard above.
415
+ if (error?.message?.startsWith('redirect:')) {
416
+ return;
417
+ }
401
418
  logError({
402
419
  err: error,
403
420
  payload: props.initPageResult.req.payload
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["isolateObjectProperty","logError","formatAdminURL","hasAutosaveEnabled","hasDraftsEnabled","React","DocumentHeader","RenderServerComponent","DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","LivePreviewProvider","buildFormState","getDocPreferences","getDocumentData","getDocumentPermissions","getHasScheduledPublish","getIsLocked","getVersions","handleLivePreview","handlePreview","isEditing","getIsEditing","getPreferences","NotFoundView","UnauthorizedViewWithGutter","getDocumentView","renderDocumentSlots","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","searchParams","versions","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","doc","redirectURL","path","encodeURIComponent","server","redirect","Error","isTrashedDoc","Boolean","deletedAt","reqForPermissions","transactionID","reqForLockCheck","docPreferences","docPermissions","hasDeletePermission","hasPublishPermission","hasSavePermission","hasTrashPermission","currentEditor","isLocked","lastUpdateTime","entityPreferences","Promise","all","data","collection","operation","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","hasScheduledPublish","code","fallbackLocale","readOnly","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","globals","formattedParams","URLSearchParams","append","apiQueryParams","toString","apiURL","View","showHeader","RootViewOverride","components","views","edit","root","Component","shouldAutosave","validateDraftData","drafts","validate","create","depth","draft","documentSlots","Description","clientProps","isLivePreviewEnabled","livePreviewConfig","livePreviewURL","isPreviewEnabled","previewURL","Document","_jsx","initialState","isTrashed","_jsxs","breakpoints","isLivePreviewing","value","editViewType","typeofLivePreviewURL","url","AfterHeader","serverProps","DocumentView","props","RenderedDocument","error","message","err","notFound"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n EditViewComponent,\n PayloadComponent,\n RenderDocumentVersionsProperties,\n} from 'payload'\n\nimport { isolateObjectProperty, logError } from 'payload'\nimport { formatAdminURL, hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\n/* eslint-disable payload/no-imports-from-exports-dir -- Server component must reference exports/client bundle for proper client boundary in prod builds */\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n LivePreviewProvider,\n} from '../../exports/client/index.js'\n/* eslint-enable payload/no-imports-from-exports-dir */\nimport { buildFormState } from '../../utilities/buildFormState.js'\nimport { getDocPreferences } from '../../utilities/getDocPreferences.js'\nimport { getDocumentData } from '../../utilities/getDocumentData.js'\nimport { getDocumentPermissions } from '../../utilities/getDocumentPermissions.js'\nimport { getHasScheduledPublish } from '../../utilities/getHasScheduledPublish.js'\nimport { getIsLocked } from '../../utilities/getIsLocked.js'\nimport { getVersions } from '../../utilities/getVersions.js'\nimport { handleLivePreview } from '../../utilities/handleLivePreview.js'\nimport { handlePreview } from '../../utilities/handlePreview.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\nimport { getPreferences } from '../../utilities/upsertPreferences.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { UnauthorizedViewWithGutter } from '../Unauthorized/index.js'\nimport { getDocumentView } from './getDocumentView.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport { getDocumentView } from './getDocumentView.js'\n\nexport type ViewToRender =\n | EditViewComponent\n | PayloadComponent<DocumentViewServerProps>\n | React.FC\n | React.FC<DocumentViewClientProps>\n\n/**\n * This function is responsible for rendering\n * an Edit Document view on the server for both:\n * - default document edit views\n * - on-demand edit views within drawers\n */\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n searchParams,\n versions,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n versions?: RenderDocumentVersionsProperties\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n // Fetch the doc required for the view\n let doc =\n !idFromArgs && !globalSlug\n ? initialData || null\n : await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n segments,\n user,\n })\n\n if (isEditing && !doc) {\n // If it's a collection document that doesn't exist, redirect to collection list\n if (collectionSlug) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?notFound=${encodeURIComponent(idFromArgs)}`,\n })\n req.server.redirect(redirectURL)\n } else {\n // For globals or other cases, keep the 404 behavior\n throw new Error('not-found')\n }\n }\n\n const isTrashedDoc = Boolean(doc && 'deletedAt' in doc && typeof doc?.deletedAt === 'string')\n\n // CRITICAL FIX FOR TRANSACTION RACE CONDITION:\n // When running parallel operations with Promise.all, if they share the same req object\n // and one operation calls initTransaction() which MUTATES req.transactionID, that mutation\n // is visible to all parallel operations. This causes:\n // 1. Operation A (e.g., getDocumentPermissions → docAccessOperation) calls initTransaction()\n // which sets req.transactionID = Promise, then resolves it to a UUID\n // 2. Operation B (e.g., getIsLocked) running in parallel receives the SAME req with the mutated transactionID\n // 3. Operation A (does not even know that Operation B even exists and is stil using the transactionID) commits/ends its transaction\n // 4. Operation B tries to use the now-expired session → MongoExpiredSessionError!\n //\n // Solution: Use isolateObjectProperty to create a Proxy that isolates the 'transactionID' property.\n // This allows each operation to have its own transactionID without affecting the parent req.\n // If parent req already has a transaction, preserve it (don't isolate), since this\n // issue only arises when one of the operations calls initTransaction() themselves -\n // because then, that operation will also try to commit/end the transaction itself.\n\n // If the transactionID is already set, the parallel operations will not try to\n // commit/end the transaction themselves, so we don't need to isolate the\n // transactionID property.\n const reqForPermissions = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n const reqForLockCheck = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n\n const [\n docPreferences,\n {\n docPermissions,\n hasDeletePermission,\n hasPublishPermission,\n hasSavePermission,\n hasTrashPermission,\n },\n { currentEditor, isLocked, lastUpdateTime },\n entityPreferences,\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions - isolated transactionID prevents cross-contamination\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req: reqForPermissions,\n }),\n\n // Fetch document lock state - isolated transactionID prevents cross-contamination\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req: reqForLockCheck,\n }),\n\n // get entity preferences\n getPreferences<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n payload,\n req.user.id,\n req.user.collection,\n ),\n ])\n\n const operation = (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create'\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n hasScheduledPublish,\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation,\n readOnly: isTrashedDoc || isLocked,\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n getHasScheduledPublish({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n hasPublishPermission,\n payload,\n user,\n }),\n ])\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n hasPublishedDoc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n server: req.server,\n user,\n versions,\n }\n\n if (\n !overrideEntityVisibility &&\n ((collectionSlug &&\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) ||\n (globalSlug && !visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)))\n ) {\n throw new Error('not-found')\n }\n\n const formattedParams = new URLSearchParams()\n\n if (hasDraftsEnabled(collectionConfig || globalConfig)) {\n formattedParams.append('draft', 'true')\n }\n\n if (locale?.code) {\n formattedParams.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${formattedParams.toString()}`\n\n const apiURL = formatAdminURL({\n apiRoute,\n path: collectionSlug\n ? `/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n : globalSlug\n ? `/${globalSlug}${apiQueryParams}`\n : '',\n })\n\n let View: ViewToRender = null\n\n let showHeader = true\n\n const RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (RootViewOverride) {\n View = RootViewOverride\n showHeader = false\n } else {\n ;({ View } = getDocumentView({\n collectionConfig,\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n }))\n\n if (View === UnauthorizedViewWithGutter) {\n showHeader = false\n }\n }\n\n if (!View) {\n View = NotFoundView as React.FC<AdminViewServerProps>\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave = hasSavePermission && hasAutosaveEnabled(collectionConfig || globalConfig)\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug && redirectAfterCreate !== false) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n })\n\n req.server.redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n id,\n collectionConfig,\n globalConfig,\n hasSavePermission,\n locale,\n permissions,\n req,\n })\n\n // Extract Description from documentSlots to pass to DocumentHeader\n const { Description } = documentSlots\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n const { isLivePreviewEnabled, livePreviewConfig, livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n const { isPreviewEnabled, previewURL } = await handlePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasDeletePermission={hasDeletePermission}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n hasScheduledPublish={hasScheduledPublish}\n hasTrashPermission={hasTrashPermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n isTrashed={isTrashedDoc}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterCreate={redirectAfterCreate}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <LivePreviewProvider\n breakpoints={livePreviewConfig?.breakpoints}\n isLivePreviewEnabled={isLivePreviewEnabled && operation !== 'create'}\n isLivePreviewing={Boolean(\n entityPreferences?.value?.editViewType === 'live-preview' && livePreviewURL,\n )}\n isPreviewEnabled={Boolean(isPreviewEnabled)}\n previewURL={previewURL}\n typeofLivePreviewURL={typeof livePreviewConfig?.url as 'function' | 'string' | undefined}\n url={livePreviewURL}\n >\n {showHeader && !drawerSlug && (\n <DocumentHeader\n AfterHeader={Description}\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n permissions={permissions}\n req={req}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {RenderServerComponent({\n clientProps,\n Component: View,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </LivePreviewProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function DocumentView(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n props.initPageResult.req.server.notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["isolateObjectProperty","logError","formatAdminURL","hasAutosaveEnabled","hasDraftsEnabled","React","DocumentHeader","RenderServerComponent","DocumentInfoProvider","EditDepthProvider","HydrateAuthProvider","LivePreviewProvider","buildFormState","getDocPreferences","getDocumentData","getDocumentPermissions","getHasScheduledPublish","getIsLocked","getVersions","handleLivePreview","handlePreview","isEditing","getIsEditing","getPreferences","NotFoundView","UnauthorizedViewWithGutter","getDocumentView","recordRecentlyViewed","renderDocumentSlots","renderDocument","disableActions","documentSubViewType","drawerSlug","importMap","initialData","initPageResult","overrideEntityVisibility","params","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","searchParams","versions","viewType","collectionConfig","docID","idFromArgs","globalConfig","locale","permissions","req","i18n","payload","config","routes","admin","adminRoute","api","apiRoute","user","visibleEntities","segments","Array","isArray","collectionSlug","slug","undefined","globalSlug","id","doc","redirectURL","path","encodeURIComponent","server","redirect","Error","isTrashedDoc","Boolean","deletedAt","reqForPermissions","transactionID","reqForLockCheck","docPreferences","docPermissions","hasDeletePermission","hasPublishPermission","hasSavePermission","hasTrashPermission","currentEditor","isLocked","lastUpdateTime","entityPreferences","Promise","all","data","collection","operation","recentlyViewedPromise","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","state","formState","hasScheduledPublish","code","fallbackLocale","readOnly","renderAllFields","schemaPath","skipValidation","documentViewServerProps","routeSegments","collections","find","visibleSlug","globals","formattedParams","URLSearchParams","append","apiQueryParams","toString","apiURL","View","showHeader","RootViewOverride","components","views","edit","root","Component","shouldAutosave","validateDraftData","drafts","validate","create","depth","draft","documentSlots","Description","clientProps","isLivePreviewEnabled","livePreviewConfig","livePreviewURL","isPreviewEnabled","previewURL","Document","_jsx","initialState","isTrashed","_jsxs","breakpoints","isLivePreviewing","value","editViewType","openByDefault","typeofLivePreviewURL","url","AfterHeader","serverProps","DocumentView","props","RenderedDocument","error","message","startsWith","err","notFound"],"sources":["../../../src/views/Document/index.tsx"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionPreferences,\n Data,\n DocumentViewClientProps,\n DocumentViewServerProps,\n DocumentViewServerPropsOnly,\n EditViewComponent,\n PayloadComponent,\n RenderDocumentVersionsProperties,\n} from 'payload'\n\nimport { isolateObjectProperty, logError } from 'payload'\nimport { formatAdminURL, hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\nimport React from 'react'\n\nimport { DocumentHeader } from '../../elements/DocumentHeader/index.js'\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\n/* eslint-disable payload/no-imports-from-exports-dir -- Server component must reference exports/client bundle for proper client boundary in prod builds */\nimport {\n DocumentInfoProvider,\n EditDepthProvider,\n HydrateAuthProvider,\n LivePreviewProvider,\n} from '../../exports/client/index.js'\n/* eslint-enable payload/no-imports-from-exports-dir */\nimport { buildFormState } from '../../utilities/buildFormState.js'\nimport { getDocPreferences } from '../../utilities/getDocPreferences.js'\nimport { getDocumentData } from '../../utilities/getDocumentData.js'\nimport { getDocumentPermissions } from '../../utilities/getDocumentPermissions.js'\nimport { getHasScheduledPublish } from '../../utilities/getHasScheduledPublish.js'\nimport { getIsLocked } from '../../utilities/getIsLocked.js'\nimport { getVersions } from '../../utilities/getVersions.js'\nimport { handleLivePreview } from '../../utilities/handleLivePreview.js'\nimport { handlePreview } from '../../utilities/handlePreview.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\nimport { getPreferences } from '../../utilities/upsertPreferences.js'\nimport { NotFoundView } from '../NotFound/index.js'\nimport { UnauthorizedViewWithGutter } from '../Unauthorized/index.js'\nimport { getDocumentView } from './getDocumentView.js'\nimport { recordRecentlyViewed } from './recordRecentlyViewed.js'\nimport { renderDocumentSlots } from './renderDocumentSlots.js'\n\nexport { getDocumentView } from './getDocumentView.js'\n\nexport type ViewToRender =\n | EditViewComponent\n | PayloadComponent<DocumentViewServerProps>\n | React.FC\n | React.FC<DocumentViewClientProps>\n\n/**\n * This function is responsible for rendering\n * an Edit Document view on the server for both:\n * - default document edit views\n * - on-demand edit views within drawers\n */\nexport const renderDocument = async ({\n disableActions,\n documentSubViewType,\n drawerSlug,\n importMap,\n initialData,\n initPageResult,\n overrideEntityVisibility,\n params,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n searchParams,\n versions,\n viewType,\n}: {\n drawerSlug?: string\n overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n versions?: RenderDocumentVersionsProperties\n} & AdminViewServerProps): Promise<{\n data: Data\n Document: React.ReactNode\n}> => {\n const {\n collectionConfig,\n docID: idFromArgs,\n globalConfig,\n locale,\n permissions,\n req,\n req: {\n i18n,\n payload,\n payload: {\n config,\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n },\n },\n user,\n },\n visibleEntities,\n } = initPageResult\n\n const segments = Array.isArray(params?.segments) ? params.segments : []\n const collectionSlug = collectionConfig?.slug || undefined\n const globalSlug = globalConfig?.slug || undefined\n let isEditing = getIsEditing({ id: idFromArgs, collectionSlug, globalSlug })\n\n // Fetch the doc required for the view\n let doc =\n !idFromArgs && !globalSlug\n ? initialData || null\n : await getDocumentData({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n locale,\n payload,\n req,\n segments,\n user,\n })\n\n if (isEditing && !doc) {\n // If it's a collection document that doesn't exist, redirect to collection list\n if (collectionSlug) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}?notFound=${encodeURIComponent(idFromArgs)}`,\n })\n req.server.redirect(redirectURL)\n } else {\n // For globals or other cases, keep the 404 behavior\n throw new Error('not-found')\n }\n }\n\n const isTrashedDoc = Boolean(doc && 'deletedAt' in doc && typeof doc?.deletedAt === 'string')\n\n // CRITICAL FIX FOR TRANSACTION RACE CONDITION:\n // When running parallel operations with Promise.all, if they share the same req object\n // and one operation calls initTransaction() which MUTATES req.transactionID, that mutation\n // is visible to all parallel operations. This causes:\n // 1. Operation A (e.g., getDocumentPermissions → docAccessOperation) calls initTransaction()\n // which sets req.transactionID = Promise, then resolves it to a UUID\n // 2. Operation B (e.g., getIsLocked) running in parallel receives the SAME req with the mutated transactionID\n // 3. Operation A (does not even know that Operation B even exists and is stil using the transactionID) commits/ends its transaction\n // 4. Operation B tries to use the now-expired session → MongoExpiredSessionError!\n //\n // Solution: Use isolateObjectProperty to create a Proxy that isolates the 'transactionID' property.\n // This allows each operation to have its own transactionID without affecting the parent req.\n // If parent req already has a transaction, preserve it (don't isolate), since this\n // issue only arises when one of the operations calls initTransaction() themselves -\n // because then, that operation will also try to commit/end the transaction itself.\n\n // If the transactionID is already set, the parallel operations will not try to\n // commit/end the transaction themselves, so we don't need to isolate the\n // transactionID property.\n const reqForPermissions = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n const reqForLockCheck = req.transactionID ? req : isolateObjectProperty(req, 'transactionID')\n\n const [\n docPreferences,\n {\n docPermissions,\n hasDeletePermission,\n hasPublishPermission,\n hasSavePermission,\n hasTrashPermission,\n },\n { currentEditor, isLocked, lastUpdateTime },\n entityPreferences,\n ] = await Promise.all([\n // Get document preferences\n getDocPreferences({\n id: idFromArgs,\n collectionSlug,\n globalSlug,\n payload,\n user,\n }),\n\n // Get permissions - isolated transactionID prevents cross-contamination\n getDocumentPermissions({\n id: idFromArgs,\n collectionConfig,\n data: doc,\n globalConfig,\n req: reqForPermissions,\n }),\n\n // Fetch document lock state - isolated transactionID prevents cross-contamination\n getIsLocked({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n isEditing,\n req: reqForLockCheck,\n }),\n\n // get entity preferences\n getPreferences<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n payload,\n req.user.id,\n req.user.collection,\n ),\n ])\n\n const operation = (collectionSlug && idFromArgs) || globalSlug ? 'update' : 'create'\n\n // Record the document as recently viewed (collections only, never on the create route or for\n // trashed docs). Runs concurrently with the work below and never throws.\n const recentlyViewedPromise =\n collectionSlug && idFromArgs && doc && !isTrashedDoc\n ? recordRecentlyViewed({ id: idFromArgs, collectionSlug, req })\n : undefined\n\n const [\n { hasPublishedDoc, mostRecentVersionIsAutosaved, unpublishedVersionCount, versionCount },\n { state: formState },\n hasScheduledPublish,\n ] = await Promise.all([\n getVersions({\n id: idFromArgs,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale: locale?.code,\n payload,\n user,\n }),\n buildFormState({\n id: idFromArgs,\n collectionSlug,\n data: doc,\n docPermissions,\n docPreferences,\n fallbackLocale: false,\n globalSlug,\n locale: locale?.code,\n operation,\n readOnly: isTrashedDoc || isLocked,\n renderAllFields: true,\n req,\n schemaPath: collectionSlug || globalSlug,\n skipValidation: true,\n }),\n getHasScheduledPublish({\n id: idFromArgs,\n collectionConfig,\n globalConfig,\n hasPublishPermission,\n payload,\n user,\n }),\n ])\n\n await recentlyViewedPromise\n\n const documentViewServerProps: DocumentViewServerPropsOnly = {\n doc,\n hasPublishedDoc,\n i18n,\n initPageResult,\n locale,\n params,\n payload,\n permissions,\n routeSegments: segments,\n searchParams,\n server: req.server,\n user,\n versions,\n }\n\n if (\n !overrideEntityVisibility &&\n ((collectionSlug &&\n !visibleEntities?.collections?.find((visibleSlug) => visibleSlug === collectionSlug)) ||\n (globalSlug && !visibleEntities?.globals?.find((visibleSlug) => visibleSlug === globalSlug)))\n ) {\n throw new Error('not-found')\n }\n\n const formattedParams = new URLSearchParams()\n\n if (hasDraftsEnabled(collectionConfig || globalConfig)) {\n formattedParams.append('draft', 'true')\n }\n\n if (locale?.code) {\n formattedParams.append('locale', locale.code)\n }\n\n const apiQueryParams = `?${formattedParams.toString()}`\n\n const apiURL = formatAdminURL({\n apiRoute,\n path: collectionSlug\n ? `/${collectionSlug}/${idFromArgs}${apiQueryParams}`\n : globalSlug\n ? `/${globalSlug}${apiQueryParams}`\n : '',\n })\n\n let View: ViewToRender = null\n\n let showHeader = true\n\n const RootViewOverride =\n collectionConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in collectionConfig.admin.components.views.edit.root\n ? collectionConfig?.admin?.components?.views?.edit?.root?.Component\n : globalConfig?.admin?.components?.views?.edit?.root &&\n 'Component' in globalConfig.admin.components.views.edit.root\n ? globalConfig?.admin?.components?.views?.edit?.root?.Component\n : null\n\n if (RootViewOverride) {\n View = RootViewOverride\n showHeader = false\n } else {\n ;({ View } = getDocumentView({\n collectionConfig,\n config,\n docPermissions,\n globalConfig,\n routeSegments: segments,\n }))\n\n if (View === UnauthorizedViewWithGutter) {\n showHeader = false\n }\n }\n\n if (!View) {\n View = NotFoundView as React.FC<AdminViewServerProps>\n }\n\n /**\n * Handle case where autoSave is enabled and the document is being created\n * => create document and redirect\n */\n const shouldAutosave = hasSavePermission && hasAutosaveEnabled(collectionConfig || globalConfig)\n\n const validateDraftData =\n collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.validate\n\n let id = idFromArgs\n\n if (shouldAutosave && !validateDraftData && !idFromArgs && collectionSlug) {\n doc = await payload.create({\n collection: collectionSlug,\n data: initialData || {},\n depth: 0,\n draft: true,\n fallbackLocale: false,\n locale: locale?.code,\n req,\n user,\n })\n\n if (doc?.id) {\n id = doc.id\n isEditing = getIsEditing({ id: doc.id, collectionSlug, globalSlug })\n\n if (!drawerSlug && redirectAfterCreate !== false) {\n const redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${doc.id}`,\n })\n\n req.server.redirect(redirectURL)\n }\n } else {\n throw new Error('not-found')\n }\n }\n\n const documentSlots = renderDocumentSlots({\n id,\n collectionConfig,\n doc: doc as Record<string, unknown>,\n globalConfig,\n hasSavePermission,\n locale,\n permissions,\n req,\n })\n\n // Extract Description from documentSlots to pass to DocumentHeader\n const { Description } = documentSlots\n\n const clientProps: DocumentViewClientProps = {\n formState,\n ...documentSlots,\n documentSubViewType,\n viewType,\n }\n\n const { isLivePreviewEnabled, livePreviewConfig, livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n const { isPreviewEnabled, previewURL } = await handlePreview({\n collectionSlug,\n config,\n data: doc,\n globalSlug,\n operation,\n req,\n })\n\n return {\n data: doc,\n Document: (\n <DocumentInfoProvider\n apiURL={apiURL}\n collectionSlug={collectionConfig?.slug}\n currentEditor={currentEditor}\n disableActions={disableActions ?? false}\n docPermissions={docPermissions}\n globalSlug={globalConfig?.slug}\n hasDeletePermission={hasDeletePermission}\n hasPublishedDoc={hasPublishedDoc}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n hasScheduledPublish={hasScheduledPublish}\n hasTrashPermission={hasTrashPermission}\n id={id}\n initialData={doc}\n initialState={formState}\n isEditing={isEditing}\n isLocked={isLocked}\n isTrashed={isTrashedDoc}\n key={locale?.code}\n lastUpdateTime={lastUpdateTime}\n mostRecentVersionIsAutosaved={mostRecentVersionIsAutosaved}\n redirectAfterCreate={redirectAfterCreate}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n unpublishedVersionCount={unpublishedVersionCount}\n versionCount={versionCount}\n >\n <LivePreviewProvider\n breakpoints={livePreviewConfig?.breakpoints}\n isLivePreviewEnabled={isLivePreviewEnabled && operation !== 'create'}\n isLivePreviewing={Boolean(\n (entityPreferences?.value?.editViewType === undefined\n ? livePreviewConfig?.openByDefault\n : entityPreferences.value.editViewType === 'live-preview') && livePreviewURL,\n )}\n isPreviewEnabled={Boolean(isPreviewEnabled)}\n previewURL={previewURL}\n typeofLivePreviewURL={typeof livePreviewConfig?.url as 'function' | 'string' | undefined}\n url={livePreviewURL}\n >\n {showHeader && !drawerSlug && (\n <DocumentHeader\n AfterHeader={Description}\n collectionConfig={collectionConfig}\n globalConfig={globalConfig}\n permissions={permissions}\n req={req}\n />\n )}\n <HydrateAuthProvider permissions={permissions} />\n <EditDepthProvider>\n {RenderServerComponent({\n clientProps,\n Component: View,\n importMap,\n serverProps: documentViewServerProps,\n })}\n </EditDepthProvider>\n </LivePreviewProvider>\n </DocumentInfoProvider>\n ),\n }\n}\n\nexport async function DocumentView(props: AdminViewServerProps) {\n try {\n const { Document: RenderedDocument } = await renderDocument(props)\n return RenderedDocument\n } catch (error) {\n if (error?.message === 'NEXT_REDIRECT') {\n throw error\n }\n\n // The TanStack adapter's `req.server.redirect()` throws `redirect:<url>` as a\n // control-flow signal — the target is already recorded on `req.server` and\n // honored upstream in `loadAdminPage`. It isn't a real error, so swallow it\n // without logging, mirroring the `NEXT_REDIRECT` guard above.\n if (error?.message?.startsWith('redirect:')) {\n return\n }\n\n logError({ err: error, payload: props.initPageResult.req.payload })\n\n if (error.message === 'not-found') {\n props.initPageResult.req.server.notFound()\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ import type { PayloadRequest } from 'payload';
2
+ /**
3
+ * Records that the current user viewed a collection document, persisting it to the
4
+ * `recently-viewed` preference. The document is loaded with access control before this runs, so
5
+ * reaching here means the user can read it. Never throws: a failed write must not break the view.
6
+ */
7
+ export declare const recordRecentlyViewed: ({ id, collectionSlug, req, }: {
8
+ collectionSlug: string;
9
+ id: number | string;
10
+ req: PayloadRequest;
11
+ }) => Promise<void>;
12
+ //# sourceMappingURL=recordRecentlyViewed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recordRecentlyViewed.d.ts","sourceRoot":"","sources":["../../../src/views/Document/recordRecentlyViewed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA6B,MAAM,SAAS,CAAA;AAOxE;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,GAAU,8BAIxC;IACD,cAAc,EAAE,MAAM,CAAA;IACtB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC,IAAI,CAmBf,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { PREFERENCE_KEYS } from 'payload/shared';
2
+ import { addRecentlyViewedItem } from '../../utilities/recentlyViewed.js';
3
+ import { upsertPreferences } from '../../utilities/upsertPreferences.js';
4
+ /**
5
+ * Records that the current user viewed a collection document, persisting it to the
6
+ * `recently-viewed` preference. The document is loaded with access control before this runs, so
7
+ * reaching here means the user can read it. Never throws: a failed write must not break the view.
8
+ */
9
+ export const recordRecentlyViewed = async ({
10
+ id,
11
+ collectionSlug,
12
+ req
13
+ }) => {
14
+ if (!req.user) {
15
+ return;
16
+ }
17
+ try {
18
+ await upsertPreferences({
19
+ customMerge: (existingValue, incomingValue) => addRecentlyViewedItem({
20
+ existing: existingValue,
21
+ item: incomingValue.items[0]
22
+ }),
23
+ key: PREFERENCE_KEYS.RECENTLY_VIEWED,
24
+ req,
25
+ value: {
26
+ items: [{
27
+ id,
28
+ collectionSlug,
29
+ viewedAt: new Date().toISOString()
30
+ }]
31
+ }
32
+ });
33
+ } catch (err) {
34
+ req.payload.logger.error({
35
+ err,
36
+ msg: `Failed to record recently viewed document "${collectionSlug}/${id}"`
37
+ });
38
+ }
39
+ };
40
+ //# sourceMappingURL=recordRecentlyViewed.js.map