@payloadcms/ui 4.0.0-internal.f15737c → 4.0.0-internal.f2a04f7

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 (330) hide show
  1. package/dist/css/preflight.css +21 -2
  2. package/dist/elements/AppHeader/index.css +1 -1
  3. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.js +5 -1
  5. package/dist/elements/AppHeader/index.js.map +1 -1
  6. package/dist/elements/Autosave/index.d.ts.map +1 -1
  7. package/dist/elements/Autosave/index.js +10 -3
  8. package/dist/elements/Autosave/index.js.map +1 -1
  9. package/dist/elements/Button/index.css +24 -0
  10. package/dist/elements/Button/types.d.ts +1 -1
  11. package/dist/elements/Button/types.d.ts.map +1 -1
  12. package/dist/elements/Button/types.js.map +1 -1
  13. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
  14. package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
  15. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  16. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  17. package/dist/elements/CodeEditor/CodeEditor.js +5 -0
  18. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  19. package/dist/elements/DatePicker/DatePicker.js +6 -2
  20. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  21. package/dist/elements/DatePicker/index.css +35 -25
  22. package/dist/elements/DocumentControls/index.css +13 -10
  23. package/dist/elements/DocumentControls/index.d.ts +4 -2
  24. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  25. package/dist/elements/DocumentControls/index.js.map +1 -1
  26. package/dist/elements/DocumentDrawer/types.d.ts +1 -5
  27. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  28. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  29. package/dist/elements/DocumentFields/index.css +7 -7
  30. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  31. package/dist/elements/DocumentFields/index.js +1 -2
  32. package/dist/elements/DocumentFields/index.js.map +1 -1
  33. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  34. package/dist/elements/Drawer/types.d.ts +2 -2
  35. package/dist/elements/Drawer/types.d.ts.map +1 -1
  36. package/dist/elements/Drawer/types.js.map +1 -1
  37. package/dist/elements/EditUpload/library.css +6 -13
  38. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  39. package/dist/elements/FileManager/index.d.ts.map +1 -1
  40. package/dist/elements/FileManager/index.js +6 -1
  41. package/dist/elements/FileManager/index.js.map +1 -1
  42. package/dist/elements/Hierarchy/ActionsMenu/index.css +18 -0
  43. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts +35 -0
  44. package/dist/elements/Hierarchy/ActionsMenu/index.d.ts.map +1 -0
  45. package/dist/elements/Hierarchy/ActionsMenu/index.js +99 -0
  46. package/dist/elements/Hierarchy/ActionsMenu/index.js.map +1 -0
  47. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +18 -16
  48. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  49. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +2 -0
  50. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
  51. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
  52. package/dist/elements/Hierarchy/DocHeaderButton/index.css +12 -0
  53. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
  54. package/dist/elements/Hierarchy/DocHeaderButton/index.js +61 -14
  55. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  56. package/dist/elements/Hierarchy/Modal/Footer/index.css +33 -0
  57. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +21 -0
  58. package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
  59. package/dist/elements/Hierarchy/Modal/Footer/index.js +122 -0
  60. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
  61. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +8 -3
  62. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  63. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +38 -12
  64. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  65. package/dist/elements/Hierarchy/Modal/index.css +0 -56
  66. package/dist/elements/Hierarchy/Modal/index.d.ts +5 -3
  67. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  68. package/dist/elements/Hierarchy/Modal/index.js +64 -65
  69. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  70. package/dist/elements/Hierarchy/Modal/types.d.ts +2 -0
  71. package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
  73. package/dist/elements/Hierarchy/MoveMany/index.d.ts +1 -3
  74. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/MoveMany/index.js +62 -84
  76. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  77. package/dist/elements/ListControls/types.d.ts +0 -10
  78. package/dist/elements/ListControls/types.d.ts.map +1 -1
  79. package/dist/elements/ListControls/types.js.map +1 -1
  80. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  81. package/dist/elements/ListDrawer/DrawerContent.js +1 -2
  82. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  83. package/dist/elements/ListDrawer/Provider.d.ts +0 -6
  84. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  85. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  86. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  87. package/dist/elements/ListDrawer/index.js +1 -1
  88. package/dist/elements/ListDrawer/index.js.map +1 -1
  89. package/dist/elements/ListDrawer/types.d.ts +1 -0
  90. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  91. package/dist/elements/ListDrawer/types.js.map +1 -1
  92. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.d.ts.map +1 -1
  93. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js +24 -20
  94. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  95. package/dist/elements/LivePreview/Window/index.css +7 -1
  96. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  97. package/dist/elements/Nav/NavWrapper/index.js +19 -14
  98. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  99. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  100. package/dist/elements/PublishButton/index.js +71 -8
  101. package/dist/elements/PublishButton/index.js.map +1 -1
  102. package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
  103. package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
  104. package/dist/elements/PublishButton/validateAllLocales.js +263 -0
  105. package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
  106. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  107. package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
  108. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  109. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  110. package/dist/elements/SaveDraftButton/index.js +15 -2
  111. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  112. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  113. package/dist/elements/SegmentedControl/index.css +50 -7
  114. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  115. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  116. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +0 -9
  117. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +63 -40
  119. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  120. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/index.js +6 -1
  122. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  123. package/dist/elements/Table/index.js.map +1 -1
  124. package/dist/elements/Tabs/index.css +4 -3
  125. package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
  126. package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
  127. package/dist/elements/Upload/getEditorFileSrc.js +6 -0
  128. package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
  129. package/dist/elements/Upload/index.d.ts.map +1 -1
  130. package/dist/elements/Upload/index.js +6 -1
  131. package/dist/elements/Upload/index.js.map +1 -1
  132. package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-I6PL55BF.js} +2 -2
  133. package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-XAKGIULG.js} +2 -2
  134. package/dist/exports/client/{chunk-2AY67NFV.js → chunk-36JJSMEB.js} +2 -2
  135. package/dist/exports/client/chunk-36JJSMEB.js.map +7 -0
  136. package/dist/exports/client/chunk-R7M6BG75.js +27 -0
  137. package/dist/exports/client/chunk-R7M6BG75.js.map +7 -0
  138. package/dist/exports/client/index.d.ts +3 -0
  139. package/dist/exports/client/index.d.ts.map +1 -1
  140. package/dist/exports/client/index.js +27 -27
  141. package/dist/exports/client/index.js.map +4 -4
  142. package/dist/exports/shared/index.js +2 -2
  143. package/dist/exports/shared/index.js.map +3 -3
  144. package/dist/fields/Group/index.css +3 -5
  145. package/dist/fields/Tabs/index.css +14 -14
  146. package/dist/fields/Upload/Input.d.ts.map +1 -1
  147. package/dist/fields/Upload/Input.js +3 -1
  148. package/dist/fields/Upload/Input.js.map +1 -1
  149. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  150. package/dist/forms/Form/fieldReducer.js +6 -9
  151. package/dist/forms/Form/fieldReducer.js.map +1 -1
  152. package/dist/forms/Form/index.d.ts.map +1 -1
  153. package/dist/forms/Form/index.js +0 -1
  154. package/dist/forms/Form/index.js.map +1 -1
  155. package/dist/forms/Form/types.d.ts +0 -5
  156. package/dist/forms/Form/types.d.ts.map +1 -1
  157. package/dist/forms/Form/types.js.map +1 -1
  158. package/dist/forms/RenderFields/index.css +2 -2
  159. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts +2 -2
  160. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  161. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  162. package/dist/forms/fieldSchemasToFormState/index.d.ts +2 -2
  163. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  164. package/dist/forms/fieldSchemasToFormState/index.js.map +1 -1
  165. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts +2 -2
  166. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  167. package/dist/forms/fieldSchemasToFormState/iterateFields.js.map +1 -1
  168. package/dist/forms/fieldSchemasToFormState/types.d.ts +2 -2
  169. package/dist/forms/fieldSchemasToFormState/types.d.ts.map +1 -1
  170. package/dist/forms/fieldSchemasToFormState/types.js.map +1 -1
  171. package/dist/forms/useField/types.d.ts +0 -4
  172. package/dist/forms/useField/types.d.ts.map +1 -1
  173. package/dist/forms/useField/types.js.map +1 -1
  174. package/dist/icons/Arrow/index.d.ts +1 -1
  175. package/dist/icons/Arrow/index.d.ts.map +1 -1
  176. package/dist/icons/Arrow/index.js +7 -1
  177. package/dist/icons/Arrow/index.js.map +1 -1
  178. package/dist/icons/Clock/index.d.ts +6 -0
  179. package/dist/icons/Clock/index.d.ts.map +1 -0
  180. package/dist/icons/Clock/index.js +18 -0
  181. package/dist/icons/Clock/index.js.map +1 -0
  182. package/dist/icons/Pin/index.d.ts +7 -0
  183. package/dist/icons/Pin/index.d.ts.map +1 -0
  184. package/dist/icons/Pin/index.js +23 -0
  185. package/dist/icons/Pin/index.js.map +1 -0
  186. package/dist/icons/Sidebar/index.d.ts.map +1 -1
  187. package/dist/icons/Sidebar/index.js +2 -0
  188. package/dist/icons/Sidebar/index.js.map +1 -1
  189. package/dist/icons/Table/index.css +5 -1
  190. package/dist/layouts/Root/getRootLayoutData.d.ts +2 -2
  191. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
  192. package/dist/layouts/Root/getRootLayoutData.js +8 -4
  193. package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
  194. package/dist/layouts/Root/index.d.ts +1 -1
  195. package/dist/layouts/Root/index.d.ts.map +1 -1
  196. package/dist/layouts/Root/index.js +5 -20
  197. package/dist/layouts/Root/index.js.map +1 -1
  198. package/dist/providers/ListQuery/types.d.ts +0 -4
  199. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  200. package/dist/providers/ListQuery/types.js.map +1 -1
  201. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  202. package/dist/providers/RouteCache/index.js +37 -25
  203. package/dist/providers/RouteCache/index.js.map +1 -1
  204. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  205. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
  206. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  207. package/dist/providers/TableColumns/types.d.ts +1 -34
  208. package/dist/providers/TableColumns/types.d.ts.map +1 -1
  209. package/dist/providers/TableColumns/types.js.map +1 -1
  210. package/dist/styles.css +22 -3
  211. package/dist/templates/Default/index.css +0 -1
  212. package/dist/utilities/appendCacheTag.d.ts +1 -0
  213. package/dist/utilities/appendCacheTag.d.ts.map +1 -1
  214. package/dist/utilities/appendCacheTag.js +2 -1
  215. package/dist/utilities/appendCacheTag.js.map +1 -1
  216. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  217. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
  218. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  219. package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
  220. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  221. package/dist/utilities/getDisplayedFieldValue.js +11 -1
  222. package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
  223. package/dist/utilities/getDocumentThumbnail.d.ts +6 -0
  224. package/dist/utilities/getDocumentThumbnail.d.ts.map +1 -0
  225. package/dist/utilities/getDocumentThumbnail.js +27 -0
  226. package/dist/utilities/getDocumentThumbnail.js.map +1 -0
  227. package/dist/utilities/getDocumentThumbnailPopulate.d.ts +7 -0
  228. package/dist/utilities/getDocumentThumbnailPopulate.d.ts.map +1 -0
  229. package/dist/utilities/getDocumentThumbnailPopulate.js +23 -0
  230. package/dist/utilities/getDocumentThumbnailPopulate.js.map +1 -0
  231. package/dist/utilities/getDocumentThumbnailSelect.d.ts +7 -0
  232. package/dist/utilities/getDocumentThumbnailSelect.d.ts.map +1 -0
  233. package/dist/utilities/getDocumentThumbnailSelect.js +24 -0
  234. package/dist/utilities/getDocumentThumbnailSelect.js.map +1 -0
  235. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  236. package/dist/utilities/handleLivePreview.js.map +1 -1
  237. package/dist/utilities/hasSavePermission.js.map +1 -1
  238. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  239. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  240. package/dist/utilities/serverFunctionRegistry.js +2 -0
  241. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  242. package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
  243. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  244. package/dist/utilities/traverseForLocalizedFields.js +22 -8
  245. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  246. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  247. package/dist/views/CreateFirstUser/index.js +4 -2
  248. package/dist/views/CreateFirstUser/index.js.map +1 -1
  249. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  250. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
  251. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  252. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
  253. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  254. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +16 -4
  255. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  256. package/dist/views/Edit/index.css +26 -0
  257. package/dist/views/Edit/index.d.ts.map +1 -1
  258. package/dist/views/Edit/index.js +1 -1
  259. package/dist/views/Edit/index.js.map +1 -1
  260. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  261. package/dist/views/HierarchyList/DocumentListSelection/index.js +0 -1
  262. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  263. package/dist/views/List/DocumentGrid/index.d.ts.map +1 -1
  264. package/dist/views/List/DocumentGrid/index.js +2 -37
  265. package/dist/views/List/DocumentGrid/index.js.map +1 -1
  266. package/dist/views/List/enrichDocsWithVersionStatus.d.ts.map +1 -1
  267. package/dist/views/List/enrichDocsWithVersionStatus.js +3 -1
  268. package/dist/views/List/enrichDocsWithVersionStatus.js.map +1 -1
  269. package/dist/views/List/index.d.ts.map +1 -1
  270. package/dist/views/List/index.js +11 -24
  271. package/dist/views/List/index.js.map +1 -1
  272. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
  273. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  274. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
  275. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  276. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
  277. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  278. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
  279. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  280. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
  281. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  282. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
  283. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  284. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
  285. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  286. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  287. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
  288. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  289. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
  290. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  291. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
  292. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  293. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
  294. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
  295. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  296. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +1 -1
  297. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +31 -5
  298. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +1 -1
  299. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +41 -0
  300. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +19 -0
  301. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +1 -0
  302. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +121 -0
  303. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +1 -0
  304. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +20 -0
  305. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +1 -0
  306. package/dist/widgets/RecentlyViewed/getDocuments.js +254 -0
  307. package/dist/widgets/RecentlyViewed/getDocuments.js.map +1 -0
  308. package/dist/widgets/RecentlyViewed/index.client.d.ts +41 -0
  309. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +1 -0
  310. package/dist/widgets/RecentlyViewed/index.client.js +409 -0
  311. package/dist/widgets/RecentlyViewed/index.client.js.map +1 -0
  312. package/dist/widgets/RecentlyViewed/index.css +352 -0
  313. package/dist/widgets/RecentlyViewed/index.d.ts +1 -1
  314. package/dist/widgets/RecentlyViewed/index.d.ts.map +1 -1
  315. package/dist/widgets/RecentlyViewed/index.js +33 -134
  316. package/dist/widgets/RecentlyViewed/index.js.map +1 -1
  317. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts +18 -0
  318. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +1 -0
  319. package/dist/widgets/RecentlyViewed/pinnedPreferences.js +81 -0
  320. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +1 -0
  321. package/dist/widgets/RecentlyViewed/recents.d.ts +8 -0
  322. package/dist/widgets/RecentlyViewed/recents.d.ts.map +1 -0
  323. package/dist/widgets/RecentlyViewed/recents.js +19 -0
  324. package/dist/widgets/RecentlyViewed/recents.js.map +1 -0
  325. package/package.json +16 -16
  326. package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
  327. package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
  328. package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
  329. /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-I6PL55BF.js.map} +0 -0
  330. /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-XAKGIULG.js.map} +0 -0
