@payloadcms/ui 4.0.0-internal.688c4d0 → 4.0.0-internal.697830c

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 (744) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/css/colors.css +6 -0
  3. package/dist/css/design-tokens.css +5 -0
  4. package/dist/css/elevations.css +4 -0
  5. package/dist/css/forms.css +6 -3
  6. package/dist/css/theme.css +2 -1
  7. package/dist/css/utilities.css +3 -2
  8. package/dist/elements/AddNewRelation/index.css +28 -28
  9. package/dist/elements/AppHeader/index.d.ts +4 -2
  10. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  11. package/dist/elements/AppHeader/index.js +11 -2
  12. package/dist/elements/AppHeader/index.js.map +1 -1
  13. package/dist/elements/ArrayAction/index.js +2 -2
  14. package/dist/elements/ArrayAction/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/ActionsBar/index.css +4 -8
  16. package/dist/elements/BulkUpload/ActionsBar/index.d.ts +1 -5
  17. package/dist/elements/BulkUpload/ActionsBar/index.d.ts.map +1 -1
  18. package/dist/elements/BulkUpload/ActionsBar/index.js +15 -22
  19. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.css +14 -8
  21. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -2
  22. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/AddFilesView/index.js +41 -36
  24. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  25. package/dist/elements/BulkUpload/AddingFilesView/index.css +158 -6
  26. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts +5 -1
  27. package/dist/elements/BulkUpload/AddingFilesView/index.d.ts.map +1 -1
  28. package/dist/elements/BulkUpload/AddingFilesView/index.js +134 -65
  29. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js +4 -4
  31. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  32. package/dist/elements/BulkUpload/EditForm/index.d.ts +1 -1
  33. package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
  34. package/dist/elements/BulkUpload/EditForm/index.js +16 -17
  35. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  36. package/dist/elements/BulkUpload/EditForm/types.d.ts +2 -3
  37. package/dist/elements/BulkUpload/EditForm/types.d.ts.map +1 -1
  38. package/dist/elements/BulkUpload/EditForm/types.js.map +1 -1
  39. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  40. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +78 -64
  41. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  42. package/dist/elements/BulkUpload/EditMany/index.d.ts.map +1 -1
  43. package/dist/elements/BulkUpload/EditMany/index.js +28 -10
  44. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  45. package/dist/elements/BulkUpload/FileSidebar/index.css +63 -143
  46. package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
  47. package/dist/elements/BulkUpload/FileSidebar/index.js +42 -175
  48. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  49. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  50. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  51. package/dist/elements/BulkUpload/index.css +48 -0
  52. package/dist/elements/BulkUpload/index.d.ts +6 -5
  53. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  54. package/dist/elements/BulkUpload/index.js +42 -41
  55. package/dist/elements/BulkUpload/index.js.map +1 -1
  56. package/dist/elements/Button/index.d.ts.map +1 -1
  57. package/dist/elements/Button/index.js +5 -0
  58. package/dist/elements/Button/index.js.map +1 -1
  59. package/dist/elements/Card/index.css +1 -1
  60. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  61. package/dist/elements/ClipboardAction/index.js +1 -0
  62. package/dist/elements/ClipboardAction/index.js.map +1 -1
  63. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  64. package/dist/elements/Collapsible/index.js +2 -0
  65. package/dist/elements/Collapsible/index.js.map +1 -1
  66. package/dist/elements/ColumnSelection/Popup.d.ts +12 -0
  67. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -0
  68. package/dist/elements/{ColumnSelector/index.js → ColumnSelection/Popup.js} +24 -17
  69. package/dist/elements/ColumnSelection/Popup.js.map +1 -0
  70. package/dist/elements/ColumnSelection/index.d.ts +10 -0
  71. package/dist/elements/ColumnSelection/index.d.ts.map +1 -0
  72. package/dist/elements/{ColumnsButton → ColumnSelection}/index.js +23 -17
  73. package/dist/elements/ColumnSelection/index.js.map +1 -0
  74. package/dist/elements/CopyLocaleData/index.js +1 -1
  75. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  76. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  77. package/dist/elements/CreateDocumentButton/index.js +0 -1
  78. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  79. package/dist/elements/DatePicker/index.css +9 -9
  80. package/dist/elements/DatePicker/index.js +1 -1
  81. package/dist/elements/DatePicker/index.js.map +1 -1
  82. package/dist/elements/Dialog/DialogHeader/index.d.ts +4 -0
  83. package/dist/elements/Dialog/DialogHeader/index.d.ts.map +1 -1
  84. package/dist/elements/Dialog/DialogHeader/index.js +45 -30
  85. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  86. package/dist/elements/Dialog/DialogModal/index.d.ts +5 -0
  87. package/dist/elements/Dialog/DialogModal/index.d.ts.map +1 -1
  88. package/dist/elements/Dialog/DialogModal/index.js +58 -31
  89. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  90. package/dist/elements/Dialog/DialogTitle/index.css +9 -0
  91. package/dist/elements/Dialog/DialogTitle/index.d.ts +5 -0
  92. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -0
  93. package/dist/elements/Dialog/DialogTitle/index.js +10 -0
  94. package/dist/elements/Dialog/DialogTitle/index.js.map +1 -0
  95. package/dist/elements/Dialog/index.css +7 -1
  96. package/dist/elements/DocumentControls/index.css +8 -2
  97. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  98. package/dist/elements/DocumentControls/index.js +13 -3
  99. package/dist/elements/DocumentControls/index.js.map +1 -1
  100. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  101. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +5 -3
  102. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  103. package/dist/elements/DocumentFields/index.css +14 -2
  104. package/dist/elements/DocumentFields/index.d.ts +5 -0
  105. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  106. package/dist/elements/DocumentFields/index.js +9 -1
  107. package/dist/elements/DocumentFields/index.js.map +1 -1
  108. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts +12 -0
  109. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.d.ts.map +1 -0
  110. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js +28 -0
  111. package/dist/elements/DocumentHeader/DocumentHeaderRoot/index.js.map +1 -0
  112. package/dist/elements/DocumentHeader/index.js +2 -3
  113. package/dist/elements/DocumentHeader/index.js.map +1 -1
  114. package/dist/elements/DraggableSortable/DragOverlayPreview/index.css +1 -1
  115. package/dist/elements/DrawerActionHeader/index.css +1 -1
  116. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.css +7 -1
  117. package/dist/elements/DrawerHeader/index.d.ts +10 -0
  118. package/dist/elements/DrawerHeader/index.d.ts.map +1 -0
  119. package/dist/elements/{BulkUpload/Header → DrawerHeader}/index.js +16 -11
  120. package/dist/elements/DrawerHeader/index.js.map +1 -0
  121. package/dist/elements/Dropzone/index.css +5 -13
  122. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +1 -1
  123. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  124. package/dist/elements/EditUpload/index.css +97 -158
  125. package/dist/elements/EditUpload/index.d.ts +2 -1
  126. package/dist/elements/EditUpload/index.d.ts.map +1 -1
  127. package/dist/elements/EditUpload/index.js +209 -231
  128. package/dist/elements/EditUpload/index.js.map +1 -1
  129. package/dist/elements/EditUpload/{library.scss → library.css} +108 -46
  130. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts +1 -1
  131. package/dist/elements/FileDetails/DraggableFileDetails/index.d.ts.map +1 -1
  132. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  133. package/dist/elements/FileDetails/FileMeta/index.css +27 -0
  134. package/dist/elements/FileDetails/FileMeta/index.d.ts +1 -1
  135. package/dist/elements/FileDetails/FileMeta/index.d.ts.map +1 -1
  136. package/dist/elements/FileDetails/FileMeta/index.js +1 -1
  137. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  138. package/dist/elements/FileDetails/StaticFileDetails/index.css +140 -0
  139. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts +2 -2
  140. package/dist/elements/FileDetails/StaticFileDetails/index.d.ts.map +1 -1
  141. package/dist/elements/FileDetails/StaticFileDetails/index.js +1 -1
  142. package/dist/elements/FileDetails/StaticFileDetails/index.js.map +1 -1
  143. package/dist/elements/FileDetails/index.d.ts +1 -1
  144. package/dist/elements/FileDetails/index.d.ts.map +1 -1
  145. package/dist/elements/FileDetails/index.js.map +1 -1
  146. package/dist/elements/FileManager/FilePreview/AudioPreview/index.css +8 -0
  147. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts +10 -0
  148. package/dist/elements/FileManager/FilePreview/AudioPreview/index.d.ts.map +1 -0
  149. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js +24 -0
  150. package/dist/elements/FileManager/FilePreview/AudioPreview/index.js.map +1 -0
  151. package/dist/elements/FileManager/FilePreview/PdfPreview/index.css +9 -0
  152. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts +12 -0
  153. package/dist/elements/FileManager/FilePreview/PdfPreview/index.d.ts.map +1 -0
  154. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js +27 -0
  155. package/dist/elements/FileManager/FilePreview/PdfPreview/index.js.map +1 -0
  156. package/dist/elements/FileManager/FilePreview/VideoPreview/index.css +8 -0
  157. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts +10 -0
  158. package/dist/elements/FileManager/FilePreview/VideoPreview/index.d.ts.map +1 -0
  159. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js +24 -0
  160. package/dist/elements/FileManager/FilePreview/VideoPreview/index.js.map +1 -0
  161. package/dist/elements/FileManager/FilePreview/index.css +83 -0
  162. package/dist/elements/FileManager/FilePreview/index.d.ts +13 -0
  163. package/dist/elements/FileManager/FilePreview/index.d.ts.map +1 -0
  164. package/dist/elements/FileManager/FilePreview/index.js +140 -0
  165. package/dist/elements/FileManager/FilePreview/index.js.map +1 -0
  166. package/dist/elements/FileManager/FileToolbar/index.css +91 -0
  167. package/dist/elements/FileManager/FileToolbar/index.d.ts +14 -0
  168. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -0
  169. package/dist/elements/FileManager/FileToolbar/index.js +106 -0
  170. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -0
  171. package/dist/elements/FileManager/index.css +154 -0
  172. package/dist/elements/FileManager/index.d.ts +19 -0
  173. package/dist/elements/FileManager/index.d.ts.map +1 -0
  174. package/dist/elements/FileManager/index.js +424 -0
  175. package/dist/elements/FileManager/index.js.map +1 -0
  176. package/dist/elements/GroupBy/Popup.d.ts +21 -0
  177. package/dist/elements/GroupBy/Popup.d.ts.map +1 -0
  178. package/dist/elements/GroupBy/Popup.js +268 -0
  179. package/dist/elements/GroupBy/Popup.js.map +1 -0
  180. package/dist/elements/GroupBy/index.d.ts +12 -0
  181. package/dist/elements/GroupBy/index.d.ts.map +1 -0
  182. package/dist/elements/GroupBy/index.js +91 -0
  183. package/dist/elements/GroupBy/index.js.map +1 -0
  184. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +5 -3
  185. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +1 -0
  186. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +1 -1
  187. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  188. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  189. package/dist/elements/Hierarchy/DocHeaderButton/index.js +12 -12
  190. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  191. package/dist/elements/Hierarchy/Field/index.client.js +14 -14
  192. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
  193. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -0
  194. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -0
  195. package/dist/elements/Hierarchy/Modal/index.css +88 -0
  196. package/dist/elements/Hierarchy/Modal/index.d.ts +20 -0
  197. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -0
  198. package/dist/elements/Hierarchy/{Drawer → Modal}/index.js +105 -81
  199. package/dist/elements/Hierarchy/Modal/index.js.map +1 -0
  200. package/dist/elements/Hierarchy/{Drawer → Modal}/types.d.ts +22 -18
  201. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -0
  202. package/dist/elements/Hierarchy/Modal/types.js.map +1 -0
  203. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts +30 -0
  204. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -0
  205. package/dist/elements/Hierarchy/{Drawer/useHierarchyDrawer.js → Modal/useHierarchyModal.js} +51 -50
  206. package/dist/elements/Hierarchy/Modal/useHierarchyModal.js.map +1 -0
  207. package/dist/elements/Hierarchy/MoveMany/index.d.ts +2 -2
  208. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  209. package/dist/elements/Hierarchy/MoveMany/index.js +9 -9
  210. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  211. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +38 -13
  212. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  213. package/dist/elements/Hierarchy/Tree/TreeNode/index.js +37 -31
  214. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
  215. package/dist/elements/Hierarchy/Tree/index.css +1 -1
  216. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  217. package/dist/elements/Hierarchy/Tree/index.js +18 -5
  218. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  219. package/dist/elements/ListColumnSelectionButton/index.d.ts +11 -0
  220. package/dist/elements/ListColumnSelectionButton/index.d.ts.map +1 -0
  221. package/dist/elements/ListColumnSelectionButton/index.js +37 -0
  222. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -0
  223. package/dist/elements/ListControls/index.d.ts.map +1 -1
  224. package/dist/elements/ListControls/index.js +8 -9
  225. package/dist/elements/ListControls/index.js.map +1 -1
  226. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  227. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  228. package/dist/elements/ListDrawer/Provider.d.ts +1 -1
  229. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  230. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  231. package/dist/elements/ListGroupByButton/index.d.ts +12 -0
  232. package/dist/elements/ListGroupByButton/index.d.ts.map +1 -0
  233. package/dist/elements/ListGroupByButton/index.js +55 -0
  234. package/dist/elements/ListGroupByButton/index.js.map +1 -0
  235. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  236. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +2 -0
  237. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  238. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +4 -4
  239. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  240. package/dist/elements/ListWhereBuilder/index.d.ts +16 -0
  241. package/dist/elements/ListWhereBuilder/index.d.ts.map +1 -0
  242. package/dist/elements/ListWhereBuilder/index.js +62 -0
  243. package/dist/elements/ListWhereBuilder/index.js.map +1 -0
  244. package/dist/elements/LivePreview/Toolbar/Controls/index.js +2 -2
  245. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  246. package/dist/elements/LivePreview/Toolbar/SizeInput/index.css +5 -44
  247. package/dist/elements/LivePreview/Toolbar/SizeInput/index.d.ts.map +1 -1
  248. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js +26 -43
  249. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  250. package/dist/elements/LivePreview/Window/index.css +6 -0
  251. package/dist/elements/MiniCarousel/index.css +94 -0
  252. package/dist/elements/MiniCarousel/index.d.ts +15 -0
  253. package/dist/elements/MiniCarousel/index.d.ts.map +1 -0
  254. package/dist/elements/MiniCarousel/index.js +84 -0
  255. package/dist/elements/MiniCarousel/index.js.map +1 -0
  256. package/dist/elements/Nav/SettingsMenuButton/index.css +5 -0
  257. package/dist/elements/Nav/SettingsMenuButton/index.d.ts +1 -1
  258. package/dist/elements/Nav/SettingsMenuButton/index.d.ts.map +1 -1
  259. package/dist/elements/Nav/SettingsMenuButton/index.js +1 -1
  260. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  261. package/dist/elements/Nav/index.css +2 -2
  262. package/dist/elements/NavGroup/index.css +1 -1
  263. package/dist/elements/Popup/PopupButtonList/index.css +5 -0
  264. package/dist/elements/Popup/PopupGroupLabel/index.css +8 -5
  265. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
  266. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  267. package/dist/elements/Popup/PopupTrigger/index.js +3 -0
  268. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  269. package/dist/elements/Popup/index.d.ts +7 -1
  270. package/dist/elements/Popup/index.d.ts.map +1 -1
  271. package/dist/elements/Popup/index.js +45 -12
  272. package/dist/elements/Popup/index.js.map +1 -1
  273. package/dist/elements/PreviewSizes/index.css +149 -0
  274. package/dist/elements/PreviewSizes/index.d.ts +2 -2
  275. package/dist/elements/PreviewSizes/index.d.ts.map +1 -1
  276. package/dist/elements/PreviewSizes/index.js +1 -1
  277. package/dist/elements/PreviewSizes/index.js.map +1 -1
  278. package/dist/elements/PublishMany/DrawerContent.d.ts +2 -1
  279. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  280. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  281. package/dist/elements/PublishMany/index.d.ts +2 -6
  282. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  283. package/dist/elements/PublishMany/index.js +0 -38
  284. package/dist/elements/PublishMany/index.js.map +1 -1
  285. package/dist/elements/QueryPresets/cells/ColumnsCell/{index.scss → index.css} +1 -3
  286. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +1 -1
  287. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -1
  288. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -1
  289. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
  290. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +1 -1
  291. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
  292. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +77 -48
  293. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  294. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts +1 -1
  295. package/dist/elements/QueryPresets/fields/GroupByField/index.d.ts.map +1 -1
  296. package/dist/elements/QueryPresets/fields/GroupByField/index.js +12 -21
  297. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  298. package/dist/elements/QueryPresets/fields/Heading/index.css +52 -0
  299. package/dist/elements/QueryPresets/fields/Heading/index.d.ts +7 -0
  300. package/dist/elements/QueryPresets/fields/Heading/index.d.ts.map +1 -0
  301. package/dist/elements/QueryPresets/fields/Heading/index.js +31 -0
  302. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -0
  303. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +1 -1
  304. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -1
  305. package/dist/elements/QueryPresets/fields/WhereField/index.js +24 -23
  306. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  307. package/dist/elements/QueryPresets/fields/fields.css +23 -0
  308. package/dist/elements/ReactSelect/DropdownIndicator/index.css +1 -1
  309. package/dist/elements/ReactSelect/DropdownIndicator/index.d.ts.map +1 -1
  310. package/dist/elements/ReactSelect/DropdownIndicator/index.js +19 -12
  311. package/dist/elements/ReactSelect/DropdownIndicator/index.js.map +1 -1
  312. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts +5 -0
  313. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -0
  314. package/dist/elements/ReactSelect/getCaptureMenuScroll.js +10 -0
  315. package/dist/elements/ReactSelect/getCaptureMenuScroll.js.map +1 -0
  316. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +6 -0
  317. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -0
  318. package/dist/elements/ReactSelect/getMenuListStyles.js +7 -0
  319. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -0
  320. package/dist/elements/ReactSelect/index.css +2 -3
  321. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  322. package/dist/elements/ReactSelect/index.js +169 -149
  323. package/dist/elements/ReactSelect/index.js.map +1 -1
  324. package/dist/elements/ReactSelect/types.d.ts +2 -0
  325. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  326. package/dist/elements/ReactSelect/types.js.map +1 -1
  327. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  328. package/dist/elements/RelationshipTable/AddNewButton.js +1 -2
  329. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  330. package/dist/elements/RelationshipTable/index.css +1 -2
  331. package/dist/elements/RelationshipTable/index.js +2 -2
  332. package/dist/elements/RelationshipTable/index.js.map +1 -1
  333. package/dist/elements/Search/SearchInput/index.js +1 -1
  334. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  335. package/dist/elements/SidebarRow/index.css +0 -2
  336. package/dist/elements/SortColumn/index.css +1 -1
  337. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  338. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +32 -13
  339. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  340. package/dist/elements/Table/index.css +31 -4
  341. package/dist/elements/Thumbnail/index.css +41 -0
  342. package/dist/elements/Thumbnail/index.d.ts +3 -3
  343. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  344. package/dist/elements/Thumbnail/index.js +1 -1
  345. package/dist/elements/Thumbnail/index.js.map +1 -1
  346. package/dist/elements/TimezonePicker/index.css +1 -1
  347. package/dist/elements/Toasts/fieldErrors.d.ts +1 -0
  348. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  349. package/dist/elements/Toasts/fieldErrors.js +25 -9
  350. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  351. package/dist/elements/Toasts/index.css +5 -0
  352. package/dist/elements/UnpublishMany/DrawerContent.d.ts +2 -1
  353. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  354. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  355. package/dist/elements/UnpublishMany/index.d.ts +2 -4
  356. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  357. package/dist/elements/UnpublishMany/index.js +0 -38
  358. package/dist/elements/UnpublishMany/index.js.map +1 -1
  359. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +11 -0
  360. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -0
  361. package/dist/elements/Upload/UploadFromURLModal/index.js +88 -0
  362. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -0
  363. package/dist/elements/Upload/index.css +134 -45
  364. package/dist/elements/Upload/index.d.ts +3 -8
  365. package/dist/elements/Upload/index.d.ts.map +1 -1
  366. package/dist/elements/Upload/index.js +71 -92
  367. package/dist/elements/Upload/index.js.map +1 -1
  368. package/dist/elements/UserMenu/LanguageMenu/index.js +1 -1
  369. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  370. package/dist/elements/UserMenu/SettingsMenu/index.d.ts +6 -2
  371. package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
  372. package/dist/elements/UserMenu/SettingsMenu/index.js +15 -10
  373. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  374. package/dist/elements/UserMenu/ThemeMenu/index.js +1 -1
  375. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  376. package/dist/elements/UserMenu/index.d.ts +3 -1
  377. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  378. package/dist/elements/UserMenu/index.js +10 -6
  379. package/dist/elements/UserMenu/index.js.map +1 -1
  380. package/dist/elements/WhereBuilder/Condition/index.d.ts +1 -0
  381. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  382. package/dist/elements/WhereBuilder/Condition/index.js +17 -2
  383. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  384. package/dist/elements/WhereBuilder/index.d.ts +4 -3
  385. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  386. package/dist/elements/WhereBuilder/index.js +71 -62
  387. package/dist/elements/WhereBuilder/index.js.map +1 -1
  388. package/dist/elements/WhereBuilder/types.d.ts +6 -5
  389. package/dist/elements/WhereBuilder/types.d.ts.map +1 -1
  390. package/dist/elements/WhereBuilder/types.js.map +1 -1
  391. package/dist/exports/client/index.d.ts +10 -4
  392. package/dist/exports/client/index.d.ts.map +1 -1
  393. package/dist/exports/client/index.js +1 -2
  394. package/dist/exports/client/index.js.map +4 -4
  395. package/dist/exports/rsc/index.d.ts +3 -0
  396. package/dist/exports/rsc/index.d.ts.map +1 -1
  397. package/dist/exports/rsc/index.js +3 -0
  398. package/dist/exports/rsc/index.js.map +1 -1
  399. package/dist/exports/shared/index.js +2 -2
  400. package/dist/exports/shared/index.js.map +2 -2
  401. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.css +1 -1
  402. package/dist/fields/Blocks/BlockSelector/index.css +2 -5
  403. package/dist/fields/Blocks/SectionTitle/index.d.ts.map +1 -1
  404. package/dist/fields/Blocks/SectionTitle/index.js +1 -0
  405. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  406. package/dist/fields/Checkbox/index.css +2 -2
  407. package/dist/fields/ConfirmPassword/index.d.ts +4 -0
  408. package/dist/fields/ConfirmPassword/index.d.ts.map +1 -1
  409. package/dist/fields/ConfirmPassword/index.js +37 -33
  410. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  411. package/dist/fields/Group/index.css +4 -10
  412. package/dist/fields/Number/Input.d.ts.map +1 -1
  413. package/dist/fields/Number/Input.js +62 -46
  414. package/dist/fields/Number/Input.js.map +1 -1
  415. package/dist/fields/Number/index.css +19 -0
  416. package/dist/fields/Number/types.d.ts +10 -0
  417. package/dist/fields/Number/types.d.ts.map +1 -1
  418. package/dist/fields/Number/types.js.map +1 -1
  419. package/dist/fields/Password/input.d.ts.map +1 -1
  420. package/dist/fields/Password/input.js +33 -29
  421. package/dist/fields/Password/input.js.map +1 -1
  422. package/dist/fields/Password/types.d.ts +4 -0
  423. package/dist/fields/Password/types.d.ts.map +1 -1
  424. package/dist/fields/Password/types.js.map +1 -1
  425. package/dist/fields/RadioGroup/index.css +6 -0
  426. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  427. package/dist/fields/Relationship/Input.js +4 -0
  428. package/dist/fields/Relationship/Input.js.map +1 -1
  429. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  430. package/dist/fields/Relationship/types.d.ts +4 -0
  431. package/dist/fields/Relationship/types.d.ts.map +1 -1
  432. package/dist/fields/Relationship/types.js.map +1 -1
  433. package/dist/fields/Select/Input.d.ts +4 -0
  434. package/dist/fields/Select/Input.d.ts.map +1 -1
  435. package/dist/fields/Select/Input.js +45 -40
  436. package/dist/fields/Select/Input.js.map +1 -1
  437. package/dist/fields/Slug/index.d.ts +7 -5
  438. package/dist/fields/Slug/index.d.ts.map +1 -1
  439. package/dist/fields/Slug/index.js +6 -4
  440. package/dist/fields/Slug/index.js.map +1 -1
  441. package/dist/fields/Text/Input.d.ts.map +1 -1
  442. package/dist/fields/Text/Input.js +44 -37
  443. package/dist/fields/Text/Input.js.map +1 -1
  444. package/dist/fields/Text/types.d.ts +9 -0
  445. package/dist/fields/Text/types.d.ts.map +1 -1
  446. package/dist/fields/Text/types.js.map +1 -1
  447. package/dist/fields/Textarea/Input.d.ts.map +1 -1
  448. package/dist/fields/Textarea/Input.js +27 -23
  449. package/dist/fields/Textarea/Input.js.map +1 -1
  450. package/dist/fields/Textarea/index.css +1 -1
  451. package/dist/fields/Textarea/types.d.ts +4 -0
  452. package/dist/fields/Textarea/types.d.ts.map +1 -1
  453. package/dist/fields/Textarea/types.js.map +1 -1
  454. package/dist/fields/Upload/Input.d.ts.map +1 -1
  455. package/dist/fields/Upload/Input.js +12 -11
  456. package/dist/fields/Upload/Input.js.map +1 -1
  457. package/dist/fields/Upload/index.js +1 -1
  458. package/dist/fields/Upload/index.js.map +1 -1
  459. package/dist/fields/index.d.ts.map +1 -1
  460. package/dist/fields/index.js +2 -0
  461. package/dist/fields/index.js.map +1 -1
  462. package/dist/forms/Form/types.d.ts +2 -2
  463. package/dist/forms/Form/types.d.ts.map +1 -1
  464. package/dist/forms/Form/types.js.map +1 -1
  465. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  466. package/dist/forms/RenderFields/RenderField.js +10 -0
  467. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  468. package/dist/forms/RenderFields/index.css +4 -4
  469. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +1 -0
  470. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  471. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +21 -5
  472. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  473. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts +2 -2
  474. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  475. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.js.map +1 -1
  476. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts +2 -2
  477. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  478. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.js.map +1 -1
  479. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts +2 -2
  480. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  481. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.js.map +1 -1
  482. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -1
  483. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  484. package/dist/forms/fieldSchemasToFormState/index.js +2 -0
  485. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  486. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -1
  487. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  488. package/dist/forms/fieldSchemasToFormState/iterateFields.js +2 -0
  489. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  490. package/dist/graphics/Icon/index.js +1 -1
  491. package/dist/graphics/Icon/index.js.map +1 -1
  492. package/dist/hooks/useElementHeightVariable.d.ts +15 -0
  493. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -0
  494. package/dist/hooks/useElementHeightVariable.js +53 -0
  495. package/dist/hooks/useElementHeightVariable.js.map +1 -0
  496. package/dist/icons/Check/index.css +1 -2
  497. package/dist/icons/Check/index.js +1 -1
  498. package/dist/icons/Check/index.js.map +1 -1
  499. package/dist/icons/Crop/index.css +5 -0
  500. package/dist/icons/Crop/index.d.ts +7 -0
  501. package/dist/icons/Crop/index.d.ts.map +1 -0
  502. package/dist/icons/Crop/index.js +24 -0
  503. package/dist/icons/Crop/index.js.map +1 -0
  504. package/dist/icons/Download/index.css +5 -0
  505. package/dist/icons/{ExternalLink → Download}/index.d.ts +1 -1
  506. package/dist/icons/Download/index.d.ts.map +1 -0
  507. package/dist/icons/Download/index.js +27 -0
  508. package/dist/icons/Download/index.js.map +1 -0
  509. package/dist/icons/{ExternalLink → NewTab}/index.css +1 -1
  510. package/dist/icons/NewTab/index.d.ts +7 -0
  511. package/dist/icons/NewTab/index.d.ts.map +1 -0
  512. package/dist/icons/NewTab/index.js +25 -0
  513. package/dist/icons/NewTab/index.js.map +1 -0
  514. package/dist/icons/Replace/index.css +5 -0
  515. package/dist/icons/Replace/index.d.ts +6 -0
  516. package/dist/icons/Replace/index.d.ts.map +1 -0
  517. package/dist/icons/Replace/index.js +20 -0
  518. package/dist/icons/Replace/index.js.map +1 -0
  519. package/dist/icons/Reset/index.css +5 -0
  520. package/dist/icons/Reset/index.d.ts +7 -0
  521. package/dist/icons/Reset/index.d.ts.map +1 -0
  522. package/dist/icons/Reset/index.js +25 -0
  523. package/dist/icons/Reset/index.js.map +1 -0
  524. package/dist/icons/Swap/index.js +1 -1
  525. package/dist/icons/Swap/index.js.map +1 -1
  526. package/dist/icons/Warning/index.css +1 -7
  527. package/dist/icons/Warning/index.d.ts +1 -1
  528. package/dist/icons/Warning/index.d.ts.map +1 -1
  529. package/dist/icons/Warning/index.js +11 -16
  530. package/dist/icons/Warning/index.js.map +1 -1
  531. package/dist/providers/Auth/index.d.ts +3 -5
  532. package/dist/providers/Auth/index.d.ts.map +1 -1
  533. package/dist/providers/Auth/index.js +3 -8
  534. package/dist/providers/Auth/index.js.map +1 -1
  535. package/dist/providers/DocumentInfo/types.d.ts +2 -2
  536. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  537. package/dist/providers/DocumentInfo/types.js.map +1 -1
  538. package/dist/providers/Root/index.d.ts +2 -2
  539. package/dist/providers/Root/index.d.ts.map +1 -1
  540. package/dist/providers/Root/index.js.map +1 -1
  541. package/dist/providers/ToastContainer/index.css +208 -0
  542. package/dist/providers/ToastContainer/index.d.ts +1 -0
  543. package/dist/providers/ToastContainer/index.d.ts.map +1 -1
  544. package/dist/providers/ToastContainer/index.js +19 -6
  545. package/dist/providers/ToastContainer/index.js.map +1 -1
  546. package/dist/scss/app.scss +10 -4
  547. package/dist/styles.css +1369 -1
  548. package/dist/templates/Default/index.d.ts.map +1 -1
  549. package/dist/templates/Default/index.js +58 -10
  550. package/dist/templates/Default/index.js.map +1 -1
  551. package/dist/utilities/buildFormState.d.ts.map +1 -1
  552. package/dist/utilities/buildFormState.js +1 -0
  553. package/dist/utilities/buildFormState.js.map +1 -1
  554. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  555. package/dist/utilities/copyDataFromLocale.js +1 -0
  556. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  557. package/dist/utilities/formatRelativeDate.d.ts +15 -0
  558. package/dist/utilities/formatRelativeDate.d.ts.map +1 -0
  559. package/dist/utilities/formatRelativeDate.js +62 -0
  560. package/dist/utilities/formatRelativeDate.js.map +1 -0
  561. package/dist/utilities/getDocPreferences.d.ts +2 -2
  562. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  563. package/dist/utilities/getDocPreferences.js.map +1 -1
  564. package/dist/utilities/getDocumentData.d.ts +2 -2
  565. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  566. package/dist/utilities/getDocumentData.js.map +1 -1
  567. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  568. package/dist/utilities/getGlobalData.js.map +1 -1
  569. package/dist/utilities/getHasScheduledPublish.d.ts +2 -2
  570. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  571. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  572. package/dist/utilities/getIsLocked.d.ts +2 -2
  573. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  574. package/dist/utilities/getIsLocked.js.map +1 -1
  575. package/dist/utilities/getVersions.d.ts +2 -2
  576. package/dist/utilities/getVersions.d.ts.map +1 -1
  577. package/dist/utilities/getVersions.js +2 -5
  578. package/dist/utilities/getVersions.js.map +1 -1
  579. package/dist/utilities/handleAuthRedirect.d.ts +2 -2
  580. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  581. package/dist/utilities/handleAuthRedirect.js.map +1 -1
  582. package/dist/utilities/handleFormStateLocking.d.ts +2 -2
  583. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  584. package/dist/utilities/handleFormStateLocking.js.map +1 -1
  585. package/dist/utilities/handleLivePreview.d.ts +1 -0
  586. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  587. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  588. package/dist/utilities/isURLAllowed.js +9 -3
  589. package/dist/utilities/isURLAllowed.js.map +1 -1
  590. package/dist/utilities/recentlyViewed.d.ts +16 -0
  591. package/dist/utilities/recentlyViewed.d.ts.map +1 -0
  592. package/dist/utilities/recentlyViewed.js +21 -0
  593. package/dist/utilities/recentlyViewed.js.map +1 -0
  594. package/dist/utilities/recentlyViewed.spec.js +92 -0
  595. package/dist/utilities/recentlyViewed.spec.js.map +1 -0
  596. package/dist/utilities/reduceFieldsToOptions.js +1 -1
  597. package/dist/utilities/reduceFieldsToOptions.js.map +1 -1
  598. package/dist/utilities/slugify.d.ts +1 -1
  599. package/dist/utilities/slugify.js +1 -1
  600. package/dist/utilities/slugify.js.map +1 -1
  601. package/dist/views/API/index.client.js +2 -2
  602. package/dist/views/API/index.client.js.map +1 -1
  603. package/dist/views/Account/ResetPreferences/index.d.ts +2 -2
  604. package/dist/views/Account/ResetPreferences/index.d.ts.map +1 -1
  605. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  606. package/dist/views/Account/Settings/index.d.ts +2 -2
  607. package/dist/views/Account/Settings/index.d.ts.map +1 -1
  608. package/dist/views/Account/Settings/index.js.map +1 -1
  609. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.d.ts.map +1 -1
  610. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js +27 -23
  611. package/dist/views/Dashboard/Default/ModularDashboard/WidgetConfigDrawer.js.map +1 -1
  612. package/dist/views/Dashboard/Default/ModularDashboard/index.css +2 -0
  613. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +2 -2
  614. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  615. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +2 -2
  616. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  617. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts +2 -2
  618. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.d.ts.map +1 -1
  619. package/dist/views/Dashboard/Default/ModularDashboard/utils/getItemsFromPreferences.js.map +1 -1
  620. package/dist/views/Document/index.d.ts.map +1 -1
  621. package/dist/views/Document/index.js +18 -1
  622. package/dist/views/Document/index.js.map +1 -1
  623. package/dist/views/Document/recordRecentlyViewed.d.ts +12 -0
  624. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -0
  625. package/dist/views/Document/recordRecentlyViewed.js +40 -0
  626. package/dist/views/Document/recordRecentlyViewed.js.map +1 -0
  627. package/dist/views/Document/renderDocumentSlots.d.ts +1 -0
  628. package/dist/views/Document/renderDocumentSlots.d.ts.map +1 -1
  629. package/dist/views/Document/renderDocumentSlots.js +47 -1
  630. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  631. package/dist/views/Edit/index.css +143 -6
  632. package/dist/views/Edit/index.d.ts +1 -1
  633. package/dist/views/Edit/index.d.ts.map +1 -1
  634. package/dist/views/Edit/index.js +34 -31
  635. package/dist/views/Edit/index.js.map +1 -1
  636. package/dist/views/HierarchyList/DocumentListSelection/index.js +4 -4
  637. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  638. package/dist/views/HierarchyList/HierarchyTable/SlotTable.css +2 -2
  639. package/dist/views/List/ListHeader/index.css +5 -0
  640. package/dist/views/List/ListSelection/index.js +4 -4
  641. package/dist/views/List/ListSelection/index.js.map +1 -1
  642. package/dist/views/List/index.client.d.ts.map +1 -1
  643. package/dist/views/List/index.client.js +6 -6
  644. package/dist/views/List/index.client.js.map +1 -1
  645. package/dist/views/List/index.d.ts.map +1 -1
  646. package/dist/views/List/index.js +1 -7
  647. package/dist/views/List/index.js.map +1 -1
  648. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  649. package/dist/views/List/renderListViewSlots.js +9 -6
  650. package/dist/views/List/renderListViewSlots.js.map +1 -1
  651. package/dist/views/Logout/LogoutClient.js +29 -33
  652. package/dist/views/Logout/LogoutClient.js.map +1 -1
  653. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  654. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +1 -0
  655. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  656. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  657. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -0
  658. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  659. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  660. package/dist/views/Version/SelectComparison/index.js +1 -0
  661. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  662. package/dist/views/Versions/fetchVersions.d.ts +4 -4
  663. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  664. package/dist/views/Versions/fetchVersions.js.map +1 -1
  665. package/dist/views/Versions/index.css +0 -4
  666. package/dist/views/Versions/types.d.ts +2 -2
  667. package/dist/views/Versions/types.d.ts.map +1 -1
  668. package/dist/views/Versions/types.js.map +1 -1
  669. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  670. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -0
  671. package/dist/widgets/CollectionQuery/SortField/index.js +118 -0
  672. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -0
  673. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts +18 -0
  674. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.d.ts.map +1 -0
  675. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js +91 -0
  676. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.js.map +1 -0
  677. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js +100 -0
  678. package/dist/widgets/CollectionQuery/getCollectionFieldPaths.spec.js.map +1 -0
  679. package/dist/widgets/CollectionQuery/index.css +64 -0
  680. package/dist/widgets/CollectionQuery/index.d.ts +16 -0
  681. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -0
  682. package/dist/widgets/CollectionQuery/index.js +328 -0
  683. package/dist/widgets/CollectionQuery/index.js.map +1 -0
  684. package/dist/widgets/RecentlyViewed/CollectionsField/index.css +14 -0
  685. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts +10 -0
  686. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -0
  687. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +76 -0
  688. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -0
  689. package/dist/widgets/RecentlyViewed/index.d.ts +10 -0
  690. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -0
  691. package/dist/widgets/RecentlyViewed/index.js +148 -0
  692. package/dist/widgets/RecentlyViewed/index.js.map +1 -0
  693. package/dist/widgets/WidgetCard/index.css +155 -0
  694. package/dist/widgets/WidgetCard/index.d.ts +19 -0
  695. package/dist/widgets/WidgetCard/index.d.ts.map +1 -0
  696. package/dist/widgets/WidgetCard/index.js +49 -0
  697. package/dist/widgets/WidgetCard/index.js.map +1 -0
  698. package/package.json +5 -509
  699. package/dist/elements/BulkUpload/Header/index.d.ts +0 -9
  700. package/dist/elements/BulkUpload/Header/index.d.ts.map +0 -1
  701. package/dist/elements/BulkUpload/Header/index.js.map +0 -1
  702. package/dist/elements/ColumnSelector/index.d.ts +0 -9
  703. package/dist/elements/ColumnSelector/index.d.ts.map +0 -1
  704. package/dist/elements/ColumnSelector/index.js.map +0 -1
  705. package/dist/elements/ColumnsButton/index.d.ts +0 -7
  706. package/dist/elements/ColumnsButton/index.d.ts.map +0 -1
  707. package/dist/elements/ColumnsButton/index.js.map +0 -1
  708. package/dist/elements/FileDetails/FileMeta/index.scss +0 -31
  709. package/dist/elements/FileDetails/StaticFileDetails/index.scss +0 -134
  710. package/dist/elements/GroupByBuilder/index.d.ts +0 -12
  711. package/dist/elements/GroupByBuilder/index.d.ts.map +0 -1
  712. package/dist/elements/GroupByBuilder/index.js +0 -164
  713. package/dist/elements/GroupByBuilder/index.js.map +0 -1
  714. package/dist/elements/GroupByBuilder/index.scss +0 -39
  715. package/dist/elements/GroupByControl/index.d.ts +0 -9
  716. package/dist/elements/GroupByControl/index.d.ts.map +0 -1
  717. package/dist/elements/GroupByControl/index.js +0 -254
  718. package/dist/elements/GroupByControl/index.js.map +0 -1
  719. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +0 -1
  720. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +0 -1
  721. package/dist/elements/Hierarchy/Drawer/index.css +0 -90
  722. package/dist/elements/Hierarchy/Drawer/index.d.ts +0 -20
  723. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +0 -1
  724. package/dist/elements/Hierarchy/Drawer/index.js.map +0 -1
  725. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +0 -1
  726. package/dist/elements/Hierarchy/Drawer/types.js.map +0 -1
  727. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts +0 -30
  728. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +0 -1
  729. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +0 -1
  730. package/dist/elements/Nav/SettingsMenuButton/index.scss +0 -11
  731. package/dist/elements/PreviewSizes/index.scss +0 -147
  732. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +0 -17
  733. package/dist/elements/QueryPresets/fields/GroupByField/index.scss +0 -17
  734. package/dist/elements/QueryPresets/fields/WhereField/index.scss +0 -23
  735. package/dist/elements/Thumbnail/index.scss +0 -53
  736. package/dist/icons/ExternalLink/index.d.ts.map +0 -1
  737. package/dist/icons/ExternalLink/index.js +0 -26
  738. package/dist/icons/ExternalLink/index.js.map +0 -1
  739. package/dist/scss/toasts.scss +0 -146
  740. /package/dist/elements/{ColumnSelector/index.css → ColumnSelection/Popup.css} +0 -0
  741. /package/dist/elements/{GroupByControl/index.css → GroupBy/Popup.css} +0 -0
  742. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.d.ts +0 -0
  743. /package/dist/elements/Hierarchy/{Drawer → Modal}/fetchAncestorPath.js +0 -0
  744. /package/dist/elements/Hierarchy/{Drawer → Modal}/types.js +0 -0
