@payloadcms/ui 4.0.0-internal.e7d4ebc → 4.0.0-internal.f05c47f

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 (494) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +10 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +1 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +1 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +45 -32
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/Autosave/index.d.ts.map +1 -1
  15. package/dist/elements/Autosave/index.js +3 -0
  16. package/dist/elements/Autosave/index.js.map +1 -1
  17. package/dist/elements/BranchSelector/index.css +83 -0
  18. package/dist/elements/BranchSelector/index.d.ts +12 -0
  19. package/dist/elements/BranchSelector/index.d.ts.map +1 -0
  20. package/dist/elements/BranchSelector/index.js +160 -0
  21. package/dist/elements/BranchSelector/index.js.map +1 -0
  22. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  23. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  24. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
  26. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  27. package/dist/elements/Button/index.css +2 -2
  28. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  29. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  30. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  31. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  32. package/dist/elements/CodeEditor/index.css +0 -5
  33. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  34. package/dist/elements/ColumnSelection/Popup.js +3 -3
  35. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  36. package/dist/elements/Combobox/index.css +76 -23
  37. package/dist/elements/Combobox/index.d.ts +7 -0
  38. package/dist/elements/Combobox/index.d.ts.map +1 -1
  39. package/dist/elements/Combobox/index.js +58 -20
  40. package/dist/elements/Combobox/index.js.map +1 -1
  41. package/dist/elements/CommandPalette/index.css +0 -7
  42. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  43. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  44. package/dist/elements/CopyToClipboard/index.js +10 -8
  45. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  46. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  47. package/dist/elements/CreateDocumentButton/index.js +4 -1
  48. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  49. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  50. package/dist/elements/DatePicker/DatePicker.js +1 -0
  51. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  52. package/dist/elements/DatePicker/index.css +1 -1
  53. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  54. package/dist/elements/DeleteDocument/index.js +24 -2
  55. package/dist/elements/DeleteDocument/index.js.map +1 -1
  56. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  57. package/dist/elements/DeleteMany/index.js +4 -1
  58. package/dist/elements/DeleteMany/index.js.map +1 -1
  59. package/dist/elements/Drawer/index.css +10 -4
  60. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  61. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  62. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  63. package/dist/elements/DuplicateDocument/index.js +6 -1
  64. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  65. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  66. package/dist/elements/EditMany/DrawerContent.js +6 -3
  67. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  68. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  69. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  70. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  71. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  72. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  73. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  74. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  75. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  76. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  77. package/dist/elements/FileManager/index.js +1 -0
  78. package/dist/elements/FileManager/index.js.map +1 -1
  79. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  80. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  81. package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
  82. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  83. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  84. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
  85. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  86. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
  87. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  88. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
  89. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  90. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Modal/index.js +3 -0
  92. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  93. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  94. package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
  95. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  96. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  97. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
  98. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  99. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  100. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  101. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  102. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  103. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  104. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  105. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  106. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  107. package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
  108. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  109. package/dist/elements/IDLabel/index.css +6 -0
  110. package/dist/elements/IDLabel/index.d.ts +1 -1
  111. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  112. package/dist/elements/IDLabel/index.js +16 -21
  113. package/dist/elements/IDLabel/index.js.map +1 -1
  114. package/dist/elements/InputStepper/index.css +0 -1
  115. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  116. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  117. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  118. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  119. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  120. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
  121. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  122. package/dist/elements/Locked/index.css +0 -8
  123. package/dist/elements/Locked/index.d.ts.map +1 -1
  124. package/dist/elements/Locked/index.js +70 -64
  125. package/dist/elements/Locked/index.js.map +1 -1
  126. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  127. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  128. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  129. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  130. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  131. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  132. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  133. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  134. package/dist/elements/NavGroup/index.css +0 -1
  135. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  136. package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
  137. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  138. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  139. package/dist/elements/Popup/index.js +1 -1
  140. package/dist/elements/Popup/index.js.map +1 -1
  141. package/dist/elements/PreviewButton/index.d.ts +1 -2
  142. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  143. package/dist/elements/PreviewButton/index.js +11 -5
  144. package/dist/elements/PreviewButton/index.js.map +1 -1
  145. package/dist/elements/PreviewSizes/index.css +8 -9
  146. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  147. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  148. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  149. package/dist/elements/PublishButton/index.js +6 -2
  150. package/dist/elements/PublishButton/index.js.map +1 -1
  151. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  152. package/dist/elements/PublishMany/DrawerContent.js +4 -1
  153. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  154. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  155. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  156. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  157. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  158. package/dist/elements/ReactSelect/index.css +0 -3
  159. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  160. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  161. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  162. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  163. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  164. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  165. package/dist/elements/RelationshipTable/index.js +41 -5
  166. package/dist/elements/RelationshipTable/index.js.map +1 -1
  167. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  168. package/dist/elements/RestoreButton/index.js +4 -1
  169. package/dist/elements/RestoreButton/index.js.map +1 -1
  170. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  171. package/dist/elements/RestoreMany/index.js +3 -0
  172. package/dist/elements/RestoreMany/index.js.map +1 -1
  173. package/dist/elements/SelectRow/index.d.ts +4 -3
  174. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  175. package/dist/elements/SelectRow/index.js +10 -7
  176. package/dist/elements/SelectRow/index.js.map +1 -1
  177. package/dist/elements/SidebarToggle/index.css +0 -17
  178. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  179. package/dist/elements/SortColumn/index.js +42 -38
  180. package/dist/elements/SortColumn/index.js.map +1 -1
  181. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  182. package/dist/elements/SortHeader/index.js +29 -26
  183. package/dist/elements/SortHeader/index.js.map +1 -1
  184. package/dist/elements/StepNav/index.css +64 -14
  185. package/dist/elements/StepNav/index.d.ts.map +1 -1
  186. package/dist/elements/StepNav/index.js +145 -69
  187. package/dist/elements/StepNav/index.js.map +1 -1
  188. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  189. package/dist/elements/Table/DefaultCell/index.js +3 -11
  190. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  191. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  192. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  193. package/dist/elements/Table/OrderableRow.js +17 -1
  194. package/dist/elements/Table/OrderableRow.js.map +1 -1
  195. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  196. package/dist/elements/Table/OrderableTable.js +22 -3
  197. package/dist/elements/Table/OrderableTable.js.map +1 -1
  198. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  199. package/dist/elements/Table/RelationshipProvider/index.js +29 -23
  200. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  201. package/dist/elements/TableSection/index.css +0 -1
  202. package/dist/elements/Tooltip/index.css +15 -34
  203. package/dist/elements/Tooltip/index.d.ts +11 -3
  204. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  205. package/dist/elements/Tooltip/index.js +151 -85
  206. package/dist/elements/Tooltip/index.js.map +1 -1
  207. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  208. package/dist/elements/UnpublishButton/index.js +4 -1
  209. package/dist/elements/UnpublishButton/index.js.map +1 -1
  210. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  211. package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
  212. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  213. package/dist/elements/Upload/index.css +0 -5
  214. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  215. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
  216. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  217. package/dist/exports/client/index.d.ts +8 -1
  218. package/dist/exports/client/index.d.ts.map +1 -1
  219. package/dist/exports/client/index.js +1 -1
  220. package/dist/exports/client/index.js.map +3 -3
  221. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  222. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  223. package/dist/fields/Array/ArrayRow.js +2 -0
  224. package/dist/fields/Array/ArrayRow.js.map +1 -1
  225. package/dist/fields/Array/index.d.ts.map +1 -1
  226. package/dist/fields/Array/index.js +38 -10
  227. package/dist/fields/Array/index.js.map +1 -1
  228. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  229. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  230. package/dist/fields/Blocks/BlockRow.js +2 -0
  231. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  232. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  233. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  234. package/dist/fields/Blocks/RowActions.js +22 -19
  235. package/dist/fields/Blocks/RowActions.js.map +1 -1
  236. package/dist/fields/Blocks/index.d.ts.map +1 -1
  237. package/dist/fields/Blocks/index.js +38 -10
  238. package/dist/fields/Blocks/index.js.map +1 -1
  239. package/dist/fields/Checkbox/Input.d.ts +2 -0
  240. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  241. package/dist/fields/Checkbox/Input.js +32 -26
  242. package/dist/fields/Checkbox/Input.js.map +1 -1
  243. package/dist/fields/Checkbox/index.css +37 -73
  244. package/dist/fields/FieldError/index.css +0 -9
  245. package/dist/fields/FieldError/index.d.ts.map +1 -1
  246. package/dist/fields/FieldError/index.js +19 -9
  247. package/dist/fields/FieldError/index.js.map +1 -1
  248. package/dist/fields/Join/index.css +9 -0
  249. package/dist/fields/Join/index.d.ts.map +1 -1
  250. package/dist/fields/Join/index.js +13 -9
  251. package/dist/fields/Join/index.js.map +1 -1
  252. package/dist/fields/RadioGroup/index.css +0 -7
  253. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  254. package/dist/fields/Relationship/Input.js +37 -15
  255. package/dist/fields/Relationship/Input.js.map +1 -1
  256. package/dist/fields/Slug/index.css +0 -1
  257. package/dist/fields/Slug/index.d.ts.map +1 -1
  258. package/dist/fields/Slug/index.js +80 -125
  259. package/dist/fields/Slug/index.js.map +1 -1
  260. package/dist/fields/Upload/Input.d.ts.map +1 -1
  261. package/dist/fields/Upload/Input.js +4 -1
  262. package/dist/fields/Upload/Input.js.map +1 -1
  263. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  264. package/dist/forms/Form/fieldReducer.js +3 -1
  265. package/dist/forms/Form/fieldReducer.js.map +1 -1
  266. package/dist/forms/Form/index.d.ts.map +1 -1
  267. package/dist/forms/Form/index.js +9 -1
  268. package/dist/forms/Form/index.js.map +1 -1
  269. package/dist/forms/Form/types.d.ts +1 -1
  270. package/dist/forms/Form/types.d.ts.map +1 -1
  271. package/dist/forms/Form/types.js.map +1 -1
  272. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  273. package/dist/forms/WatchChildErrors/index.js +2 -2
  274. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  275. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  276. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  277. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  278. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  279. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  280. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  281. package/dist/hooks/usePayloadAPI.js +44 -40
  282. package/dist/hooks/usePayloadAPI.js.map +1 -1
  283. package/dist/icons/Edit/index.d.ts +0 -1
  284. package/dist/icons/Edit/index.d.ts.map +1 -1
  285. package/dist/icons/Edit/index.js +4 -4
  286. package/dist/icons/Edit/index.js.map +1 -1
  287. package/dist/layouts/Root/index.d.ts +1 -1
  288. package/dist/layouts/Root/index.d.ts.map +1 -1
  289. package/dist/layouts/Root/index.js +8 -2
  290. package/dist/layouts/Root/index.js.map +1 -1
  291. package/dist/providers/Actions/index.d.ts +1 -0
  292. package/dist/providers/Actions/index.d.ts.map +1 -1
  293. package/dist/providers/Actions/index.js +43 -11
  294. package/dist/providers/Actions/index.js.map +1 -1
  295. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  296. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  297. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  298. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  299. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  300. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  301. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  302. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  303. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  304. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  305. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  306. package/dist/providers/Auth/authSessionRequests.js +119 -0
  307. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  308. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  309. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  310. package/dist/providers/Auth/index.d.ts +2 -56
  311. package/dist/providers/Auth/index.d.ts.map +1 -1
  312. package/dist/providers/Auth/index.js +283 -135
  313. package/dist/providers/Auth/index.js.map +1 -1
  314. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  315. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  316. package/dist/providers/Auth/sessionActivity.js +49 -0
  317. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  318. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  319. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  320. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  321. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  322. package/dist/providers/Auth/sessionTiming.js +18 -0
  323. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  324. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  325. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  326. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  327. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  328. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  329. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  330. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  331. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  332. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  333. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  334. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  335. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  336. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  337. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  338. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  339. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  340. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  341. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  342. package/dist/providers/Auth/types.d.ts +65 -0
  343. package/dist/providers/Auth/types.d.ts.map +1 -0
  344. package/dist/providers/Auth/types.js +2 -0
  345. package/dist/providers/Auth/types.js.map +1 -0
  346. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  347. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  348. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  349. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  350. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  351. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  352. package/dist/providers/Branch/index.d.ts +62 -0
  353. package/dist/providers/Branch/index.d.ts.map +1 -0
  354. package/dist/providers/Branch/index.js +192 -0
  355. package/dist/providers/Branch/index.js.map +1 -0
  356. package/dist/providers/Branch/index.server.d.ts +14 -0
  357. package/dist/providers/Branch/index.server.d.ts.map +1 -0
  358. package/dist/providers/Branch/index.server.js +80 -0
  359. package/dist/providers/Branch/index.server.js.map +1 -0
  360. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  361. package/dist/providers/DocumentInfo/index.js +5 -1
  362. package/dist/providers/DocumentInfo/index.js.map +1 -1
  363. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  364. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  365. package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
  366. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  367. package/dist/providers/Embed/index.d.ts +24 -0
  368. package/dist/providers/Embed/index.d.ts.map +1 -0
  369. package/dist/providers/Embed/index.js +105 -0
  370. package/dist/providers/Embed/index.js.map +1 -0
  371. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  372. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  373. package/dist/providers/FormErrorHandler/index.js +6 -0
  374. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  375. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  376. package/dist/providers/Hierarchy/index.js +4 -1
  377. package/dist/providers/Hierarchy/index.js.map +1 -1
  378. package/dist/providers/Locale/index.d.ts.map +1 -1
  379. package/dist/providers/Locale/index.js +41 -36
  380. package/dist/providers/Locale/index.js.map +1 -1
  381. package/dist/providers/Root/index.d.ts +1 -0
  382. package/dist/providers/Root/index.d.ts.map +1 -1
  383. package/dist/providers/Root/index.js +37 -31
  384. package/dist/providers/Root/index.js.map +1 -1
  385. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  386. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  387. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  388. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  389. package/dist/providers/RouteTransition/index.d.ts +2 -0
  390. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  391. package/dist/providers/RouteTransition/index.js +42 -14
  392. package/dist/providers/RouteTransition/index.js.map +1 -1
  393. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  394. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  395. package/dist/providers/SidebarTabs/index.js.map +1 -1
  396. package/dist/providers/Theme/index.d.ts +3 -0
  397. package/dist/providers/Theme/index.d.ts.map +1 -1
  398. package/dist/providers/Theme/index.js +107 -95
  399. package/dist/providers/Theme/index.js.map +1 -1
  400. package/dist/styles.css +12 -10
  401. package/dist/templates/Default/index.d.ts +1 -0
  402. package/dist/templates/Default/index.d.ts.map +1 -1
  403. package/dist/templates/Default/index.js +45 -39
  404. package/dist/templates/Default/index.js.map +1 -1
  405. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  406. package/dist/utilities/combineFieldLabel.js +5 -1
  407. package/dist/utilities/combineFieldLabel.js.map +1 -1
  408. package/dist/utilities/generateFieldID.d.ts +1 -1
  409. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  410. package/dist/utilities/generateFieldID.js +2 -2
  411. package/dist/utilities/generateFieldID.js.map +1 -1
  412. package/dist/utilities/getRequestBranch.d.ts +18 -0
  413. package/dist/utilities/getRequestBranch.d.ts.map +1 -0
  414. package/dist/utilities/getRequestBranch.js +32 -0
  415. package/dist/utilities/getRequestBranch.js.map +1 -0
  416. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  417. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  418. package/dist/utilities/getRequestEmbed.js +10 -0
  419. package/dist/utilities/getRequestEmbed.js.map +1 -0
  420. package/dist/utilities/initReq.d.ts.map +1 -1
  421. package/dist/utilities/initReq.js +8 -0
  422. package/dist/utilities/initReq.js.map +1 -1
  423. package/dist/utilities/matchesSearchQuery.d.ts +12 -0
  424. package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
  425. package/dist/utilities/matchesSearchQuery.js +23 -0
  426. package/dist/utilities/matchesSearchQuery.js.map +1 -0
  427. package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
  428. package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
  429. package/dist/utilities/renderTable.d.ts.map +1 -1
  430. package/dist/utilities/renderTable.js +18 -2
  431. package/dist/utilities/renderTable.js.map +1 -1
  432. package/dist/utilities/slugify.d.ts.map +1 -1
  433. package/dist/utilities/slugify.js +49 -6
  434. package/dist/utilities/slugify.js.map +1 -1
  435. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  436. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  437. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  438. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  439. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  440. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  441. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  442. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  443. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  444. package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
  445. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  446. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  447. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  448. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  449. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  450. package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
  451. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  452. package/dist/views/HierarchyList/index.css +1 -1
  453. package/dist/views/List/ListHeader/index.d.ts +1 -10
  454. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  455. package/dist/views/List/ListHeader/index.js +1 -3
  456. package/dist/views/List/ListHeader/index.js.map +1 -1
  457. package/dist/views/List/index.client.d.ts.map +1 -1
  458. package/dist/views/List/index.client.js +0 -14
  459. package/dist/views/List/index.client.js.map +1 -1
  460. package/dist/views/List/index.css +6 -1
  461. package/dist/views/List/index.d.ts.map +1 -1
  462. package/dist/views/List/index.js +4 -0
  463. package/dist/views/List/index.js.map +1 -1
  464. package/dist/views/Logout/index.d.ts.map +1 -1
  465. package/dist/views/Logout/index.js +11 -0
  466. package/dist/views/Logout/index.js.map +1 -1
  467. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  468. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  469. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  470. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  471. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  472. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  473. package/dist/views/Root/index.d.ts.map +1 -1
  474. package/dist/views/Root/index.js +1 -0
  475. package/dist/views/Root/index.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/package.json +5 -10
  480. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
  481. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
  482. package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
  483. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
  484. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
  485. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  486. package/dist/scss/app.scss +0 -183
  487. package/dist/scss/colors.scss +0 -191
  488. package/dist/scss/custom.css +0 -1
  489. package/dist/scss/queries.scss +0 -27
  490. package/dist/scss/styles.scss +0 -9
  491. package/dist/scss/svg.scss +0 -10
  492. package/dist/scss/toastify.scss +0 -61
  493. package/dist/scss/vars.scss +0 -192
  494. package/dist/scss/z-index.scss +0 -9