@@ -12,7 +12,6 @@
12
12
  display: flex;
13
13
  flex-direction: column;
14
14
  background-color: var(--color-bg);
15
-
16
15
  }
17
16
 
18
17
  /* stylelint-disable-next-line plugin/no-max-width-media-query -- TODO: pre-existing; migrate to a mobile-first min-width query */
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Appends a cache-busting tag to a URL as a query parameter.
3
3
  * If the URL already has a query string, the tag is appended with `&`, otherwise with `?`.
4
+ * Blob URLs identify local objects exactly, so they cannot be cache-busted.
4
5
  */
5
6
  export declare function appendCacheTag(url: string, cacheTag: false | string | undefined): string;
6
7
  //# sourceMappingURL=appendCacheTag.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"appendCacheTag.d.ts","sourceRoot":"","sources":["../../src/utilities/appendCacheTag.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAMxF"}
1
+ {"version":3,"file":"appendCacheTag.d.ts","sourceRoot":"","sources":["../../src/utilities/appendCacheTag.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAMxF"}
@@ -1,8 +1,9 @@
1
1
  /**
2
2
  * Appends a cache-busting tag to a URL as a query parameter.
3
3
  * If the URL already has a query string, the tag is appended with `&`, otherwise with `?`.
4
+ * Blob URLs identify local objects exactly, so they cannot be cache-busted.
4
5
  */export function appendCacheTag(url, cacheTag) {
5
- if (!cacheTag) {
6
+ if (!cacheTag || url.startsWith('blob:')) {
6
7
  return url;
7
8
  }
8
9
  const queryChar = url.includes('?') ? '&' : '?';
@@ -1 +1 @@
1
- {"version":3,"file":"appendCacheTag.js","names":["appendCacheTag","url","cacheTag","queryChar","includes","encodeURIComponent"],"sources":["../../src/utilities/appendCacheTag.ts"],"sourcesContent":["/**\n * Appends a cache-busting tag to a URL as a query parameter.\n * If the URL already has a query string, the tag is appended with `&`, otherwise with `?`.\n */\nexport function appendCacheTag(url: string, cacheTag: false | string | undefined): string {\n if (!cacheTag) {\n return url\n }\n const queryChar = url.includes('?') ? '&' : '?'\n return `${url}${queryChar}${encodeURIComponent(cacheTag)}`\n}\n"],"mappings":"AAAA;;;GAIA,OAAO,SAASA,eAAeC,GAAW,EAAEC,QAAoC;EAC9E,IAAI,CAACA,QAAA,EAAU;IACb,OAAOD,GAAA;EACT;EACA,MAAME,SAAA,GAAYF,GAAA,CAAIG,QAAQ,CAAC,OAAO,MAAM;EAC5C,OAAO,GAAGH,GAAA,GAAME,SAAA,GAAYE,kBAAA,CAAmBH,QAAA,GAAW;AAC5D","ignoreList":[]}
1
+ {"version":3,"file":"appendCacheTag.js","names":["appendCacheTag","url","cacheTag","startsWith","queryChar","includes","encodeURIComponent"],"sources":["../../src/utilities/appendCacheTag.ts"],"sourcesContent":["/**\n * Appends a cache-busting tag to a URL as a query parameter.\n * If the URL already has a query string, the tag is appended with `&`, otherwise with `?`.\n * Blob URLs identify local objects exactly, so they cannot be cache-busted.\n */\nexport function appendCacheTag(url: string, cacheTag: false | string | undefined): string {\n if (!cacheTag || url.startsWith('blob:')) {\n return url\n }\n const queryChar = url.includes('?') ? '&' : '?'\n return `${url}${queryChar}${encodeURIComponent(cacheTag)}`\n}\n"],"mappings":"AAAA;;;;GAKA,OAAO,SAASA,eAAeC,GAAW,EAAEC,QAAoC;EAC9E,IAAI,CAACA,QAAA,IAAYD,GAAA,CAAIE,UAAU,CAAC,UAAU;IACxC,OAAOF,GAAA;EACT;EACA,MAAMG,SAAA,GAAYH,GAAA,CAAII,QAAQ,CAAC,OAAO,MAAM;EAC5C,OAAO,GAAGJ,GAAA,GAAMG,SAAA,GAAYE,kBAAA,CAAmBJ,QAAA,GAAW;AAC5D","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAKhB,KAAK,IAAI,GAAG;IACV,eAAe,EAAE,oBAAoB,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAA;IAC1C,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,sGASxB,IAAI,SA+LN,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,KAAK,EAEV,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,OAAO,EACP,gBAAgB,EACjB,MAAM,SAAS,CAAA;AAKhB,KAAK,IAAI,GAAG;IACV,eAAe,EAAE,oBAAoB,CAAA;IACrC,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAA;IAC1C,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,cAAc,sGASxB,IAAI,SA2LN,CAAA"}
@@ -104,12 +104,9 @@ export const traverseFields = ({
104
104
  // 2. convert them to client fields
105
105
  // 3. add them to the client schema map
106
106
  // So these would basically be all fields that are not part of the client config already
107
- const richTextFieldSchemaMap = new Map();
108
- for (const [path, subField] of schemaMap.entries()) {
109
- if (path.startsWith(`${schemaPath}.`)) {
110
- richTextFieldSchemaMap.set(path, subField);
111
- }
112
- }
107
+ const richTextFieldSchemaMap = getRichTextSubFieldsByPath({
108
+ schemaMap
109
+ }).get(schemaPath) ?? new Map();
113
110
  // Now loop through them, convert each entry to a client field and add it to the client schema map.
114
111
  // Schema map values are a union: Block | Field | Tab | { fields: Field[] }.
115
112
  // Each variant needs different conversion to strip server-only properties.
@@ -187,4 +184,33 @@ export const traverseFields = ({
187
184
  }
188
185
  }
189
186
  };
187
+ const richTextSubFieldsCache = new WeakMap();
188
+ /**
189
+ * Groups the schema map entries by the rich text field they belong to,
190
+ * so each rich text field does not have to scan the whole schema map.
191
+ */
192
+ function getRichTextSubFieldsByPath({
193
+ schemaMap
194
+ }) {
195
+ const cachedSubFieldsByPath = richTextSubFieldsCache.get(schemaMap);
196
+ if (cachedSubFieldsByPath) {
197
+ return cachedSubFieldsByPath;
198
+ }
199
+ const subFieldsByPath = new Map();
200
+ for (const [path, field] of schemaMap) {
201
+ if ('type' in field && field.type === 'richText') {
202
+ subFieldsByPath.set(path, new Map());
203
+ }
204
+ }
205
+ for (const [path, field] of schemaMap) {
206
+ let separatorIndex = path.indexOf('.');
207
+ // A sub-field of a nested rich text field belongs to each of its rich text ancestors
208
+ while (separatorIndex !== -1) {
209
+ subFieldsByPath.get(path.slice(0, separatorIndex))?.set(path, field);
210
+ separatorIndex = path.indexOf('.', separatorIndex + 1);
211
+ }
212
+ }
213
+ richTextSubFieldsCache.set(schemaMap, subFieldsByPath);
214
+ return subFieldsByPath;
215
+ }
190
216
  //# sourceMappingURL=traverseFields.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.js","names":["createClientBlocks","createClientFields","fieldAffectsData","getFieldPaths","tabHasName","traverseFields","clientSchemaMap","config","fields","i18n","parentIndexPath","parentSchemaPath","payload","schemaMap","index","field","entries","indexPath","schemaPath","set","type","blocks","map","_block","block","blocksMap","find","slug","blockSchemaPath","richTextFieldSchemaMap","Map","path","subField","startsWith","clientBlocks","defaultIDType","db","importMap","clientFields","disableAddingID","isNamedTab","tabs","tab"],"sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientBlock,\n ClientConfig,\n ClientField,\n ClientFieldSchemaMap,\n FieldSchemaMap,\n Payload,\n TabAsFieldClient,\n} from 'payload'\n\nimport { createClientBlocks, createClientFields } from 'payload'\nimport { fieldAffectsData, getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n clientSchemaMap: ClientFieldSchemaMap\n config: ClientConfig\n fields: (ClientField | TabAsFieldClient)[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n payload: Payload\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n clientSchemaMap,\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath,\n parentSchemaPath,\n })\n\n clientSchemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case 'array': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'blocks':\n field.blocks.map((_block) => {\n const block =\n typeof _block === 'string'\n ? config.blocksMap\n ? config.blocksMap[_block]\n : config.blocks.find((block) => typeof block !== 'string' && block.slug === _block)\n : _block\n\n const blockSchemaPath = `${schemaPath}.${block.slug}`\n\n clientSchemaMap.set(blockSchemaPath, block)\n traverseFields({\n clientSchemaMap,\n config,\n fields: block.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath + '.' + block.slug,\n payload,\n schemaMap,\n })\n })\n\n break\n\n case 'collapsible':\n case 'row': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n break\n }\n\n case 'group': {\n if (fieldAffectsData(field)) {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n } else {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n }\n break\n }\n\n case 'richText': {\n // richText sub-fields are not part of the ClientConfig or the Config.\n // They only exist in the field schema map.\n // Thus, we need to\n // 1. get them from the field schema map\n // 2. convert them to client fields\n // 3. add them to the client schema map\n\n // So these would basically be all fields that are not part of the client config already\n const richTextFieldSchemaMap: FieldSchemaMap = new Map()\n for (const [path, subField] of schemaMap.entries()) {\n if (path.startsWith(`${schemaPath}.`)) {\n richTextFieldSchemaMap.set(path, subField)\n }\n }\n\n // Now loop through them, convert each entry to a client field and add it to the client schema map.\n // Schema map values are a union: Block | Field | Tab | { fields: Field[] }.\n // Each variant needs different conversion to strip server-only properties.\n for (const [path, subField] of richTextFieldSchemaMap.entries()) {\n if ('slug' in subField) {\n const clientBlocks = createClientBlocks({\n blocks: [subField],\n defaultIDType: payload.config.db.defaultIDType,\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, clientBlocks[0] as ClientBlock)\n continue\n }\n\n if ('type' in subField) {\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: [subField],\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, clientFields[0])\n continue\n }\n\n if ('fields' in subField) {\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: subField.fields,\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, { fields: clientFields })\n continue\n }\n\n subField satisfies never\n }\n break\n }\n\n case 'tab': {\n const isNamedTab = tabHasName(field)\n\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n }\n }\n}\n"],"mappings":"AAWA,SAASA,kBAAkB,EAAEC,kBAAkB,QAAQ;AACvD,SAASC,gBAAgB,EAAEC,aAAa,EAAEC,UAAU,QAAQ;AAa5D,OAAO,MAAMC,cAAA,GAAiBA,CAAC;EAC7BC,eAAe;EACfC,MAAM;EACNC,MAAM;EACNC,IAAI;EACJC,eAAe;EACfC,gBAAgB;EAChBC,OAAO;EACPC;AAAS,CACJ;EACL,KAAK,MAAM,CAACC,KAAA,EAAOC,KAAA,CAAM,IAAIP,MAAA,CAAOQ,OAAO,IAAI;IAC7C,MAAM;MAAEC,SAAS;MAAEC;IAAU,CAAE,GAAGf,aAAA,CAAc;MAC9CY,KAAA;MACAD,KAAA;MACAJ,eAAA;MACAC;IACF;IAEAL,eAAA,CAAgBa,GAAG,CAACD,UAAA,EAAYH,KAAA;IAEhC,QAAQA,KAAA,CAAMK,IAAI;MAChB,KAAK;QAAS;UACZf,cAAA,CAAe;YACbC,eAAA;YACAC,MAAA;YACAC,MAAA,EAAQO,KAAA,CAAMP,MAAM;YACpBC,IAAA;YACAC,eAAA,EAAiB;YACjBC,gBAAA,EAAkBO,UAAA;YAClBN,OAAA;YACAC;UACF;UAEA;QACF;MAEA,KAAK;QACHE,KAAA,CAAMM,MAAM,CAACC,GAAG,CAAEC,MAAA;UAChB,MAAMC,KAAA,GACJ,OAAOD,MAAA,KAAW,WACdhB,MAAA,CAAOkB,SAAS,GACdlB,MAAA,CAAOkB,SAAS,CAACF,MAAA,CAAO,GACxBhB,MAAA,CAAOc,MAAM,CAACK,IAAI,CAAEF,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMG,IAAI,KAAKJ,MAAA,IAC5EA,MAAA;UAEN,MAAMK,eAAA,GAAkB,GAAGV,UAAA,IAAcM,KAAA,CAAMG,IAAI,EAAE;UAErDrB,eAAA,CAAgBa,GAAG,CAACS,eAAA,EAAiBJ,KAAA;UACrCnB,cAAA,CAAe;YACbC,eAAA;YACAC,MAAA;YACAC,MAAA,EAAQgB,KAAA,CAAMhB,MAAM;YACpBC,IAAA;YACAC,eAAA,EAAiB;YACjBC,gBAAA,EAAkBO,UAAA,GAAa,MAAMM,KAAA,CAAMG,IAAI;YAC/Cf,OAAA;YACAC;UACF;QACF;QAEA;MAEF,KAAK;MACL,KAAK;QAAO;UACVR,cAAA,CAAe;YACbC,eAAA;YACAC,MAAA;YACAC,MAAA,EAAQO,KAAA,CAAMP,MAAM;YACpBC,IAAA;YACAC,eAAA,EAAiBO,SAAA;YACjBN,gBAAA,EAAkBO,UAAA;YAClBN,OAAA;YACAC;UACF;UACA;QACF;MAEA,KAAK;QAAS;UACZ,IAAIX,gBAAA,CAAiBa,KAAA,GAAQ;YAC3BV,cAAA,CAAe;cACbC,eAAA;cACAC,MAAA;cACAC,MAAA,EAAQO,KAAA,CAAMP,MAAM;cACpBC,IAAA;cACAC,eAAA,EAAiB;cACjBC,gBAAA,EAAkBO,UAAA;cAClBN,OAAA;cACAC;YACF;UACF,OAAO;YACLR,cAAA,CAAe;cACbC,eAAA;cACAC,MAAA;cACAC,MAAA,EAAQO,KAAA,CAAMP,MAAM;cACpBC,IAAA;cACAC,eAAA,EAAiBO,SAAA;cACjBN,gBAAA,EAAkBO,UAAA;cAClBN,OAAA;cACAC;YACF;UACF;UACA;QACF;MAEA,KAAK;QAAY;UACf;UACA;UACA;UACA;UACA;UACA;UAEA;UACA,MAAMgB,sBAAA,GAAyC,IAAIC,GAAA;UACnD,KAAK,MAAM,CAACC,IAAA,EAAMC,QAAA,CAAS,IAAInB,SAAA,CAAUG,OAAO,IAAI;YAClD,IAAIe,IAAA,CAAKE,UAAU,CAAC,GAAGf,UAAA,GAAa,GAAG;cACrCW,sBAAA,CAAuBV,GAAG,CAACY,IAAA,EAAMC,QAAA;YACnC;UACF;UAEA;UACA;UACA;UACA,KAAK,MAAM,CAACD,IAAA,EAAMC,QAAA,CAAS,IAAIH,sBAAA,CAAuBb,OAAO,IAAI;YAC/D,IAAI,UAAUgB,QAAA,EAAU;cACtB,MAAME,YAAA,GAAelC,kBAAA,CAAmB;gBACtCqB,MAAA,EAAQ,CAACW,QAAA,CAAS;gBAClBG,aAAA,EAAevB,OAAA,CAAQL,MAAM,CAAC6B,EAAE,CAACD,aAAa;gBAC9C1B,IAAA;gBACA4B,SAAA,EAAWzB,OAAA,CAAQyB;cACrB;cAEA/B,eAAA,CAAgBa,GAAG,CAACY,IAAA,EAAMG,YAAY,CAAC,EAAE;cACzC;YACF;YAEA,IAAI,UAAUF,QAAA,EAAU;cACtB,MAAMM,YAAA,GAAerC,kBAAA,CAAmB;gBACtCkC,aAAA,EAAevB,OAAA,CAAQL,MAAM,CAAC6B,EAAE,CAACD,aAAa;gBAC9CI,eAAA,EAAiB;gBACjB/B,MAAA,EAAQ,CAACwB,QAAA,CAAS;gBAClBvB,IAAA;gBACA4B,SAAA,EAAWzB,OAAA,CAAQyB;cACrB;cAEA/B,eAAA,CAAgBa,GAAG,CAACY,IAAA,EAAMO,YAAY,CAAC,EAAE;cACzC;YACF;YAEA,IAAI,YAAYN,QAAA,EAAU;cACxB,MAAMM,YAAA,GAAerC,kBAAA,CAAmB;gBACtCkC,aAAA,EAAevB,OAAA,CAAQL,MAAM,CAAC6B,EAAE,CAACD,aAAa;gBAC9CI,eAAA,EAAiB;gBACjB/B,MAAA,EAAQwB,QAAA,CAASxB,MAAM;gBACvBC,IAAA;gBACA4B,SAAA,EAAWzB,OAAA,CAAQyB;cACrB;cAEA/B,eAAA,CAAgBa,GAAG,CAACY,IAAA,EAAM;gBAAEvB,MAAA,EAAQ8B;cAAa;cACjD;YACF;YAEAN,QAAA;UACF;UACA;QACF;MAEA,KAAK;QAAO;UACV,MAAMQ,UAAA,GAAapC,UAAA,CAAWW,KAAA;UAE9BV,cAAA,CAAe;YACbC,eAAA;YACAC,MAAA;YACAC,MAAA,EAAQO,KAAA,CAAMP,MAAM;YACpBC,IAAA;YACAC,eAAA,EAAiB8B,UAAA,GAAa,KAAKvB,SAAA;YACnCN,gBAAA,EAAkBO,UAAA;YAClBN,OAAA;YACAC;UACF;UAEA;QACF;MAEA,KAAK;QAAQ;UACXR,cAAA,CAAe;YACbC,eAAA;YACAC,MAAA;YACAC,MAAA,EAAQO,KAAA,CAAM0B,IAAI,CAACnB,GAAG,CAAEoB,GAAA,KAAS;cAAE,GAAGA,GAAG;cAAEtB,IAAA,EAAM;YAAM;YACvDX,IAAA;YACAC,eAAA,EAAiBO,SAAA;YACjBN,gBAAA,EAAkBO,UAAA;YAClBN,OAAA;YACAC;UACF;UAEA;QACF;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"traverseFields.js","names":["createClientBlocks","createClientFields","fieldAffectsData","getFieldPaths","tabHasName","traverseFields","clientSchemaMap","config","fields","i18n","parentIndexPath","parentSchemaPath","payload","schemaMap","index","field","entries","indexPath","schemaPath","set","type","blocks","map","_block","block","blocksMap","find","slug","blockSchemaPath","richTextFieldSchemaMap","getRichTextSubFieldsByPath","get","Map","path","subField","clientBlocks","defaultIDType","db","importMap","clientFields","disableAddingID","isNamedTab","tabs","tab","richTextSubFieldsCache","WeakMap","cachedSubFieldsByPath","subFieldsByPath","separatorIndex","indexOf","slice"],"sources":["../../../src/utilities/buildClientFieldSchemaMap/traverseFields.ts"],"sourcesContent":["import type { I18n } from '@payloadcms/translations'\nimport type {\n ClientBlock,\n ClientConfig,\n ClientField,\n ClientFieldSchemaMap,\n FieldSchemaMap,\n Payload,\n TabAsFieldClient,\n} from 'payload'\n\nimport { createClientBlocks, createClientFields } from 'payload'\nimport { fieldAffectsData, getFieldPaths, tabHasName } from 'payload/shared'\n\ntype Args = {\n clientSchemaMap: ClientFieldSchemaMap\n config: ClientConfig\n fields: (ClientField | TabAsFieldClient)[]\n i18n: I18n<any, any>\n parentIndexPath: string\n parentSchemaPath: string\n payload: Payload\n schemaMap: FieldSchemaMap\n}\n\nexport const traverseFields = ({\n clientSchemaMap,\n config,\n fields,\n i18n,\n parentIndexPath,\n parentSchemaPath,\n payload,\n schemaMap,\n}: Args) => {\n for (const [index, field] of fields.entries()) {\n const { indexPath, schemaPath } = getFieldPaths({\n field,\n index,\n parentIndexPath,\n parentSchemaPath,\n })\n\n clientSchemaMap.set(schemaPath, field)\n\n switch (field.type) {\n case 'array': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'blocks':\n field.blocks.map((_block) => {\n const block =\n typeof _block === 'string'\n ? config.blocksMap\n ? config.blocksMap[_block]\n : config.blocks.find((block) => typeof block !== 'string' && block.slug === _block)\n : _block\n\n const blockSchemaPath = `${schemaPath}.${block.slug}`\n\n clientSchemaMap.set(blockSchemaPath, block)\n traverseFields({\n clientSchemaMap,\n config,\n fields: block.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath + '.' + block.slug,\n payload,\n schemaMap,\n })\n })\n\n break\n\n case 'collapsible':\n case 'row': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n break\n }\n\n case 'group': {\n if (fieldAffectsData(field)) {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: '',\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n } else {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n }\n break\n }\n\n case 'richText': {\n // richText sub-fields are not part of the ClientConfig or the Config.\n // They only exist in the field schema map.\n // Thus, we need to\n // 1. get them from the field schema map\n // 2. convert them to client fields\n // 3. add them to the client schema map\n\n // So these would basically be all fields that are not part of the client config already\n const richTextFieldSchemaMap: FieldSchemaMap =\n getRichTextSubFieldsByPath({ schemaMap }).get(schemaPath) ?? new Map()\n\n // Now loop through them, convert each entry to a client field and add it to the client schema map.\n // Schema map values are a union: Block | Field | Tab | { fields: Field[] }.\n // Each variant needs different conversion to strip server-only properties.\n for (const [path, subField] of richTextFieldSchemaMap.entries()) {\n if ('slug' in subField) {\n const clientBlocks = createClientBlocks({\n blocks: [subField],\n defaultIDType: payload.config.db.defaultIDType,\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, clientBlocks[0] as ClientBlock)\n continue\n }\n\n if ('type' in subField) {\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: [subField],\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, clientFields[0])\n continue\n }\n\n if ('fields' in subField) {\n const clientFields = createClientFields({\n defaultIDType: payload.config.db.defaultIDType,\n disableAddingID: true,\n fields: subField.fields,\n i18n,\n importMap: payload.importMap,\n })\n\n clientSchemaMap.set(path, { fields: clientFields })\n continue\n }\n\n subField satisfies never\n }\n break\n }\n\n case 'tab': {\n const isNamedTab = tabHasName(field)\n\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.fields,\n i18n,\n parentIndexPath: isNamedTab ? '' : indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n clientSchemaMap,\n config,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n i18n,\n parentIndexPath: indexPath,\n parentSchemaPath: schemaPath,\n payload,\n schemaMap,\n })\n\n break\n }\n }\n }\n}\n\nconst richTextSubFieldsCache = new WeakMap<FieldSchemaMap, Map<string, FieldSchemaMap>>()\n\n/**\n * Groups the schema map entries by the rich text field they belong to,\n * so each rich text field does not have to scan the whole schema map.\n */\nfunction getRichTextSubFieldsByPath({\n schemaMap,\n}: {\n schemaMap: FieldSchemaMap\n}): Map<string, FieldSchemaMap> {\n const cachedSubFieldsByPath = richTextSubFieldsCache.get(schemaMap)\n\n if (cachedSubFieldsByPath) {\n return cachedSubFieldsByPath\n }\n\n const subFieldsByPath = new Map<string, FieldSchemaMap>()\n\n for (const [path, field] of schemaMap) {\n if ('type' in field && field.type === 'richText') {\n subFieldsByPath.set(path, new Map())\n }\n }\n\n for (const [path, field] of schemaMap) {\n let separatorIndex = path.indexOf('.')\n\n // A sub-field of a nested rich text field belongs to each of its rich text ancestors\n while (separatorIndex !== -1) {\n subFieldsByPath.get(path.slice(0, separatorIndex))?.set(path, field)\n separatorIndex = path.indexOf('.', separatorIndex + 1)\n }\n }\n\n richTextSubFieldsCache.set(schemaMap, subFieldsByPath)\n\n return subFieldsByPath\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
- import type { ClientField } from 'payload';
2
+ import type { ClientCollectionConfig, ClientField } from 'payload';
3
3
  /**
4
4
  * Returns the appropriate display value for a field.
5
5
  * - For select and radio fields:
@@ -7,7 +7,13 @@ import type { ClientField } from 'payload';
7
7
  * - Translates localized label objects based on the current language.
8
8
  * - Returns string labels directly.
9
9
  * - Falls back to the option value if no valid label is found.
10
+ * - Formats upload file sizes for display.
10
11
  * - For all other field types, returns `cellData` unchanged.
11
12
  */
12
- export declare const getDisplayedFieldValue: (cellData: any, field: ClientField, i18n: I18nClient) => any;
13
+ export declare const getDisplayedFieldValue: ({ cellData, collectionConfig, field, i18n, }: {
14
+ cellData: any;
15
+ collectionConfig?: ClientCollectionConfig | null;
16
+ field: ClientField;
17
+ i18n: I18nClient;
18
+ }) => any;
13
19
  //# sourceMappingURL=getDisplayedFieldValue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getDisplayedFieldValue.d.ts","sourceRoot":"","sources":["../../src/utilities/getDisplayedFieldValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1C;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,aAAc,GAAG,SAAS,WAAW,QAAQ,UAAU,QAgBzF,CAAA"}
1
+ {"version":3,"file":"getDisplayedFieldValue.d.ts","sourceRoot":"","sources":["../../src/utilities/getDisplayedFieldValue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAOlE;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,iDAKhC;IACD,QAAQ,EAAE,GAAG,CAAA;IACb,gBAAgB,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAA;IAChD,KAAK,EAAE,WAAW,CAAA;IAClB,IAAI,EAAE,UAAU,CAAA;CACjB,QA0BA,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { getTranslation } from '@payloadcms/translations';
2
+ import { formatFilesize } from 'payload/shared';
2
3
  import { isValidReactElement } from './isValidReactElement.js';
3
4
  /**
4
5
  * Returns the appropriate display value for a field.
@@ -7,9 +8,18 @@ import { isValidReactElement } from './isValidReactElement.js';
7
8
  * - Translates localized label objects based on the current language.
8
9
  * - Returns string labels directly.
9
10
  * - Falls back to the option value if no valid label is found.
11
+ * - Formats upload file sizes for display.
10
12
  * - For all other field types, returns `cellData` unchanged.
11
13
  */
12
- export const getDisplayedFieldValue = (cellData, field, i18n) => {
14
+ export const getDisplayedFieldValue = ({
15
+ cellData,
16
+ collectionConfig,
17
+ field,
18
+ i18n
19
+ }) => {
20
+ if (collectionConfig?.upload && field.type === 'number' && 'name' in field && field.name === 'filesize' && typeof cellData === 'number') {
21
+ return formatFilesize(cellData);
22
+ }
13
23
  if ((field?.type === 'select' || field?.type === 'radio') && Array.isArray(field.options)) {
14
24
  const selectedOption = field.options.find(opt => typeof opt === 'object' ? opt.value === cellData : opt === cellData);
15
25
  if (selectedOption) {
@@ -1 +1 @@
1
- {"version":3,"file":"getDisplayedFieldValue.js","names":["getTranslation","isValidReactElement","getDisplayedFieldValue","cellData","field","i18n","type","Array","isArray","options","selectedOption","find","opt","value","label"],"sources":["../../src/utilities/getDisplayedFieldValue.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport { isValidReactElement } from './isValidReactElement.js'\n\n/**\n * Returns the appropriate display value for a field.\n * - For select and radio fields:\n * - Returns JSX elements as-is.\n * - Translates localized label objects based on the current language.\n * - Returns string labels directly.\n * - Falls back to the option value if no valid label is found.\n * - For all other field types, returns `cellData` unchanged.\n */\nexport const getDisplayedFieldValue = (cellData: any, field: ClientField, i18n: I18nClient) => {\n if ((field?.type === 'select' || field?.type === 'radio') && Array.isArray(field.options)) {\n const selectedOption = field.options.find((opt) =>\n typeof opt === 'object' ? opt.value === cellData : opt === cellData,\n )\n\n if (selectedOption) {\n if (typeof selectedOption === 'object' && 'label' in selectedOption) {\n return isValidReactElement(selectedOption.label)\n ? selectedOption.label // Return JSX directly\n : getTranslation(selectedOption.label, i18n) || selectedOption.value // Use translation or fallback to value\n }\n return selectedOption // If option is a string, return it directly\n }\n }\n return cellData // Default fallback if no match found\n}\n"],"mappings":"AAGA,SAASA,cAAc,QAAQ;AAE/B,SAASC,mBAAmB,QAAQ;AAEpC;;;;;;;;;AASA,OAAO,MAAMC,sBAAA,GAAyBA,CAACC,QAAA,EAAeC,KAAA,EAAoBC,IAAA;EACxE,IAAI,CAACD,KAAA,EAAOE,IAAA,KAAS,YAAYF,KAAA,EAAOE,IAAA,KAAS,OAAM,KAAMC,KAAA,CAAMC,OAAO,CAACJ,KAAA,CAAMK,OAAO,GAAG;IACzF,MAAMC,cAAA,GAAiBN,KAAA,CAAMK,OAAO,CAACE,IAAI,CAAEC,GAAA,IACzC,OAAOA,GAAA,KAAQ,WAAWA,GAAA,CAAIC,KAAK,KAAKV,QAAA,GAAWS,GAAA,KAAQT,QAAA;IAG7D,IAAIO,cAAA,EAAgB;MAClB,IAAI,OAAOA,cAAA,KAAmB,YAAY,WAAWA,cAAA,EAAgB;QACnE,OAAOT,mBAAA,CAAoBS,cAAA,CAAeI,KAAK,IAC3CJ,cAAA,CAAeI,KAAK,CAAC;QAAA,EACrBd,cAAA,CAAeU,cAAA,CAAeI,KAAK,EAAET,IAAA,KAASK,cAAA,CAAeG,KAAK,CAAC;AAAA;MACzE;MACA,OAAOH,cAAA,CAAe;AAAA;IACxB;EACF;EACA,OAAOP,QAAA,CAAS;AAAA;AAClB","ignoreList":[]}
1
+ {"version":3,"file":"getDisplayedFieldValue.js","names":["getTranslation","formatFilesize","isValidReactElement","getDisplayedFieldValue","cellData","collectionConfig","field","i18n","upload","type","name","Array","isArray","options","selectedOption","find","opt","value","label"],"sources":["../../src/utilities/getDisplayedFieldValue.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientCollectionConfig, ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatFilesize } from 'payload/shared'\n\nimport { isValidReactElement } from './isValidReactElement.js'\n\n/**\n * Returns the appropriate display value for a field.\n * - For select and radio fields:\n * - Returns JSX elements as-is.\n * - Translates localized label objects based on the current language.\n * - Returns string labels directly.\n * - Falls back to the option value if no valid label is found.\n * - Formats upload file sizes for display.\n * - For all other field types, returns `cellData` unchanged.\n */\nexport const getDisplayedFieldValue = ({\n cellData,\n collectionConfig,\n field,\n i18n,\n}: {\n cellData: any\n collectionConfig?: ClientCollectionConfig | null\n field: ClientField\n i18n: I18nClient\n}) => {\n if (\n collectionConfig?.upload &&\n field.type === 'number' &&\n 'name' in field &&\n field.name === 'filesize' &&\n typeof cellData === 'number'\n ) {\n return formatFilesize(cellData)\n }\n\n if ((field?.type === 'select' || field?.type === 'radio') && Array.isArray(field.options)) {\n const selectedOption = field.options.find((opt) =>\n typeof opt === 'object' ? opt.value === cellData : opt === cellData,\n )\n\n if (selectedOption) {\n if (typeof selectedOption === 'object' && 'label' in selectedOption) {\n return isValidReactElement(selectedOption.label)\n ? selectedOption.label // Return JSX directly\n : getTranslation(selectedOption.label, i18n) || selectedOption.value // Use translation or fallback to value\n }\n return selectedOption // If option is a string, return it directly\n }\n }\n return cellData // Default fallback if no match found\n}\n"],"mappings":"AAGA,SAASA,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAE/B,SAASC,mBAAmB,QAAQ;AAEpC;;;;;;;;;;AAUA,OAAO,MAAMC,sBAAA,GAAyBA,CAAC;EACrCC,QAAQ;EACRC,gBAAgB;EAChBC,KAAK;EACLC;AAAI,CAML;EACC,IACEF,gBAAA,EAAkBG,MAAA,IAClBF,KAAA,CAAMG,IAAI,KAAK,YACf,UAAUH,KAAA,IACVA,KAAA,CAAMI,IAAI,KAAK,cACf,OAAON,QAAA,KAAa,UACpB;IACA,OAAOH,cAAA,CAAeG,QAAA;EACxB;EAEA,IAAI,CAACE,KAAA,EAAOG,IAAA,KAAS,YAAYH,KAAA,EAAOG,IAAA,KAAS,OAAM,KAAME,KAAA,CAAMC,OAAO,CAACN,KAAA,CAAMO,OAAO,GAAG;IACzF,MAAMC,cAAA,GAAiBR,KAAA,CAAMO,OAAO,CAACE,IAAI,CAAEC,GAAA,IACzC,OAAOA,GAAA,KAAQ,WAAWA,GAAA,CAAIC,KAAK,KAAKb,QAAA,GAAWY,GAAA,KAAQZ,QAAA;IAG7D,IAAIU,cAAA,EAAgB;MAClB,IAAI,OAAOA,cAAA,KAAmB,YAAY,WAAWA,cAAA,EAAgB;QACnE,OAAOZ,mBAAA,CAAoBY,cAAA,CAAeI,KAAK,IAC3CJ,cAAA,CAAeI,KAAK,CAAC;QAAA,EACrBlB,cAAA,CAAec,cAAA,CAAeI,KAAK,EAAEX,IAAA,KAASO,cAAA,CAAeG,KAAK,CAAC;AAAA;MACzE;MACA,OAAOH,cAAA,CAAe;AAAA;IACxB;EACF;EACA,OAAOV,QAAA,CAAS;AAAA;AAClB","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ /** Resolve the configured upload using the same thumbnail policy across document cards. */
2
+ export declare function getDocumentThumbnail({ doc, useAsThumbnail, }: {
3
+ doc: Record<string, unknown>;
4
+ useAsThumbnail?: string;
5
+ }): string | undefined;
6
+ //# sourceMappingURL=getDocumentThumbnail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnail.d.ts","sourceRoot":"","sources":["../../src/utilities/getDocumentThumbnail.ts"],"names":[],"mappings":"AAEA,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,EACnC,GAAG,EACH,cAAc,GACf,EAAE;IACD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,MAAM,GAAG,SAAS,CAiCrB"}
@@ -0,0 +1,27 @@
1
+ import { getBestFitFromSizes, isImage } from 'payload/shared';
2
+ /** Resolve the configured upload using the same thumbnail policy across document cards. */
3
+ export function getDocumentThumbnail({
4
+ doc,
5
+ useAsThumbnail
6
+ }) {
7
+ const value = useAsThumbnail ? doc[useAsThumbnail] : undefined;
8
+ const firstValue = Array.isArray(value) ? value[0] : value;
9
+ const candidate = Array.isArray(value) ? firstValue : firstValue && typeof firstValue === 'object' ? firstValue : doc;
10
+ const thumbnailDoc = candidate && typeof candidate === 'object' && 'relationTo' in candidate && 'value' in candidate ? candidate.value : candidate;
11
+ if (!thumbnailDoc || typeof thumbnailDoc !== 'object') {
12
+ return undefined;
13
+ }
14
+ const upload = thumbnailDoc;
15
+ const thumbnailURL = typeof upload.thumbnailURL === 'string' ? upload.thumbnailURL : undefined;
16
+ const mimeType = typeof upload.mimeType === 'string' ? upload.mimeType : undefined;
17
+ if (mimeType && isImage(mimeType)) {
18
+ return getBestFitFromSizes({
19
+ sizes: upload.variants,
20
+ thumbnailURL,
21
+ url: typeof upload.url === 'string' ? upload.url : '',
22
+ width: typeof upload.width === 'number' ? upload.width : undefined
23
+ }) || undefined;
24
+ }
25
+ return thumbnailURL || undefined;
26
+ }
27
+ //# sourceMappingURL=getDocumentThumbnail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnail.js","names":["getBestFitFromSizes","isImage","getDocumentThumbnail","doc","useAsThumbnail","value","undefined","firstValue","Array","isArray","candidate","thumbnailDoc","upload","thumbnailURL","mimeType","sizes","variants","url","width"],"sources":["../../src/utilities/getDocumentThumbnail.ts"],"sourcesContent":["import { getBestFitFromSizes, isImage } from 'payload/shared'\n\n/** Resolve the configured upload using the same thumbnail policy across document cards. */\nexport function getDocumentThumbnail({\n doc,\n useAsThumbnail,\n}: {\n doc: Record<string, unknown>\n useAsThumbnail?: string\n}): string | undefined {\n const value = useAsThumbnail ? doc[useAsThumbnail] : undefined\n const firstValue = Array.isArray(value) ? value[0] : value\n const candidate = Array.isArray(value)\n ? firstValue\n : firstValue && typeof firstValue === 'object'\n ? firstValue\n : doc\n const thumbnailDoc =\n candidate && typeof candidate === 'object' && 'relationTo' in candidate && 'value' in candidate\n ? candidate.value\n : candidate\n\n if (!thumbnailDoc || typeof thumbnailDoc !== 'object') {\n return undefined\n }\n\n const upload = thumbnailDoc as Record<string, unknown>\n const thumbnailURL = typeof upload.thumbnailURL === 'string' ? upload.thumbnailURL : undefined\n const mimeType = typeof upload.mimeType === 'string' ? upload.mimeType : undefined\n\n if (mimeType && isImage(mimeType)) {\n return (\n getBestFitFromSizes({\n sizes: upload.variants as Record<string, { url?: string; width?: number }>,\n thumbnailURL,\n url: typeof upload.url === 'string' ? upload.url : '',\n width: typeof upload.width === 'number' ? upload.width : undefined,\n }) || undefined\n )\n }\n\n return thumbnailURL || undefined\n}\n"],"mappings":"AAAA,SAASA,mBAAmB,EAAEC,OAAO,QAAQ;AAE7C;AACA,OAAO,SAASC,qBAAqB;EACnCC,GAAG;EACHC;AAAc,CAIf;EACC,MAAMC,KAAA,GAAQD,cAAA,GAAiBD,GAAG,CAACC,cAAA,CAAe,GAAGE,SAAA;EACrD,MAAMC,UAAA,GAAaC,KAAA,CAAMC,OAAO,CAACJ,KAAA,IAASA,KAAK,CAAC,EAAE,GAAGA,KAAA;EACrD,MAAMK,SAAA,GAAYF,KAAA,CAAMC,OAAO,CAACJ,KAAA,IAC5BE,UAAA,GACAA,UAAA,IAAc,OAAOA,UAAA,KAAe,WAClCA,UAAA,GACAJ,GAAA;EACN,MAAMQ,YAAA,GACJD,SAAA,IAAa,OAAOA,SAAA,KAAc,YAAY,gBAAgBA,SAAA,IAAa,WAAWA,SAAA,GAClFA,SAAA,CAAUL,KAAK,GACfK,SAAA;EAEN,IAAI,CAACC,YAAA,IAAgB,OAAOA,YAAA,KAAiB,UAAU;IACrD,OAAOL,SAAA;EACT;EAEA,MAAMM,MAAA,GAASD,YAAA;EACf,MAAME,YAAA,GAAe,OAAOD,MAAA,CAAOC,YAAY,KAAK,WAAWD,MAAA,CAAOC,YAAY,GAAGP,SAAA;EACrF,MAAMQ,QAAA,GAAW,OAAOF,MAAA,CAAOE,QAAQ,KAAK,WAAWF,MAAA,CAAOE,QAAQ,GAAGR,SAAA;EAEzE,IAAIQ,QAAA,IAAYb,OAAA,CAAQa,QAAA,GAAW;IACjC,OACEd,mBAAA,CAAoB;MAClBe,KAAA,EAAOH,MAAA,CAAOI,QAAQ;MACtBH,YAAA;MACAI,GAAA,EAAK,OAAOL,MAAA,CAAOK,GAAG,KAAK,WAAWL,MAAA,CAAOK,GAAG,GAAG;MACnDC,KAAA,EAAO,OAAON,MAAA,CAAOM,KAAK,KAAK,WAAWN,MAAA,CAAOM,KAAK,GAAGZ;IAC3D,MAAMA,SAAA;EAEV;EAEA,OAAOO,YAAA,IAAgBP,SAAA;AACzB","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { PopulateType, SanitizedCollectionConfig } from 'payload';
2
+ /** Select thumbnail metadata independently of the upload collection's defaultPopulate. */
3
+ export declare function getDocumentThumbnailPopulate({ collectionConfig, collections, }: {
4
+ collectionConfig: SanitizedCollectionConfig;
5
+ collections: SanitizedCollectionConfig[];
6
+ }): PopulateType | undefined;
7
+ //# sourceMappingURL=getDocumentThumbnailPopulate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnailPopulate.d.ts","sourceRoot":"","sources":["../../src/utilities/getDocumentThumbnailPopulate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAItE,0FAA0F;AAC1F,wBAAgB,4BAA4B,CAAC,EAC3C,gBAAgB,EAChB,WAAW,GACZ,EAAE;IACD,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,WAAW,EAAE,yBAAyB,EAAE,CAAA;CACzC,GAAG,YAAY,GAAG,SAAS,CAsB3B"}
@@ -0,0 +1,23 @@
1
+ import { getDocumentThumbnailSelect } from './getDocumentThumbnailSelect.js';
2
+ /** Select thumbnail metadata independently of the upload collection's defaultPopulate. */
3
+ export function getDocumentThumbnailPopulate({
4
+ collectionConfig,
5
+ collections
6
+ }) {
7
+ const thumbnailField = collectionConfig.flattenedFields.find(field => field.name === collectionConfig.admin.useAsThumbnail && field.type === 'upload');
8
+ if (!thumbnailField || !('relationTo' in thumbnailField)) {
9
+ return undefined;
10
+ }
11
+ const relatedSlugs = Array.isArray(thumbnailField.relationTo) ? thumbnailField.relationTo : [thumbnailField.relationTo];
12
+ const populate = {};
13
+ for (const slug of relatedSlugs) {
14
+ const relatedCollectionConfig = collections.find(collection => collection.slug === slug);
15
+ if (relatedCollectionConfig) {
16
+ populate[slug] = getDocumentThumbnailSelect({
17
+ collectionConfig: relatedCollectionConfig
18
+ });
19
+ }
20
+ }
21
+ return populate;
22
+ }
23
+ //# sourceMappingURL=getDocumentThumbnailPopulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnailPopulate.js","names":["getDocumentThumbnailSelect","getDocumentThumbnailPopulate","collectionConfig","collections","thumbnailField","flattenedFields","find","field","name","admin","useAsThumbnail","type","undefined","relatedSlugs","Array","isArray","relationTo","populate","slug","relatedCollectionConfig","collection"],"sources":["../../src/utilities/getDocumentThumbnailPopulate.ts"],"sourcesContent":["import type { PopulateType, SanitizedCollectionConfig } from 'payload'\n\nimport { getDocumentThumbnailSelect } from './getDocumentThumbnailSelect.js'\n\n/** Select thumbnail metadata independently of the upload collection's defaultPopulate. */\nexport function getDocumentThumbnailPopulate({\n collectionConfig,\n collections,\n}: {\n collectionConfig: SanitizedCollectionConfig\n collections: SanitizedCollectionConfig[]\n}): PopulateType | undefined {\n const thumbnailField = collectionConfig.flattenedFields.find(\n (field) => field.name === collectionConfig.admin.useAsThumbnail && field.type === 'upload',\n )\n\n if (!thumbnailField || !('relationTo' in thumbnailField)) {\n return undefined\n }\n const relatedSlugs = Array.isArray(thumbnailField.relationTo)\n ? thumbnailField.relationTo\n : [thumbnailField.relationTo]\n const populate: PopulateType = {}\n\n for (const slug of relatedSlugs) {\n const relatedCollectionConfig = collections.find((collection) => collection.slug === slug)\n\n if (relatedCollectionConfig) {\n populate[slug] = getDocumentThumbnailSelect({ collectionConfig: relatedCollectionConfig })\n }\n }\n\n return populate\n}\n"],"mappings":"AAEA,SAASA,0BAA0B,QAAQ;AAE3C;AACA,OAAO,SAASC,6BAA6B;EAC3CC,gBAAgB;EAChBC;AAAW,CAIZ;EACC,MAAMC,cAAA,GAAiBF,gBAAA,CAAiBG,eAAe,CAACC,IAAI,CACzDC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKN,gBAAA,CAAiBO,KAAK,CAACC,cAAc,IAAIH,KAAA,CAAMI,IAAI,KAAK;EAGpF,IAAI,CAACP,cAAA,IAAkB,EAAE,gBAAgBA,cAAa,GAAI;IACxD,OAAOQ,SAAA;EACT;EACA,MAAMC,YAAA,GAAeC,KAAA,CAAMC,OAAO,CAACX,cAAA,CAAeY,UAAU,IACxDZ,cAAA,CAAeY,UAAU,GACzB,CAACZ,cAAA,CAAeY,UAAU,CAAC;EAC/B,MAAMC,QAAA,GAAyB,CAAC;EAEhC,KAAK,MAAMC,IAAA,IAAQL,YAAA,EAAc;IAC/B,MAAMM,uBAAA,GAA0BhB,WAAA,CAAYG,IAAI,CAAEc,UAAA,IAAeA,UAAA,CAAWF,IAAI,KAAKA,IAAA;IAErF,IAAIC,uBAAA,EAAyB;MAC3BF,QAAQ,CAACC,IAAA,CAAK,GAAGlB,0BAAA,CAA2B;QAAEE,gBAAA,EAAkBiB;MAAwB;IAC1F;EACF;EAEA,OAAOF,QAAA;AACT","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { SanitizedCollectionConfig, SelectType } from 'payload';
2
+ /** Custom thumbnail callbacks can depend on any configured upload field. */
3
+ export declare function getDocumentThumbnailSelect({ collectionConfig, select, }: {
4
+ collectionConfig: SanitizedCollectionConfig;
5
+ select?: SelectType;
6
+ }): SelectType;
7
+ //# sourceMappingURL=getDocumentThumbnailSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnailSelect.d.ts","sourceRoot":"","sources":["../../src/utilities/getDocumentThumbnailSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIpE,4EAA4E;AAC5E,wBAAgB,0BAA0B,CAAC,EACzC,gBAAgB,EAChB,MAAW,GACZ,EAAE;IACD,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,GAAG,UAAU,CAgBb"}
@@ -0,0 +1,24 @@
1
+ import { appendUploadSelectFields } from 'payload/shared';
2
+ /** Custom thumbnail callbacks can depend on any configured upload field. */
3
+ export function getDocumentThumbnailSelect({
4
+ collectionConfig,
5
+ select = {}
6
+ }) {
7
+ const thumbnailSelect = {
8
+ ...select
9
+ };
10
+ appendUploadSelectFields({
11
+ collectionConfig,
12
+ select: thumbnailSelect
13
+ });
14
+ if (collectionConfig.upload) {
15
+ thumbnailSelect.url = true;
16
+ }
17
+ if (collectionConfig.upload && typeof collectionConfig.upload.adminThumbnail === 'function') {
18
+ for (const field of collectionConfig.flattenedFields) {
19
+ thumbnailSelect[field.name] = true;
20
+ }
21
+ }
22
+ return thumbnailSelect;
23
+ }
24
+ //# sourceMappingURL=getDocumentThumbnailSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getDocumentThumbnailSelect.js","names":["appendUploadSelectFields","getDocumentThumbnailSelect","collectionConfig","select","thumbnailSelect","upload","url","adminThumbnail","field","flattenedFields","name"],"sources":["../../src/utilities/getDocumentThumbnailSelect.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, SelectType } from 'payload'\n\nimport { appendUploadSelectFields } from 'payload/shared'\n\n/** Custom thumbnail callbacks can depend on any configured upload field. */\nexport function getDocumentThumbnailSelect({\n collectionConfig,\n select = {},\n}: {\n collectionConfig: SanitizedCollectionConfig\n select?: SelectType\n}): SelectType {\n const thumbnailSelect = { ...select }\n\n appendUploadSelectFields({ collectionConfig, select: thumbnailSelect })\n\n if (collectionConfig.upload) {\n thumbnailSelect.url = true\n }\n\n if (collectionConfig.upload && typeof collectionConfig.upload.adminThumbnail === 'function') {\n for (const field of collectionConfig.flattenedFields) {\n thumbnailSelect[field.name] = true\n }\n }\n\n return thumbnailSelect\n}\n"],"mappings":"AAEA,SAASA,wBAAwB,QAAQ;AAEzC;AACA,OAAO,SAASC,2BAA2B;EACzCC,gBAAgB;EAChBC,MAAA,GAAS,CAAC;AAAC,CAIZ;EACC,MAAMC,eAAA,GAAkB;IAAE,GAAGD;EAAO;EAEpCH,wBAAA,CAAyB;IAAEE,gBAAA;IAAkBC,MAAA,EAAQC;EAAgB;EAErE,IAAIF,gBAAA,CAAiBG,MAAM,EAAE;IAC3BD,eAAA,CAAgBE,GAAG,GAAG;EACxB;EAEA,IAAIJ,gBAAA,CAAiBG,MAAM,IAAI,OAAOH,gBAAA,CAAiBG,MAAM,CAACE,cAAc,KAAK,YAAY;IAC3F,KAAK,MAAMC,KAAA,IAASN,gBAAA,CAAiBO,eAAe,EAAE;MACpDL,eAAe,CAACI,KAAA,CAAME,IAAI,CAAC,GAAG;IAChC;EACF;EAEA,OAAON,eAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getHasScheduledPublish.js","names":["hasScheduledPublishEnabled","buildUpcomingScheduleWhere","sanitizeID","getHasScheduledPublish","id","idArg","collectionConfig","globalConfig","hasPublishPermission","payload","entityConfig","collectionSlug","slug","globalSlug","canSchedulePublish","Boolean","totalDocs","db","count","collection","where"],"sources":["../../src/utilities/getHasScheduledPublish.ts"],"sourcesContent":["import type { Payload, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { hasScheduledPublishEnabled } from 'payload/shared'\n\nimport { buildUpcomingScheduleWhere } from '../elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js'\nimport { sanitizeID } from './sanitizeID.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n hasPublishPermission?: boolean\n id?: number | string\n payload: Payload\n}\n\nexport const getHasScheduledPublish = async ({\n id: idArg,\n collectionConfig,\n globalConfig,\n hasPublishPermission,\n payload,\n}: Args): Promise<boolean> => {\n const entityConfig = collectionConfig || globalConfig\n const id = sanitizeID(idArg)\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const canSchedulePublish = Boolean(\n hasScheduledPublishEnabled(entityConfig) &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)),\n )\n\n if (!canSchedulePublish) {\n return false\n }\n\n try {\n const { totalDocs } = await payload.db.count({\n collection: 'payload-jobs',\n where: buildUpcomingScheduleWhere({ id, collectionSlug, globalSlug }),\n })\n\n return totalDocs > 0\n } catch {\n return false\n }\n}\n"],"mappings":"AAEA,SAASA,0BAA0B,QAAQ;AAE3C,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,UAAU,QAAQ;AAU3B,OAAO,MAAMC,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,EAAA,EAAIC,KAAK;EACTC,gBAAgB;EAChBC,YAAY;EACZC,oBAAoB;EACpBC;AAAO,CACF;EACL,MAAMC,YAAA,GAAeJ,gBAAA,IAAoBC,YAAA;EACzC,MAAMH,EAAA,GAAKF,UAAA,CAAWG,KAAA;EACtB,MAAMM,cAAA,GAAiBL,gBAAA,EAAkBM,IAAA;EACzC,MAAMC,UAAA,GAAaN,YAAA,EAAcK,IAAA;EAEjC,MAAME,kBAAA,GAAqBC,OAAA,CACzBf,0BAAA,CAA2BU,YAAA,KACzBF,oBAAA,KACCK,UAAA,IAAeF,cAAA,IAAkBP,EAAE;EAGxC,IAAI,CAACU,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,IAAI;IACF,MAAM;MAAEE;IAAS,CAAE,GAAG,MAAMP,OAAA,CAAQQ,EAAE,CAACC,KAAK,CAAC;MAC3CC,UAAA,EAAY;MACZC,KAAA,EAAOnB,0BAAA,CAA2B;QAAEG,EAAA;QAAIO,cAAA;QAAgBE;MAAW;IACrE;IAEA,OAAOG,SAAA,GAAY;EACrB,EAAE,MAAM;IACN,OAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getHasScheduledPublish.js","names":["hasScheduledPublishEnabled","buildUpcomingScheduleWhere","sanitizeID","getHasScheduledPublish","id","idArg","collectionConfig","globalConfig","hasPublishPermission","payload","entityConfig","collectionSlug","slug","globalSlug","canSchedulePublish","Boolean","totalDocs","db","count","collection","where"],"sources":["../../src/utilities/getHasScheduledPublish.ts"],"sourcesContent":["import type { Payload, SanitizedCollectionConfig, SanitizedGlobalConfig } from 'payload'\n\nimport { hasScheduledPublishEnabled } from 'payload/shared'\n\nimport { buildUpcomingScheduleWhere } from '../elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js'\nimport { sanitizeID } from './sanitizeID.js'\n\ntype Args = {\n collectionConfig?: SanitizedCollectionConfig\n globalConfig?: SanitizedGlobalConfig\n hasPublishPermission?: boolean\n id?: number | string\n payload: Payload\n}\n\nexport const getHasScheduledPublish = async ({\n id: idArg,\n collectionConfig,\n globalConfig,\n hasPublishPermission,\n payload,\n}: Args): Promise<boolean> => {\n const entityConfig = collectionConfig || globalConfig\n const id = sanitizeID(idArg)\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const canSchedulePublish = Boolean(\n hasScheduledPublishEnabled(entityConfig) &&\n hasPublishPermission &&\n (globalSlug || (collectionSlug && id)),\n )\n\n if (!canSchedulePublish) {\n return false\n }\n\n try {\n const { totalDocs } = await payload.db.count({\n collection: 'payload-jobs',\n where: buildUpcomingScheduleWhere({ id, collectionSlug, globalSlug }),\n })\n\n return totalDocs > 0\n } catch {\n return false\n }\n}\n"],"mappings":"AAEA,SAASA,0BAA0B,QAAQ;AAE3C,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,UAAU,QAAQ;AAU3B,OAAO,MAAMC,sBAAA,GAAyB,MAAAA,CAAO;EAC3CC,EAAA,EAAIC,KAAK;EACTC,gBAAgB;EAChBC,YAAY;EACZC,oBAAoB;EACpBC;AAAO,CACF;EACL,MAAMC,YAAA,GAAeJ,gBAAA,IAAoBC,YAAA;EACzC,MAAMH,EAAA,GAAKF,UAAA,CAAWG,KAAA;EACtB,MAAMM,cAAA,GAAiBL,gBAAA,EAAkBM,IAAA;EACzC,MAAMC,UAAA,GAAaN,YAAA,EAAcK,IAAA;EAEjC,MAAME,kBAAA,GAAqBC,OAAA,CACzBf,0BAAA,CAA2BU,YAAA,KAC3BF,oBAAA,KACCK,UAAA,IAAeF,cAAA,IAAkBP,EAAE;EAGtC,IAAI,CAACU,kBAAA,EAAoB;IACvB,OAAO;EACT;EAEA,IAAI;IACF,MAAM;MAAEE;IAAS,CAAE,GAAG,MAAMP,OAAA,CAAQQ,EAAE,CAACC,KAAK,CAAC;MAC3CC,UAAA,EAAY;MACZC,KAAA,EAAOnB,0BAAA,CAA2B;QAAEG,EAAA;QAAIO,cAAA;QAAgBE;MAAW;IACrE;IAEA,OAAOG,SAAA,GAAY;EACrB,EAAE,MAAM;IACN,OAAO;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"handleLivePreview.js","names":["getLivePreviewConfig","collectionConfig","config","globalConfig","isLivePreviewEnabled","admin","livePreview","Boolean","globals","includes","slug","collections","handleLivePreview","collectionSlug","data","globalSlug","operation","req","payload","undefined","find","g","enabled","livePreviewConfig","livePreviewURL","url","result","locale","code","label","err","logger","error","msg"],"sources":["../../src/utilities/handleLivePreview.ts"],"sourcesContent":["import type {\n CollectionConfig,\n GlobalConfig,\n LivePreviewConfig,\n LivePreviewURLType,\n Operation,\n PayloadRequest,\n SanitizedConfig,\n} from 'payload'\n\nexport const getLivePreviewConfig = ({\n collectionConfig,\n config,\n globalConfig,\n isLivePreviewEnabled,\n}: {\n collectionConfig?: CollectionConfig\n config: SanitizedConfig\n globalConfig?: GlobalConfig\n isLivePreviewEnabled: boolean\n}) => ({\n ...(isLivePreviewEnabled ? config.admin.livePreview : {}),\n ...(collectionConfig?.admin?.livePreview || {}),\n ...(globalConfig?.admin?.livePreview || {}),\n})\n\n/**\n * Multi-level check to determine whether live preview is enabled on a collection or global.\n * For example, live preview can be enabled at both the root config level, or on the entity's config.\n * If a collectionConfig/globalConfig is provided, checks if it is enabled at the root level,\n * or on the entity's own config.\n */\nexport const isLivePreviewEnabled = ({\n collectionConfig,\n config,\n globalConfig,\n}: {\n collectionConfig?: CollectionConfig\n config: SanitizedConfig\n globalConfig?: GlobalConfig\n}): boolean => {\n if (globalConfig) {\n return Boolean(\n config.admin?.livePreview?.globals?.includes(globalConfig.slug) ||\n globalConfig.admin?.livePreview,\n )\n }\n\n if (collectionConfig) {\n return Boolean(\n config.admin?.livePreview?.collections?.includes(collectionConfig.slug) ||\n collectionConfig.admin?.livePreview,\n )\n }\n}\n\n/**\n * 1. Looks up the relevant live preview config, which could have been enabled:\n * a. At the root level, e.g. `collections: ['posts']`\n * b. On the collection or global config, e.g. `admin: { livePreview: { ... } }`\n * 2. Determines if live preview is enabled, and if not, early returns.\n * 3. Merges the config with the root config, if necessary.\n * 4. Executes the `url` function, if necessary.\n *\n * Notice: internal function only. Subject to change at any time. Use at your own risk.\n */\nexport const handleLivePreview = async ({\n collectionSlug,\n config,\n data,\n globalSlug,\n operation,\n req,\n}: {\n collectionSlug?: string\n config: SanitizedConfig\n data: Record<string, unknown>\n globalSlug?: string\n operation?: Operation\n req: PayloadRequest\n}): Promise<{\n isLivePreviewEnabled?: boolean\n livePreviewConfig?: LivePreviewConfig\n livePreviewURL?: LivePreviewURLType\n}> => {\n const collectionConfig = collectionSlug\n ? req.payload.collections[collectionSlug]?.config\n : undefined\n\n const globalConfig = globalSlug ? config.globals.find((g) => g.slug === globalSlug) : undefined\n\n const enabled = isLivePreviewEnabled({\n collectionConfig,\n config,\n globalConfig,\n })\n\n if (!enabled) {\n return {}\n }\n\n const livePreviewConfig = getLivePreviewConfig({\n collectionConfig,\n config,\n globalConfig,\n isLivePreviewEnabled: enabled,\n })\n\n let livePreviewURL: string | undefined\n\n if (typeof livePreviewConfig?.url === 'string') {\n livePreviewURL = livePreviewConfig.url\n }\n\n if (typeof livePreviewConfig?.url === 'function' && operation !== 'create') {\n try {\n const result = await livePreviewConfig.url({\n collectionConfig,\n data,\n globalConfig,\n locale: { code: req.locale, label: '' },\n payload: req.payload,\n req,\n })\n\n if (typeof result === 'string') {\n livePreviewURL = result\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error executing the live preview URL function for ${collectionSlug || globalSlug}`,\n })\n }\n }\n\n return { isLivePreviewEnabled: enabled, livePreviewConfig, livePreviewURL }\n}\n"],"mappings":"AAUA,OAAO,MAAMA,oBAAA,GAAuBA,CAAC;EACnCC,gBAAgB;EAChBC,MAAM;EACNC,YAAY;EACZC;AAAoB,CAMrB,MAAM;EACL,IAAIA,oBAAA,GAAuBF,MAAA,CAAOG,KAAK,CAACC,WAAW,GAAG,CAAC,CAAC;EACxD,IAAIL,gBAAA,EAAkBI,KAAA,EAAOC,WAAA,IAAe,CAAC,CAAC;EAC9C,IAAIH,YAAA,EAAcE,KAAA,EAAOC,WAAA,IAAe,CAAC,CAAC;AAC5C;AAEA;;;;;;AAMA,OAAO,MAAMF,oBAAA,GAAuBA,CAAC;EACnCH,gBAAgB;EAChBC,MAAM;EACNC;AAAY,CAKb;EACC,IAAIA,YAAA,EAAc;IAChB,OAAOI,OAAA,CACLL,MAAA,CAAOG,KAAK,EAAEC,WAAA,EAAaE,OAAA,EAASC,QAAA,CAASN,YAAA,CAAaO,IAAI,KAC5DP,YAAA,CAAaE,KAAK,EAAEC,WAAA;EAE1B;EAEA,IAAIL,gBAAA,EAAkB;IACpB,OAAOM,OAAA,CACLL,MAAA,CAAOG,KAAK,EAAEC,WAAA,EAAaK,WAAA,EAAaF,QAAA,CAASR,gBAAA,CAAiBS,IAAI,KACpET,gBAAA,CAAiBI,KAAK,EAAEC,WAAA;EAE9B;AACF;AAEA;;;;;;;;;;AAUA,OAAO,MAAMM,iBAAA,GAAoB,MAAAA,CAAO;EACtCC,cAAc;EACdX,MAAM;EACNY,IAAI;EACJC,UAAU;EACVC,SAAS;EACTC;AAAG,CAQJ;EAKC,MAAMhB,gBAAA,GAAmBY,cAAA,GACrBI,GAAA,CAAIC,OAAO,CAACP,WAAW,CAACE,cAAA,CAAe,EAAEX,MAAA,GACzCiB,SAAA;EAEJ,MAAMhB,YAAA,GAAeY,UAAA,GAAab,MAAA,CAAOM,OAAO,CAACY,IAAI,CAAEC,CAAA,IAAMA,CAAA,CAAEX,IAAI,KAAKK,UAAA,IAAcI,SAAA;EAEtF,MAAMG,OAAA,GAAUlB,oBAAA,CAAqB;IACnCH,gBAAA;IACAC,MAAA;IACAC;EACF;EAEA,IAAI,CAACmB,OAAA,EAAS;IACZ,OAAO,CAAC;EACV;EAEA,MAAMC,iBAAA,GAAoBvB,oBAAA,CAAqB;IAC7CC,gBAAA;IACAC,MAAA;IACAC,YAAA;IACAC,oBAAA,EAAsBkB;EACxB;EAEA,IAAIE,cAAA;EAEJ,IAAI,OAAOD,iBAAA,EAAmBE,GAAA,KAAQ,UAAU;IAC9CD,cAAA,GAAiBD,iBAAA,CAAkBE,GAAG;EACxC;EAEA,IAAI,OAAOF,iBAAA,EAAmBE,GAAA,KAAQ,cAAcT,SAAA,KAAc,UAAU;IAC1E,IAAI;MACF,MAAMU,MAAA,GAAS,MAAMH,iBAAA,CAAkBE,GAAG,CAAC;QACzCxB,gBAAA;QACAa,IAAA;QACAX,YAAA;QACAwB,MAAA,EAAQ;UAAEC,IAAA,EAAMX,GAAA,CAAIU,MAAM;UAAEE,KAAA,EAAO;QAAG;QACtCX,OAAA,EAASD,GAAA,CAAIC,OAAO;QACpBD;MACF;MAEA,IAAI,OAAOS,MAAA,KAAW,UAAU;QAC9BF,cAAA,GAAiBE,MAAA;MACnB;IACF,EAAE,OAAOI,GAAA,EAAK;MACZb,GAAA,CAAIC,OAAO,CAACa,MAAM,CAACC,KAAK,CAAC;QACvBF,GAAA;QACAG,GAAA,EAAK,kEAAkEpB,cAAA,IAAkBE,UAAA;MAC3F;IACF;EACF;EAEA,OAAO;IAAEX,oBAAA,EAAsBkB,OAAA;IAASC,iBAAA;IAAmBC;EAAe;AAC5E","ignoreList":[]}
1
+ {"version":3,"file":"handleLivePreview.js","names":["getLivePreviewConfig","collectionConfig","config","globalConfig","isLivePreviewEnabled","admin","livePreview","Boolean","globals","includes","slug","collections","handleLivePreview","collectionSlug","data","globalSlug","operation","req","payload","undefined","find","g","enabled","livePreviewConfig","livePreviewURL","url","result","locale","code","label","err","logger","error","msg"],"sources":["../../src/utilities/handleLivePreview.ts"],"sourcesContent":["import type {\n CollectionConfig,\n GlobalConfig,\n LivePreviewConfig,\n LivePreviewURLType,\n Operation,\n PayloadRequest,\n SanitizedConfig,\n} from 'payload'\n\nexport const getLivePreviewConfig = ({\n collectionConfig,\n config,\n globalConfig,\n isLivePreviewEnabled,\n}: {\n collectionConfig?: CollectionConfig\n config: SanitizedConfig\n globalConfig?: GlobalConfig\n isLivePreviewEnabled: boolean\n}) => ({\n ...(isLivePreviewEnabled ? config.admin.livePreview : {}),\n ...(collectionConfig?.admin?.livePreview || {}),\n ...(globalConfig?.admin?.livePreview || {}),\n})\n\n/**\n * Multi-level check to determine whether live preview is enabled on a collection or global.\n * For example, live preview can be enabled at both the root config level, or on the entity's config.\n * If a collectionConfig/globalConfig is provided, checks if it is enabled at the root level,\n * or on the entity's own config.\n */\nexport const isLivePreviewEnabled = ({\n collectionConfig,\n config,\n globalConfig,\n}: {\n collectionConfig?: CollectionConfig\n config: SanitizedConfig\n globalConfig?: GlobalConfig\n}): boolean => {\n if (globalConfig) {\n return Boolean(\n config.admin?.livePreview?.globals?.includes(globalConfig.slug) ||\n globalConfig.admin?.livePreview,\n )\n }\n\n if (collectionConfig) {\n return Boolean(\n config.admin?.livePreview?.collections?.includes(collectionConfig.slug) ||\n collectionConfig.admin?.livePreview,\n )\n }\n}\n\n/**\n * 1. Looks up the relevant live preview config, which could have been enabled:\n * a. At the root level, e.g. `collections: ['posts']`\n * b. On the collection or global config, e.g. `admin: { livePreview: { ... } }`\n * 2. Determines if live preview is enabled, and if not, early returns.\n * 3. Merges the config with the root config, if necessary.\n * 4. Executes the `url` function, if necessary.\n *\n * Notice: internal function only. Subject to change at any time. Use at your own risk.\n */\nexport const handleLivePreview = async ({\n collectionSlug,\n config,\n data,\n globalSlug,\n operation,\n req,\n}: {\n collectionSlug?: string\n config: SanitizedConfig\n data: Record<string, unknown>\n globalSlug?: string\n operation?: Operation\n req: PayloadRequest\n}): Promise<{\n isLivePreviewEnabled?: boolean\n livePreviewConfig?: LivePreviewConfig\n livePreviewURL?: LivePreviewURLType\n}> => {\n const collectionConfig = collectionSlug\n ? req.payload.collections[collectionSlug]?.config\n : undefined\n\n const globalConfig = globalSlug ? config.globals.find((g) => g.slug === globalSlug) : undefined\n\n const enabled = isLivePreviewEnabled({\n collectionConfig,\n config,\n globalConfig,\n })\n\n if (!enabled) {\n return {}\n }\n\n const livePreviewConfig = getLivePreviewConfig({\n collectionConfig,\n config,\n globalConfig,\n isLivePreviewEnabled: enabled,\n })\n\n let livePreviewURL: string | undefined\n\n if (typeof livePreviewConfig?.url === 'string') {\n livePreviewURL = livePreviewConfig.url\n }\n\n if (typeof livePreviewConfig?.url === 'function' && operation !== 'create') {\n try {\n const result = await livePreviewConfig.url({\n collectionConfig,\n data,\n globalConfig,\n locale: { code: req.locale, label: '' },\n payload: req.payload,\n req,\n })\n\n if (typeof result === 'string') {\n livePreviewURL = result\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `There was an error executing the live preview URL function for ${collectionSlug || globalSlug}`,\n })\n }\n }\n\n return { isLivePreviewEnabled: enabled, livePreviewConfig, livePreviewURL }\n}\n"],"mappings":"AAUA,OAAO,MAAMA,oBAAA,GAAuBA,CAAC;EACnCC,gBAAgB;EAChBC,MAAM;EACNC,YAAY;EACZC;AAAoB,CAMrB,MAAM;EACL,IAAIA,oBAAA,GAAuBF,MAAA,CAAOG,KAAK,CAACC,WAAW,GAAG,CAAC,CAAC;EACxD,IAAIL,gBAAA,EAAkBI,KAAA,EAAOC,WAAA,IAAe,CAAC,CAAC;EAC9C,IAAIH,YAAA,EAAcE,KAAA,EAAOC,WAAA,IAAe,CAAC,CAAC;AAC5C;AAEA;;;;;;AAMA,OAAO,MAAMF,oBAAA,GAAuBA,CAAC;EACnCH,gBAAgB;EAChBC,MAAM;EACNC;AAAY,CAKb;EACC,IAAIA,YAAA,EAAc;IAChB,OAAOI,OAAA,CACLL,MAAA,CAAOG,KAAK,EAAEC,WAAA,EAAaE,OAAA,EAASC,QAAA,CAASN,YAAA,CAAaO,IAAI,KAC9DP,YAAA,CAAaE,KAAK,EAAEC,WAAA;EAExB;EAEA,IAAIL,gBAAA,EAAkB;IACpB,OAAOM,OAAA,CACLL,MAAA,CAAOG,KAAK,EAAEC,WAAA,EAAaK,WAAA,EAAaF,QAAA,CAASR,gBAAA,CAAiBS,IAAI,KACtET,gBAAA,CAAiBI,KAAK,EAAEC,WAAA;EAE5B;AACF;AAEA;;;;;;;;;;AAUA,OAAO,MAAMM,iBAAA,GAAoB,MAAAA,CAAO;EACtCC,cAAc;EACdX,MAAM;EACNY,IAAI;EACJC,UAAU;EACVC,SAAS;EACTC;AAAG,CAQJ;EAKC,MAAMhB,gBAAA,GAAmBY,cAAA,GACrBI,GAAA,CAAIC,OAAO,CAACP,WAAW,CAACE,cAAA,CAAe,EAAEX,MAAA,GACzCiB,SAAA;EAEJ,MAAMhB,YAAA,GAAeY,UAAA,GAAab,MAAA,CAAOM,OAAO,CAACY,IAAI,CAAEC,CAAA,IAAMA,CAAA,CAAEX,IAAI,KAAKK,UAAA,IAAcI,SAAA;EAEtF,MAAMG,OAAA,GAAUlB,oBAAA,CAAqB;IACnCH,gBAAA;IACAC,MAAA;IACAC;EACF;EAEA,IAAI,CAACmB,OAAA,EAAS;IACZ,OAAO,CAAC;EACV;EAEA,MAAMC,iBAAA,GAAoBvB,oBAAA,CAAqB;IAC7CC,gBAAA;IACAC,MAAA;IACAC,YAAA;IACAC,oBAAA,EAAsBkB;EACxB;EAEA,IAAIE,cAAA;EAEJ,IAAI,OAAOD,iBAAA,EAAmBE,GAAA,KAAQ,UAAU;IAC9CD,cAAA,GAAiBD,iBAAA,CAAkBE,GAAG;EACxC;EAEA,IAAI,OAAOF,iBAAA,EAAmBE,GAAA,KAAQ,cAAcT,SAAA,KAAc,UAAU;IAC1E,IAAI;MACF,MAAMU,MAAA,GAAS,MAAMH,iBAAA,CAAkBE,GAAG,CAAC;QACzCxB,gBAAA;QACAa,IAAA;QACAX,YAAA;QACAwB,MAAA,EAAQ;UAAEC,IAAA,EAAMX,GAAA,CAAIU,MAAM;UAAEE,KAAA,EAAO;QAAG;QACtCX,OAAA,EAASD,GAAA,CAAIC,OAAO;QACpBD;MACF;MAEA,IAAI,OAAOS,MAAA,KAAW,UAAU;QAC9BF,cAAA,GAAiBE,MAAA;MACnB;IACF,EAAE,OAAOI,GAAA,EAAK;MACZb,GAAA,CAAIC,OAAO,CAACa,MAAM,CAACC,KAAK,CAAC;QACvBF,GAAA;QACAG,GAAA,EAAK,kEAAkEpB,cAAA,IAAkBE,UAAA;MAC3F;IACF;EACF;EAEA,OAAO;IAAEX,oBAAA,EAAsBkB,OAAA;IAASC,iBAAA;IAAmBC;EAAe;AAC5E","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"hasSavePermission.js","names":["hasSavePermission","args","collectionSlug","docPermissions","globalSlug","isEditing","Boolean","update","create"],"sources":["../../src/utilities/hasSavePermission.ts"],"sourcesContent":["import type {\n SanitizedCollectionPermission,\n SanitizedDocumentPermissions,\n SanitizedGlobalPermission,\n} from 'payload'\n\nexport const hasSavePermission = (args: {\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n collectionSlug?: string\n docPermissions: SanitizedDocumentPermissions\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n globalSlug?: string\n isEditing: boolean\n}) => {\n const { collectionSlug, docPermissions, globalSlug, isEditing } = args\n\n if (collectionSlug) {\n return Boolean(\n (isEditing && docPermissions?.update) ||\n (!isEditing && (docPermissions as SanitizedCollectionPermission)?.create),\n )\n }\n\n if (globalSlug) {\n return Boolean((docPermissions as SanitizedGlobalPermission)?.update)\n }\n\n return false\n}\n"],"mappings":"AAMA,OAAO,MAAMA,iBAAA,GAAqBC,IAAA;EAYhC,MAAM;IAAEC,cAAc;IAAEC,cAAc;IAAEC,UAAU;IAAEC;EAAS,CAAE,GAAGJ,IAAA;EAElE,IAAIC,cAAA,EAAgB;IAClB,OAAOI,OAAA,CACLD,SAAC,IAAaF,cAAA,EAAgBI,MAAA,IAC3B,CAACF,SAAA,IAAcF,cAAA,EAAkDK,MAAA;EAExE;EAEA,IAAIJ,UAAA,EAAY;IACd,OAAOE,OAAA,CAASH,cAAA,EAA8CI,MAAA;EAChE;EAEA,OAAO;AACT","ignoreList":[]}
1
+ {"version":3,"file":"hasSavePermission.js","names":["hasSavePermission","args","collectionSlug","docPermissions","globalSlug","isEditing","Boolean","update","create"],"sources":["../../src/utilities/hasSavePermission.ts"],"sourcesContent":["import type {\n SanitizedCollectionPermission,\n SanitizedDocumentPermissions,\n SanitizedGlobalPermission,\n} from 'payload'\n\nexport const hasSavePermission = (args: {\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n collectionSlug?: string\n docPermissions: SanitizedDocumentPermissions\n /*\n * Pass either `collectionSlug` or `globalSlug`\n */\n globalSlug?: string\n isEditing: boolean\n}) => {\n const { collectionSlug, docPermissions, globalSlug, isEditing } = args\n\n if (collectionSlug) {\n return Boolean(\n (isEditing && docPermissions?.update) ||\n (!isEditing && (docPermissions as SanitizedCollectionPermission)?.create),\n )\n }\n\n if (globalSlug) {\n return Boolean((docPermissions as SanitizedGlobalPermission)?.update)\n }\n\n return false\n}\n"],"mappings":"AAMA,OAAO,MAAMA,iBAAA,GAAqBC,IAAA;EAYhC,MAAM;IAAEC,cAAc;IAAEC,cAAc;IAAEC,UAAU;IAAEC;EAAS,CAAE,GAAGJ,IAAA;EAElE,IAAIC,cAAA,EAAgB;IAClB,OAAOI,OAAA,CACLD,SAAC,IAAaF,cAAA,EAAgBI,MAAA,IAC7B,CAACF,SAAA,IAAcF,cAAA,EAAkDK,MAAA;EAEtE;EAEA,IAAIJ,UAAA,EAAY;IACd,OAAOE,OAAA,CAASH,cAAA,EAA8CI,MAAA;EAChE;EAEA,OAAO;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"schedulePublishHandler.js","names":["canAccessAdmin","Forbidden","hasScheduledPublishEnabled","buildUpcomingScheduleWhere","getDocumentPermissions","getUpcomingScheduledPublishHandler","id","collectionSlug","globalSlug","req","payload","collectionConfig","collections","config","undefined","globalConfig","globals","find","slug","entityConfig","hasValidTarget","Boolean","t","hasPublishPermission","data","docs","db","collection","limit","sort","where","map","job","input","type","locale","timezone","waitUntil","schedulePublishHandler","date","deleteID","doc","global","localeToPublish","i18n","user","delete","overrideAccess","and","equals","taskSlug","message","jobs","queue","relationTo","value","task","err","error","logger"],"sources":["../../src/utilities/schedulePublishHandler.ts"],"sourcesContent":["import type { SchedulePublishTaskInput, ServerFunction } from 'payload'\n\nimport { canAccessAdmin, Forbidden } from 'payload'\nimport { hasScheduledPublishEnabled } from 'payload/shared'\n\nimport type { UpcomingEvent } from '../elements/PublishButton/ScheduleDrawer/types.js'\n\nimport { buildUpcomingScheduleWhere } from '../elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\n\nexport type SchedulePublishHandlerArgs = {\n date?: Date\n /**\n * The job id to delete to remove a scheduled publish event\n */\n deleteID?: number | string\n localeToPublish?: string\n timezone?: string\n} & Pick<SchedulePublishTaskInput, 'doc' | 'global' | 'type'>\n\nexport type GetUpcomingScheduledPublishHandlerArgs = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n}\n\nexport const getUpcomingScheduledPublishHandler: ServerFunction<\n GetUpcomingScheduledPublishHandlerArgs,\n Promise<UpcomingEvent[]>\n> = async ({ id, collectionSlug, globalSlug, req }) => {\n const { payload } = req\n\n await canAccessAdmin({ req })\n\n const collectionConfig = collectionSlug ? payload.collections[collectionSlug]?.config : undefined\n const globalConfig = globalSlug\n ? payload.config.globals.find(({ slug }) => slug === globalSlug)\n : undefined\n const entityConfig = collectionConfig || globalConfig\n const hasValidTarget = Boolean(\n entityConfig &&\n hasScheduledPublishEnabled(entityConfig) &&\n ((collectionConfig && id !== undefined && !globalSlug) || (globalConfig && !collectionSlug)),\n )\n\n if (!hasValidTarget) {\n throw new Forbidden(req.t)\n }\n\n const { hasPublishPermission } = await getDocumentPermissions({\n id,\n collectionConfig,\n data: {},\n globalConfig,\n req,\n })\n\n if (!hasPublishPermission) {\n throw new Forbidden(req.t)\n }\n\n const { docs } = await payload.db.find<UpcomingEvent>({\n collection: 'payload-jobs',\n limit: 0,\n sort: 'waitUntil',\n where: buildUpcomingScheduleWhere({ id, collectionSlug, globalSlug }),\n })\n\n return docs.map((job) => ({\n id: job.id,\n input: {\n type: job.input?.type === 'unpublish' ? 'unpublish' : 'publish',\n locale: job.input?.locale,\n timezone: job.input?.timezone,\n },\n waitUntil: job.waitUntil,\n }))\n}\n\nexport const schedulePublishHandler: ServerFunction<SchedulePublishHandlerArgs> = async ({\n type,\n date,\n deleteID,\n doc,\n global,\n localeToPublish,\n req,\n timezone,\n}) => {\n const { i18n, payload, user } = req\n\n await canAccessAdmin({ req })\n\n try {\n if (deleteID) {\n await payload.delete({\n collection: 'payload-jobs',\n overrideAccess: true,\n req,\n where: {\n and: [{ id: { equals: deleteID } }, { taskSlug: { equals: 'schedulePublish' } }],\n },\n })\n\n return { message: i18n.t('general:success') }\n }\n\n await payload.jobs.queue({\n input: {\n type,\n doc,\n global,\n locale: localeToPublish,\n timezone,\n user:\n user && user.collection\n ? {\n relationTo: user.collection,\n value: user.id,\n }\n : undefined,\n },\n overrideAccess: true,\n task: 'schedulePublish',\n waitUntil: date,\n })\n } catch (err) {\n let error\n\n if (deleteID) {\n error = `Error deleting scheduled publish event with ID ${deleteID}`\n } else {\n error = `Error scheduling ${type} for `\n if (doc) {\n error += `document with ID ${doc.value} in collection ${doc.relationTo}`\n }\n }\n\n payload.logger.error({ err }, error)\n\n return {\n error,\n }\n }\n\n return { message: i18n.t('general:success') }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"schedulePublishHandler.js","names":["canAccessAdmin","Forbidden","hasScheduledPublishEnabled","buildUpcomingScheduleWhere","getDocumentPermissions","getUpcomingScheduledPublishHandler","id","collectionSlug","globalSlug","req","payload","collectionConfig","collections","config","undefined","globalConfig","globals","find","slug","entityConfig","hasValidTarget","Boolean","t","hasPublishPermission","data","docs","db","collection","limit","sort","where","map","job","input","type","locale","timezone","waitUntil","schedulePublishHandler","date","deleteID","doc","global","localeToPublish","i18n","user","delete","overrideAccess","and","equals","taskSlug","message","jobs","queue","relationTo","value","task","err","error","logger"],"sources":["../../src/utilities/schedulePublishHandler.ts"],"sourcesContent":["import type { SchedulePublishTaskInput, ServerFunction } from 'payload'\n\nimport { canAccessAdmin, Forbidden } from 'payload'\nimport { hasScheduledPublishEnabled } from 'payload/shared'\n\nimport type { UpcomingEvent } from '../elements/PublishButton/ScheduleDrawer/types.js'\n\nimport { buildUpcomingScheduleWhere } from '../elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.js'\nimport { getDocumentPermissions } from './getDocumentPermissions.js'\n\nexport type SchedulePublishHandlerArgs = {\n date?: Date\n /**\n * The job id to delete to remove a scheduled publish event\n */\n deleteID?: number | string\n localeToPublish?: string\n timezone?: string\n} & Pick<SchedulePublishTaskInput, 'doc' | 'global' | 'type'>\n\nexport type GetUpcomingScheduledPublishHandlerArgs = {\n collectionSlug?: string\n globalSlug?: string\n id?: number | string\n}\n\nexport const getUpcomingScheduledPublishHandler: ServerFunction<\n GetUpcomingScheduledPublishHandlerArgs,\n Promise<UpcomingEvent[]>\n> = async ({ id, collectionSlug, globalSlug, req }) => {\n const { payload } = req\n\n await canAccessAdmin({ req })\n\n const collectionConfig = collectionSlug ? payload.collections[collectionSlug]?.config : undefined\n const globalConfig = globalSlug\n ? payload.config.globals.find(({ slug }) => slug === globalSlug)\n : undefined\n const entityConfig = collectionConfig || globalConfig\n const hasValidTarget = Boolean(\n entityConfig &&\n hasScheduledPublishEnabled(entityConfig) &&\n ((collectionConfig && id !== undefined && !globalSlug) || (globalConfig && !collectionSlug)),\n )\n\n if (!hasValidTarget) {\n throw new Forbidden(req.t)\n }\n\n const { hasPublishPermission } = await getDocumentPermissions({\n id,\n collectionConfig,\n data: {},\n globalConfig,\n req,\n })\n\n if (!hasPublishPermission) {\n throw new Forbidden(req.t)\n }\n\n const { docs } = await payload.db.find<UpcomingEvent>({\n collection: 'payload-jobs',\n limit: 0,\n sort: 'waitUntil',\n where: buildUpcomingScheduleWhere({ id, collectionSlug, globalSlug }),\n })\n\n return docs.map((job) => ({\n id: job.id,\n input: {\n type: job.input?.type === 'unpublish' ? 'unpublish' : 'publish',\n locale: job.input?.locale,\n timezone: job.input?.timezone,\n },\n waitUntil: job.waitUntil,\n }))\n}\n\nexport const schedulePublishHandler: ServerFunction<SchedulePublishHandlerArgs> = async ({\n type,\n date,\n deleteID,\n doc,\n global,\n localeToPublish,\n req,\n timezone,\n}) => {\n const { i18n, payload, user } = req\n\n await canAccessAdmin({ req })\n\n try {\n if (deleteID) {\n await payload.delete({\n collection: 'payload-jobs',\n overrideAccess: true,\n req,\n where: {\n and: [{ id: { equals: deleteID } }, { taskSlug: { equals: 'schedulePublish' } }],\n },\n })\n\n return { message: i18n.t('general:success') }\n }\n\n await payload.jobs.queue({\n input: {\n type,\n doc,\n global,\n locale: localeToPublish,\n timezone,\n user:\n user && user.collection\n ? {\n relationTo: user.collection,\n value: user.id,\n }\n : undefined,\n },\n overrideAccess: true,\n task: 'schedulePublish',\n waitUntil: date,\n })\n } catch (err) {\n let error\n\n if (deleteID) {\n error = `Error deleting scheduled publish event with ID ${deleteID}`\n } else {\n error = `Error scheduling ${type} for `\n if (doc) {\n error += `document with ID ${doc.value} in collection ${doc.relationTo}`\n }\n }\n\n payload.logger.error({ err }, error)\n\n return {\n error,\n }\n }\n\n return { message: i18n.t('general:success') }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"serverFunctionRegistry.d.ts","sourceRoot":"","sources":["../../src/utilities/serverFunctionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAkB7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAe1E,CAAA"}
1
+ {"version":3,"file":"serverFunctionRegistry.d.ts","sourceRoot":"","sources":["../../src/utilities/serverFunctionRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAmB7C;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAgB1E,CAAA"}
@@ -4,6 +4,7 @@ import { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard
4
4
  import { renderDocumentHandler } from '../views/Document/handleServerFunction.js';
5
5
  import { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js';
6
6
  import { renderListHandler } from '../views/List/handleServerFunction.js';
7
+ import { getDashboardDocumentsHandler } from '../widgets/RecentlyViewed/getDocuments.js';
7
8
  import { buildFormStateHandler } from './buildFormState.js';
8
9
  import { buildTableStateHandler } from './buildTableState.js';
9
10
  import { copyDataFromLocaleHandler } from './copyDataFromLocale.js';
@@ -28,6 +29,7 @@ import { switchLanguageHandler } from './switchLanguageHandler.js';
28
29
  export const sharedServerFunctions = {
29
30
  'copy-data-from-locale': copyDataFromLocaleHandler,
30
31
  'form-state': buildFormStateHandler,
32
+ 'get-dashboard-documents': getDashboardDocumentsHandler,
31
33
  'get-default-layout': getDefaultLayoutHandler,
32
34
  'get-upcoming-scheduled-publish': getUpcomingScheduledPublishHandler,
33
35
  'render-document': renderDocumentHandler,
@@ -1 +1 @@
1
- {"version":3,"file":"serverFunctionRegistry.js","names":["renderTabHandler","_internal_renderFieldHandler","getDefaultLayoutHandler","renderWidgetHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","buildFormStateHandler","buildTableStateHandler","copyDataFromLocaleHandler","getUpcomingScheduledPublishHandler","schedulePublishHandler","slugifyHandler","switchLanguageHandler","sharedServerFunctions","slugify"],"sources":["../../src/utilities/serverFunctionRegistry.ts"],"sourcesContent":["import type { ServerFunction } from 'payload'\n\nimport { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js'\nimport { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js'\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { buildFormStateHandler } from './buildFormState.js'\nimport { buildTableStateHandler } from './buildTableState.js'\nimport { copyDataFromLocaleHandler } from './copyDataFromLocale.js'\nimport {\n getUpcomingScheduledPublishHandler,\n schedulePublishHandler,\n} from './schedulePublishHandler.js'\nimport { slugifyHandler } from './slugify.js'\nimport { switchLanguageHandler } from './switchLanguageHandler.js'\n\n/**\n * The complete, framework-agnostic set of Payload server functions.\n *\n * Every adapter (`@payloadcms/next`, `@payloadcms/tanstack-start`) dispatches\n * from this single registry via `createServerFunctionHandler`, so a handler\n * added here reaches every framework and the adapter lists can't drift.\n *\n * Handlers may return values containing React elements (e.g. `customComponents`\n * inside form state, the `Document` / `List` nodes from render-document /\n * render-list, the render-field / render-widget output). Adapters ship those\n * over the wire as RSC payloads: Next.js does this natively, while the TanStack\n * Start adapter passes a `transformResult` (`serializeForRsc`) to\n * `createServerFunctionHandler` that converts elements into\n * `renderServerComponent` handles.\n */\nexport const sharedServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-default-layout': getDefaultLayoutHandler,\n 'get-upcoming-scheduled-publish': getUpcomingScheduledPublishHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'render-tab': renderTabHandler,\n 'render-widget': renderWidgetHandler,\n 'schedule-publish': schedulePublishHandler,\n slugify: slugifyHandler,\n 'switch-language': switchLanguageHandler,\n 'table-state': buildTableStateHandler,\n}\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AACjC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,uBAAuB,EAAEC,mBAAmB,QAAQ;AAC7D,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,yBAAyB,QAAQ;AAC1C,SACEC,kCAAkC,EAClCC,sBAAsB,QACjB;AACP,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AAEtC;;;;;;;;;;;;;;;AAeA,OAAO,MAAMC,qBAAA,GAAkE;EAC7E,yBAAyBL,yBAAA;EACzB,cAAcF,qBAAA;EACd,sBAAsBL,uBAAA;EACtB,kCAAkCQ,kCAAA;EAClC,mBAAmBN,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBJ,4BAAA;EAChB,eAAeK,iBAAA;EACf,cAAcN,gBAAA;EACd,iBAAiBG,mBAAA;EACjB,oBAAoBQ,sBAAA;EACpBI,OAAA,EAASH,cAAA;EACT,mBAAmBC,qBAAA;EACnB,eAAeL;AACjB","ignoreList":[]}
1
+ {"version":3,"file":"serverFunctionRegistry.js","names":["renderTabHandler","_internal_renderFieldHandler","getDefaultLayoutHandler","renderWidgetHandler","renderDocumentHandler","renderDocumentSlotsHandler","renderListHandler","getDashboardDocumentsHandler","buildFormStateHandler","buildTableStateHandler","copyDataFromLocaleHandler","getUpcomingScheduledPublishHandler","schedulePublishHandler","slugifyHandler","switchLanguageHandler","sharedServerFunctions","slugify"],"sources":["../../src/utilities/serverFunctionRegistry.ts"],"sourcesContent":["import type { ServerFunction } from 'payload'\n\nimport { renderTabHandler } from '../elements/Nav/SidebarTabs/renderTabServerFn.js'\nimport { _internal_renderFieldHandler } from '../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport { getDefaultLayoutHandler, renderWidgetHandler } from '../views/Dashboard/serverFunctions.js'\nimport { renderDocumentHandler } from '../views/Document/handleServerFunction.js'\nimport { renderDocumentSlotsHandler } from '../views/Document/renderDocumentSlots.js'\nimport { renderListHandler } from '../views/List/handleServerFunction.js'\nimport { getDashboardDocumentsHandler } from '../widgets/RecentlyViewed/getDocuments.js'\nimport { buildFormStateHandler } from './buildFormState.js'\nimport { buildTableStateHandler } from './buildTableState.js'\nimport { copyDataFromLocaleHandler } from './copyDataFromLocale.js'\nimport {\n getUpcomingScheduledPublishHandler,\n schedulePublishHandler,\n} from './schedulePublishHandler.js'\nimport { slugifyHandler } from './slugify.js'\nimport { switchLanguageHandler } from './switchLanguageHandler.js'\n\n/**\n * The complete, framework-agnostic set of Payload server functions.\n *\n * Every adapter (`@payloadcms/next`, `@payloadcms/tanstack-start`) dispatches\n * from this single registry via `createServerFunctionHandler`, so a handler\n * added here reaches every framework and the adapter lists can't drift.\n *\n * Handlers may return values containing React elements (e.g. `customComponents`\n * inside form state, the `Document` / `List` nodes from render-document /\n * render-list, the render-field / render-widget output). Adapters ship those\n * over the wire as RSC payloads: Next.js does this natively, while the TanStack\n * Start adapter passes a `transformResult` (`serializeForRsc`) to\n * `createServerFunctionHandler` that converts elements into\n * `renderServerComponent` handles.\n */\nexport const sharedServerFunctions: Record<string, ServerFunction<any, any>> = {\n 'copy-data-from-locale': copyDataFromLocaleHandler,\n 'form-state': buildFormStateHandler,\n 'get-dashboard-documents': getDashboardDocumentsHandler,\n 'get-default-layout': getDefaultLayoutHandler,\n 'get-upcoming-scheduled-publish': getUpcomingScheduledPublishHandler,\n 'render-document': renderDocumentHandler,\n 'render-document-slots': renderDocumentSlotsHandler,\n 'render-field': _internal_renderFieldHandler,\n 'render-list': renderListHandler,\n 'render-tab': renderTabHandler,\n 'render-widget': renderWidgetHandler,\n 'schedule-publish': schedulePublishHandler,\n slugify: slugifyHandler,\n 'switch-language': switchLanguageHandler,\n 'table-state': buildTableStateHandler,\n}\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AACjC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,uBAAuB,EAAEC,mBAAmB,QAAQ;AAC7D,SAASC,qBAAqB,QAAQ;AACtC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AAClC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,qBAAqB,QAAQ;AACtC,SAASC,sBAAsB,QAAQ;AACvC,SAASC,yBAAyB,QAAQ;AAC1C,SACEC,kCAAkC,EAClCC,sBAAsB,QACjB;AACP,SAASC,cAAc,QAAQ;AAC/B,SAASC,qBAAqB,QAAQ;AAEtC;;;;;;;;;;;;;;;AAeA,OAAO,MAAMC,qBAAA,GAAkE;EAC7E,yBAAyBL,yBAAA;EACzB,cAAcF,qBAAA;EACd,2BAA2BD,4BAAA;EAC3B,sBAAsBL,uBAAA;EACtB,kCAAkCS,kCAAA;EAClC,mBAAmBP,qBAAA;EACnB,yBAAyBC,0BAAA;EACzB,gBAAgBJ,4BAAA;EAChB,eAAeK,iBAAA;EACf,cAAcN,gBAAA;EACd,iBAAiBG,mBAAA;EACjB,oBAAoBS,sBAAA;EACpBI,OAAA,EAASH,cAAA;EACT,mBAAmBC,qBAAA;EACnB,eAAeL;AACjB","ignoreList":[]}
@@ -1,3 +1,8 @@
1
- import type { ClientField, Field } from 'payload';
2
- export declare const traverseForLocalizedFields: (fields: ClientField[] | Field[]) => boolean;
1
+ import type { ClientBlock, ClientField, Field } from 'payload';
2
+ type TraverseForLocalizedFieldsArgs = {
3
+ blocksMap?: Record<string, ClientBlock>;
4
+ fields: ClientField[] | Field[];
5
+ };
6
+ export declare const traverseForLocalizedFields: (args: (ClientField | Field)[] | TraverseForLocalizedFieldsArgs) => boolean;
7
+ export {};
3
8
  //# sourceMappingURL=traverseForLocalizedFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseForLocalizedFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseForLocalizedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEjD,eAAO,MAAM,0BAA0B,WAAY,WAAW,EAAE,GAAG,KAAK,EAAE,KAAG,OA6C5E,CAAA"}
1
+ {"version":3,"file":"traverseForLocalizedFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseForLocalizedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE9D,KAAK,8BAA8B,GAAG;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;IACvC,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,0BAA0B,SAC/B,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE,GAAG,8BAA8B,KAC7D,OAkDF,CAAA"}
@@ -1,4 +1,11 @@
1
- export const traverseForLocalizedFields = fields => {
1
+ export const traverseForLocalizedFields = args => {
2
+ const {
3
+ blocksMap,
4
+ fields
5
+ } = Array.isArray(args) ? {
6
+ blocksMap: undefined,
7
+ fields: args
8
+ } : args;
2
9
  for (const field of fields) {
3
10
  if ('localized' in field && field.localized) {
4
11
  return true;
@@ -8,17 +15,21 @@ export const traverseForLocalizedFields = fields => {
8
15
  case 'collapsible':
9
16
  case 'group':
10
17
  case 'row':
11
- if (field.fields && traverseForLocalizedFields(field.fields)) {
18
+ if (field.fields && traverseForLocalizedFields({
19
+ blocksMap,
20
+ fields: field.fields
21
+ })) {
12
22
  return true;
13
23
  }
14
24
  break;
15
25
  case 'blocks':
16
26
  if (field.blocks) {
17
- for (const block of field.blocks) {
18
- if (typeof block === 'string') {
19
- continue;
20
- }
21
- if (block.fields && traverseForLocalizedFields(block.fields)) {
27
+ for (const blockOrSlug of field.blocks) {
28
+ const block = typeof blockOrSlug === 'string' ? blocksMap?.[blockOrSlug] : blockOrSlug;
29
+ if (block?.fields && traverseForLocalizedFields({
30
+ blocksMap,
31
+ fields: block.fields
32
+ })) {
22
33
  return true;
23
34
  }
24
35
  }
@@ -30,7 +41,10 @@ export const traverseForLocalizedFields = fields => {
30
41
  if ('localized' in tab && tab.localized) {
31
42
  return true;
32
43
  }
33
- if ('fields' in tab && tab.fields && traverseForLocalizedFields(tab.fields)) {
44
+ if ('fields' in tab && tab.fields && traverseForLocalizedFields({
45
+ blocksMap,
46
+ fields: tab.fields
47
+ })) {
34
48
  return true;
35
49
  }
36
50
  }