@@ -1,4 +1,4 @@
1
- import type { PayloadRequest, SanitizedCollectionConfig, SanitizedGlobalConfig, TypedUser } from 'payload';
1
+ import type { PayloadRequest, SanitizedCollectionConfig, SanitizedGlobalConfig, User } from 'payload';
2
2
  type Args = {
3
3
  collectionConfig?: SanitizedCollectionConfig;
4
4
  globalConfig?: SanitizedGlobalConfig;
@@ -7,7 +7,7 @@ type Args = {
7
7
  req: PayloadRequest;
8
8
  };
9
9
  type Result = Promise<{
10
- currentEditor?: TypedUser;
10
+ currentEditor?: User;
11
11
  isLocked: boolean;
12
12
  lastUpdateTime?: number;
13
13
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"getIsLocked.d.ts","sourceRoot":"","sources":["../../src/utilities/getIsLocked.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,SAAS,EAEV,MAAM,SAAS,CAAA;AAMhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,CAAA;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAC,CAAA;AAEF,eAAO,MAAM,WAAW,GAAU,yDAM/B,IAAI,KAAG,MAwFT,CAAA"}
1
+ {"version":3,"file":"getIsLocked.d.ts","sourceRoot":"","sources":["../../src/utilities/getIsLocked.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,qBAAqB,EACrB,IAAI,EAEL,MAAM,SAAS,CAAA;AAMhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,IAAI,CAAA;IACpB,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,CAAC,CAAA;AAEF,eAAO,MAAM,WAAW,GAAU,yDAM/B,IAAI,KAAG,MAwFT,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getIsLocked.js","names":["extractID","sanitizeID","getIsLocked","id","collectionConfig","globalConfig","isEditing","req","entityConfig","entityHasLockingEnabled","lockDocuments","undefined","payload","collections","isLocked","where","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","and","globalSlug","equals","slug","updatedAt","greater_than","docs","find","collection","depth","overrideAccess","length","currentEditor","user","value","lastUpdateTime"],"sources":["../../src/utilities/getIsLocked.ts"],"sourcesContent":["import type {\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n TypedUser,\n Where,\n} from 'payload'\n\nimport { extractID } from 'payload/shared'\n\nimport { sanitizeID } from './sanitizeID.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n isEditing: boolean\n req: PayloadRequest\n}\n\ntype Result = Promise<{\n currentEditor?: TypedUser\n isLocked: boolean\n lastUpdateTime?: number\n}>\n\nexport const getIsLocked = async ({\n id,\n collectionConfig,\n globalConfig,\n isEditing,\n req,\n}: Args): Result => {\n const entityConfig = collectionConfig || globalConfig\n\n const entityHasLockingEnabled =\n entityConfig?.lockDocuments !== undefined ? entityConfig?.lockDocuments : true\n\n // Check if the locked-documents collection exists\n if (!req.payload.collections?.['payload-locked-documents']) {\n // If the collection doesn't exist, locking is not available\n return {\n isLocked: false,\n }\n }\n\n if (!entityHasLockingEnabled || !isEditing) {\n return {\n isLocked: false,\n }\n }\n\n const where: Where = {}\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof entityConfig.lockDocuments === 'object'\n ? entityConfig.lockDocuments.duration\n : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n if (globalConfig) {\n where.and = [\n {\n globalSlug: {\n equals: globalConfig.slug,\n },\n },\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ]\n } else {\n where.and = [\n {\n 'document.value': {\n equals: sanitizeID(id),\n },\n },\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ]\n }\n\n const { docs } = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n req,\n where,\n })\n\n if (docs.length > 0) {\n const currentEditor = docs[0].user?.value\n const lastUpdateTime = new Date(docs[0].updatedAt).getTime()\n\n if (extractID(currentEditor) !== req.user.id) {\n return {\n currentEditor,\n isLocked: true,\n lastUpdateTime,\n }\n }\n }\n\n return {\n isLocked: false,\n }\n}\n"],"mappings":"AAQA,SAASA,SAAS,QAAQ;AAE1B,SAASC,UAAU,QAAQ;AAgB3B,OAAO,MAAMC,WAAA,GAAc,MAAAA,CAAO;EAChCC,EAAE;EACFC,gBAAgB;EAChBC,YAAY;EACZC,SAAS;EACTC;AAAG,CACE;EACL,MAAMC,YAAA,GAAeJ,gBAAA,IAAoBC,YAAA;EAEzC,MAAMI,uBAAA,GACJD,YAAA,EAAcE,aAAA,KAAkBC,SAAA,GAAYH,YAAA,EAAcE,aAAA,GAAgB;EAE5E;EACA,IAAI,CAACH,GAAA,CAAIK,OAAO,CAACC,WAAW,GAAG,2BAA2B,EAAE;IAC1D;IACA,OAAO;MACLC,QAAA,EAAU;IACZ;EACF;EAEA,IAAI,CAACL,uBAAA,IAA2B,CAACH,SAAA,EAAW;IAC1C,OAAO;MACLQ,QAAA,EAAU;IACZ;EACF;EAEA,MAAMC,KAAA,GAAe,CAAC;EAEtB,MAAMC,mBAAA,GAAsB,IAAI;AAAA;EAChC,MAAMC,YAAA,GACJ,OAAOT,YAAA,CAAaE,aAAa,KAAK,WAClCF,YAAA,CAAaE,aAAa,CAACQ,QAAQ,GACnCF,mBAAA;EACN,MAAMG,0BAAA,GAA6BF,YAAA,GAAe;EAElD,MAAMG,GAAA,GAAM,IAAIC,IAAA,GAAOC,OAAO;EAE9B,IAAIjB,YAAA,EAAc;IAChBU,KAAA,CAAMQ,GAAG,GAAG,CACV;MACEC,UAAA,EAAY;QACVC,MAAA,EAAQpB,YAAA,CAAaqB;MACvB;IACF,GACA;MACEC,SAAA,EAAW;QACTC,YAAA,EAAc,IAAIP,IAAA,CAAKD,GAAA,GAAMD,0BAAA;MAC/B;IACF,EACD;EACH,OAAO;IACLJ,KAAA,CAAMQ,GAAG,GAAG,CACV;MACE,kBAAkB;QAChBE,MAAA,EAAQxB,UAAA,CAAWE,EAAA;MACrB;IACF,GACA;MACE,uBAAuB;QACrBsB,MAAA,EAAQrB,gBAAA,CAAiBsB;MAC3B;IACF,GACA;MACEC,SAAA,EAAW;QACTC,YAAA,EAAc,IAAIP,IAAA,CAAKD,GAAA,GAAMD,0BAAA;MAC/B;IACF,EACD;EACH;EAEA,MAAM;IAAEU;EAAI,CAAE,GAAG,MAAMtB,GAAA,CAAIK,OAAO,CAACkB,IAAI,CAAC;IACtCC,UAAA,EAAY;IACZC,KAAA,EAAO;IACPC,cAAA,EAAgB;IAChB1B,GAAA;IACAQ;EACF;EAEA,IAAIc,IAAA,CAAKK,MAAM,GAAG,GAAG;IACnB,MAAMC,aAAA,GAAgBN,IAAI,CAAC,EAAE,CAACO,IAAI,EAAEC,KAAA;IACpC,MAAMC,cAAA,GAAiB,IAAIjB,IAAA,CAAKQ,IAAI,CAAC,EAAE,CAACF,SAAS,EAAEL,OAAO;IAE1D,IAAItB,SAAA,CAAUmC,aAAA,MAAmB5B,GAAA,CAAI6B,IAAI,CAACjC,EAAE,EAAE;MAC5C,OAAO;QACLgC,aAAA;QACArB,QAAA,EAAU;QACVwB;MACF;IACF;EACF;EAEA,OAAO;IACLxB,QAAA,EAAU;EACZ;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getIsLocked.js","names":["extractID","sanitizeID","getIsLocked","id","collectionConfig","globalConfig","isEditing","req","entityConfig","entityHasLockingEnabled","lockDocuments","undefined","payload","collections","isLocked","where","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","and","globalSlug","equals","slug","updatedAt","greater_than","docs","find","collection","depth","overrideAccess","length","currentEditor","user","value","lastUpdateTime"],"sources":["../../src/utilities/getIsLocked.ts"],"sourcesContent":["import type {\n PayloadRequest,\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n User,\n Where,\n} from 'payload'\n\nimport { extractID } from 'payload/shared'\n\nimport { sanitizeID } from './sanitizeID.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n isEditing: boolean\n req: PayloadRequest\n}\n\ntype Result = Promise<{\n currentEditor?: User\n isLocked: boolean\n lastUpdateTime?: number\n}>\n\nexport const getIsLocked = async ({\n id,\n collectionConfig,\n globalConfig,\n isEditing,\n req,\n}: Args): Result => {\n const entityConfig = collectionConfig || globalConfig\n\n const entityHasLockingEnabled =\n entityConfig?.lockDocuments !== undefined ? entityConfig?.lockDocuments : true\n\n // Check if the locked-documents collection exists\n if (!req.payload.collections?.['payload-locked-documents']) {\n // If the collection doesn't exist, locking is not available\n return {\n isLocked: false,\n }\n }\n\n if (!entityHasLockingEnabled || !isEditing) {\n return {\n isLocked: false,\n }\n }\n\n const where: Where = {}\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof entityConfig.lockDocuments === 'object'\n ? entityConfig.lockDocuments.duration\n : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const now = new Date().getTime()\n\n if (globalConfig) {\n where.and = [\n {\n globalSlug: {\n equals: globalConfig.slug,\n },\n },\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ]\n } else {\n where.and = [\n {\n 'document.value': {\n equals: sanitizeID(id),\n },\n },\n {\n 'document.relationTo': {\n equals: collectionConfig.slug,\n },\n },\n {\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds),\n },\n },\n ]\n }\n\n const { docs } = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n req,\n where,\n })\n\n if (docs.length > 0) {\n const currentEditor = docs[0].user?.value\n const lastUpdateTime = new Date(docs[0].updatedAt).getTime()\n\n if (extractID(currentEditor) !== req.user.id) {\n return {\n currentEditor,\n isLocked: true,\n lastUpdateTime,\n }\n }\n }\n\n return {\n isLocked: false,\n }\n}\n"],"mappings":"AAQA,SAASA,SAAS,QAAQ;AAE1B,SAASC,UAAU,QAAQ;AAgB3B,OAAO,MAAMC,WAAA,GAAc,MAAAA,CAAO;EAChCC,EAAE;EACFC,gBAAgB;EAChBC,YAAY;EACZC,SAAS;EACTC;AAAG,CACE;EACL,MAAMC,YAAA,GAAeJ,gBAAA,IAAoBC,YAAA;EAEzC,MAAMI,uBAAA,GACJD,YAAA,EAAcE,aAAA,KAAkBC,SAAA,GAAYH,YAAA,EAAcE,aAAA,GAAgB;EAE5E;EACA,IAAI,CAACH,GAAA,CAAIK,OAAO,CAACC,WAAW,GAAG,2BAA2B,EAAE;IAC1D;IACA,OAAO;MACLC,QAAA,EAAU;IACZ;EACF;EAEA,IAAI,CAACL,uBAAA,IAA2B,CAACH,SAAA,EAAW;IAC1C,OAAO;MACLQ,QAAA,EAAU;IACZ;EACF;EAEA,MAAMC,KAAA,GAAe,CAAC;EAEtB,MAAMC,mBAAA,GAAsB,IAAI;AAAA;EAChC,MAAMC,YAAA,GACJ,OAAOT,YAAA,CAAaE,aAAa,KAAK,WAClCF,YAAA,CAAaE,aAAa,CAACQ,QAAQ,GACnCF,mBAAA;EACN,MAAMG,0BAAA,GAA6BF,YAAA,GAAe;EAElD,MAAMG,GAAA,GAAM,IAAIC,IAAA,GAAOC,OAAO;EAE9B,IAAIjB,YAAA,EAAc;IAChBU,KAAA,CAAMQ,GAAG,GAAG,CACV;MACEC,UAAA,EAAY;QACVC,MAAA,EAAQpB,YAAA,CAAaqB;MACvB;IACF,GACA;MACEC,SAAA,EAAW;QACTC,YAAA,EAAc,IAAIP,IAAA,CAAKD,GAAA,GAAMD,0BAAA;MAC/B;IACF,EACD;EACH,OAAO;IACLJ,KAAA,CAAMQ,GAAG,GAAG,CACV;MACE,kBAAkB;QAChBE,MAAA,EAAQxB,UAAA,CAAWE,EAAA;MACrB;IACF,GACA;MACE,uBAAuB;QACrBsB,MAAA,EAAQrB,gBAAA,CAAiBsB;MAC3B;IACF,GACA;MACEC,SAAA,EAAW;QACTC,YAAA,EAAc,IAAIP,IAAA,CAAKD,GAAA,GAAMD,0BAAA;MAC/B;IACF,EACD;EACH;EAEA,MAAM;IAAEU;EAAI,CAAE,GAAG,MAAMtB,GAAA,CAAIK,OAAO,CAACkB,IAAI,CAAC;IACtCC,UAAA,EAAY;IACZC,KAAA,EAAO;IACPC,cAAA,EAAgB;IAChB1B,GAAA;IACAQ;EACF;EAEA,IAAIc,IAAA,CAAKK,MAAM,GAAG,GAAG;IACnB,MAAMC,aAAA,GAAgBN,IAAI,CAAC,EAAE,CAACO,IAAI,EAAEC,KAAA;IACpC,MAAMC,cAAA,GAAiB,IAAIjB,IAAA,CAAKQ,IAAI,CAAC,EAAE,CAACF,SAAS,EAAEL,OAAO;IAE1D,IAAItB,SAAA,CAAUmC,aAAA,MAAmB5B,GAAA,CAAI6B,IAAI,CAACjC,EAAE,EAAE;MAC5C,OAAO;QACLgC,aAAA;QACArB,QAAA,EAAU;QACVwB;MACF;IACF;EACF;EAEA,OAAO;IACLxB,QAAA,EAAU;EACZ;AACF","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Payload, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, TypedUser } from 'payload';
1
+ import type { Payload, SanitizedCollectionConfig, SanitizedDocumentPermissions, SanitizedGlobalConfig, User } from 'payload';
2
2
  type Args = {
3
3
  collectionConfig?: SanitizedCollectionConfig;
4
4
  /**
@@ -13,7 +13,7 @@ type Args = {
13
13
  id?: number | string;
14
14
  locale?: string;
15
15
  payload: Payload;
16
- user: TypedUser;
16
+ user: User;
17
17
  };
18
18
  type Result = Promise<{
19
19
  hasPublishedDoc: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../src/utilities/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,SAAS,EACV,MAAM,SAAS,CAAA;AAQhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAKF,eAAO,MAAM,WAAW,GAAU,4FAS/B,IAAI,KAAG,MAyPT,CAAA"}
1
+ {"version":3,"file":"getVersions.d.ts","sourceRoot":"","sources":["../../src/utilities/getVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,yBAAyB,EACzB,4BAA4B,EAC5B,qBAAqB,EACrB,IAAI,EACL,MAAM,SAAS,CAAA;AAQhB,KAAK,IAAI,GAAG;IACV,gBAAgB,CAAC,EAAE,yBAAyB,CAAA;IAC5C;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,cAAc,EAAE,4BAA4B,CAAA;IAC5C,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,KAAK,MAAM,GAAG,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAA;IACxB,4BAA4B,EAAE,OAAO,CAAA;IACrC,uBAAuB,EAAE,MAAM,CAAA;IAC/B,YAAY,EAAE,MAAM,CAAA;CACrB,CAAC,CAAA;AAKF,eAAO,MAAM,WAAW,GAAU,4FAS/B,IAAI,KAAG,MAoPT,CAAA"}
@@ -27,11 +27,8 @@ export const getVersions = async ({
27
27
  const localizedDraftsEnabled = hasDraftsEnabled(entityConfig) && typeof payload.config.localization === 'object' && hasLocalizedFields;
28
28
  const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions);
29
29
  if (!shouldFetchVersions) {
30
- // Without readVersions permission, determine published status from the
31
- // `_status` field. A missing doc (e.g. the create view, before the first
32
- // save) has no published version — guard against `undefined !== 'draft'`
33
- // resolving to `true` and reporting a brand-new draft as published.
34
- const hasPublishedDoc = doc ? localizedDraftsEnabled ? doc._status === 'published' : doc._status !== 'draft' : false;
30
+ // Without readVersions permission, determine published status from the _status field
31
+ const hasPublishedDoc = localizedDraftsEnabled ? doc?._status === 'published' : doc?._status !== 'draft';
35
32
  return {
36
33
  hasPublishedDoc,
37
34
  mostRecentVersionIsAutosaved,
@@ -1 +1 @@
1
- {"version":3,"file":"getVersions.js","names":["combineQueries","extractAccessFromPermission","hasAutosaveEnabled","hasDraftsEnabled","sanitizeID","traverseForLocalizedFields","getVersions","id","idArg","collectionConfig","doc","docPermissions","globalConfig","locale","payload","user","publishedDoc","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","hasLocalizedFields","fields","localizedDraftsEnabled","config","localization","shouldFetchVersions","Boolean","readVersions","_status","find","collection","slug","depth","limit","undefined","pagination","select","updatedAt","where","and","equals","docs","parent","mostRecentVersion","findVersions","autosave","totalDocs","countVersions","greater_than","countVersionsWhere","findGlobal","findGlobalVersions","countGlobalVersions","global"],"sources":["../../src/utilities/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n TypedUser,\n} from 'payload'\n\nimport { combineQueries, extractAccessFromPermission } from 'payload'\nimport { hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\n\nimport { sanitizeID } from './sanitizeID.js'\nimport { traverseForLocalizedFields } from './traverseForLocalizedFields.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n /**\n * Optional - performance optimization.\n * If a document has been fetched before fetching versions, pass it here.\n * If this document is set to published, we can skip the query to find out if a published document exists,\n * as the passed in document is proof of its existence.\n */\n doc?: Record<string, any>\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: TypedUser\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\n// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedDoc\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n const hasLocalizedFields = traverseForLocalizedFields(entityConfig.fields)\n const localizedDraftsEnabled =\n hasDraftsEnabled(entityConfig) &&\n typeof payload.config.localization === 'object' &&\n hasLocalizedFields\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n // Without readVersions permission, determine published status from the\n // `_status` field. A missing doc (e.g. the create view, before the first\n // save) has no published version — guard against `undefined !== 'draft'`\n // resolving to `true` and reporting a brand-new draft as published.\n const hasPublishedDoc = doc\n ? localizedDraftsEnabled\n ? doc._status === 'published'\n : doc._status !== 'draft'\n : false\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (hasDraftsEnabled(collectionConfig)) {\n // Find out if a published document exists\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = (\n await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale: locale || undefined,\n pagination: false,\n select: {\n updatedAt: true,\n },\n user,\n where: {\n and: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n )?.docs?.[0]\n }\n\n if (publishedDoc) {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(collectionConfig)) {\n const where: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n where: combineQueries(where, extractAccessFromPermission(docPermissions.readVersions)),\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n const countVersionsWhere: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n countVersionsWhere,\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n\n if (globalConfig) {\n // Find out if a published document exists\n if (hasDraftsEnabled(globalConfig)) {\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n select: {\n updatedAt: true,\n },\n user,\n })\n }\n\n if (publishedDoc?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(globalConfig)) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getVersions.js","names":["combineQueries","extractAccessFromPermission","hasAutosaveEnabled","hasDraftsEnabled","sanitizeID","traverseForLocalizedFields","getVersions","id","idArg","collectionConfig","doc","docPermissions","globalConfig","locale","payload","user","publishedDoc","hasPublishedDoc","mostRecentVersionIsAutosaved","unpublishedVersionCount","versionCount","entityConfig","versionsConfig","versions","hasLocalizedFields","fields","localizedDraftsEnabled","config","localization","shouldFetchVersions","Boolean","readVersions","_status","find","collection","slug","depth","limit","undefined","pagination","select","updatedAt","where","and","equals","docs","parent","mostRecentVersion","findVersions","autosave","totalDocs","countVersions","greater_than","countVersionsWhere","findGlobal","findGlobalVersions","countGlobalVersions","global"],"sources":["../../src/utilities/getVersions.ts"],"sourcesContent":["import type {\n Payload,\n SanitizedCollectionConfig,\n SanitizedDocumentPermissions,\n SanitizedGlobalConfig,\n User,\n} from 'payload'\n\nimport { combineQueries, extractAccessFromPermission } from 'payload'\nimport { hasAutosaveEnabled, hasDraftsEnabled } from 'payload/shared'\n\nimport { sanitizeID } from './sanitizeID.js'\nimport { traverseForLocalizedFields } from './traverseForLocalizedFields.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n /**\n * Optional - performance optimization.\n * If a document has been fetched before fetching versions, pass it here.\n * If this document is set to published, we can skip the query to find out if a published document exists,\n * as the passed in document is proof of its existence.\n */\n doc?: Record<string, any>\n docPermissions: SanitizedDocumentPermissions\n globalConfig?: SanitizedGlobalConfig\n id?: number | string\n locale?: string\n payload: Payload\n user: User\n}\n\ntype Result = Promise<{\n hasPublishedDoc: boolean\n mostRecentVersionIsAutosaved: boolean\n unpublishedVersionCount: number\n versionCount: number\n}>\n\n// TODO: in the future, we can parallelize some of these queries\n// this will speed up the API by ~30-100ms or so\n// Note from the future: I have attempted parallelizing these queries, but it made this function almost 2x slower.\nexport const getVersions = async ({\n id: idArg,\n collectionConfig,\n doc,\n docPermissions,\n globalConfig,\n locale,\n payload,\n user,\n}: Args): Result => {\n const id = sanitizeID(idArg)\n let publishedDoc\n let hasPublishedDoc = false\n let mostRecentVersionIsAutosaved = false\n let unpublishedVersionCount = 0\n let versionCount = 0\n\n const entityConfig = collectionConfig || globalConfig\n const versionsConfig = entityConfig?.versions\n const hasLocalizedFields = traverseForLocalizedFields(entityConfig.fields)\n const localizedDraftsEnabled =\n hasDraftsEnabled(entityConfig) &&\n typeof payload.config.localization === 'object' &&\n hasLocalizedFields\n\n const shouldFetchVersions = Boolean(versionsConfig && docPermissions?.readVersions)\n\n if (!shouldFetchVersions) {\n // Without readVersions permission, determine published status from the _status field\n const hasPublishedDoc = localizedDraftsEnabled\n ? doc?._status === 'published'\n : doc?._status !== 'draft'\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (collectionConfig) {\n if (!id) {\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n }\n\n if (hasDraftsEnabled(collectionConfig)) {\n // Find out if a published document exists\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = (\n await payload.find({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale: locale || undefined,\n pagination: false,\n select: {\n updatedAt: true,\n },\n user,\n where: {\n and: [\n {\n _status: {\n equals: 'published',\n },\n },\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n )?.docs?.[0]\n }\n\n if (publishedDoc) {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(collectionConfig)) {\n const where: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n const mostRecentVersion = await payload.findVersions({\n collection: collectionConfig.slug,\n depth: 0,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n where: combineQueries(where, extractAccessFromPermission(docPermissions.readVersions)),\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n const countVersionsWhere: Record<string, any> = {\n and: [\n {\n parent: {\n equals: id,\n },\n },\n ],\n }\n\n ;({ totalDocs: versionCount } = await payload.countVersions({\n collection: collectionConfig.slug,\n locale,\n user,\n where: combineQueries(\n countVersionsWhere,\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n\n if (globalConfig) {\n // Find out if a published document exists\n if (hasDraftsEnabled(globalConfig)) {\n if (doc?._status === 'published') {\n publishedDoc = doc\n } else {\n publishedDoc = await payload.findGlobal({\n slug: globalConfig.slug,\n depth: 0,\n locale,\n select: {\n updatedAt: true,\n },\n user,\n })\n }\n\n if (publishedDoc?._status === 'published') {\n hasPublishedDoc = true\n }\n\n if (hasAutosaveEnabled(globalConfig)) {\n const mostRecentVersion = await payload.findGlobalVersions({\n slug: globalConfig.slug,\n limit: 1,\n locale,\n select: {\n autosave: true,\n },\n user,\n })\n\n if (\n mostRecentVersion.docs[0] &&\n 'autosave' in mostRecentVersion.docs[0] &&\n mostRecentVersion.docs[0].autosave\n ) {\n mostRecentVersionIsAutosaved = true\n }\n }\n\n if (publishedDoc?.updatedAt) {\n ;({ totalDocs: unpublishedVersionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n where: combineQueries(\n {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n {\n updatedAt: {\n greater_than: publishedDoc.updatedAt,\n },\n },\n ],\n },\n extractAccessFromPermission(docPermissions.readVersions),\n ),\n }))\n }\n }\n\n ;({ totalDocs: versionCount } = await payload.countGlobalVersions({\n global: globalConfig.slug,\n locale,\n user,\n }))\n }\n\n return {\n hasPublishedDoc,\n mostRecentVersionIsAutosaved,\n unpublishedVersionCount,\n versionCount,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { TypedUser } from 'payload';
1
+ import type { User } from 'payload';
2
2
  type Args = {
3
3
  config: {
4
4
  admin: {
@@ -15,7 +15,7 @@ type Args = {
15
15
  searchParams: {
16
16
  [key: string]: string | string[];
17
17
  };
18
- user?: TypedUser;
18
+ user?: User;
19
19
  };
20
20
  /** Builds the redirect URL for unauthenticated or unauthorized admin access. */
21
21
  export declare const handleAuthRedirect: ({ config, route, searchParams, user }: Args) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../src/utilities/handleAuthRedirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAKxC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE;QACN,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAA;gBACb,YAAY,EAAE,MAAM,CAAA;aACrB,CAAA;SACF,CAAA;QACD,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;KACF,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;IAClD,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,GAAI,uCAAuC,IAAI,KAAG,MAkChF,CAAA"}
1
+ {"version":3,"file":"handleAuthRedirect.d.ts","sourceRoot":"","sources":["../../src/utilities/handleAuthRedirect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAKnC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE;QACN,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAA;gBACb,YAAY,EAAE,MAAM,CAAA;aACrB,CAAA;SACF,CAAA;QACD,MAAM,EAAE;YACN,KAAK,EAAE,MAAM,CAAA;SACd,CAAA;KACF,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAA;IAClD,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,CAAA;AAED,gFAAgF;AAChF,eAAO,MAAM,kBAAkB,GAAI,uCAAuC,IAAI,KAAG,MAkChF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","qs","handleAuthRedirect","config","route","searchParams","user","admin","routes","login","loginRouteFromConfig","unauthorized","unauthorizedRoute","adminRoute","redirect","redirectRoute","Object","keys","length","stringify","addQueryPrefix","redirectTo","path","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../src/utilities/handleAuthRedirect.ts"],"sourcesContent":["import type { TypedUser } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\n\ntype Args = {\n config: {\n admin: {\n routes: {\n login: string\n unauthorized: string\n }\n }\n routes: {\n admin: string\n }\n }\n route: string\n searchParams: { [key: string]: string | string[] }\n user?: TypedUser\n}\n\n/** Builds the redirect URL for unauthenticated or unauthorized admin access. */\nexport const handleAuthRedirect = ({ config, route, searchParams, user }: Args): string => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig, unauthorized: unauthorizedRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (searchParams && 'redirect' in searchParams) {\n delete searchParams.redirect\n }\n\n const redirectRoute =\n (route !== adminRoute ? route : '') +\n (Object.keys(searchParams ?? {}).length > 0\n ? `${qs.stringify(searchParams, { addQueryPrefix: true })}`\n : '')\n\n const redirectTo = formatAdminURL({\n adminRoute,\n path: (user ? unauthorizedRoute : loginRouteFromConfig) as `/${string}`,\n })\n\n const parsedLoginRouteSearchParams = qs.parse(redirectTo.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${qs.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n return `${redirectTo.split('?', 1)[0]}${searchParamsWithRedirect}`\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AAmBpB;AACA,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAI,CAAQ;EAC5E,MAAM;IACJC,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,KAAA,EAAOC,oBAAoB;QAAEC,YAAA,EAAcC;MAAiB;IAAE,CACzE;IACDJ,MAAA,EAAQ;MAAED,KAAA,EAAOM;IAAU;EAAE,CAC9B,GAAGV,MAAA;EAEJ,IAAIE,YAAA,IAAgB,cAAcA,YAAA,EAAc;IAC9C,OAAOA,YAAA,CAAaS,QAAQ;EAC9B;EAEA,MAAMC,aAAA,GACJ,CAACX,KAAA,KAAUS,UAAA,GAAaT,KAAA,GAAQ,EAAC,KAChCY,MAAA,CAAOC,IAAI,CAACZ,YAAA,IAAgB,CAAC,GAAGa,MAAM,GAAG,IACtC,GAAGjB,EAAA,CAAGkB,SAAS,CAACd,YAAA,EAAc;IAAEe,cAAA,EAAgB;EAAK,IAAI,GACzD,EAAC;EAEP,MAAMC,UAAA,GAAarB,cAAA,CAAe;IAChCa,UAAA;IACAS,IAAA,EAAOhB,IAAA,GAAOM,iBAAA,GAAoBF;EACpC;EAEA,MAAMa,4BAAA,GAA+BtB,EAAA,CAAGuB,KAAK,CAACH,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;EAE1E,MAAMC,wBAAA,GAA2B,GAAGzB,EAAA,CAAGkB,SAAS,CAC9C;IACE,GAAGI,4BAA4B;IAC/B,IAAIR,aAAA,GAAgB;MAAED,QAAA,EAAUC;IAAc,IAAI,CAAC,CAAC;EACtD,GACA;IAAEK,cAAA,EAAgB;EAAK,IACtB;EAEH,OAAO,GAAGC,UAAA,CAAWI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,GAAGC,wBAAA,EAA0B;AACpE","ignoreList":[]}
1
+ {"version":3,"file":"handleAuthRedirect.js","names":["formatAdminURL","qs","handleAuthRedirect","config","route","searchParams","user","admin","routes","login","loginRouteFromConfig","unauthorized","unauthorizedRoute","adminRoute","redirect","redirectRoute","Object","keys","length","stringify","addQueryPrefix","redirectTo","path","parsedLoginRouteSearchParams","parse","split","searchParamsWithRedirect"],"sources":["../../src/utilities/handleAuthRedirect.ts"],"sourcesContent":["import type { User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\n\ntype Args = {\n config: {\n admin: {\n routes: {\n login: string\n unauthorized: string\n }\n }\n routes: {\n admin: string\n }\n }\n route: string\n searchParams: { [key: string]: string | string[] }\n user?: User\n}\n\n/** Builds the redirect URL for unauthenticated or unauthorized admin access. */\nexport const handleAuthRedirect = ({ config, route, searchParams, user }: Args): string => {\n const {\n admin: {\n routes: { login: loginRouteFromConfig, unauthorized: unauthorizedRoute },\n },\n routes: { admin: adminRoute },\n } = config\n\n if (searchParams && 'redirect' in searchParams) {\n delete searchParams.redirect\n }\n\n const redirectRoute =\n (route !== adminRoute ? route : '') +\n (Object.keys(searchParams ?? {}).length > 0\n ? `${qs.stringify(searchParams, { addQueryPrefix: true })}`\n : '')\n\n const redirectTo = formatAdminURL({\n adminRoute,\n path: (user ? unauthorizedRoute : loginRouteFromConfig) as `/${string}`,\n })\n\n const parsedLoginRouteSearchParams = qs.parse(redirectTo.split('?')[1] ?? '')\n\n const searchParamsWithRedirect = `${qs.stringify(\n {\n ...parsedLoginRouteSearchParams,\n ...(redirectRoute ? { redirect: redirectRoute } : {}),\n },\n { addQueryPrefix: true },\n )}`\n\n return `${redirectTo.split('?', 1)[0]}${searchParamsWithRedirect}`\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAC/B,YAAYC,EAAA,MAAQ;AAmBpB;AACA,OAAO,MAAMC,kBAAA,GAAqBA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAI,CAAQ;EAC5E,MAAM;IACJC,KAAA,EAAO;MACLC,MAAA,EAAQ;QAAEC,KAAA,EAAOC,oBAAoB;QAAEC,YAAA,EAAcC;MAAiB;IAAE,CACzE;IACDJ,MAAA,EAAQ;MAAED,KAAA,EAAOM;IAAU;EAAE,CAC9B,GAAGV,MAAA;EAEJ,IAAIE,YAAA,IAAgB,cAAcA,YAAA,EAAc;IAC9C,OAAOA,YAAA,CAAaS,QAAQ;EAC9B;EAEA,MAAMC,aAAA,GACJ,CAACX,KAAA,KAAUS,UAAA,GAAaT,KAAA,GAAQ,EAAC,KAChCY,MAAA,CAAOC,IAAI,CAACZ,YAAA,IAAgB,CAAC,GAAGa,MAAM,GAAG,IACtC,GAAGjB,EAAA,CAAGkB,SAAS,CAACd,YAAA,EAAc;IAAEe,cAAA,EAAgB;EAAK,IAAI,GACzD,EAAC;EAEP,MAAMC,UAAA,GAAarB,cAAA,CAAe;IAChCa,UAAA;IACAS,IAAA,EAAOhB,IAAA,GAAOM,iBAAA,GAAoBF;EACpC;EAEA,MAAMa,4BAAA,GAA+BtB,EAAA,CAAGuB,KAAK,CAACH,UAAA,CAAWI,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI;EAE1E,MAAMC,wBAAA,GAA2B,GAAGzB,EAAA,CAAGkB,SAAS,CAC9C;IACE,GAAGI,4BAA4B;IAC/B,IAAIR,aAAA,GAAgB;MAAED,QAAA,EAAUC;IAAc,IAAI,CAAC,CAAC;EACtD,GACA;IAAEK,cAAA,EAAgB;EAAK,IACtB;EAEH,OAAO,GAAGC,UAAA,CAAWI,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,GAAGC,wBAAA,EAA0B;AACpE","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { PayloadRequest, TypedUser } from 'payload';
1
+ import type { PayloadRequest, User } from 'payload';
2
2
  type Args = {
3
3
  collectionSlug?: string;
4
4
  globalSlug?: string;
@@ -9,7 +9,7 @@ type Args = {
9
9
  type Result = {
10
10
  isLocked: boolean;
11
11
  lastEditedAt: string;
12
- user: TypedUser;
12
+ user: User;
13
13
  };
14
14
  export declare const handleFormStateLocking: ({ id, collectionSlug, globalSlug, req, updateLastEdited, }: Args) => Promise<Result>;
15
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormStateLocking.d.ts","sourceRoot":"","sources":["../../src/utilities/handleFormStateLocking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExD,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,SAAS,CAAA;CAChB,CAAA;AAID,eAAO,MAAM,sBAAsB,GAAU,4DAM1C,IAAI,KAAG,OAAO,CAAC,MAAM,CAsIvB,CAAA"}
1
+ {"version":3,"file":"handleFormStateLocking.d.ts","sourceRoot":"","sources":["../../src/utilities/handleFormStateLocking.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnD,KAAK,IAAI,GAAG;IACV,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAED,KAAK,MAAM,GAAG;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAID,eAAO,MAAM,sBAAsB,GAAU,4DAM1C,IAAI,KAAG,OAAO,CAAC,MAAM,CAsIvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"handleFormStateLocking.js","names":["lockDurationDefault","handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","payload","collections","lockedDocumentQuery","and","equals","lockDocumentsProp","config","lockDocuments","globals","find","g","slug","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","overrideAccess","pagination","user","where","docs","length","isLocked","lastEditedAt","value","lockOwnerID","db","updateOne","data","returning","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, TypedUser } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: TypedUser\n}\n\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n // Check if the locked-documents collection exists\n if (!req.payload.collections?.['payload-locked-documents']) {\n // If the collection doesn't exist, locking is not available\n return result\n }\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDocumentsProp = collectionSlug\n ? req.payload.collections?.[collectionSlug]?.config.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n user: req.user,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerID =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerID === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n returning: false,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n returning: false,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"handleFormStateLocking.js","names":["lockDurationDefault","handleFormStateLocking","id","collectionSlug","globalSlug","req","updateLastEdited","result","payload","collections","lockedDocumentQuery","and","equals","lockDocumentsProp","config","lockDocuments","globals","find","g","slug","lockDuration","duration","lockDurationInMilliseconds","now","Date","getTime","push","updatedAt","greater_than","toISOString","lockedDocument","collection","depth","limit","overrideAccess","pagination","user","where","docs","length","isLocked","lastEditedAt","value","lockOwnerID","db","updateOne","data","returning","deleteExpiredLocksQuery","less_than","deleteMany","create","document","relationTo","undefined"],"sources":["../../src/utilities/handleFormStateLocking.ts"],"sourcesContent":["import type { PayloadRequest, User } from 'payload'\n\ntype Args = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n req: PayloadRequest\n updateLastEdited?: boolean\n}\n\ntype Result = {\n isLocked: boolean\n lastEditedAt: string\n user: User\n}\n\nconst lockDurationDefault = 300 // Default 5 minutes in seconds\n\nexport const handleFormStateLocking = async ({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n}: Args): Promise<Result> => {\n let result: Result\n\n // Check if the locked-documents collection exists\n if (!req.payload.collections?.['payload-locked-documents']) {\n // If the collection doesn't exist, locking is not available\n return result\n }\n\n if (id || globalSlug) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n and: [{ globalSlug: { equals: globalSlug } }],\n }\n }\n\n const lockDocumentsProp = collectionSlug\n ? req.payload.collections?.[collectionSlug]?.config.lockDocuments\n : req.payload.config.globals.find((g) => g.slug === globalSlug)?.lockDocuments\n\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n const now = new Date().getTime()\n\n if (lockedDocumentQuery) {\n // Query where the lock is newer than the current time minus the lock duration\n lockedDocumentQuery.and.push({\n updatedAt: {\n greater_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n })\n\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n overrideAccess: false,\n pagination: false,\n user: req.user,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n result = {\n isLocked: true,\n lastEditedAt: lockedDocument.docs[0]?.updatedAt,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n const lockOwnerID =\n typeof lockedDocument.docs[0]?.user?.value === 'object'\n ? lockedDocument.docs[0]?.user?.value?.id\n : lockedDocument.docs[0]?.user?.value\n // Should only update doc if the incoming / current user is also the owner of the locked doc\n if (updateLastEdited && req.user && lockOwnerID === req.user.id) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n returning: false,\n })\n }\n } else {\n // If NO ACTIVE lock document exists, first delete any expired locks and then create a fresh lock\n // Where updatedAt is older than the duration that is specified in the config\n let deleteExpiredLocksQuery\n\n if (collectionSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n } else if (globalSlug) {\n deleteExpiredLocksQuery = {\n and: [\n { globalSlug: { equals: globalSlug } },\n {\n updatedAt: {\n less_than: new Date(now - lockDurationInMilliseconds).toISOString(),\n },\n },\n ],\n }\n }\n\n await req.payload.db.deleteMany({\n collection: 'payload-locked-documents',\n where: deleteExpiredLocksQuery,\n })\n\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: collectionSlug,\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: req.user.collection,\n value: req.user.id,\n },\n },\n returning: false,\n })\n\n result = {\n isLocked: true,\n lastEditedAt: new Date().toISOString(),\n user: req.user,\n }\n }\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -11,6 +11,7 @@ export declare const getLivePreviewConfig: ({ collectionConfig, config, globalCo
11
11
  name: string;
12
12
  width: number | string;
13
13
  }[];
14
+ openByDefault?: boolean;
14
15
  url?: ((args: {
15
16
  collectionConfig?: import("payload").SanitizedCollectionConfig;
16
17
  data: Record<string, any>;
@@ -1 +1 @@
1
- {"version":3,"file":"handleLivePreview.d.ts","sourceRoot":"","sources":["../../src/utilities/handleLivePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,GAAI,mEAKlC;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;CAC9B;;;;;;;;wBAsHktI,CAAC;;oBAAoF,CAAC;;;;;;;CAlHvyI,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,6CAIlC;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,KAAG,OAcH,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,+DAOrC;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,CAqDA,CAAA"}
1
+ {"version":3,"file":"handleLivePreview.d.ts","sourceRoot":"","sources":["../../src/utilities/handleLivePreview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,eAAe,EAChB,MAAM,SAAS,CAAA;AAEhB,eAAO,MAAM,oBAAoB,GAAI,mEAKlC;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,oBAAoB,EAAE,OAAO,CAAA;CAC9B;;;;;;;;;wBAsHwhJ,CAAC;;oBAAoF,CAAC;;;;;;;CAlH7mJ,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,GAAI,6CAIlC;IACD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,MAAM,EAAE,eAAe,CAAA;IACvB,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,KAAG,OAcH,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAU,+DAOrC;IACD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IACrC,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,CAqDA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"isURLAllowed.d.ts","sourceRoot":"","sources":["../../src/utilities/isURLAllowed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,WAAW,SAAS,KAAG,OA+BhE,CAAA"}
1
+ {"version":3,"file":"isURLAllowed.d.ts","sourceRoot":"","sources":["../../src/utilities/isURLAllowed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,EAAE,WAAW,SAAS,KAAG,OAqChE,CAAA"}
@@ -12,9 +12,15 @@ export const isURLAllowed = (url, allowList) => {
12
12
  return typeof value === 'string' && parsedUrl.protocol === `${value}:`;
13
13
  }
14
14
  if (key === 'pathname') {
15
- // Convert wildcards to a regex
16
- const regexPattern = value.replace(/\*\*/g, '.*') // Match any path
17
- .replace(/\*/g, '[^/]*') // Match any part of a path segment
15
+ // Translate a small glob syntax to a regex. The pattern is escaped
16
+ // first so that metacharacters in the configured value (e.g. `.`)
17
+ // match literally and cannot broaden what the allow-list accepts.
18
+ // Wildcards become `\*` once escaped, so they are restored afterwards
19
+ // — translating `**` before `*` is safe because the resulting `.*`
20
+ // no longer contains an escaped `\*` for the next replace to match.
21
+ const regexPattern = value.replace(/[\\^$*+?.()|[\]{}]/g, '\\$&') // Escape regex metacharacters
22
+ .replace(/\\\*\\\*/g, '.*') // `**` → match any path
23
+ .replace(/\\\*/g, '[^/]*') // `*` → match any part of a path segment
18
24
  ;
19
25
  const regex = new RegExp(`^${regexPattern}$`);
20
26
  return regex.test(parsedUrl.pathname);
@@ -1 +1 @@
1
- {"version":3,"file":"isURLAllowed.js","names":["isURLAllowed","url","allowList","parsedUrl","URL","some","allowItem","Object","entries","every","key","value","protocol","regexPattern","replace","regex","RegExp","test","pathname"],"sources":["../../src/utilities/isURLAllowed.ts"],"sourcesContent":["import type { AllowList } from 'payload'\n\nexport const isURLAllowed = (url: string, allowList: AllowList): boolean => {\n try {\n const parsedUrl = new URL(url)\n\n return allowList.some((allowItem) => {\n return Object.entries(allowItem).every(([key, value]) => {\n // Skip undefined or null values\n if (!value) {\n return true\n }\n // Compare protocol with colon\n if (key === 'protocol') {\n return typeof value === 'string' && parsedUrl.protocol === `${value}:`\n }\n\n if (key === 'pathname') {\n // Convert wildcards to a regex\n const regexPattern = value\n .replace(/\\*\\*/g, '.*') // Match any path\n .replace(/\\*/g, '[^/]*') // Match any part of a path segment\n const regex = new RegExp(`^${regexPattern}$`)\n return regex.test(parsedUrl.pathname)\n }\n\n // Default comparison for all other properties (hostname, port, search)\n return parsedUrl[key as keyof URL] === value\n })\n })\n } catch {\n return false // If the URL is invalid, deny by default\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,YAAA,GAAeA,CAACC,GAAA,EAAaC,SAAA;EACxC,IAAI;IACF,MAAMC,SAAA,GAAY,IAAIC,GAAA,CAAIH,GAAA;IAE1B,OAAOC,SAAA,CAAUG,IAAI,CAAEC,SAAA;MACrB,OAAOC,MAAA,CAAOC,OAAO,CAACF,SAAA,EAAWG,KAAK,CAAC,CAAC,CAACC,GAAA,EAAKC,KAAA,CAAM;QAClD;QACA,IAAI,CAACA,KAAA,EAAO;UACV,OAAO;QACT;QACA;QACA,IAAID,GAAA,KAAQ,YAAY;UACtB,OAAO,OAAOC,KAAA,KAAU,YAAYR,SAAA,CAAUS,QAAQ,KAAK,GAAGD,KAAA,GAAQ;QACxE;QAEA,IAAID,GAAA,KAAQ,YAAY;UACtB;UACA,MAAMG,YAAA,GAAeF,KAAA,CAClBG,OAAO,CAAC,SAAS,MAAM;UAAA,CACvBA,OAAO,CAAC,OAAO,SAAS;AAAA;UAC3B,MAAMC,KAAA,GAAQ,IAAIC,MAAA,CAAO,IAAIH,YAAA,GAAe;UAC5C,OAAOE,KAAA,CAAME,IAAI,CAACd,SAAA,CAAUe,QAAQ;QACtC;QAEA;QACA,OAAOf,SAAS,CAACO,GAAA,CAAiB,KAAKC,KAAA;MACzC;IACF;EACF,EAAE,MAAM;IACN,OAAO,MAAM;AAAA;EACf;AACF","ignoreList":[]}
1
+ {"version":3,"file":"isURLAllowed.js","names":["isURLAllowed","url","allowList","parsedUrl","URL","some","allowItem","Object","entries","every","key","value","protocol","regexPattern","replace","regex","RegExp","test","pathname"],"sources":["../../src/utilities/isURLAllowed.ts"],"sourcesContent":["import type { AllowList } from 'payload'\n\nexport const isURLAllowed = (url: string, allowList: AllowList): boolean => {\n try {\n const parsedUrl = new URL(url)\n\n return allowList.some((allowItem) => {\n return Object.entries(allowItem).every(([key, value]) => {\n // Skip undefined or null values\n if (!value) {\n return true\n }\n // Compare protocol with colon\n if (key === 'protocol') {\n return typeof value === 'string' && parsedUrl.protocol === `${value}:`\n }\n\n if (key === 'pathname') {\n // Translate a small glob syntax to a regex. The pattern is escaped\n // first so that metacharacters in the configured value (e.g. `.`)\n // match literally and cannot broaden what the allow-list accepts.\n // Wildcards become `\\*` once escaped, so they are restored afterwards\n // — translating `**` before `*` is safe because the resulting `.*`\n // no longer contains an escaped `\\*` for the next replace to match.\n const regexPattern = value\n .replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&') // Escape regex metacharacters\n .replace(/\\\\\\*\\\\\\*/g, '.*') // `**` → match any path\n .replace(/\\\\\\*/g, '[^/]*') // `*` → match any part of a path segment\n const regex = new RegExp(`^${regexPattern}$`)\n return regex.test(parsedUrl.pathname)\n }\n\n // Default comparison for all other properties (hostname, port, search)\n return parsedUrl[key as keyof URL] === value\n })\n })\n } catch {\n return false // If the URL is invalid, deny by default\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,YAAA,GAAeA,CAACC,GAAA,EAAaC,SAAA;EACxC,IAAI;IACF,MAAMC,SAAA,GAAY,IAAIC,GAAA,CAAIH,GAAA;IAE1B,OAAOC,SAAA,CAAUG,IAAI,CAAEC,SAAA;MACrB,OAAOC,MAAA,CAAOC,OAAO,CAACF,SAAA,EAAWG,KAAK,CAAC,CAAC,CAACC,GAAA,EAAKC,KAAA,CAAM;QAClD;QACA,IAAI,CAACA,KAAA,EAAO;UACV,OAAO;QACT;QACA;QACA,IAAID,GAAA,KAAQ,YAAY;UACtB,OAAO,OAAOC,KAAA,KAAU,YAAYR,SAAA,CAAUS,QAAQ,KAAK,GAAGD,KAAA,GAAQ;QACxE;QAEA,IAAID,GAAA,KAAQ,YAAY;UACtB;UACA;UACA;UACA;UACA;UACA;UACA,MAAMG,YAAA,GAAeF,KAAA,CAClBG,OAAO,CAAC,uBAAuB,QAAQ;UAAA,CACvCA,OAAO,CAAC,aAAa,MAAM;UAAA,CAC3BA,OAAO,CAAC,SAAS,SAAS;AAAA;UAC7B,MAAMC,KAAA,GAAQ,IAAIC,MAAA,CAAO,IAAIH,YAAA,GAAe;UAC5C,OAAOE,KAAA,CAAME,IAAI,CAACd,SAAA,CAAUe,QAAQ;QACtC;QAEA;QACA,OAAOf,SAAS,CAACO,GAAA,CAAiB,KAAKC,KAAA;MACzC;IACF;EACF,EAAE,MAAM;IACN,OAAO,MAAM;AAAA;EACf;AACF","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import type { RecentlyViewedItem, RecentlyViewedPreferences } from 'payload';
2
+ /**
3
+ * Maximum number of documents retained in the `recently-viewed` preference. The dashboard widget
4
+ * typically shows fewer; the extra entries act as a buffer once excluded collections are filtered.
5
+ */
6
+ export declare const recentlyViewedMaxItems = 20;
7
+ /**
8
+ * Returns a new preference value with `item` moved to the front, deduped by collection + id, and
9
+ * capped at `max`. Pure so it can be unit tested and reused as `upsertPreferences`' customMerge.
10
+ */
11
+ export declare const addRecentlyViewedItem: ({ existing, item, max, }: {
12
+ existing: RecentlyViewedPreferences | undefined;
13
+ item: RecentlyViewedItem;
14
+ max?: number;
15
+ }) => RecentlyViewedPreferences;
16
+ //# sourceMappingURL=recentlyViewed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recentlyViewed.d.ts","sourceRoot":"","sources":["../../src/utilities/recentlyViewed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAE5E;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAKxC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,GAAI,0BAInC;IACD,QAAQ,EAAE,yBAAyB,GAAG,SAAS,CAAA;IAC/C,IAAI,EAAE,kBAAkB,CAAA;IACxB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,KAAG,yBASH,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Maximum number of documents retained in the `recently-viewed` preference. The dashboard widget
3
+ * typically shows fewer; the extra entries act as a buffer once excluded collections are filtered.
4
+ */export const recentlyViewedMaxItems = 20;
5
+ const isSameDocument = (a, b) => a.collectionSlug === b.collectionSlug && String(a.id) === String(b.id);
6
+ /**
7
+ * Returns a new preference value with `item` moved to the front, deduped by collection + id, and
8
+ * capped at `max`. Pure so it can be unit tested and reused as `upsertPreferences`' customMerge.
9
+ */
10
+ export const addRecentlyViewedItem = ({
11
+ existing,
12
+ item,
13
+ max = recentlyViewedMaxItems
14
+ }) => {
15
+ const previousItems = Array.isArray(existing?.items) ? existing.items : [];
16
+ const withoutDuplicate = previousItems.filter(existingItem => !isSameDocument(existingItem, item));
17
+ return {
18
+ items: [item, ...withoutDuplicate].slice(0, max)
19
+ };
20
+ };
21
+ //# sourceMappingURL=recentlyViewed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recentlyViewed.js","names":["recentlyViewedMaxItems","isSameDocument","a","b","collectionSlug","String","id","addRecentlyViewedItem","existing","item","max","previousItems","Array","isArray","items","withoutDuplicate","filter","existingItem","slice"],"sources":["../../src/utilities/recentlyViewed.ts"],"sourcesContent":["import type { RecentlyViewedItem, RecentlyViewedPreferences } from 'payload'\n\n/**\n * Maximum number of documents retained in the `recently-viewed` preference. The dashboard widget\n * typically shows fewer; the extra entries act as a buffer once excluded collections are filtered.\n */\nexport const recentlyViewedMaxItems = 20\n\nconst isSameDocument = (a: RecentlyViewedItem, b: RecentlyViewedItem) =>\n a.collectionSlug === b.collectionSlug && String(a.id) === String(b.id)\n\n/**\n * Returns a new preference value with `item` moved to the front, deduped by collection + id, and\n * capped at `max`. Pure so it can be unit tested and reused as `upsertPreferences`' customMerge.\n */\nexport const addRecentlyViewedItem = ({\n existing,\n item,\n max = recentlyViewedMaxItems,\n}: {\n existing: RecentlyViewedPreferences | undefined\n item: RecentlyViewedItem\n max?: number\n}): RecentlyViewedPreferences => {\n const previousItems = Array.isArray(existing?.items) ? existing.items : []\n const withoutDuplicate = previousItems.filter(\n (existingItem) => !isSameDocument(existingItem, item),\n )\n\n return {\n items: [item, ...withoutDuplicate].slice(0, max),\n }\n}\n"],"mappings":"AAEA;;;GAIA,OAAO,MAAMA,sBAAA,GAAyB;AAEtC,MAAMC,cAAA,GAAiBA,CAACC,CAAA,EAAuBC,CAAA,KAC7CD,CAAA,CAAEE,cAAc,KAAKD,CAAA,CAAEC,cAAc,IAAIC,MAAA,CAAOH,CAAA,CAAEI,EAAE,MAAMD,MAAA,CAAOF,CAAA,CAAEG,EAAE;AAEvE;;;;AAIA,OAAO,MAAMC,qBAAA,GAAwBA,CAAC;EACpCC,QAAQ;EACRC,IAAI;EACJC,GAAA,GAAMV;AAAsB,CAK7B;EACC,MAAMW,aAAA,GAAgBC,KAAA,CAAMC,OAAO,CAACL,QAAA,EAAUM,KAAA,IAASN,QAAA,CAASM,KAAK,GAAG,EAAE;EAC1E,MAAMC,gBAAA,GAAmBJ,aAAA,CAAcK,MAAM,CAC1CC,YAAA,IAAiB,CAAChB,cAAA,CAAegB,YAAA,EAAcR,IAAA;EAGlD,OAAO;IACLK,KAAA,EAAO,CAACL,IAAA,E,GAASM,gBAAA,CAAiB,CAACG,KAAK,CAAC,GAAGR,GAAA;EAC9C;AACF","ignoreList":[]}
@@ -0,0 +1,92 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { addRecentlyViewedItem, recentlyViewedMaxItems } from './recentlyViewed.js';
3
+ const item = (collectionSlug, id, viewedAt) => ({
4
+ collectionSlug,
5
+ id,
6
+ viewedAt
7
+ });
8
+ describe('addRecentlyViewedItem', () => {
9
+ it('should create the list when there are no existing preferences', () => {
10
+ const next = item('posts', 1, '2026-01-01T00:00:00.000Z');
11
+ const result = addRecentlyViewedItem({
12
+ existing: undefined,
13
+ item: next
14
+ });
15
+ expect(result.items).toEqual([next]);
16
+ });
17
+ it('should prepend the newly viewed document', () => {
18
+ const existing = {
19
+ items: [item('posts', 1, '2026-01-01T00:00:00.000Z')]
20
+ };
21
+ const next = item('pages', 2, '2026-01-02T00:00:00.000Z');
22
+ const result = addRecentlyViewedItem({
23
+ existing,
24
+ item: next
25
+ });
26
+ expect(result.items.map(i => i.id)).toEqual([2, 1]);
27
+ });
28
+ it('should move an already-viewed document to the front and refresh its timestamp', () => {
29
+ const existing = {
30
+ items: [item('pages', 2, '2026-01-02T00:00:00.000Z'), item('posts', 1, '2026-01-01T00:00:00.000Z')]
31
+ };
32
+ const next = item('posts', 1, '2026-01-03T00:00:00.000Z');
33
+ const result = addRecentlyViewedItem({
34
+ existing,
35
+ item: next
36
+ });
37
+ expect(result.items).toEqual([next, item('pages', 2, '2026-01-02T00:00:00.000Z')]);
38
+ });
39
+ it('should treat numeric and string ids consistently when deduping', () => {
40
+ const existing = {
41
+ items: [item('posts', 1, '2026-01-01T00:00:00.000Z')]
42
+ };
43
+ const next = item('posts', '1', '2026-01-02T00:00:00.000Z');
44
+ const result = addRecentlyViewedItem({
45
+ existing,
46
+ item: next
47
+ });
48
+ expect(result.items).toHaveLength(1);
49
+ expect(result.items[0]).toEqual(next);
50
+ });
51
+ it('should not dedupe documents with the same id across different collections', () => {
52
+ const existing = {
53
+ items: [item('posts', 1, '2026-01-01T00:00:00.000Z')]
54
+ };
55
+ const next = item('pages', 1, '2026-01-02T00:00:00.000Z');
56
+ const result = addRecentlyViewedItem({
57
+ existing,
58
+ item: next
59
+ });
60
+ expect(result.items).toHaveLength(2);
61
+ });
62
+ it('should cap the list at the provided max', () => {
63
+ const existing = {
64
+ items: Array.from({
65
+ length: 5
66
+ }, (_, index) => item('posts', index, `2026-01-0${index + 1}T00:00:00.000Z`))
67
+ };
68
+ const next = item('pages', 99, '2026-02-01T00:00:00.000Z');
69
+ const result = addRecentlyViewedItem({
70
+ existing,
71
+ item: next,
72
+ max: 3
73
+ });
74
+ expect(result.items).toHaveLength(3);
75
+ expect(result.items[0]).toEqual(next);
76
+ });
77
+ it('should default the cap to recentlyViewedMaxItems', () => {
78
+ const existing = {
79
+ items: Array.from({
80
+ length: recentlyViewedMaxItems
81
+ }, (_, index) => item('posts', index, '2026-01-01T00:00:00.000Z'))
82
+ };
83
+ const next = item('pages', 99, '2026-02-01T00:00:00.000Z');
84
+ const result = addRecentlyViewedItem({
85
+ existing,
86
+ item: next
87
+ });
88
+ expect(result.items).toHaveLength(recentlyViewedMaxItems);
89
+ expect(result.items[0]).toEqual(next);
90
+ });
91
+ });
92
+ //# sourceMappingURL=recentlyViewed.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recentlyViewed.spec.js","names":["describe","expect","it","addRecentlyViewedItem","recentlyViewedMaxItems","item","collectionSlug","id","viewedAt","next","result","existing","undefined","items","toEqual","map","i","toHaveLength","Array","from","length","_","index","max"],"sources":["../../src/utilities/recentlyViewed.spec.ts"],"sourcesContent":["import type { RecentlyViewedItem } from 'payload'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { addRecentlyViewedItem, recentlyViewedMaxItems } from './recentlyViewed.js'\n\nconst item = (\n collectionSlug: string,\n id: number | string,\n viewedAt: string,\n): RecentlyViewedItem => ({\n collectionSlug,\n id,\n viewedAt,\n})\n\ndescribe('addRecentlyViewedItem', () => {\n it('should create the list when there are no existing preferences', () => {\n const next = item('posts', 1, '2026-01-01T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing: undefined, item: next })\n\n expect(result.items).toEqual([next])\n })\n\n it('should prepend the newly viewed document', () => {\n const existing = { items: [item('posts', 1, '2026-01-01T00:00:00.000Z')] }\n const next = item('pages', 2, '2026-01-02T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next })\n\n expect(result.items.map((i) => i.id)).toEqual([2, 1])\n })\n\n it('should move an already-viewed document to the front and refresh its timestamp', () => {\n const existing = {\n items: [\n item('pages', 2, '2026-01-02T00:00:00.000Z'),\n item('posts', 1, '2026-01-01T00:00:00.000Z'),\n ],\n }\n const next = item('posts', 1, '2026-01-03T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next })\n\n expect(result.items).toEqual([next, item('pages', 2, '2026-01-02T00:00:00.000Z')])\n })\n\n it('should treat numeric and string ids consistently when deduping', () => {\n const existing = { items: [item('posts', 1, '2026-01-01T00:00:00.000Z')] }\n const next = item('posts', '1', '2026-01-02T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next })\n\n expect(result.items).toHaveLength(1)\n expect(result.items[0]).toEqual(next)\n })\n\n it('should not dedupe documents with the same id across different collections', () => {\n const existing = { items: [item('posts', 1, '2026-01-01T00:00:00.000Z')] }\n const next = item('pages', 1, '2026-01-02T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next })\n\n expect(result.items).toHaveLength(2)\n })\n\n it('should cap the list at the provided max', () => {\n const existing = {\n items: Array.from({ length: 5 }, (_, index) =>\n item('posts', index, `2026-01-0${index + 1}T00:00:00.000Z`),\n ),\n }\n const next = item('pages', 99, '2026-02-01T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next, max: 3 })\n\n expect(result.items).toHaveLength(3)\n expect(result.items[0]).toEqual(next)\n })\n\n it('should default the cap to recentlyViewedMaxItems', () => {\n const existing = {\n items: Array.from({ length: recentlyViewedMaxItems }, (_, index) =>\n item('posts', index, '2026-01-01T00:00:00.000Z'),\n ),\n }\n const next = item('pages', 99, '2026-02-01T00:00:00.000Z')\n\n const result = addRecentlyViewedItem({ existing, item: next })\n\n expect(result.items).toHaveLength(recentlyViewedMaxItems)\n expect(result.items[0]).toEqual(next)\n })\n})\n"],"mappings":"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","ignoreList":[]}
@@ -24,7 +24,7 @@ export const reduceFieldsToOptions = ({
24
24
  return reduced;
25
25
  }
26
26
  // IMPORTANT: We DON'T mutate field.name here because the field object is shared across
27
- // multiple components (WhereBuilder, GroupByBuilder, etc.). Mutating it would break
27
+ // multiple components (WhereBuilder, GroupBy, etc.). Mutating it would break
28
28
  // permission checks and cause issues in other components that need the field name.
29
29
  // Instead, we use a flag to determine whether to include the field name in the path.
30
30
  let shouldIgnoreFieldName = false;
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFieldsToOptions.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","fieldTypeConditions","getValidFieldOperators","createNestedClientFieldPath","combineFieldLabel","reduceFieldsToOptions","fieldPermissions","fields","i18n","labelPrefix","pathPrefix","pathPrefixFromArgs","reduce","reduced","field","virtual","shouldIgnoreFieldName","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","read","operatorKeys","Set","validOperators","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","fieldPath","formattedField","plainTextLabel"],"sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField, SanitizedFieldPermissions, SanitizedFieldsPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport {\n fieldTypeConditions,\n getValidFieldOperators,\n} from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fieldPermissions?: SanitizedFieldPermissions | SanitizedFieldsPermissions\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Transforms a fields schema into a flattened array of fields with labels and values.\n * Used in the `WhereBuilder` component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fieldPermissions,\n fields,\n i18n,\n labelPrefix,\n pathPrefix: pathPrefixFromArgs,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n let pathPrefix = pathPrefixFromArgs\n // Do not filter out `field.admin.disabled.filter` fields here, as these should still render as disabled if they appear in the URL query\n // Filter out `virtual: true` fields since they are regular virtuals and not backed by a DB field\n if (\n (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n ('virtual' in field && field.virtual === true)\n ) {\n return reduced\n }\n\n // IMPORTANT: We DON'T mutate field.name here because the field object is shared across\n // multiple components (WhereBuilder, GroupByBuilder, etc.). Mutating it would break\n // permission checks and cause issues in other components that need the field name.\n // Instead, we use a flag to determine whether to include the field name in the path.\n let shouldIgnoreFieldName = false\n\n // Handle virtual:string fields (virtual relationships, e.g. \"post.title\")\n if ('virtual' in field && typeof field.virtual === 'string') {\n pathPrefix = pathPrefix ? pathPrefix + '.' + field.virtual : field.virtual\n if (fieldAffectsData(field)) {\n // Mark that we should ignore the field name when constructing the field path\n shouldIgnoreFieldName = true\n }\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = tabHasName(tab)\n ? labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n : labelPrefix\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : tabHasName(tab) && tab.name\n ? fieldPermissions?.[tab.name]?.fields || fieldPermissions?.[tab.name]\n : fieldPermissions,\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypeConditions[field.type] === 'object') {\n if (\n fieldIsID(field) ||\n fieldPermissions === true ||\n fieldPermissions?.[field.name] === true ||\n fieldPermissions?.[field.name]?.read === true\n ) {\n const operatorKeys = new Set()\n\n const { validOperators } = getValidFieldOperators({\n field,\n })\n\n const operators = validOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n // For virtual fields, we use just the pathPrefix (the virtual path) without appending the field name\n // For regular fields, we use createNestedClientFieldPath which appends the field name to the path\n let fieldPath: string\n if (shouldIgnoreFieldName) {\n fieldPath = pathPrefix\n } else if (pathPrefix) {\n fieldPath = createNestedClientFieldPath(pathPrefix, field)\n } else {\n fieldPath = field.name\n }\n\n const formattedField: ReducedField = {\n fieldPath,\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n ...fieldTypeConditions[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n }\n return reduced\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"reduceFieldsToOptions.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","fieldTypeConditions","getValidFieldOperators","createNestedClientFieldPath","combineFieldLabel","reduceFieldsToOptions","fieldPermissions","fields","i18n","labelPrefix","pathPrefix","pathPrefixFromArgs","reduce","reduced","field","virtual","shouldIgnoreFieldName","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","read","operatorKeys","Set","validOperators","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","fieldPath","formattedField","plainTextLabel"],"sources":["../../src/utilities/reduceFieldsToOptions.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField, SanitizedFieldPermissions, SanitizedFieldsPermissions } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\n\nimport type { ReducedField } from '../elements/WhereBuilder/types.js'\n\nimport {\n fieldTypeConditions,\n getValidFieldOperators,\n} from '../elements/WhereBuilder/field-types.js'\nimport { createNestedClientFieldPath } from '../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from './combineFieldLabel.js'\n\ntype ReduceFieldOptionsArgs = {\n fieldPermissions?: SanitizedFieldPermissions | SanitizedFieldsPermissions\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Transforms a fields schema into a flattened array of fields with labels and values.\n * Used in the `WhereBuilder` component to render the fields in the dropdown.\n */\nexport const reduceFieldsToOptions = ({\n fieldPermissions,\n fields,\n i18n,\n labelPrefix,\n pathPrefix: pathPrefixFromArgs,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n let pathPrefix = pathPrefixFromArgs\n // Do not filter out `field.admin.disabled.filter` fields here, as these should still render as disabled if they appear in the URL query\n // Filter out `virtual: true` fields since they are regular virtuals and not backed by a DB field\n if (\n (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n ('virtual' in field && field.virtual === true)\n ) {\n return reduced\n }\n\n // IMPORTANT: We DON'T mutate field.name here because the field object is shared across\n // multiple components (WhereBuilder, GroupBy, etc.). Mutating it would break\n // permission checks and cause issues in other components that need the field name.\n // Instead, we use a flag to determine whether to include the field name in the path.\n let shouldIgnoreFieldName = false\n\n // Handle virtual:string fields (virtual relationships, e.g. \"post.title\")\n if ('virtual' in field && typeof field.virtual === 'string') {\n pathPrefix = pathPrefix ? pathPrefix + '.' + field.virtual : field.virtual\n if (fieldAffectsData(field)) {\n // Mark that we should ignore the field name when constructing the field path\n shouldIgnoreFieldName = true\n }\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = tabHasName(tab)\n ? labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n : labelPrefix\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : tabHasName(tab) && tab.name\n ? fieldPermissions?.[tab.name]?.fields || fieldPermissions?.[tab.name]\n : fieldPermissions,\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions,\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFieldsToOptions({\n fieldPermissions:\n typeof fieldPermissions === 'boolean'\n ? fieldPermissions\n : fieldPermissions?.[field.name]?.fields || fieldPermissions?.[field.name],\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypeConditions[field.type] === 'object') {\n if (\n fieldIsID(field) ||\n fieldPermissions === true ||\n fieldPermissions?.[field.name] === true ||\n fieldPermissions?.[field.name]?.read === true\n ) {\n const operatorKeys = new Set()\n\n const { validOperators } = getValidFieldOperators({\n field,\n })\n\n const operators = validOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n // For virtual fields, we use just the pathPrefix (the virtual path) without appending the field name\n // For regular fields, we use createNestedClientFieldPath which appends the field name to the path\n let fieldPath: string\n if (shouldIgnoreFieldName) {\n fieldPath = pathPrefix\n } else if (pathPrefix) {\n fieldPath = createNestedClientFieldPath(pathPrefix, field)\n } else {\n fieldPath = field.name\n }\n\n const formattedField: ReducedField = {\n fieldPath,\n label: formattedLabel,\n plainTextLabel: `${labelPrefix ? labelPrefix + ' > ' : ''}${localizedLabel}`,\n ...fieldTypeConditions[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n }\n return reduced\n }, [])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { Slugify } from 'payload/shared';
2
2
  import { type ServerFunction, type SlugifyServerFunctionArgs } from 'payload';
3
3
  /**
4
- * This server function is directly related to the {@link https://payloadcms.com/docs/fields/text#slug-field | Slug Field}.
4
+ * This server function is directly related to the {@link https://payloadcms.com/docs/fields/slug | Slug Field}.
5
5
  * This is a server function that is used to invoke the user's custom slugify function from the client.
6
6
  * This pattern is required, as there is no other way for us to pass their function across the client-server boundary.
7
7
  * - Not through props
@@ -1,7 +1,7 @@
1
1
  import { flattenAllFields, getFieldByPath, UnauthorizedError } from 'payload';
2
2
  import { slugify as defaultSlugify } from 'payload/shared';
3
3
  /**
4
- * This server function is directly related to the {@link https://payloadcms.com/docs/fields/text#slug-field | Slug Field}.
4
+ * This server function is directly related to the {@link https://payloadcms.com/docs/fields/slug | Slug Field}.
5
5
  * This is a server function that is used to invoke the user's custom slugify function from the client.
6
6
  * This pattern is required, as there is no other way for us to pass their function across the client-server boundary.
7
7
  * - Not through props