@payloadcms/ui 4.0.0-internal.532221d → 4.0.0-internal.567a487

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 (501) hide show
  1. package/dist/elements/AppHeader/index.css +5 -0
  2. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  3. package/dist/elements/AppHeader/index.js +3 -0
  4. package/dist/elements/AppHeader/index.js.map +1 -1
  5. package/dist/elements/ArrayAction/index.d.ts +1 -0
  6. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +45 -32
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.d.ts.map +1 -1
  10. package/dist/elements/Autosave/index.js +3 -0
  11. package/dist/elements/Autosave/index.js.map +1 -1
  12. package/dist/elements/BranchSelector/NewBranchModal/index.css +46 -0
  13. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +12 -0
  14. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +1 -0
  15. package/dist/elements/BranchSelector/NewBranchModal/index.js +174 -0
  16. package/dist/elements/BranchSelector/NewBranchModal/index.js.map +1 -0
  17. package/dist/elements/BranchSelector/index.css +172 -0
  18. package/dist/elements/BranchSelector/index.d.ts +13 -0
  19. package/dist/elements/BranchSelector/index.d.ts.map +1 -0
  20. package/dist/elements/BranchSelector/index.js +255 -0
  21. package/dist/elements/BranchSelector/index.js.map +1 -0
  22. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
  24. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  25. package/dist/elements/Button/index.css +2 -2
  26. package/dist/elements/ChangeSummary/index.css +18 -0
  27. package/dist/elements/ChangeSummary/index.d.ts +28 -0
  28. package/dist/elements/ChangeSummary/index.d.ts.map +1 -0
  29. package/dist/elements/ChangeSummary/index.js +147 -0
  30. package/dist/elements/ChangeSummary/index.js.map +1 -0
  31. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  32. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  33. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  34. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  35. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  36. package/dist/elements/ColumnSelection/Popup.js +3 -3
  37. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  38. package/dist/elements/Combobox/index.css +84 -23
  39. package/dist/elements/Combobox/index.d.ts +21 -0
  40. package/dist/elements/Combobox/index.d.ts.map +1 -1
  41. package/dist/elements/Combobox/index.js +66 -21
  42. package/dist/elements/Combobox/index.js.map +1 -1
  43. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  44. package/dist/elements/DeleteDocument/index.js +9 -2
  45. package/dist/elements/DeleteDocument/index.js.map +1 -1
  46. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  47. package/dist/elements/DeleteMany/index.js +4 -1
  48. package/dist/elements/DeleteMany/index.js.map +1 -1
  49. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +5 -3
  50. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +12 -0
  51. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +12 -0
  52. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +1 -0
  53. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +83 -0
  54. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +1 -0
  55. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +14 -0
  56. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +1 -0
  57. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +28 -0
  58. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +1 -0
  59. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  60. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +32 -1
  61. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  62. package/dist/elements/Drawer/index.css +10 -4
  63. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  64. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  65. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  66. package/dist/elements/DuplicateDocument/index.js +6 -1
  67. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  68. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  69. package/dist/elements/EditMany/DrawerContent.js +4 -1
  70. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  71. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
  73. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  74. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
  76. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  77. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
  78. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  79. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
  80. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  81. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  82. package/dist/elements/Hierarchy/Modal/index.js +3 -0
  83. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  84. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
  86. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  87. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  88. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
  89. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  90. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
  92. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  93. package/dist/elements/IDLabel/index.css +6 -0
  94. package/dist/elements/IDLabel/index.d.ts +1 -1
  95. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  96. package/dist/elements/IDLabel/index.js +16 -21
  97. package/dist/elements/IDLabel/index.js.map +1 -1
  98. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  99. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  100. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  101. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  102. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  103. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
  104. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  105. package/dist/elements/MergeBranch/context.d.ts +67 -0
  106. package/dist/elements/MergeBranch/context.d.ts.map +1 -0
  107. package/dist/elements/MergeBranch/context.js +47 -0
  108. package/dist/elements/MergeBranch/context.js.map +1 -0
  109. package/dist/elements/MergeBranch/index.css +136 -0
  110. package/dist/elements/MergeBranch/index.d.ts +15 -0
  111. package/dist/elements/MergeBranch/index.d.ts.map +1 -0
  112. package/dist/elements/MergeBranch/index.js +545 -0
  113. package/dist/elements/MergeBranch/index.js.map +1 -0
  114. package/dist/elements/MergeBranch/provider.d.ts +12 -0
  115. package/dist/elements/MergeBranch/provider.d.ts.map +1 -0
  116. package/dist/elements/MergeBranch/provider.js +19 -0
  117. package/dist/elements/MergeBranch/provider.js.map +1 -0
  118. package/dist/elements/MergeBranch/slug.d.ts +9 -0
  119. package/dist/elements/MergeBranch/slug.d.ts.map +1 -0
  120. package/dist/elements/MergeBranch/slug.js +8 -0
  121. package/dist/elements/MergeBranch/slug.js.map +1 -0
  122. package/dist/elements/Nav/context.js +2 -2
  123. package/dist/elements/Nav/context.js.map +1 -1
  124. package/dist/elements/Nav/getNavPrefs.d.ts +6 -0
  125. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  126. package/dist/elements/Nav/getNavPrefs.js +14 -46
  127. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  128. package/dist/elements/NavGroup/index.js +1 -1
  129. package/dist/elements/NavGroup/index.js.map +1 -1
  130. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  131. package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
  132. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  133. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  134. package/dist/elements/Popup/index.js +1 -1
  135. package/dist/elements/Popup/index.js.map +1 -1
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  137. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  138. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/PublishButton/index.js +6 -2
  140. package/dist/elements/PublishButton/index.js.map +1 -1
  141. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  142. package/dist/elements/PublishMany/DrawerContent.js +4 -1
  143. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  144. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  145. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  146. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  147. package/dist/elements/RelationshipTable/index.js +5 -2
  148. package/dist/elements/RelationshipTable/index.js.map +1 -1
  149. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  150. package/dist/elements/RestoreButton/index.js +4 -1
  151. package/dist/elements/RestoreButton/index.js.map +1 -1
  152. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  153. package/dist/elements/RestoreMany/index.js +3 -0
  154. package/dist/elements/RestoreMany/index.js.map +1 -1
  155. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  156. package/dist/elements/SaveDraftButton/index.js +15 -2
  157. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  158. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  159. package/dist/elements/SchedulePublishButton/index.js +7 -1
  160. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  161. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  162. package/dist/elements/SortHeader/index.js +29 -26
  163. package/dist/elements/SortHeader/index.js.map +1 -1
  164. package/dist/elements/Status/index.d.ts.map +1 -1
  165. package/dist/elements/Status/index.js +16 -3
  166. package/dist/elements/Status/index.js.map +1 -1
  167. package/dist/elements/StepNav/index.css +71 -14
  168. package/dist/elements/StepNav/index.d.ts.map +1 -1
  169. package/dist/elements/StepNav/index.js +135 -69
  170. package/dist/elements/StepNav/index.js.map +1 -1
  171. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +34 -0
  172. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +13 -0
  173. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +1 -0
  174. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +51 -0
  175. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -0
  176. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  177. package/dist/elements/Table/DefaultCell/index.js +3 -11
  178. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  179. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  180. package/dist/elements/Table/OrderableTable.js +3 -1
  181. package/dist/elements/Table/OrderableTable.js.map +1 -1
  182. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  183. package/dist/elements/Table/RelationshipProvider/index.js +29 -23
  184. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  185. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  186. package/dist/elements/UnpublishButton/index.js +4 -1
  187. package/dist/elements/UnpublishButton/index.js.map +1 -1
  188. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  189. package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
  190. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  191. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  192. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
  193. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  194. package/dist/exports/client/index.d.ts +19 -1
  195. package/dist/exports/client/index.d.ts.map +1 -1
  196. package/dist/exports/client/index.js +1 -1
  197. package/dist/exports/client/index.js.map +3 -3
  198. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  199. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  200. package/dist/fields/Array/ArrayRow.js +2 -0
  201. package/dist/fields/Array/ArrayRow.js.map +1 -1
  202. package/dist/fields/Array/index.d.ts.map +1 -1
  203. package/dist/fields/Array/index.js +38 -10
  204. package/dist/fields/Array/index.js.map +1 -1
  205. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  206. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  207. package/dist/fields/Blocks/BlockRow.js +2 -0
  208. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  209. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  210. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  211. package/dist/fields/Blocks/RowActions.js +22 -19
  212. package/dist/fields/Blocks/RowActions.js.map +1 -1
  213. package/dist/fields/Blocks/index.d.ts.map +1 -1
  214. package/dist/fields/Blocks/index.js +35 -7
  215. package/dist/fields/Blocks/index.js.map +1 -1
  216. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  217. package/dist/fields/Relationship/Input.js +5 -1
  218. package/dist/fields/Relationship/Input.js.map +1 -1
  219. package/dist/fields/Upload/Input.d.ts.map +1 -1
  220. package/dist/fields/Upload/Input.js +4 -1
  221. package/dist/fields/Upload/Input.js.map +1 -1
  222. package/dist/forms/Form/index.d.ts.map +1 -1
  223. package/dist/forms/Form/index.js +4 -1
  224. package/dist/forms/Form/index.js.map +1 -1
  225. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  226. package/dist/hooks/usePayloadAPI.js +44 -40
  227. package/dist/hooks/usePayloadAPI.js.map +1 -1
  228. package/dist/icons/Branch/index.css +5 -0
  229. package/dist/icons/Branch/index.d.ts +7 -0
  230. package/dist/icons/Branch/index.d.ts.map +1 -0
  231. package/dist/icons/Branch/index.js +25 -0
  232. package/dist/icons/Branch/index.js.map +1 -0
  233. package/dist/icons/Edit/index.d.ts +0 -1
  234. package/dist/icons/Edit/index.d.ts.map +1 -1
  235. package/dist/icons/Edit/index.js +4 -4
  236. package/dist/icons/Edit/index.js.map +1 -1
  237. package/dist/providers/Actions/index.d.ts +1 -0
  238. package/dist/providers/Actions/index.d.ts.map +1 -1
  239. package/dist/providers/Actions/index.js +43 -11
  240. package/dist/providers/Actions/index.js.map +1 -1
  241. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  242. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  243. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  244. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  245. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  246. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  247. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  248. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  249. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  250. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  251. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  252. package/dist/providers/Auth/authSessionRequests.js +119 -0
  253. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  254. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  255. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  256. package/dist/providers/Auth/index.d.ts +2 -56
  257. package/dist/providers/Auth/index.d.ts.map +1 -1
  258. package/dist/providers/Auth/index.js +283 -135
  259. package/dist/providers/Auth/index.js.map +1 -1
  260. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  261. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  262. package/dist/providers/Auth/sessionActivity.js +49 -0
  263. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  264. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  265. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  266. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  267. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  268. package/dist/providers/Auth/sessionTiming.js +18 -0
  269. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  270. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  271. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  272. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  273. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  274. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  275. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  276. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  277. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  278. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  279. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  280. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  281. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  282. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  283. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  284. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  285. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  286. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  287. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  288. package/dist/providers/Auth/types.d.ts +65 -0
  289. package/dist/providers/Auth/types.d.ts.map +1 -0
  290. package/dist/providers/Auth/types.js +2 -0
  291. package/dist/providers/Auth/types.js.map +1 -0
  292. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  293. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  294. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  295. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  296. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  297. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  298. package/dist/providers/Branch/index.d.ts +68 -0
  299. package/dist/providers/Branch/index.d.ts.map +1 -0
  300. package/dist/providers/Branch/index.js +193 -0
  301. package/dist/providers/Branch/index.js.map +1 -0
  302. package/dist/providers/Branch/index.server.d.ts +14 -0
  303. package/dist/providers/Branch/index.server.d.ts.map +1 -0
  304. package/dist/providers/Branch/index.server.js +125 -0
  305. package/dist/providers/Branch/index.server.js.map +1 -0
  306. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  307. package/dist/providers/DocumentInfo/index.js +5 -1
  308. package/dist/providers/DocumentInfo/index.js.map +1 -1
  309. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  310. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  311. package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
  312. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  313. package/dist/providers/FormErrorHandler/index.d.ts +5 -1
  314. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  315. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  316. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  317. package/dist/providers/Hierarchy/index.js +4 -1
  318. package/dist/providers/Hierarchy/index.js.map +1 -1
  319. package/dist/providers/Locale/index.d.ts.map +1 -1
  320. package/dist/providers/Locale/index.js +41 -36
  321. package/dist/providers/Locale/index.js.map +1 -1
  322. package/dist/providers/Preferences/index.d.ts +3 -1
  323. package/dist/providers/Preferences/index.d.ts.map +1 -1
  324. package/dist/providers/Preferences/index.js +9 -3
  325. package/dist/providers/Preferences/index.js.map +1 -1
  326. package/dist/providers/Root/index.js +4 -4
  327. package/dist/providers/Root/index.js.map +1 -1
  328. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  329. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  330. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  331. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  332. package/dist/providers/RouteTransition/index.d.ts +2 -0
  333. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  334. package/dist/providers/RouteTransition/index.js +42 -14
  335. package/dist/providers/RouteTransition/index.js.map +1 -1
  336. package/dist/styles.css +1 -1
  337. package/dist/templates/Default/index.d.ts +1 -0
  338. package/dist/templates/Default/index.d.ts.map +1 -1
  339. package/dist/templates/Default/index.js +44 -36
  340. package/dist/templates/Default/index.js.map +1 -1
  341. package/dist/utilities/getAdminPreferences.d.ts +14 -0
  342. package/dist/utilities/getAdminPreferences.d.ts.map +1 -0
  343. package/dist/utilities/getAdminPreferences.js +22 -0
  344. package/dist/utilities/getAdminPreferences.js.map +1 -0
  345. package/dist/utilities/getRequestBranch.d.ts +20 -0
  346. package/dist/utilities/getRequestBranch.d.ts.map +1 -0
  347. package/dist/utilities/getRequestBranch.js +35 -0
  348. package/dist/utilities/getRequestBranch.js.map +1 -0
  349. package/dist/utilities/getVersions.d.ts +6 -1
  350. package/dist/utilities/getVersions.d.ts.map +1 -1
  351. package/dist/utilities/getVersions.js +5 -0
  352. package/dist/utilities/getVersions.js.map +1 -1
  353. package/dist/utilities/initReq.d.ts.map +1 -1
  354. package/dist/utilities/initReq.js +8 -0
  355. package/dist/utilities/initReq.js.map +1 -1
  356. package/dist/utilities/matchesSearchQuery.d.ts +12 -0
  357. package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
  358. package/dist/utilities/matchesSearchQuery.js +23 -0
  359. package/dist/utilities/matchesSearchQuery.js.map +1 -0
  360. package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
  361. package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
  362. package/dist/utilities/scheduleMergeHandler.d.ts +33 -0
  363. package/dist/utilities/scheduleMergeHandler.d.ts.map +1 -0
  364. package/dist/utilities/scheduleMergeHandler.js +119 -0
  365. package/dist/utilities/scheduleMergeHandler.js.map +1 -0
  366. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  367. package/dist/utilities/schedulePublishHandler.js +10 -0
  368. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  369. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  370. package/dist/utilities/serverFunctionRegistry.js +6 -0
  371. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  372. package/dist/views/API/index.client.d.ts.map +1 -1
  373. package/dist/views/API/index.client.js +10 -2
  374. package/dist/views/API/index.client.js.map +1 -1
  375. package/dist/views/Branch/BranchChanges/index.d.ts +23 -0
  376. package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -0
  377. package/dist/views/Branch/BranchChanges/index.js +150 -0
  378. package/dist/views/Branch/BranchChanges/index.js.map +1 -0
  379. package/dist/views/Branch/ChangedDocuments/index.css +118 -0
  380. package/dist/views/Branch/ChangedDocuments/index.d.ts +34 -0
  381. package/dist/views/Branch/ChangedDocuments/index.d.ts.map +1 -0
  382. package/dist/views/Branch/ChangedDocuments/index.js +233 -0
  383. package/dist/views/Branch/ChangedDocuments/index.js.map +1 -0
  384. package/dist/views/Branch/DiscardChangesButton/index.d.ts +16 -0
  385. package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +1 -0
  386. package/dist/views/Branch/DiscardChangesButton/index.js +106 -0
  387. package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -0
  388. package/dist/views/Branch/Manage/index.d.ts +11 -0
  389. package/dist/views/Branch/Manage/index.d.ts.map +1 -0
  390. package/dist/views/Branch/Manage/index.js +71 -0
  391. package/dist/views/Branch/Manage/index.js.map +1 -0
  392. package/dist/views/Branch/MergeChangesButton/index.d.ts +14 -0
  393. package/dist/views/Branch/MergeChangesButton/index.d.ts.map +1 -0
  394. package/dist/views/Branch/MergeChangesButton/index.js +55 -0
  395. package/dist/views/Branch/MergeChangesButton/index.js.map +1 -0
  396. package/dist/views/Branch/MergeLedger/index.css +137 -0
  397. package/dist/views/Branch/MergeLedger/index.d.ts +31 -0
  398. package/dist/views/Branch/MergeLedger/index.d.ts.map +1 -0
  399. package/dist/views/Branch/MergeLedger/index.js +211 -0
  400. package/dist/views/Branch/MergeLedger/index.js.map +1 -0
  401. package/dist/views/Branch/ScheduledMerges/index.css +83 -0
  402. package/dist/views/Branch/ScheduledMerges/index.d.ts +32 -0
  403. package/dist/views/Branch/ScheduledMerges/index.d.ts.map +1 -0
  404. package/dist/views/Branch/ScheduledMerges/index.js +183 -0
  405. package/dist/views/Branch/ScheduledMerges/index.js.map +1 -0
  406. package/dist/views/Branch/index.css +77 -0
  407. package/dist/views/Branch/index.d.ts +17 -0
  408. package/dist/views/Branch/index.d.ts.map +1 -0
  409. package/dist/views/Branch/index.js +188 -0
  410. package/dist/views/Branch/index.js.map +1 -0
  411. package/dist/views/Branch/renderBranchDiff.d.ts +29 -0
  412. package/dist/views/Branch/renderBranchDiff.d.ts.map +1 -0
  413. package/dist/views/Branch/renderBranchDiff.js +151 -0
  414. package/dist/views/Branch/renderBranchDiff.js.map +1 -0
  415. package/dist/views/Branch/renderMergeDiff.d.ts +24 -0
  416. package/dist/views/Branch/renderMergeDiff.d.ts.map +1 -0
  417. package/dist/views/Branch/renderMergeDiff.js +94 -0
  418. package/dist/views/Branch/renderMergeDiff.js.map +1 -0
  419. package/dist/views/Branches/index.d.ts +16 -0
  420. package/dist/views/Branches/index.d.ts.map +1 -0
  421. package/dist/views/Branches/index.js +54 -0
  422. package/dist/views/Branches/index.js.map +1 -0
  423. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  424. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  425. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  426. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  427. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  428. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  429. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  430. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  431. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  432. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  433. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  434. package/dist/views/Document/getDocumentView.js +21 -2
  435. package/dist/views/Document/getDocumentView.js.map +1 -1
  436. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  437. package/dist/views/Document/getMetaBySegment.js +9 -0
  438. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  439. package/dist/views/Document/index.d.ts +3 -1
  440. package/dist/views/Document/index.d.ts.map +1 -1
  441. package/dist/views/Document/index.js +8 -1
  442. package/dist/views/Document/index.js.map +1 -1
  443. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  444. package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
  445. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  446. package/dist/views/List/ListHeader/index.d.ts +1 -10
  447. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  448. package/dist/views/List/ListHeader/index.js +1 -3
  449. package/dist/views/List/ListHeader/index.js.map +1 -1
  450. package/dist/views/List/index.client.d.ts.map +1 -1
  451. package/dist/views/List/index.client.js +0 -14
  452. package/dist/views/List/index.client.js.map +1 -1
  453. package/dist/views/List/index.css +5 -0
  454. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  455. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  456. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  457. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  458. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  459. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  460. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  461. package/dist/views/Root/getRouteData.js +12 -4
  462. package/dist/views/Root/getRouteData.js.map +1 -1
  463. package/dist/views/Root/index.d.ts.map +1 -1
  464. package/dist/views/Root/index.js +1 -0
  465. package/dist/views/Root/index.js.map +1 -1
  466. package/dist/views/Version/Default/index.css +26 -2
  467. package/dist/views/Version/Default/index.d.ts.map +1 -1
  468. package/dist/views/Version/Default/index.js +18 -6
  469. package/dist/views/Version/Default/index.js.map +1 -1
  470. package/dist/views/Version/Default/types.d.ts +9 -0
  471. package/dist/views/Version/Default/types.d.ts.map +1 -1
  472. package/dist/views/Version/Default/types.js.map +1 -1
  473. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  474. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +8 -0
  475. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  476. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  477. package/dist/views/Version/Restore/index.js +6 -3
  478. package/dist/views/Version/Restore/index.js.map +1 -1
  479. package/dist/views/Version/index.d.ts.map +1 -1
  480. package/dist/views/Version/index.js +4 -0
  481. package/dist/views/Version/index.js.map +1 -1
  482. package/dist/views/Versions/buildColumns.d.ts +2 -1
  483. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  484. package/dist/views/Versions/buildColumns.js +21 -1
  485. package/dist/views/Versions/buildColumns.js.map +1 -1
  486. package/dist/views/Versions/cells/Branch/index.d.ts +12 -0
  487. package/dist/views/Versions/cells/Branch/index.d.ts.map +1 -0
  488. package/dist/views/Versions/cells/Branch/index.js +27 -0
  489. package/dist/views/Versions/cells/Branch/index.js.map +1 -0
  490. package/dist/views/Versions/index.client.d.ts +0 -1
  491. package/dist/views/Versions/index.client.d.ts.map +1 -1
  492. package/dist/views/Versions/index.client.js.map +1 -1
  493. package/dist/views/Versions/index.d.ts.map +1 -1
  494. package/dist/views/Versions/index.js +2 -14
  495. package/dist/views/Versions/index.js.map +1 -1
  496. package/package.json +5 -5
  497. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
  498. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
  499. package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
  500. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
  501. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","branchesCollectionSlug","MAIN_BRANCH","PREFERENCE_KEYS","React","createContext","use","useCallback","useEffect","useState","useConfig","useDocumentEvents","usePreferences","useRouter","useRouteTransition","Context","activeBranch","branches","isEnabled","setBranch","BranchProvider","t0","$","activeBranchFromServer","children","staleBranch","config","t1","branching","setPreference","router","startRouteTransition","Boolean","enabled","setActiveBranchState","t2","t3","t4","slug","t5","refresh","t6","undefined","ADMIN","branch","mostRecentUpdate","entitySlug","operation","createdSlug","doc","t7","t8","t9","_jsx","value","useBranch","useBranchParam","useShowBranchSelector"],"sources":["../../../src/providers/Branch/index.tsx"],"sourcesContent":["'use client'\n\nimport { branchesCollectionSlug, MAIN_BRANCH, PREFERENCE_KEYS } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useDocumentEvents } from '../DocumentEvents/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useRouter } from '../RouterAdapter/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type BranchOption = {\n /** Absent for `main`, which is a sentinel rather than a document. */\n id?: number | string\n /**\n * Merged with nothing pending since — still a usable workspace, but worth\n * distinguishing from a branch with work on it.\n */\n isMerged?: boolean\n /** A merge is queued for this branch — worth knowing before switching onto it. */\n isScheduled?: boolean\n name: string\n slug: string\n}\n\nexport type BranchContext = {\n /** Slug of the branch every read on this request resolved through. */\n activeBranch: string\n /** Branches the user can read, excluding `main`. */\n branches: BranchOption[]\n /** Whether branching is enabled for this Payload instance. */\n isEnabled: boolean\n /**\n * Switches the active branch: stores the choice in the user's preferences and\n * re-renders the current view against it.\n */\n setBranch: (slug: string, options?: { refresh?: boolean }) => void\n}\n\nconst Context = createContext<BranchContext>({\n activeBranch: MAIN_BRANCH,\n branches: [],\n isEnabled: false,\n setBranch: () => null,\n})\n\nexport type BranchProviderProps = {\n /** Branch resolved for the request that rendered this page. */\n activeBranch: string\n branches: BranchOption[]\n children: React.ReactNode\n /**\n * Set when the request resolved to a branch the user can no longer see, so\n * the stored preference pointing at it can be cleared.\n */\n staleBranch?: null | string\n}\n\n/**\n * Holds the active branch for the admin UI.\n *\n * The selection lives in the user's `admin` preference and nowhere else, so it\n * follows them between browsers and machines. The server resolves it during\n * request initialization, which is why switching is a preference write followed\n * by a refresh rather than any client-side state that has to be kept in sync.\n */\nexport const BranchProvider: React.FC<BranchProviderProps> = ({\n activeBranch: activeBranchFromServer,\n branches,\n children,\n staleBranch,\n}) => {\n const {\n config: { branching },\n } = useConfig()\n\n const { setPreference } = usePreferences()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const isEnabled = Boolean(branching?.enabled)\n\n // Tracked optimistically so the trigger label updates before the server\n // components finish re-rendering.\n const [activeBranch, setActiveBranchState] = useState(activeBranchFromServer)\n\n useEffect(() => {\n setActiveBranchState(activeBranchFromServer)\n }, [activeBranchFromServer])\n\n const setBranch = useCallback(\n (slug: string, { refresh = true }: { refresh?: boolean } = {}) => {\n if (slug === activeBranch) {\n return\n }\n\n setActiveBranchState(slug)\n\n // Merged, not replaced: the `admin` preference also carries nav state, and\n // a plain write would drop it. Awaited before refreshing, because the\n // server re-reads this preference to resolve the branch — refreshing first\n // would race the write and re-render against the branch we just left.\n void (async () => {\n await setPreference(PREFERENCE_KEYS.ADMIN, { branch: slug }, true)\n\n if (refresh) {\n startRouteTransition(() => {\n router.refresh()\n })\n }\n })()\n },\n [activeBranch, router, setPreference, startRouteTransition],\n )\n\n // Creating a branch is a declaration of intent to work on it, so the switch\n // follows the save. Listening for the document event rather than wiring up\n // the create view means this covers every route a branch can be created\n // from — the full create page, and any drawer that ever opens onto it.\n const { mostRecentUpdate } = useDocumentEvents()\n\n useEffect(() => {\n if (\n mostRecentUpdate?.entitySlug !== branchesCollectionSlug ||\n mostRecentUpdate.operation !== 'create'\n ) {\n return\n }\n\n const createdSlug = (mostRecentUpdate.doc as { slug?: string } | undefined)?.slug\n\n if (createdSlug) {\n // No refresh: the create view redirects to the new document immediately\n // after this fires, and that navigation re-resolves the branch.\n setBranch(createdSlug, { refresh: false })\n }\n }, [mostRecentUpdate, setBranch])\n\n // Drops a stored selection pointing at a branch that no longer resolves, so\n // the next request starts clean on main instead of resurrecting it.\n useEffect(() => {\n if (staleBranch) {\n void setPreference(PREFERENCE_KEYS.ADMIN, { branch: MAIN_BRANCH }, true)\n }\n }, [setPreference, staleBranch])\n\n return (\n <Context\n value={{\n activeBranch,\n branches,\n isEnabled,\n setBranch,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useBranch = (): BranchContext => use(Context)\n\n/**\n * The value to pass as the `branch` argument on an API call, or `undefined`\n * when the call should run against production.\n *\n * `main` is returned as `undefined` on purpose: passing no branch already means\n * `main` everywhere in Payload, so omitting it keeps ordinary requests free of\n * a parameter that changes nothing.\n */\nexport const useBranchParam = (): string | undefined => {\n const { activeBranch, isEnabled } = useBranch()\n\n return isEnabled && activeBranch !== MAIN_BRANCH ? activeBranch : undefined\n}\n\n/**\n * Whether to render the branch switcher at all.\n *\n * Shown whenever branching is enabled, even with no branches yet: the switcher\n * hosts the \"new branch\" action, so hiding it until a branch exists would leave\n * a project with no way to create its first one.\n */\nexport const useShowBranchSelector = (): boolean => {\n const { isEnabled } = useBranch()\n\n return isEnabled\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ import type { PayloadRequest } from 'payload';
2
+ import React from 'react';
3
+ /**
4
+ * Loads the branches the user can read and their stored branch preference, then
5
+ * hands both to the client provider.
6
+ *
7
+ * Renders nothing of its own when branching is disabled, so a config without
8
+ * `branching` pays for none of this.
9
+ */
10
+ export declare const RenderBranchProvider: ({ children, req, }: {
11
+ children: React.ReactNode;
12
+ req?: PayloadRequest;
13
+ }) => Promise<string | number | bigint | boolean | React.JSX.Element | Iterable<React.ReactNode>>;
14
+ //# sourceMappingURL=index.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../../../src/providers/Branch/index.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAI7C,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,uBAG9B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,GAAG,CAAC,EAAE,cAAc,CAAA;CACrB,gGAyGA,CAAA"}
@@ -0,0 +1,125 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { resolveBranch } from 'payload';
3
+ import { branchesCollectionSlug, MAIN_BRANCH } from 'payload/shared';
4
+ import React from 'react';
5
+ // eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary
6
+ import { BranchProvider } from '../../exports/client/index.js';
7
+ /**
8
+ * Loads the branches the user can read and their stored branch preference, then
9
+ * hands both to the client provider.
10
+ *
11
+ * Renders nothing of its own when branching is disabled, so a config without
12
+ * `branching` pays for none of this.
13
+ */
14
+ export const RenderBranchProvider = async ({
15
+ children,
16
+ req
17
+ }) => {
18
+ const payload = req?.payload;
19
+ if (!payload?.config.branching.enabled || !req.user) {
20
+ return children;
21
+ }
22
+ let branches = [];
23
+ // Which branches have a merge queued, so the switcher can say so. One small query
24
+ // rather than one per branch — the switcher renders on every admin page.
25
+ let scheduledSlugs = new Set();
26
+ try {
27
+ const {
28
+ docs
29
+ } = await payload.find({
30
+ collection: branchesCollectionSlug,
31
+ depth: 0,
32
+ overrideAccess: false,
33
+ pagination: false,
34
+ req,
35
+ // `id` so the switcher can link to the branch itself, not just switch to it;
36
+ // `status` so a merged-but-open branch can be labelled as one.
37
+ select: {
38
+ id: true,
39
+ name: true,
40
+ slug: true,
41
+ status: true
42
+ },
43
+ sort: 'name',
44
+ user: req.user,
45
+ // Everything except `closed`. A `merged` branch is still a workspace — §16
46
+ // makes merging an event rather than an ending, and the branch returns to
47
+ // `open` the moment it has a change again. Filtering it out here was what
48
+ // made "keep the branch open" a dead end: the branch survived, but there was
49
+ // no way back onto it to use it.
50
+ where: {
51
+ status: {
52
+ not_equals: 'closed'
53
+ }
54
+ }
55
+ });
56
+ branches = docs.reduce((acc, doc) => {
57
+ const slug = typeof doc.slug === 'string' ? doc.slug : undefined;
58
+ // `main` is a sentinel rather than a row, so a branch that claims the slug
59
+ // would render a duplicate entry alongside the one the selector adds.
60
+ if (slug && slug !== MAIN_BRANCH) {
61
+ acc.push({
62
+ id: doc.id,
63
+ name: typeof doc.name === 'string' && doc.name ? doc.name : slug,
64
+ slug,
65
+ isMerged: doc.status === 'merged'
66
+ });
67
+ }
68
+ return acc;
69
+ }, []);
70
+ if (branches.length) {
71
+ const {
72
+ docs: scheduled
73
+ } = await payload.find({
74
+ collection: 'payload-jobs',
75
+ depth: 0,
76
+ limit: 100,
77
+ overrideAccess: true,
78
+ pagination: false,
79
+ req,
80
+ select: {
81
+ input: true
82
+ },
83
+ where: {
84
+ and: [{
85
+ taskSlug: {
86
+ equals: 'scheduleMerge'
87
+ }
88
+ }, {
89
+ waitUntil: {
90
+ greater_than: new Date()
91
+ }
92
+ }]
93
+ }
94
+ });
95
+ scheduledSlugs = new Set(scheduled.map(job => job.input?.branch).filter(value => Boolean(value)));
96
+ branches = branches.map(option => ({
97
+ ...option,
98
+ isScheduled: scheduledSlugs.has(option.slug)
99
+ }));
100
+ }
101
+ } catch (_err) {
102
+ // Read access to `payload-branches` can legitimately be denied — a user
103
+ // without it simply has no branches to switch between, which must not take
104
+ // the whole admin panel down with it.
105
+ branches = [];
106
+ }
107
+ // Already resolved from the user's preference during request initialization,
108
+ // so this is a read of what every query on this request actually used —
109
+ // not a second source of truth that could disagree with the data on screen.
110
+ const activeBranch = resolveBranch(req);
111
+ // A branch the user can no longer see — merged, closed, deleted, or never
112
+ // theirs — must not be presented as the active one. Otherwise the switcher
113
+ // claims a branch while reads quietly fall through to main, which reads as
114
+ // "my edits vanished" rather than "that branch is gone".
115
+ const isActiveBranchStale = activeBranch !== MAIN_BRANCH && !branches.some(({
116
+ slug
117
+ }) => slug === activeBranch);
118
+ return /*#__PURE__*/_jsx(BranchProvider, {
119
+ activeBranch: isActiveBranchStale ? MAIN_BRANCH : activeBranch,
120
+ branches: branches,
121
+ staleBranch: isActiveBranchStale ? activeBranch : null,
122
+ children: children
123
+ });
124
+ };
125
+ //# sourceMappingURL=index.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.server.js","names":["resolveBranch","branchesCollectionSlug","MAIN_BRANCH","React","BranchProvider","RenderBranchProvider","children","req","payload","config","branching","enabled","user","branches","scheduledSlugs","Set","docs","find","collection","depth","overrideAccess","pagination","select","id","name","slug","status","sort","where","not_equals","reduce","acc","doc","undefined","push","isMerged","length","scheduled","limit","input","and","taskSlug","equals","waitUntil","greater_than","Date","map","job","branch","filter","value","Boolean","option","isScheduled","has","_err","activeBranch","isActiveBranchStale","some","_jsx","staleBranch"],"sources":["../../../src/providers/Branch/index.server.tsx"],"sourcesContent":["import type { PayloadRequest } from 'payload'\n\nimport { resolveBranch } from 'payload'\nimport { branchesCollectionSlug, MAIN_BRANCH } from 'payload/shared'\nimport React from 'react'\n\nimport type { BranchOption } from './index.js'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { BranchProvider } from '../../exports/client/index.js'\n\n/**\n * Loads the branches the user can read and their stored branch preference, then\n * hands both to the client provider.\n *\n * Renders nothing of its own when branching is disabled, so a config without\n * `branching` pays for none of this.\n */\nexport const RenderBranchProvider = async ({\n children,\n req,\n}: {\n children: React.ReactNode\n req?: PayloadRequest\n}) => {\n const payload = req?.payload\n\n if (!payload?.config.branching.enabled || !req.user) {\n return children\n }\n\n let branches: BranchOption[] = []\n // Which branches have a merge queued, so the switcher can say so. One small query\n // rather than one per branch — the switcher renders on every admin page.\n let scheduledSlugs = new Set<string>()\n\n try {\n const { docs } = await payload.find({\n collection: branchesCollectionSlug,\n depth: 0,\n overrideAccess: false,\n pagination: false,\n req,\n // `id` so the switcher can link to the branch itself, not just switch to it;\n // `status` so a merged-but-open branch can be labelled as one.\n select: { id: true, name: true, slug: true, status: true },\n sort: 'name',\n user: req.user,\n // Everything except `closed`. A `merged` branch is still a workspace — §16\n // makes merging an event rather than an ending, and the branch returns to\n // `open` the moment it has a change again. Filtering it out here was what\n // made \"keep the branch open\" a dead end: the branch survived, but there was\n // no way back onto it to use it.\n where: { status: { not_equals: 'closed' } },\n })\n\n branches = docs.reduce<BranchOption[]>((acc, doc) => {\n const slug = typeof doc.slug === 'string' ? doc.slug : undefined\n\n // `main` is a sentinel rather than a row, so a branch that claims the slug\n // would render a duplicate entry alongside the one the selector adds.\n if (slug && slug !== MAIN_BRANCH) {\n acc.push({\n id: doc.id,\n name: typeof doc.name === 'string' && doc.name ? doc.name : slug,\n slug,\n isMerged: doc.status === 'merged',\n })\n }\n\n return acc\n }, [])\n\n if (branches.length) {\n const { docs: scheduled } = await payload.find({\n collection: 'payload-jobs',\n depth: 0,\n limit: 100,\n overrideAccess: true,\n pagination: false,\n req,\n select: { input: true },\n where: {\n and: [\n { taskSlug: { equals: 'scheduleMerge' } },\n { waitUntil: { greater_than: new Date() } },\n ],\n },\n })\n\n scheduledSlugs = new Set(\n scheduled\n .map((job) => (job as { input?: { branch?: string } }).input?.branch)\n .filter((value): value is string => Boolean(value)),\n )\n\n branches = branches.map((option) => ({\n ...option,\n isScheduled: scheduledSlugs.has(option.slug),\n }))\n }\n } catch (_err) {\n // Read access to `payload-branches` can legitimately be denied — a user\n // without it simply has no branches to switch between, which must not take\n // the whole admin panel down with it.\n branches = []\n }\n\n // Already resolved from the user's preference during request initialization,\n // so this is a read of what every query on this request actually used —\n // not a second source of truth that could disagree with the data on screen.\n const activeBranch = resolveBranch(req)\n\n // A branch the user can no longer see — merged, closed, deleted, or never\n // theirs — must not be presented as the active one. Otherwise the switcher\n // claims a branch while reads quietly fall through to main, which reads as\n // \"my edits vanished\" rather than \"that branch is gone\".\n const isActiveBranchStale =\n activeBranch !== MAIN_BRANCH && !branches.some(({ slug }) => slug === activeBranch)\n\n return (\n <BranchProvider\n activeBranch={isActiveBranchStale ? MAIN_BRANCH : activeBranch}\n branches={branches}\n staleBranch={isActiveBranchStale ? activeBranch : null}\n >\n {children}\n </BranchProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAexE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AAoXtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAgF,MAAM,OAAO,CAAA;AAEpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAAmC,CAAA;AAuXtE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
@@ -7,6 +7,7 @@ import React, { createContext, use, useCallback, useEffect, useMemo, useRef, use
7
7
  import { useControllableState } from '../../hooks/useControllableState.js';
8
8
  import { useAuth } from '../../providers/Auth/index.js';
9
9
  import { requests } from '../../utilities/api.js';
10
+ import { useBranchParam } from '../Branch/index.js';
10
11
  import { useConfig } from '../Config/index.js';
11
12
  import { DocumentTitleProvider } from '../DocumentTitle/index.js';
12
13
  import { useLocale, useLocaleLoading } from '../Locale/index.js';
@@ -97,6 +98,7 @@ const DocumentInfo = ({
97
98
  const {
98
99
  code: locale
99
100
  } = useLocale();
101
+ const branch = useBranchParam();
100
102
  const {
101
103
  localeIsLoading
102
104
  } = useLocaleLoading();
@@ -202,6 +204,7 @@ const DocumentInfo = ({
202
204
  const getDocPermissions = useGetDocPermissions({
203
205
  id: id,
204
206
  api,
207
+ branch,
205
208
  collectionSlug,
206
209
  globalSlug,
207
210
  i18n,
@@ -265,6 +268,7 @@ const DocumentInfo = ({
265
268
  const action = React.useMemo(() => {
266
269
  const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`;
267
270
  return `${baseAPIPath}${docPath}${qs.stringify({
271
+ branch,
268
272
  depth: 0,
269
273
  'fallback-locale': 'null',
270
274
  locale,
@@ -272,7 +276,7 @@ const DocumentInfo = ({
272
276
  }, {
273
277
  addQueryPrefix: true
274
278
  })}`;
275
- }, [baseAPIPath, locale, pluralType, id, slug, uploadEdits]);
279
+ }, [baseAPIPath, branch, locale, pluralType, id, slug, uploadEdits]);
276
280
  const value = {
277
281
  ...props,
278
282
  action,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","hasScheduledPublish","hasScheduledPublishFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","collections","routes","api","getEntityConfig","collectionConfig","globalConfig","hasLockedDocumentsCollection","some","collection","slug","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","setHasScheduledPublish","Boolean","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","data","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","localeIsLoading","isInitializing","undefined","baseAPIPath","apiRoute","path","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docPath","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences, User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n hasScheduledPublish: hasScheduledPublishFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n collections,\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n // Check if the locked-documents collection exists in the config\n const hasLockedDocumentsCollection = collections.some(\n (collection) => collection.slug === 'payload-locked-documents',\n )\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [hasScheduledPublish, setHasScheduledPublish] = useState(\n Boolean(hasScheduledPublishFromProps),\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<null | User>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: number | string | User\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked, hasLockedDocumentsCollection],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: number | string | User) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug, hasLockedDocumentsCollection],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n hasScheduledPublish,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setHasPublishedDoc,\n setHasScheduledPublish,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useMemo","useRef","useState","useControllableState","useAuth","requests","useBranchParam","useConfig","DocumentTitleProvider","useLocale","useLocaleLoading","usePreferences","useTranslation","UploadEditsProvider","useUploadEdits","useGetDocPermissions","Context","useDocumentInfo","DocumentInfo","children","props","id","collectionSlug","currentEditor","currentEditorFromProps","docPermissions","docPermissionsFromProps","globalSlug","hasPublishedDoc","hasPublishedDocFromProps","hasPublishPermission","hasPublishPermissionFromProps","hasSavePermission","hasSavePermissionFromProps","hasScheduledPublish","hasScheduledPublishFromProps","initialData","initialState","isLocked","isLockedFromProps","lastUpdateTime","lastUpdateTimeFromProps","mostRecentVersionIsAutosaved","mostRecentVersionIsAutosavedFromProps","unpublishedVersionCount","unpublishedVersionCountFromProps","versionCount","versionCountFromProps","setDocPermissions","setHasSavePermission","setHasPublishPermission","permissions","config","admin","dateFormat","collections","routes","api","getEntityConfig","collectionConfig","globalConfig","hasLockedDocumentsCollection","some","collection","slug","abortControllerRef","AbortController","docConfig","i18n","uploadEdits","setMostRecentVersionIsAutosaved","setVersionCount","setHasPublishedDoc","setUnpublishedVersionCount","setHasScheduledPublish","Boolean","documentIsLocked","setDocumentIsLocked","setCurrentEditor","setLastUpdateTime","data","setData","uploadStatus","setUploadStatus","documentLockState","hasShownLockedModal","user","updateUploadStatus","status","getPreference","setPreference","code","locale","branch","localeIsLoading","isInitializing","undefined","baseAPIPath","apiRoute","path","pluralType","preferencesKey","unlockDocument","docID","isGlobal","request","get","credentials","params","docs","json","length","lockID","delete","headers","error","console","updateDocumentEditor","userData","relationTo","value","patch","body","JSON","stringify","getDocPermissions","getDocPreferences","setDocFieldPreferences","fieldPreferences","allPreferences","fields","e","incrementVersionCount","newCount","versions","maxPerDoc","Math","min","max","re1","current","abort","_err","action","docPath","depth","addQueryPrefix","savedDocumentData","updateSavedDocumentData","_jsx","DocumentInfoProvider"],"sources":["../../../src/providers/DocumentInfo/index.tsx"],"sourcesContent":["'use client'\nimport type { DocumentPreferences, User } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { DocumentInfoContext, DocumentInfoProps } from './types.js'\n\nimport { useControllableState } from '../../hooks/useControllableState.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { useBranchParam } from '../Branch/index.js'\nimport { useConfig } from '../Config/index.js'\nimport { DocumentTitleProvider } from '../DocumentTitle/index.js'\nimport { useLocale, useLocaleLoading } from '../Locale/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useTranslation } from '../Translation/index.js'\nimport { UploadEditsProvider, useUploadEdits } from '../UploadEdits/index.js'\nimport { useGetDocPermissions } from './useGetDocPermissions.js'\n\nconst Context = createContext({} as DocumentInfoContext)\n\nexport type * from './types.js'\n\nexport const useDocumentInfo = (): DocumentInfoContext => use(Context)\n\nconst DocumentInfo: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = ({ children, ...props }) => {\n const {\n id,\n collectionSlug,\n currentEditor: currentEditorFromProps,\n docPermissions: docPermissionsFromProps,\n globalSlug,\n hasPublishedDoc: hasPublishedDocFromProps,\n hasPublishPermission: hasPublishPermissionFromProps,\n hasSavePermission: hasSavePermissionFromProps,\n hasScheduledPublish: hasScheduledPublishFromProps,\n initialData,\n initialState,\n isLocked: isLockedFromProps,\n lastUpdateTime: lastUpdateTimeFromProps,\n mostRecentVersionIsAutosaved: mostRecentVersionIsAutosavedFromProps,\n unpublishedVersionCount: unpublishedVersionCountFromProps,\n versionCount: versionCountFromProps,\n } = props\n\n const [docPermissions, setDocPermissions] = useControllableState(docPermissionsFromProps)\n\n const [hasSavePermission, setHasSavePermission] = useControllableState(hasSavePermissionFromProps)\n\n const [hasPublishPermission, setHasPublishPermission] = useControllableState(\n hasPublishPermissionFromProps,\n )\n\n const { permissions } = useAuth()\n\n const {\n config: {\n admin: { dateFormat },\n collections,\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n // Check if the locked-documents collection exists in the config\n const hasLockedDocumentsCollection = collections.some(\n (collection) => collection.slug === 'payload-locked-documents',\n )\n\n const abortControllerRef = useRef(new AbortController())\n const docConfig = collectionConfig || globalConfig\n\n const { i18n } = useTranslation()\n\n const { uploadEdits } = useUploadEdits()\n\n const [mostRecentVersionIsAutosaved, setMostRecentVersionIsAutosaved] = useState(\n mostRecentVersionIsAutosavedFromProps,\n )\n\n const [versionCount, setVersionCount] = useState(versionCountFromProps)\n\n const [hasPublishedDoc, setHasPublishedDoc] = useState(hasPublishedDocFromProps)\n\n const [unpublishedVersionCount, setUnpublishedVersionCount] = useState(\n unpublishedVersionCountFromProps,\n )\n\n const [hasScheduledPublish, setHasScheduledPublish] = useState(\n Boolean(hasScheduledPublishFromProps),\n )\n\n const [documentIsLocked, setDocumentIsLocked] = useControllableState<boolean | undefined>(\n isLockedFromProps,\n )\n\n const [currentEditor, setCurrentEditor] = useControllableState<null | User>(\n currentEditorFromProps,\n )\n const [lastUpdateTime, setLastUpdateTime] = useControllableState<number>(lastUpdateTimeFromProps)\n\n const [data, setData] = useControllableState(initialData)\n\n const [uploadStatus, setUploadStatus] = useControllableState<'failed' | 'idle' | 'uploading'>(\n 'idle',\n )\n\n const documentLockState = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: number | string | User\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const updateUploadStatus = useCallback(\n (status: 'failed' | 'idle' | 'uploading') => {\n setUploadStatus(status)\n },\n [setUploadStatus],\n )\n\n const { getPreference, setPreference } = usePreferences()\n const { code: locale } = useLocale()\n const branch = useBranchParam()\n const { localeIsLoading } = useLocaleLoading()\n\n const isInitializing = useMemo(\n () => initialState === undefined || initialData === undefined || localeIsLoading,\n [initialData, initialState, localeIsLoading],\n )\n\n const baseAPIPath = formatAdminURL({\n apiRoute: api,\n path: '',\n })\n\n let slug: string\n let pluralType: 'collections' | 'globals'\n let preferencesKey: string\n\n if (globalSlug) {\n slug = globalSlug\n pluralType = 'globals'\n preferencesKey = `global-${slug}`\n }\n\n if (collectionSlug) {\n slug = collectionSlug\n pluralType = 'collections'\n\n if (id) {\n preferencesKey = `collection-${slug}-${id}`\n }\n }\n\n const unlockDocument = useCallback(\n async (docID: number | string, slug: string) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n await requests.delete(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n setDocumentIsLocked(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to unlock the document', error)\n }\n },\n [baseAPIPath, globalSlug, setDocumentIsLocked, hasLockedDocumentsCollection],\n )\n\n const updateDocumentEditor = useCallback(\n async (docID: number | string, slug: string, user: number | string | User) => {\n // Check if the locked-documents collection exists before making API calls\n if (!hasLockedDocumentsCollection) {\n return\n }\n\n try {\n const isGlobal = slug === globalSlug\n\n // Check if the document is already locked\n const request = await requests.get(`${baseAPIPath}/payload-locked-documents`, {\n credentials: 'include',\n params: isGlobal\n ? {\n 'where[globalSlug][equals]': slug,\n }\n : {\n 'where[document.relationTo][equals]': slug,\n 'where[document.value][equals]': docID,\n },\n })\n\n const { docs } = await request.json()\n\n if (docs?.length > 0) {\n const lockID = docs[0].id\n\n const userData =\n typeof user === 'object'\n ? { relationTo: user.collection, value: user.id }\n : { relationTo: 'users', value: user }\n\n // Send a patch request to update the _lastEdited info\n await requests.patch(`${baseAPIPath}/payload-locked-documents/${lockID}`, {\n body: JSON.stringify({\n user: userData,\n }),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Failed to update the document editor', error)\n }\n },\n [baseAPIPath, globalSlug, hasLockedDocumentsCollection],\n )\n\n const getDocPermissions = useGetDocPermissions({\n id: id as string,\n api,\n branch,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n })\n\n const getDocPreferences = useCallback(() => {\n return getPreference<DocumentPreferences>(preferencesKey)\n }, [getPreference, preferencesKey])\n\n const setDocFieldPreferences = useCallback<DocumentInfoContext['setDocFieldPreferences']>(\n async (path, fieldPreferences) => {\n const allPreferences = await getDocPreferences()\n\n if (preferencesKey) {\n try {\n await setPreference(preferencesKey, {\n ...allPreferences,\n fields: {\n ...(allPreferences?.fields || {}),\n [path]: {\n ...allPreferences?.fields?.[path],\n ...fieldPreferences,\n },\n },\n })\n } catch (e) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n },\n [setPreference, preferencesKey, getDocPreferences],\n )\n\n const incrementVersionCount = useCallback(() => {\n const newCount = versionCount + 1\n if (collectionConfig && collectionConfig.versions) {\n if (collectionConfig.versions.maxPerDoc > 0) {\n setVersionCount(Math.min(newCount, collectionConfig.versions.maxPerDoc))\n } else {\n setVersionCount(newCount)\n }\n } else if (globalConfig && globalConfig.versions) {\n if (globalConfig.versions.max > 0) {\n setVersionCount(Math.min(newCount, globalConfig.versions.max))\n } else {\n setVersionCount(newCount)\n }\n }\n }, [collectionConfig, globalConfig, versionCount])\n\n // clean on unmount\n useEffect(() => {\n const re1 = abortControllerRef.current\n\n return () => {\n if (re1) {\n try {\n re1.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }\n }, [])\n\n const action: string = React.useMemo(() => {\n const docPath = `${pluralType === 'globals' ? `/globals` : ''}/${slug}${id ? `/${id}` : ''}`\n\n return `${baseAPIPath}${docPath}${qs.stringify(\n {\n branch,\n depth: 0,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )}`\n }, [baseAPIPath, branch, locale, pluralType, id, slug, uploadEdits])\n\n const value: DocumentInfoContext = {\n ...props,\n action,\n currentEditor,\n data,\n docConfig,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n hasPublishedDoc,\n hasPublishPermission,\n hasSavePermission,\n hasScheduledPublish,\n incrementVersionCount,\n initialData,\n initialState,\n isInitializing,\n lastUpdateTime,\n mostRecentVersionIsAutosaved,\n preferencesKey,\n savedDocumentData: data,\n setCurrentEditor,\n setData,\n setDocFieldPreferences,\n setDocumentIsLocked,\n setHasPublishedDoc,\n setHasScheduledPublish,\n setLastUpdateTime,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n setUploadStatus: updateUploadStatus,\n unlockDocument,\n unpublishedVersionCount,\n updateDocumentEditor,\n updateSavedDocumentData: setData,\n uploadStatus,\n versionCount,\n }\n\n return (\n <Context value={value}>\n <DocumentTitleProvider>{children}</DocumentTitleProvider>\n </Context>\n )\n}\n\nexport const DocumentInfoProvider: React.FC<\n {\n readonly children: React.ReactNode\n } & DocumentInfoProps\n> = (props) => {\n return (\n <UploadEditsProvider>\n <DocumentInfo {...props} />\n </UploadEditsProvider>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload';
2
2
  import React from 'react';
3
3
  export type GetDocPermissions = (data?: Data) => Promise<void>;
4
- export declare const useGetDocPermissions: ({ id, api, collectionSlug, globalSlug, i18n, locale, permissions, setDocPermissions, setHasPublishPermission, setHasSavePermission, }: {
4
+ export declare const useGetDocPermissions: ({ id, api, branch, collectionSlug, globalSlug, i18n, locale, permissions, setDocPermissions, setHasPublishPermission, setHasSavePermission, }: {
5
5
  api: string;
6
+ branch: string | undefined;
6
7
  collectionSlug: string;
7
8
  globalSlug: string;
8
9
  i18n: any;
@@ -1 +1 @@
1
- {"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,0IAW9B;IACD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAuGD,CAAA"}
1
+ {"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,kJAY9B;IACD,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IAC1B,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAyGD,CAAA"}
@@ -6,6 +6,7 @@ import { isEditing as getIsEditing } from '../../utilities/isEditing.js';
6
6
  export const useGetDocPermissions = ({
7
7
  id,
8
8
  api,
9
+ branch,
9
10
  collectionSlug,
10
11
  globalSlug,
11
12
  i18n,
@@ -16,6 +17,7 @@ export const useGetDocPermissions = ({
16
17
  setHasSavePermission
17
18
  }) => React.useCallback(async data => {
18
19
  const params = {
20
+ branch,
19
21
  locale: locale || undefined
20
22
  };
21
23
  const idToUse = data?.id || id;
@@ -83,5 +85,5 @@ export const useGetDocPermissions = ({
83
85
  isEditing: newIsEditing
84
86
  }));
85
87
  }
86
- }, [locale, id, collectionSlug, globalSlug, api, i18n.language, setDocPermissions, setHasSavePermission, setHasPublishPermission, permissions?.collections, permissions?.globals]);
88
+ }, [branch, locale, id, collectionSlug, globalSlug, api, i18n.language, setDocPermissions, setHasSavePermission, setHasPublishPermission, permissions?.collections, permissions?.globals]);
87
89
  //# sourceMappingURL=useGetDocPermissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useGetDocPermissions.js","names":["formatAdminURL","qs","React","hasSavePermission","getHasSavePermission","isEditing","getIsEditing","useGetDocPermissions","id","api","collectionSlug","globalSlug","i18n","locale","permissions","setDocPermissions","setHasPublishPermission","setHasSavePermission","useCallback","data","params","undefined","idToUse","newIsEditing","docAccessPath","res","fetch","apiRoute","path","stringify","addQueryPrefix","body","JSON","doc","_status","credentials","headers","language","method","json","publishedAccessJSON","then","docPermissions","update","newDocPermissions","collections","globals"],"sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"sourcesContent":["import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise<void>\n\nexport const useGetDocPermissions = ({\n id,\n api,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>\n setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>\n setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useGetDocPermissions.js","names":["formatAdminURL","qs","React","hasSavePermission","getHasSavePermission","isEditing","getIsEditing","useGetDocPermissions","id","api","branch","collectionSlug","globalSlug","i18n","locale","permissions","setDocPermissions","setHasPublishPermission","setHasSavePermission","useCallback","data","params","undefined","idToUse","newIsEditing","docAccessPath","res","fetch","apiRoute","path","stringify","addQueryPrefix","body","JSON","doc","_status","credentials","headers","language","method","json","publishedAccessJSON","then","docPermissions","update","newDocPermissions","collections","globals"],"sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"sourcesContent":["import type { Data, SanitizedDocumentPermissions, SanitizedPermissions } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React from 'react'\n\nimport { hasSavePermission as getHasSavePermission } from '../../utilities/hasSavePermission.js'\nimport { isEditing as getIsEditing } from '../../utilities/isEditing.js'\n\nexport type GetDocPermissions = (data?: Data) => Promise<void>\n\nexport const useGetDocPermissions = ({\n id,\n api,\n branch,\n collectionSlug,\n globalSlug,\n i18n,\n locale,\n permissions,\n setDocPermissions,\n setHasPublishPermission,\n setHasSavePermission,\n}: {\n api: string\n branch: string | undefined\n collectionSlug: string\n globalSlug: string\n i18n: any\n id: string\n locale: string\n permissions: SanitizedPermissions\n setDocPermissions: React.Dispatch<React.SetStateAction<SanitizedDocumentPermissions>>\n setHasPublishPermission: React.Dispatch<React.SetStateAction<boolean>>\n setHasSavePermission: React.Dispatch<React.SetStateAction<boolean>>\n}): GetDocPermissions =>\n React.useCallback(\n async (data: Data) => {\n const params = {\n branch,\n locale: locale || undefined,\n }\n\n const idToUse = data?.id || id\n const newIsEditing = getIsEditing({ id: idToUse, collectionSlug, globalSlug })\n\n if (newIsEditing) {\n const docAccessPath: `/${string}` = collectionSlug\n ? `/${collectionSlug}/access/${idToUse}`\n : globalSlug\n ? `/globals/${globalSlug}/access`\n : null\n\n if (docAccessPath) {\n const res = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'draft',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'post',\n },\n )\n\n const json: SanitizedDocumentPermissions = await res.json()\n\n const publishedAccessJSON = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `${docAccessPath}${qs.stringify(params, { addQueryPrefix: true })}`,\n }),\n {\n body: JSON.stringify({\n ...(data?.doc || data || {}),\n _status: 'published',\n }),\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n },\n ).then((res) => res.json())\n\n setDocPermissions(json)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: json,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n\n setHasPublishPermission(publishedAccessJSON?.update)\n }\n } else {\n // when creating new documents, there is no permissions saved for this document yet\n // use the generic entity permissions instead\n const newDocPermissions = collectionSlug\n ? permissions?.collections?.[collectionSlug]\n : permissions?.globals?.[globalSlug]\n\n setDocPermissions(newDocPermissions)\n\n setHasSavePermission(\n getHasSavePermission({\n collectionSlug,\n docPermissions: newDocPermissions,\n globalSlug,\n isEditing: newIsEditing,\n }),\n )\n }\n },\n [\n branch,\n locale,\n id,\n collectionSlug,\n globalSlug,\n api,\n i18n.language,\n setDocPermissions,\n setHasSavePermission,\n setHasPublishPermission,\n permissions?.collections,\n permissions?.globals,\n ],\n )\n"],"mappings":"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","ignoreList":[]}
@@ -13,8 +13,12 @@ export type NonFieldError = {
13
13
  *
14
14
  * Multiple handlers can be chained by composing providers; the first one to
15
15
  * return `true` wins.
16
+ *
17
+ * `retry` re-submits the form that produced the error, allowing the user to
18
+ * retry after resolving the underlying issue (e.g. deleting documents to free
19
+ * up quota).
16
20
  */
17
- export type FormErrorHandler = (err: NonFieldError) => boolean;
21
+ export type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean;
18
22
  export declare const FormErrorHandlerContext: import("react").Context<FormErrorHandler>;
19
23
  export declare const useFormErrorHandler: () => FormErrorHandler | undefined;
20
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/FormErrorHandler/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAA;AAE9D,eAAO,MAAM,uBAAuB,2CAAyD,CAAA;AAE7F,eAAO,MAAM,mBAAmB,QAAO,gBAAgB,GAAG,SAAyC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/FormErrorHandler/index.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,IAAI,KAAK,OAAO,CAAA;AAEjF,eAAO,MAAM,uBAAuB,2CAAyD,CAAA;AAE7F,eAAO,MAAM,mBAAmB,QAAO,gBAAgB,GAAG,SAAyC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n */\nexport type FormErrorHandler = (err: NonFieldError) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAqBnC,OAAO,MAAMC,uBAAA,gBAA0BF,aAAA,CAA4CG,SAAA;AAEnF,OAAO,MAAMC,mBAAA,GAAsBA,CAAA,KAAoCH,GAAA,CAAIC,uBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["createContext","use","FormErrorHandlerContext","undefined","useFormErrorHandler"],"sources":["../../../src/providers/FormErrorHandler/index.tsx"],"sourcesContent":["'use client'\nimport { createContext, use } from 'react'\n\nexport type NonFieldError = {\n data?: unknown\n message: string\n}\n\n/**\n * A callback that a plugin can provide to intercept non-field form errors before\n * Payload shows its default error toast. Return `true` to claim the error (the\n * default toast is suppressed). Return `false` to let Payload handle it normally.\n *\n * Set via `<FormErrorHandlerContext value={handler}>` inside an\n * `admin.components.providers` entry. The Form reads this automatically — no\n * changes to collection config or the edit view are required.\n *\n * Multiple handlers can be chained by composing providers; the first one to\n * return `true` wins.\n *\n * `retry` re-submits the form that produced the error, allowing the user to\n * retry after resolving the underlying issue (e.g. deleting documents to free\n * up quota).\n */\nexport type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean\n\nexport const FormErrorHandlerContext = createContext<FormErrorHandler | undefined>(undefined)\n\nexport const useFormErrorHandler = (): FormErrorHandler | undefined => use(FormErrorHandlerContext)\n"],"mappings":"AAAA;;AACA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAyBnC,OAAO,MAAMC,uBAAA,gBAA0BF,aAAA,CAA4CG,SAAA;AAEnF,OAAO,MAAMC,mBAAA,GAAsBA,CAAA,KAAoCH,GAAA,CAAIC,uBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Hierarchy/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAEV,qBAAqB,EAGrB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AASnB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmZ9D,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,qBAM/B,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Hierarchy/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAoD,MAAM,OAAO,CAAA;AAExE,OAAO,KAAK,EAEV,qBAAqB,EAGrB,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAUnB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsZ9D,CAAA;AAED,eAAO,MAAM,YAAY,QAAO,qBAM/B,CAAA"}
@@ -5,6 +5,7 @@ import { DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL, PREFERENCE_KEYS } from 'p
5
5
  import * as qs from 'qs-esm';
6
6
  import React, { createContext, use, useCallback, useState } from 'react';
7
7
  import { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js';
8
+ import { useBranchParam } from '../Branch/index.js';
8
9
  import { useConfig } from '../Config/index.js';
9
10
  import { usePreferences } from '../Preferences/index.js';
10
11
  import { useRouter } from '../RouterAdapter/index.js';
@@ -25,6 +26,7 @@ export const HierarchyProvider = ({
25
26
  serverURL
26
27
  }
27
28
  } = useConfig();
29
+ const branch = useBranchParam();
28
30
  const [baseFilter, setBaseFilter] = useState(null);
29
31
  const [collectionSlug, setCollectionSlug] = useState(null);
30
32
  const [parent, setParent] = useState(null);
@@ -237,6 +239,7 @@ export const HierarchyProvider = ({
237
239
  }
238
240
  };
239
241
  const queryString = qs.stringify({
242
+ branch,
240
243
  limit: treeLimit,
241
244
  page: nextPage,
242
245
  sort: useAsTitle ?? 'id',
@@ -282,7 +285,7 @@ export const HierarchyProvider = ({
282
285
  setIsLoadingMore(false);
283
286
  setLoadingNodeId(null);
284
287
  }
285
- }, [api, collectionSlug, isLoadingMore, parentFieldName, serverURL, treeCache, treeLimit, useAsTitle]);
288
+ }, [branch, api, collectionSlug, isLoadingMore, parentFieldName, serverURL, treeCache, treeLimit, useAsTitle]);
286
289
  const reset = useCallback(() => {
287
290
  setBaseFilter(null);
288
291
  setCollectionSlug(null);