@@ -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","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 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 `branch` 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 // Awaited before refreshing: the server re-reads the preference to\n // resolve the branch, so refreshing first would race the write and\n // re-render against the branch we just left.\n void (async () => {\n await setPreference(PREFERENCE_KEYS.BRANCH, slug)\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.BRANCH, MAIN_BRANCH)\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 *\n * Shared with the breadcrumb trail, which needs to know whether to draw the\n * separator that precedes the switcher.\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,gGA6DA,CAAA"}
@@ -0,0 +1,80 @@
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
+ try {
24
+ const {
25
+ docs
26
+ } = await payload.find({
27
+ collection: branchesCollectionSlug,
28
+ depth: 0,
29
+ overrideAccess: false,
30
+ pagination: false,
31
+ req,
32
+ select: {
33
+ name: true,
34
+ slug: true
35
+ },
36
+ sort: 'name',
37
+ user: req.user,
38
+ where: {
39
+ status: {
40
+ equals: 'open'
41
+ }
42
+ }
43
+ });
44
+ branches = docs.reduce((acc, doc) => {
45
+ const slug = typeof doc.slug === 'string' ? doc.slug : undefined;
46
+ // `main` is a sentinel rather than a row, so a branch that claims the slug
47
+ // would render a duplicate entry alongside the one the selector adds.
48
+ if (slug && slug !== MAIN_BRANCH) {
49
+ acc.push({
50
+ name: typeof doc.name === 'string' && doc.name ? doc.name : slug,
51
+ slug
52
+ });
53
+ }
54
+ return acc;
55
+ }, []);
56
+ } catch (_err) {
57
+ // Read access to `payload-branches` can legitimately be denied — a user
58
+ // without it simply has no branches to switch between, which must not take
59
+ // the whole admin panel down with it.
60
+ branches = [];
61
+ }
62
+ // Already resolved from the user's preference during request initialization,
63
+ // so this is a read of what every query on this request actually used —
64
+ // not a second source of truth that could disagree with the data on screen.
65
+ const activeBranch = resolveBranch(req);
66
+ // A branch the user can no longer see — merged, closed, deleted, or never
67
+ // theirs — must not be presented as the active one. Otherwise the switcher
68
+ // claims a branch while reads quietly fall through to main, which reads as
69
+ // "my edits vanished" rather than "that branch is gone".
70
+ const isActiveBranchStale = activeBranch !== MAIN_BRANCH && !branches.some(({
71
+ slug
72
+ }) => slug === activeBranch);
73
+ return /*#__PURE__*/_jsx(BranchProvider, {
74
+ activeBranch: isActiveBranchStale ? MAIN_BRANCH : activeBranch,
75
+ branches: branches,
76
+ staleBranch: isActiveBranchStale ? activeBranch : null,
77
+ children: children
78
+ });
79
+ };
80
+ //# 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","docs","find","collection","depth","overrideAccess","pagination","select","name","slug","sort","where","status","equals","reduce","acc","doc","undefined","push","_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\n try {\n const { docs } = await payload.find({\n collection: branchesCollectionSlug,\n depth: 0,\n overrideAccess: false,\n pagination: false,\n req,\n select: { name: true, slug: true },\n sort: 'name',\n user: req.user,\n where: { status: { equals: 'open' } },\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({ name: typeof doc.name === 'string' && doc.name ? doc.name : slug, slug })\n }\n\n return acc\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":";AAEA,SAASA,aAAa,QAAQ;AAC9B,SAASC,sBAAsB,EAAEC,WAAW,QAAQ;AACpD,OAAOC,KAAA,MAAW;AAIlB;AACA,SAASC,cAAc,QAAQ;AAE/B;;;;;;;AAOA,OAAO,MAAMC,oBAAA,GAAuB,MAAAA,CAAO;EACzCC,QAAQ;EACRC;AAAG,CAIJ;EACC,MAAMC,OAAA,GAAUD,GAAA,EAAKC,OAAA;EAErB,IAAI,CAACA,OAAA,EAASC,MAAA,CAAOC,SAAA,CAAUC,OAAA,IAAW,CAACJ,GAAA,CAAIK,IAAI,EAAE;IACnD,OAAON,QAAA;EACT;EAEA,IAAIO,QAAA,GAA2B,EAAE;EAEjC,IAAI;IACF,MAAM;MAAEC;IAAI,CAAE,GAAG,MAAMN,OAAA,CAAQO,IAAI,CAAC;MAClCC,UAAA,EAAYf,sBAAA;MACZgB,KAAA,EAAO;MACPC,cAAA,EAAgB;MAChBC,UAAA,EAAY;MACZZ,GAAA;MACAa,MAAA,EAAQ;QAAEC,IAAA,EAAM;QAAMC,IAAA,EAAM;MAAK;MACjCC,IAAA,EAAM;MACNX,IAAA,EAAML,GAAA,CAAIK,IAAI;MACdY,KAAA,EAAO;QAAEC,MAAA,EAAQ;UAAEC,MAAA,EAAQ;QAAO;MAAE;IACtC;IAEAb,QAAA,GAAWC,IAAA,CAAKa,MAAM,CAAiB,CAACC,GAAA,EAAKC,GAAA;MAC3C,MAAMP,IAAA,GAAO,OAAOO,GAAA,CAAIP,IAAI,KAAK,WAAWO,GAAA,CAAIP,IAAI,GAAGQ,SAAA;MAEvD;MACA;MACA,IAAIR,IAAA,IAAQA,IAAA,KAASpB,WAAA,EAAa;QAChC0B,GAAA,CAAIG,IAAI,CAAC;UAAEV,IAAA,EAAM,OAAOQ,GAAA,CAAIR,IAAI,KAAK,YAAYQ,GAAA,CAAIR,IAAI,GAAGQ,GAAA,CAAIR,IAAI,GAAGC,IAAA;UAAMA;QAAK;MACpF;MAEA,OAAOM,GAAA;IACT,GAAG,EAAE;EACP,EAAE,OAAOI,IAAA,EAAM;IACb;IACA;IACA;IACAnB,QAAA,GAAW,EAAE;EACf;EAEA;EACA;EACA;EACA,MAAMoB,YAAA,GAAejC,aAAA,CAAcO,GAAA;EAEnC;EACA;EACA;EACA;EACA,MAAM2B,mBAAA,GACJD,YAAA,KAAiB/B,WAAA,IAAe,CAACW,QAAA,CAASsB,IAAI,CAAC,CAAC;IAAEb;EAAI,CAAE,KAAKA,IAAA,KAASW,YAAA;EAExE,oBACEG,IAAA,CAAChC,cAAA;IACC6B,YAAA,EAAcC,mBAAA,GAAsBhC,WAAA,GAAc+B,YAAA;IAClDpB,QAAA,EAAUA,QAAA;IACVwB,WAAA,EAAaH,mBAAA,GAAsBD,YAAA,GAAe;cAEjD3B;;AAGP","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":[]}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ /**
3
+ * @experimental This is an experimental API and may change at any time. Use at your own risk.
4
+ */
5
+ export type EmbedContext = {
6
+ isEmbedded: boolean;
7
+ };
8
+ /**
9
+ * @experimental This component is experimental and may change or be removed in future releases. Use at your own risk.
10
+ */
11
+ export declare const EmbedProvider: React.FC<{
12
+ children?: React.ReactNode;
13
+ /**
14
+ * Initial embed value is read from the embed cookie in the root layout. The root layout
15
+ * cannot see search params, so the client reads the `?embed` query parameter below
16
+ * and it takes precedence over the cookie value.
17
+ */
18
+ embed?: boolean;
19
+ }>;
20
+ /**
21
+ * @experimental This is an experimental API and may change at any time. Use at your own risk.
22
+ */
23
+ export declare const useEmbed: () => EmbedContext;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Embed/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAKtE;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,UAAU,EAAE,OAAO,CAAA;CACpB,CAAA;AAyCD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAoBA,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ,QAAO,YAA8C,CAAA"}
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
4
+ import { jsx as _jsx } from "react/jsx-runtime";
5
+ import React, { createContext, use, useEffect, useState } from 'react';
6
+ import { useConfig } from '../Config/index.js';
7
+ import { useSearchParams } from '../RouterAdapter/index.js';
8
+ const initialContext = {
9
+ isEmbedded: false
10
+ };
11
+ const Context = /*#__PURE__*/createContext(undefined);
12
+ const hasEmbedCookie = cookieKey => document.cookie.split('; ').some(row => row.startsWith(`${cookieKey}=`) && row.split('=')[1] === 'true');
13
+ /**
14
+ * Writes a session-scoped, `Partitioned` (CHIPS) cookie so embed mode persists
15
+ * across navigation within the iframe.
16
+ *
17
+ * The cookie is keyed to both the iframe domain and the embedding top-level domain,
18
+ * so it is readable only on that one top-level domain.
19
+ *
20
+ * No `Expires`/`Max-Age` — it is a session cookie that clears when the browsing session ends.
21
+ */
22
+ const setEmbedCookie = cookieKey => {
23
+ document.cookie = `${cookieKey}=true; path=/; SameSite=None; Secure; Partitioned`;
24
+ };
25
+ const deleteEmbedCookie = cookieKey => {
26
+ document.cookie = `${cookieKey}=; path=/; SameSite=None; Secure; Partitioned; expires=Thu, 01 Jan 1970 00:00:00 GMT`;
27
+ };
28
+ const resolveEmbedParam = (embedParam, fallback) => {
29
+ switch (embedParam) {
30
+ case 'false':
31
+ return false;
32
+ case 'true':
33
+ return true;
34
+ default:
35
+ return fallback;
36
+ }
37
+ };
38
+ /**
39
+ * @experimental This component is experimental and may change or be removed in future releases. Use at your own risk.
40
+ */
41
+ export const EmbedProvider = t0 => {
42
+ const $ = _c(10);
43
+ const {
44
+ children,
45
+ embed
46
+ } = t0;
47
+ const {
48
+ config
49
+ } = useConfig();
50
+ const embedCookieKey = `${config.cookiePrefix || "payload"}-embed`;
51
+ const embedParam = useSearchParams().get("embed")?.toLowerCase();
52
+ let t1;
53
+ if ($[0] !== embed || $[1] !== embedParam) {
54
+ t1 = () => resolveEmbedParam(embedParam, Boolean(embed));
55
+ $[0] = embed;
56
+ $[1] = embedParam;
57
+ $[2] = t1;
58
+ } else {
59
+ t1 = $[2];
60
+ }
61
+ const [isEmbedded, setIsEmbedded] = useState(t1);
62
+ let t2;
63
+ let t3;
64
+ if ($[3] !== embedCookieKey || $[4] !== embedParam) {
65
+ t2 = () => {
66
+ if (embedParam === "true") {
67
+ setEmbedCookie(embedCookieKey);
68
+ } else {
69
+ if (embedParam === "false") {
70
+ deleteEmbedCookie(embedCookieKey);
71
+ }
72
+ }
73
+ setIsEmbedded(hasEmbedCookie(embedCookieKey));
74
+ };
75
+ t3 = [embedParam, embedCookieKey];
76
+ $[3] = embedCookieKey;
77
+ $[4] = embedParam;
78
+ $[5] = t2;
79
+ $[6] = t3;
80
+ } else {
81
+ t2 = $[5];
82
+ t3 = $[6];
83
+ }
84
+ useEffect(t2, t3);
85
+ let t4;
86
+ if ($[7] !== children || $[8] !== isEmbedded) {
87
+ t4 = _jsx(Context, {
88
+ value: {
89
+ isEmbedded
90
+ },
91
+ children
92
+ });
93
+ $[7] = children;
94
+ $[8] = isEmbedded;
95
+ $[9] = t4;
96
+ } else {
97
+ t4 = $[9];
98
+ }
99
+ return t4;
100
+ };
101
+ /**
102
+ * @experimental This is an experimental API and may change at any time. Use at your own risk.
103
+ */
104
+ export const useEmbed = () => use(Context) ?? initialContext;
105
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useEffect","useState","useConfig","useSearchParams","initialContext","isEmbedded","Context","undefined","hasEmbedCookie","cookieKey","document","cookie","split","some","row","startsWith","setEmbedCookie","deleteEmbedCookie","resolveEmbedParam","embedParam","fallback","EmbedProvider","t0","$","children","embed","config","embedCookieKey","cookiePrefix","get","toLowerCase","t1","Boolean","setIsEmbedded","t2","t3","t4","_jsx","value","useEmbed"],"sources":["../../../src/providers/Embed/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\n\n/**\n * @experimental This is an experimental API and may change at any time. Use at your own risk.\n */\nexport type EmbedContext = {\n isEmbedded: boolean\n}\n\nconst initialContext: EmbedContext = {\n isEmbedded: false,\n}\n\nconst Context = createContext<EmbedContext | undefined>(undefined)\n\nconst hasEmbedCookie = (cookieKey: string): boolean =>\n document.cookie\n .split('; ')\n .some((row) => row.startsWith(`${cookieKey}=`) && row.split('=')[1] === 'true')\n\n/**\n * Writes a session-scoped, `Partitioned` (CHIPS) cookie so embed mode persists\n * across navigation within the iframe.\n *\n * The cookie is keyed to both the iframe domain and the embedding top-level domain,\n * so it is readable only on that one top-level domain.\n *\n * No `Expires`/`Max-Age` — it is a session cookie that clears when the browsing session ends.\n */\nconst setEmbedCookie = (cookieKey: string): void => {\n document.cookie = `${cookieKey}=true; path=/; SameSite=None; Secure; Partitioned`\n}\n\nconst deleteEmbedCookie = (cookieKey: string): void => {\n document.cookie = `${cookieKey}=; path=/; SameSite=None; Secure; Partitioned; expires=Thu, 01 Jan 1970 00:00:00 GMT`\n}\n\nconst resolveEmbedParam = (embedParam: null | string, fallback: boolean): boolean => {\n switch (embedParam) {\n case 'false':\n return false\n case 'true':\n return true\n default:\n return fallback\n }\n}\n\n/**\n * @experimental This component is experimental and may change or be removed in future releases. Use at your own risk.\n */\nexport const EmbedProvider: React.FC<{\n children?: React.ReactNode\n /**\n * Initial embed value is read from the embed cookie in the root layout. The root layout\n * cannot see search params, so the client reads the `?embed` query parameter below\n * and it takes precedence over the cookie value.\n */\n embed?: boolean\n}> = ({ children, embed }) => {\n const { config } = useConfig()\n const embedCookieKey = `${config.cookiePrefix || 'payload'}-embed`\n const embedParam = useSearchParams().get('embed')?.toLowerCase()\n\n const [isEmbedded, setIsEmbedded] = useState<boolean>(() =>\n resolveEmbedParam(embedParam, Boolean(embed)),\n )\n\n useEffect(() => {\n // The query parameter takes precedence; otherwise fall back to the cookie value\n if (embedParam === 'true') {\n setEmbedCookie(embedCookieKey)\n } else if (embedParam === 'false') {\n deleteEmbedCookie(embedCookieKey)\n }\n setIsEmbedded(hasEmbedCookie(embedCookieKey))\n }, [embedParam, embedCookieKey])\n\n return <Context value={{ isEmbedded }}>{children}</Context>\n}\n\n/**\n * @experimental This is an experimental API and may change at any time. Use at your own risk.\n */\nexport const useEmbed = (): EmbedContext => use(Context) ?? initialContext\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAE/D,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAShC,MAAMC,cAAA,GAA+B;EACnCC,UAAA,EAAY;AACd;AAEA,MAAMC,OAAA,gBAAUR,aAAA,CAAwCS,SAAA;AAExD,MAAMC,cAAA,GAAkBC,SAAA,IACtBC,QAAA,CAASC,MAAM,CACZC,KAAK,CAAC,MACNC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIC,UAAU,CAAC,GAAGN,SAAA,GAAY,KAAKK,GAAA,CAAIF,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK;AAE5E;;;;;;;;;AASA,MAAMI,cAAA,GAAkBP,SAAA;EACtBC,QAAA,CAASC,MAAM,GAAG,GAAGF,SAAA,mDAA4D;AACnF;AAEA,MAAMQ,iBAAA,GAAqBR,SAAA;EACzBC,QAAA,CAASC,MAAM,GAAG,GAAGF,SAAA,sFAA+F;AACtH;AAEA,MAAMS,iBAAA,GAAoBA,CAACC,UAAA,EAA2BC,QAAA;EACpD,QAAQD,UAAA;IACN,KAAK;MACH,OAAO;IACT,KAAK;MACH,OAAO;IACT;MACE,OAAOC,QAAA;EACX;AACF;AAEA;;;AAGA,OAAO,MAAMC,aAAA,GAQRC,EAAA;EAAA,MAAAC,CAAA,GAAA3B,EAAA;EAAC;IAAA4B,QAAA;IAAAC;EAAA,IAAAH,EAAmB;EACvB;IAAAI;EAAA,IAAmBxB,SAAA;EACnB,MAAAyB,cAAA,GAAuB,GAAGD,MAAA,CAAAE,YAAA,IAAuB,iBAAiB;EAClE,MAAAT,UAAA,GAAmBhB,eAAA,GAAA0B,GAAA,CAAsB,UAAAC,WAAA;EAAU,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAE,KAAA,IAAAF,CAAA,QAAAJ,UAAA;IAEGY,EAAA,GAAAA,CAAA,KACpDb,iBAAA,CAAkBC,UAAA,EAAYa,OAAA,CAAQP,KAAA;IAAAF,CAAA,MAAAE,KAAA;IAAAF,CAAA,MAAAJ,UAAA;IAAAI,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EADxC,OAAAlB,UAAA,EAAA4B,aAAA,IAAoChC,QAAA,CAAkB8B,EACd;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAZ,CAAA,QAAAI,cAAA,IAAAJ,CAAA,QAAAJ,UAAA;IAG9Be,EAAA,GAAAA,CAAA;MAAA,IAEJf,UAAA,KAAe;QACjBH,cAAA,CAAeW,cAAA;MAAA;QAAA,IACNR,UAAA,KAAe;UACxBF,iBAAA,CAAkBU,cAAA;QAAA;MAAA;MAEpBM,aAAA,CAAczB,cAAA,CAAemB,cAAA;IAAA;IAC5BQ,EAAA,IAAChB,UAAA,EAAYQ,cAAA;IAAeJ,CAAA,MAAAI,cAAA;IAAAJ,CAAA,MAAAJ,UAAA;IAAAI,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;EAAA;IAAAD,EAAA,GAAAX,CAAA;IAAAY,EAAA,GAAAZ,CAAA;EAAA;EAR/BvB,SAAA,CAAUkC,EAQV,EAAGC,EAA4B;EAAA,IAAAC,EAAA;EAAA,IAAAb,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAlB,UAAA;IAExB+B,EAAA,GAAAC,IAAA,CAAA/B,OAAA;MAAAgC,KAAA;QAAAjC;MAAA;MAAAmB;IAAA,C;;;;;;;SAAAY,E;CACT;AAEA;;;AAGA,OAAO,MAAMG,QAAA,GAAWA,CAAA,KAAoBxC,GAAA,CAAIO,OAAA,KAAYF,cAAA","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ export type NonFieldError = {
2
+ data?: unknown;
3
+ message: string;
4
+ };
5
+ /**
6
+ * A callback that a plugin can provide to intercept non-field form errors before
7
+ * Payload shows its default error toast. Return `true` to claim the error (the
8
+ * default toast is suppressed). Return `false` to let Payload handle it normally.
9
+ *
10
+ * Set via `<FormErrorHandlerContext value={handler}>` inside an
11
+ * `admin.components.providers` entry. The Form reads this automatically — no
12
+ * changes to collection config or the edit view are required.
13
+ *
14
+ * Multiple handlers can be chained by composing providers; the first one to
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).
20
+ */
21
+ export type FormErrorHandler = (err: NonFieldError, retry: () => void) => boolean;
22
+ export declare const FormErrorHandlerContext: import("react").Context<FormErrorHandler>;
23
+ export declare const useFormErrorHandler: () => FormErrorHandler | undefined;
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;;;;;;;;;;;;;;;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"}
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+
3
+ import { createContext, use } from 'react';
4
+ export const FormErrorHandlerContext = /*#__PURE__*/createContext(undefined);
5
+ export const useFormErrorHandler = () => use(FormErrorHandlerContext);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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 *\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);