@payloadcms/ui 4.0.0-internal.567a487 → 4.0.0-internal.5a4aa81

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 (459) hide show
  1. package/dist/elements/AppHeader/index.css +0 -4
  2. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  3. package/dist/elements/AppHeader/index.js +1 -4
  4. package/dist/elements/AppHeader/index.js.map +1 -1
  5. package/dist/elements/Autosave/index.d.ts.map +1 -1
  6. package/dist/elements/Autosave/index.js +2 -6
  7. package/dist/elements/Autosave/index.js.map +1 -1
  8. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  9. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  10. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  11. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js +4 -9
  14. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  15. package/dist/elements/Button/index.d.ts.map +1 -1
  16. package/dist/elements/Button/index.js +2 -0
  17. package/dist/elements/Button/index.js.map +1 -1
  18. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  19. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +10 -3
  20. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  21. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  22. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  23. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  24. package/dist/elements/ColumnSelection/Popup.js +3 -3
  25. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  26. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +10 -0
  27. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +1 -0
  28. package/dist/elements/ColumnSelection/matchesColumnSearch.js +21 -0
  29. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +1 -0
  30. package/dist/{utilities/matchesSearchQuery.spec.js → elements/ColumnSelection/matchesColumnSearch.spec.js} +29 -29
  31. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +1 -0
  32. package/dist/elements/Combobox/index.css +23 -84
  33. package/dist/elements/Combobox/index.d.ts +0 -21
  34. package/dist/elements/Combobox/index.d.ts.map +1 -1
  35. package/dist/elements/Combobox/index.js +21 -66
  36. package/dist/elements/Combobox/index.js.map +1 -1
  37. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  38. package/dist/elements/CopyLocaleData/index.js +8 -9
  39. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  40. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  41. package/dist/elements/DeleteDocument/index.js +2 -9
  42. package/dist/elements/DeleteDocument/index.js.map +1 -1
  43. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  44. package/dist/elements/DeleteMany/index.js +3 -7
  45. package/dist/elements/DeleteMany/index.js.map +1 -1
  46. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +3 -5
  47. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  48. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +1 -32
  49. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  50. package/dist/elements/Dropzone/index.css +10 -4
  51. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  52. package/dist/elements/DuplicateDocument/index.js +3 -9
  53. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  54. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  55. package/dist/elements/EditMany/DrawerContent.js +3 -7
  56. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  57. package/dist/elements/FileManager/index.css +0 -30
  58. package/dist/elements/FileManager/index.d.ts.map +1 -1
  59. package/dist/elements/FileManager/index.js +379 -287
  60. package/dist/elements/FileManager/index.js.map +1 -1
  61. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  62. package/dist/elements/Hierarchy/ColumnBrowser/index.js +1 -4
  63. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  64. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  65. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +1 -4
  66. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  67. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +1 -2
  68. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  69. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +0 -2
  70. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  71. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/Modal/index.js +0 -3
  73. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  74. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/MoveMany/index.js +3 -7
  76. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  77. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  78. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +2 -6
  79. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  80. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  81. package/dist/elements/Hierarchy/Tree/useChildren.js +1 -4
  82. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  83. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  84. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +4 -9
  85. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  86. package/dist/elements/LivePreview/Window/index.js +1 -1
  87. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  88. package/dist/elements/Localizer/index.js +1 -1
  89. package/dist/elements/Localizer/index.js.map +1 -1
  90. package/dist/elements/Nav/context.js +2 -2
  91. package/dist/elements/Nav/context.js.map +1 -1
  92. package/dist/elements/Nav/getNavPrefs.d.ts +0 -6
  93. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  94. package/dist/elements/Nav/getNavPrefs.js +46 -14
  95. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  96. package/dist/elements/NavGroup/index.js +1 -1
  97. package/dist/elements/NavGroup/index.js.map +1 -1
  98. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  99. package/dist/elements/PermanentlyDeleteButton/index.js +1 -4
  100. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  101. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  102. package/dist/elements/PublishButton/ScheduleDrawer/index.js +8 -30
  103. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  104. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts +1 -1
  105. package/dist/elements/PublishButton/ScheduleDrawer/types.d.ts.map +1 -1
  106. package/dist/elements/PublishButton/ScheduleDrawer/types.js.map +1 -1
  107. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  108. package/dist/elements/PublishButton/index.js +7 -12
  109. package/dist/elements/PublishButton/index.js.map +1 -1
  110. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  111. package/dist/elements/PublishMany/DrawerContent.js +3 -7
  112. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  113. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  114. package/dist/elements/RestoreButton/index.js +1 -4
  115. package/dist/elements/RestoreButton/index.js.map +1 -1
  116. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  117. package/dist/elements/RestoreMany/index.js +2 -6
  118. package/dist/elements/RestoreMany/index.js.map +1 -1
  119. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  120. package/dist/elements/SaveDraftButton/index.js +4 -18
  121. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  122. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  123. package/dist/elements/SchedulePublishButton/index.js +1 -7
  124. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  125. package/dist/elements/Status/index.d.ts.map +1 -1
  126. package/dist/elements/Status/index.js +5 -19
  127. package/dist/elements/Status/index.js.map +1 -1
  128. package/dist/elements/StepNav/index.css +0 -7
  129. package/dist/elements/StepNav/index.d.ts.map +1 -1
  130. package/dist/elements/StepNav/index.js +24 -16
  131. package/dist/elements/StepNav/index.js.map +1 -1
  132. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  133. package/dist/elements/Table/OrderableTable.js +3 -6
  134. package/dist/elements/Table/OrderableTable.js.map +1 -1
  135. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  136. package/dist/elements/Table/RelationshipProvider/index.js +25 -32
  137. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  138. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/UnpublishButton/index.js +4 -8
  140. package/dist/elements/UnpublishButton/index.js.map +1 -1
  141. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  142. package/dist/elements/UnpublishMany/DrawerContent.js +3 -7
  143. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  144. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  145. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  146. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  147. package/dist/elements/Upload/index.css +39 -32
  148. package/dist/elements/Upload/index.d.ts.map +1 -1
  149. package/dist/elements/Upload/index.js +37 -99
  150. package/dist/elements/Upload/index.js.map +1 -1
  151. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  152. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  153. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  154. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  155. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  156. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  157. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  158. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  159. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  160. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  161. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  162. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  163. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  164. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  165. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +1 -4
  166. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  167. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  168. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  169. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  170. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  171. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  172. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  173. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  174. package/dist/elements/WhereBuilder/index.js +15 -4
  175. package/dist/elements/WhereBuilder/index.js.map +1 -1
  176. package/dist/exports/client/index.d.ts +0 -17
  177. package/dist/exports/client/index.d.ts.map +1 -1
  178. package/dist/exports/client/index.js +1 -1
  179. package/dist/exports/client/index.js.map +3 -3
  180. package/dist/fields/Array/index.d.ts.map +1 -1
  181. package/dist/fields/Array/index.js +2 -3
  182. package/dist/fields/Array/index.js.map +1 -1
  183. package/dist/fields/Blocks/index.d.ts.map +1 -1
  184. package/dist/fields/Blocks/index.js +2 -3
  185. package/dist/fields/Blocks/index.js.map +1 -1
  186. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  187. package/dist/fields/FieldLabel/index.js +4 -5
  188. package/dist/fields/FieldLabel/index.js.map +1 -1
  189. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  190. package/dist/fields/Relationship/Input.js +3 -8
  191. package/dist/fields/Relationship/Input.js.map +1 -1
  192. package/dist/fields/Slug/index.d.ts.map +1 -1
  193. package/dist/fields/Slug/index.js +2 -3
  194. package/dist/fields/Slug/index.js.map +1 -1
  195. package/dist/fields/Upload/Input.d.ts.map +1 -1
  196. package/dist/fields/Upload/Input.js +47 -23
  197. package/dist/fields/Upload/Input.js.map +1 -1
  198. package/dist/fields/Upload/Input.spec.js +242 -0
  199. package/dist/fields/Upload/Input.spec.js.map +1 -0
  200. package/dist/fields/shared/index.d.ts +1 -1
  201. package/dist/fields/shared/index.d.ts.map +1 -1
  202. package/dist/fields/shared/index.js.map +1 -1
  203. package/dist/forms/Form/index.d.ts.map +1 -1
  204. package/dist/forms/Form/index.js +2 -3
  205. package/dist/forms/Form/index.js.map +1 -1
  206. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  207. package/dist/forms/NullifyField/index.js +2 -3
  208. package/dist/forms/NullifyField/index.js.map +1 -1
  209. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  210. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
  211. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  212. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  213. package/dist/hooks/usePayloadAPI.js +42 -47
  214. package/dist/hooks/usePayloadAPI.js.map +1 -1
  215. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  216. package/dist/providers/DocumentInfo/index.js +3 -8
  217. package/dist/providers/DocumentInfo/index.js.map +1 -1
  218. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
  219. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  220. package/dist/providers/DocumentInfo/useGetDocPermissions.js +1 -3
  221. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  222. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  223. package/dist/providers/Hierarchy/index.js +1 -4
  224. package/dist/providers/Hierarchy/index.js.map +1 -1
  225. package/dist/providers/Locale/index.d.ts +1 -5
  226. package/dist/providers/Locale/index.d.ts.map +1 -1
  227. package/dist/providers/Locale/index.js +61 -139
  228. package/dist/providers/Locale/index.js.map +1 -1
  229. package/dist/providers/Preferences/index.d.ts +1 -3
  230. package/dist/providers/Preferences/index.d.ts.map +1 -1
  231. package/dist/providers/Preferences/index.js +3 -9
  232. package/dist/providers/Preferences/index.js.map +1 -1
  233. package/dist/providers/Selection/index.d.ts.map +1 -1
  234. package/dist/providers/Selection/index.js +2 -3
  235. package/dist/providers/Selection/index.js.map +1 -1
  236. package/dist/providers/ServerFunctions/index.d.ts +5 -1
  237. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  238. package/dist/providers/ServerFunctions/index.js +15 -0
  239. package/dist/providers/ServerFunctions/index.js.map +1 -1
  240. package/dist/styles.css +1 -1
  241. package/dist/templates/Default/index.d.ts.map +1 -1
  242. package/dist/templates/Default/index.js +37 -43
  243. package/dist/templates/Default/index.js.map +1 -1
  244. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  245. package/dist/utilities/formatMetadata.js +0 -5
  246. package/dist/utilities/formatMetadata.js.map +1 -1
  247. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  248. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  249. package/dist/utilities/getFilesFromClipboard.js +49 -0
  250. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  251. package/dist/utilities/getHasScheduledPublish.d.ts +2 -3
  252. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  253. package/dist/utilities/getHasScheduledPublish.js +2 -5
  254. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  255. package/dist/utilities/getVersions.d.ts +1 -6
  256. package/dist/utilities/getVersions.d.ts.map +1 -1
  257. package/dist/utilities/getVersions.js +0 -5
  258. package/dist/utilities/getVersions.js.map +1 -1
  259. package/dist/utilities/initReq.d.ts.map +1 -1
  260. package/dist/utilities/initReq.js +0 -8
  261. package/dist/utilities/initReq.js.map +1 -1
  262. package/dist/utilities/schedulePublishHandler.d.ts +8 -1
  263. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  264. package/dist/utilities/schedulePublishHandler.js +68 -14
  265. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  266. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  267. package/dist/utilities/serverFunctionRegistry.js +2 -7
  268. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  269. package/dist/utilities/slugify.d.ts.map +1 -1
  270. package/dist/utilities/slugify.js +3 -0
  271. package/dist/utilities/slugify.js.map +1 -1
  272. package/dist/views/API/index.client.d.ts.map +1 -1
  273. package/dist/views/API/index.client.js +4 -13
  274. package/dist/views/API/index.client.js.map +1 -1
  275. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  276. package/dist/views/Document/getDocumentView.js +2 -21
  277. package/dist/views/Document/getDocumentView.js.map +1 -1
  278. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  279. package/dist/views/Document/getMetaBySegment.js +0 -9
  280. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  281. package/dist/views/Document/index.d.ts +1 -3
  282. package/dist/views/Document/index.d.ts.map +1 -1
  283. package/dist/views/Document/index.js +2 -10
  284. package/dist/views/Document/index.js.map +1 -1
  285. package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
  286. package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
  287. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  288. package/dist/views/Edit/index.d.ts.map +1 -1
  289. package/dist/views/Edit/index.js +3 -2
  290. package/dist/views/Edit/index.js.map +1 -1
  291. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  292. package/dist/views/HierarchyList/HierarchyTable/index.js +2 -6
  293. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  294. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  295. package/dist/views/Root/getRouteData.js +4 -12
  296. package/dist/views/Root/getRouteData.js.map +1 -1
  297. package/dist/views/Version/Default/SetStepNav.d.ts.map +1 -1
  298. package/dist/views/Version/Default/SetStepNav.js +10 -13
  299. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  300. package/dist/views/Version/Default/index.css +2 -26
  301. package/dist/views/Version/Default/index.d.ts.map +1 -1
  302. package/dist/views/Version/Default/index.js +18 -31
  303. package/dist/views/Version/Default/index.js.map +1 -1
  304. package/dist/views/Version/Default/types.d.ts +0 -9
  305. package/dist/views/Version/Default/types.d.ts.map +1 -1
  306. package/dist/views/Version/Default/types.js.map +1 -1
  307. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  308. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -8
  309. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  310. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  311. package/dist/views/Version/Restore/index.js +3 -6
  312. package/dist/views/Version/Restore/index.js.map +1 -1
  313. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  314. package/dist/views/Version/index.d.ts.map +1 -1
  315. package/dist/views/Version/index.js +0 -4
  316. package/dist/views/Version/index.js.map +1 -1
  317. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.d.ts.map +1 -1
  318. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js +2 -3
  319. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  320. package/dist/views/Versions/buildColumns.d.ts +1 -2
  321. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  322. package/dist/views/Versions/buildColumns.js +1 -21
  323. package/dist/views/Versions/buildColumns.js.map +1 -1
  324. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  325. package/dist/views/Versions/index.client.d.ts +1 -0
  326. package/dist/views/Versions/index.client.d.ts.map +1 -1
  327. package/dist/views/Versions/index.client.js.map +1 -1
  328. package/dist/views/Versions/index.d.ts.map +1 -1
  329. package/dist/views/Versions/index.js +14 -2
  330. package/dist/views/Versions/index.js.map +1 -1
  331. package/package.json +6 -5
  332. package/dist/elements/BranchSelector/NewBranchModal/index.css +0 -46
  333. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +0 -12
  334. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +0 -1
  335. package/dist/elements/BranchSelector/NewBranchModal/index.js +0 -174
  336. package/dist/elements/BranchSelector/NewBranchModal/index.js.map +0 -1
  337. package/dist/elements/BranchSelector/index.css +0 -172
  338. package/dist/elements/BranchSelector/index.d.ts +0 -13
  339. package/dist/elements/BranchSelector/index.d.ts.map +0 -1
  340. package/dist/elements/BranchSelector/index.js +0 -255
  341. package/dist/elements/BranchSelector/index.js.map +0 -1
  342. package/dist/elements/ChangeSummary/index.css +0 -18
  343. package/dist/elements/ChangeSummary/index.d.ts +0 -28
  344. package/dist/elements/ChangeSummary/index.d.ts.map +0 -1
  345. package/dist/elements/ChangeSummary/index.js +0 -147
  346. package/dist/elements/ChangeSummary/index.js.map +0 -1
  347. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +0 -12
  348. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +0 -12
  349. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +0 -1
  350. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +0 -83
  351. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +0 -1
  352. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +0 -14
  353. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +0 -1
  354. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +0 -28
  355. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +0 -1
  356. package/dist/elements/MergeBranch/context.d.ts +0 -67
  357. package/dist/elements/MergeBranch/context.d.ts.map +0 -1
  358. package/dist/elements/MergeBranch/context.js +0 -47
  359. package/dist/elements/MergeBranch/context.js.map +0 -1
  360. package/dist/elements/MergeBranch/index.css +0 -136
  361. package/dist/elements/MergeBranch/index.d.ts +0 -15
  362. package/dist/elements/MergeBranch/index.d.ts.map +0 -1
  363. package/dist/elements/MergeBranch/index.js +0 -545
  364. package/dist/elements/MergeBranch/index.js.map +0 -1
  365. package/dist/elements/MergeBranch/provider.d.ts +0 -12
  366. package/dist/elements/MergeBranch/provider.d.ts.map +0 -1
  367. package/dist/elements/MergeBranch/provider.js +0 -19
  368. package/dist/elements/MergeBranch/provider.js.map +0 -1
  369. package/dist/elements/MergeBranch/slug.d.ts +0 -9
  370. package/dist/elements/MergeBranch/slug.d.ts.map +0 -1
  371. package/dist/elements/MergeBranch/slug.js +0 -8
  372. package/dist/elements/MergeBranch/slug.js.map +0 -1
  373. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +0 -34
  374. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +0 -13
  375. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +0 -1
  376. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +0 -51
  377. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +0 -1
  378. package/dist/icons/Branch/index.css +0 -5
  379. package/dist/icons/Branch/index.d.ts +0 -7
  380. package/dist/icons/Branch/index.d.ts.map +0 -1
  381. package/dist/icons/Branch/index.js +0 -25
  382. package/dist/icons/Branch/index.js.map +0 -1
  383. package/dist/providers/Branch/index.d.ts +0 -68
  384. package/dist/providers/Branch/index.d.ts.map +0 -1
  385. package/dist/providers/Branch/index.js +0 -193
  386. package/dist/providers/Branch/index.js.map +0 -1
  387. package/dist/providers/Branch/index.server.d.ts +0 -14
  388. package/dist/providers/Branch/index.server.d.ts.map +0 -1
  389. package/dist/providers/Branch/index.server.js +0 -125
  390. package/dist/providers/Branch/index.server.js.map +0 -1
  391. package/dist/utilities/getAdminPreferences.d.ts +0 -14
  392. package/dist/utilities/getAdminPreferences.d.ts.map +0 -1
  393. package/dist/utilities/getAdminPreferences.js +0 -22
  394. package/dist/utilities/getAdminPreferences.js.map +0 -1
  395. package/dist/utilities/getRequestBranch.d.ts +0 -20
  396. package/dist/utilities/getRequestBranch.d.ts.map +0 -1
  397. package/dist/utilities/getRequestBranch.js +0 -35
  398. package/dist/utilities/getRequestBranch.js.map +0 -1
  399. package/dist/utilities/matchesSearchQuery.d.ts +0 -12
  400. package/dist/utilities/matchesSearchQuery.d.ts.map +0 -1
  401. package/dist/utilities/matchesSearchQuery.js +0 -23
  402. package/dist/utilities/matchesSearchQuery.js.map +0 -1
  403. package/dist/utilities/matchesSearchQuery.spec.js.map +0 -1
  404. package/dist/utilities/scheduleMergeHandler.d.ts +0 -33
  405. package/dist/utilities/scheduleMergeHandler.d.ts.map +0 -1
  406. package/dist/utilities/scheduleMergeHandler.js +0 -119
  407. package/dist/utilities/scheduleMergeHandler.js.map +0 -1
  408. package/dist/views/Branch/BranchChanges/index.d.ts +0 -23
  409. package/dist/views/Branch/BranchChanges/index.d.ts.map +0 -1
  410. package/dist/views/Branch/BranchChanges/index.js +0 -150
  411. package/dist/views/Branch/BranchChanges/index.js.map +0 -1
  412. package/dist/views/Branch/ChangedDocuments/index.css +0 -118
  413. package/dist/views/Branch/ChangedDocuments/index.d.ts +0 -34
  414. package/dist/views/Branch/ChangedDocuments/index.d.ts.map +0 -1
  415. package/dist/views/Branch/ChangedDocuments/index.js +0 -233
  416. package/dist/views/Branch/ChangedDocuments/index.js.map +0 -1
  417. package/dist/views/Branch/DiscardChangesButton/index.d.ts +0 -16
  418. package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +0 -1
  419. package/dist/views/Branch/DiscardChangesButton/index.js +0 -106
  420. package/dist/views/Branch/DiscardChangesButton/index.js.map +0 -1
  421. package/dist/views/Branch/Manage/index.d.ts +0 -11
  422. package/dist/views/Branch/Manage/index.d.ts.map +0 -1
  423. package/dist/views/Branch/Manage/index.js +0 -71
  424. package/dist/views/Branch/Manage/index.js.map +0 -1
  425. package/dist/views/Branch/MergeChangesButton/index.d.ts +0 -14
  426. package/dist/views/Branch/MergeChangesButton/index.d.ts.map +0 -1
  427. package/dist/views/Branch/MergeChangesButton/index.js +0 -55
  428. package/dist/views/Branch/MergeChangesButton/index.js.map +0 -1
  429. package/dist/views/Branch/MergeLedger/index.css +0 -137
  430. package/dist/views/Branch/MergeLedger/index.d.ts +0 -31
  431. package/dist/views/Branch/MergeLedger/index.d.ts.map +0 -1
  432. package/dist/views/Branch/MergeLedger/index.js +0 -211
  433. package/dist/views/Branch/MergeLedger/index.js.map +0 -1
  434. package/dist/views/Branch/ScheduledMerges/index.css +0 -83
  435. package/dist/views/Branch/ScheduledMerges/index.d.ts +0 -32
  436. package/dist/views/Branch/ScheduledMerges/index.d.ts.map +0 -1
  437. package/dist/views/Branch/ScheduledMerges/index.js +0 -183
  438. package/dist/views/Branch/ScheduledMerges/index.js.map +0 -1
  439. package/dist/views/Branch/index.css +0 -77
  440. package/dist/views/Branch/index.d.ts +0 -17
  441. package/dist/views/Branch/index.d.ts.map +0 -1
  442. package/dist/views/Branch/index.js +0 -188
  443. package/dist/views/Branch/index.js.map +0 -1
  444. package/dist/views/Branch/renderBranchDiff.d.ts +0 -29
  445. package/dist/views/Branch/renderBranchDiff.d.ts.map +0 -1
  446. package/dist/views/Branch/renderBranchDiff.js +0 -151
  447. package/dist/views/Branch/renderBranchDiff.js.map +0 -1
  448. package/dist/views/Branch/renderMergeDiff.d.ts +0 -24
  449. package/dist/views/Branch/renderMergeDiff.d.ts.map +0 -1
  450. package/dist/views/Branch/renderMergeDiff.js +0 -94
  451. package/dist/views/Branch/renderMergeDiff.js.map +0 -1
  452. package/dist/views/Branches/index.d.ts +0 -16
  453. package/dist/views/Branches/index.d.ts.map +0 -1
  454. package/dist/views/Branches/index.js +0 -54
  455. package/dist/views/Branches/index.js.map +0 -1
  456. package/dist/views/Versions/cells/Branch/index.d.ts +0 -12
  457. package/dist/views/Versions/cells/Branch/index.d.ts.map +0 -1
  458. package/dist/views/Versions/cells/Branch/index.js +0 -27
  459. package/dist/views/Versions/cells/Branch/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["branchChangesCollectionSlug","branchesCollectionSlug","formatAdminURL","MAIN_BRANCH","React","useCallback","useEffect","useState","toast","CheckboxInput","FieldLabel","Radio","useConfig","useRouter","useRouteTransition","useServerFunctions","useTranslation","requests","buildUpcomingMergeWhere","Button","ChangeSummary","DatePickerField","DialogBody","DialogFooter","DialogHeader","DialogModal","Link","useModal","useMergeBranch","mergeBranchModalSlug","baseClass","SUMMARY_SAMPLE_LIMIT","MergeBranchModal","closeMerge","target","t","isModalOpen","router","startRouteTransition","serverFunction","config","routes","api","serverURL","mode","setMode","scheduledFor","setScheduledFor","isMerging","setIsMerging","progress","setProgress","countedChanges","setCountedChanges","sampledChanges","setSampledChanges","outcome","setOutcome","closeBranch","setCloseBranch","isScheduling","setIsScheduling","upcoming","setUpcoming","isOpen","branchSlug","knownChanges","changes","canCloseBranch","selectedChangeIDs","undefined","controller","AbortController","readChanges","response","get","apiRoute","path","params","depth","limit","select","collectionSlug","operation","where","branch","equals","signal","json","totalDocs","docs","length","_err","abort","loadUpcoming","sort","filter","doc","Boolean","waitUntil","map","id","String","reset","dismiss","reportResult","result","merged","success","count","blocked","forEach","message","error","info","handleSchedule","name","args","branchID","date","toLocaleString","dateStyle","timeStyle","refresh","handleCancel","deleteID","handleMergeNow","fetch","body","JSON","stringify","stream","credentials","headers","method","ok","catch","readMergeStream","onProgress","type","modeOptions","label","value","total","totalChanges","selectedCount","summaryChanges","summary","selected","mergedCount","isDone","percentComplete","Math","round","current","_jsxs","className","closeOnBlur","slug","_jsx","showClose","title","branchName","Fragment","showOperations","reviewURL","href","onClick","option","isSelected","onChange","readOnly","required","minDate","Date","pickerAppearance","event","buttonStyle","disabled","checked","onToggle","prev","join","style","width","each","changeID","size","reader","getReader","decoder","TextDecoder","buffered","handleLine","line","trimmed","trim","parse","Number","done","read","decode","lines","split","pop","terminal"],"sources":["../../../src/elements/MergeBranch/index.tsx"],"sourcesContent":["'use client'\n\nimport type { MergeResult, MergeStreamEvent } from 'payload'\n\nimport {\n branchChangesCollectionSlug,\n branchesCollectionSlug,\n formatAdminURL,\n MAIN_BRANCH,\n} from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { SummarizableChange } from '../ChangeSummary/index.js'\n\nimport { CheckboxInput } from '../../fields/Checkbox/Input.js'\nimport { FieldLabel } from '../../fields/FieldLabel/index.js'\nimport { Radio } from '../../fields/RadioGroup/Radio/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useRouter } from '../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { buildUpcomingMergeWhere } from '../../utilities/scheduleMergeHandler.js'\nimport { Button } from '../Button/index.js'\nimport { ChangeSummary } from '../ChangeSummary/index.js'\nimport { DatePickerField } from '../DatePicker/index.js'\nimport { DialogBody, DialogFooter, DialogHeader, DialogModal } from '../Dialog/index.js'\nimport { Link } from '../Link/index.js'\nimport { useModal } from '../Modal/index.js'\nimport { useMergeBranch } from './context.js'\nimport { mergeBranchModalSlug } from './slug.js'\nimport './index.css'\n\nconst baseClass = 'merge-branch-modal'\n\ntype MergeMode = 'now' | 'schedule'\n\n/**\n * How many changes the modal will read to describe the merge.\n *\n * High enough to cover any branch a person is reviewing by hand, low enough that a\n * runaway branch does not turn opening this modal into a bulk read.\n */\nconst SUMMARY_SAMPLE_LIMIT = 200\n\ntype Progress = {\n current: number\n total: number\n}\n\n/**\n * The modal every merge entry point opens.\n *\n * Merging is a decision — what to take, and when — so it happens in a modal from\n * wherever the branch is on screen, rather than by routing somewhere first.\n *\n * The merge itself streams. A branch can hold hundreds of documents and each one\n * is a full write with hooks and validation, so \"merging 34 of 230\" is real\n * information rather than a spinner's decoration; see `endpoints/merge.ts` for\n * why that is a streamed response rather than a job and a polling loop.\n */\nexport const MergeBranchModal: React.FC = () => {\n const { closeMerge, target } = useMergeBranch()\n const { t } = useTranslation()\n const { isModalOpen } = useModal()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n const { serverFunction } = useServerFunctions()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [mode, setMode] = useState<MergeMode>('now')\n const [scheduledFor, setScheduledFor] = useState<Date | undefined>()\n const [isMerging, setIsMerging] = useState(false)\n const [progress, setProgress] = useState<null | Progress>(null)\n const [countedChanges, setCountedChanges] = useState<null | number>(null)\n /** The branch's changes, read here when the opener did not already know them. */\n const [sampledChanges, setSampledChanges] = useState<null | SummarizableChange[]>(null)\n /** Set once the merge has finished, which switches the modal to its receipt. */\n const [outcome, setOutcome] = useState<MergeResult | null>(null)\n const [closeBranch, setCloseBranch] = useState(false)\n const [isScheduling, setIsScheduling] = useState(false)\n const [upcoming, setUpcoming] = useState<{ id: number | string; waitUntil: string }[]>([])\n\n const isOpen = isModalOpen(mergeBranchModalSlug)\n const branchSlug = target?.branchSlug\n const knownChanges = target?.changes\n\n // Offered only when nothing is left behind. Merging a subset means there is still\n // work on the branch by definition, so closing it would abandon that work — a\n // destructive act wearing a convenience checkbox. Computed up here because\n // `handleMergeNow` depends on it.\n const canCloseBranch = target?.selectedChangeIDs === undefined\n\n // Read on open rather than with the screen behind it: the switcher can be opened\n // from anywhere, and a summary nobody has asked to see is a query on every page\n // load. Skipped entirely when the opener already knows what it is merging.\n useEffect(() => {\n if (!isOpen || !branchSlug || knownChanges) {\n return\n }\n\n const controller = new AbortController()\n\n const readChanges = async () => {\n try {\n const response = await requests.get(\n formatAdminURL({ apiRoute: api, path: `/${branchChangesCollectionSlug}`, serverURL }),\n {\n params: {\n depth: 0,\n limit: SUMMARY_SAMPLE_LIMIT,\n select: { collectionSlug: true, operation: true },\n where: { branch: { equals: branchSlug } },\n },\n signal: controller.signal,\n },\n )\n\n const json = (await response.json()) as {\n docs?: SummarizableChange[]\n totalDocs?: number\n }\n\n if (typeof json?.totalDocs === 'number') {\n setCountedChanges(json.totalDocs)\n\n // Only when the sample is the whole set. A breakdown of the first 200 of\n // 900 changes would read as a description of the merge and be wrong about\n // it, so past that point the count says it on its own.\n setSampledChanges(json.docs?.length === json.totalDocs ? (json.docs ?? null) : null)\n }\n } catch (_err) {\n // A missing summary degrades the copy, not the action — the merge still\n // knows what it is applying.\n }\n }\n\n void readChanges()\n\n return () => controller.abort()\n }, [api, branchSlug, isOpen, knownChanges, serverURL])\n\n // Upcoming schedules for this branch, loaded when the schedule option is chosen\n // rather than with the modal — most merges are immediate and never ask.\n const loadUpcoming = useCallback(async () => {\n if (!branchSlug) {\n return\n }\n\n try {\n const response = await requests.get(\n formatAdminURL({ apiRoute: api, path: '/payload-jobs', serverURL }),\n {\n params: {\n depth: 0,\n limit: 10,\n sort: 'waitUntil',\n where: buildUpcomingMergeWhere({ branchSlug }),\n },\n },\n )\n\n const json = (await response.json()) as {\n docs?: { id: number | string; waitUntil?: string }[]\n }\n\n setUpcoming(\n (json.docs ?? [])\n .filter((doc) => Boolean(doc.waitUntil))\n .map((doc) => ({ id: doc.id, waitUntil: String(doc.waitUntil) })),\n )\n } catch (_err) {\n // A missing list costs the reader context, not the action.\n }\n }, [api, branchSlug, serverURL])\n\n useEffect(() => {\n if (isOpen && mode === 'schedule') {\n void loadUpcoming()\n }\n }, [isOpen, loadUpcoming, mode])\n\n const reset = useCallback(() => {\n setMode('now')\n setScheduledFor(undefined)\n setProgress(null)\n setOutcome(null)\n setCloseBranch(false)\n setUpcoming([])\n }, [])\n\n const dismiss = useCallback(() => {\n closeMerge()\n reset()\n }, [closeMerge, reset])\n\n const reportResult = useCallback(\n (result: MergeResult) => {\n if (result.merged.length) {\n toast.success(t('branching:mergedCount', { count: result.merged.length }))\n }\n\n // Blocked entries are per-document refusals, not a failed merge: the rest\n // was applied and the branch stays open for what was not.\n result.blocked.forEach(({ message }) => toast.error(message))\n\n if (!result.merged.length && !result.blocked.length) {\n toast.info(t('branching:noChangesYet'))\n }\n },\n [t],\n )\n\n const handleSchedule = useCallback(async () => {\n if (!target || !scheduledFor || isScheduling) {\n return\n }\n\n setIsScheduling(true)\n\n try {\n const result = (await serverFunction({\n name: 'schedule-merge',\n args: {\n branchID: target.branchID,\n changes: target.selectedChangeIDs,\n closeBranch: canCloseBranch && closeBranch,\n date: scheduledFor,\n },\n })) as { error?: string }\n\n if (result?.error) {\n toast.error(result.error)\n\n return\n }\n\n toast.success(\n t('branching:mergeScheduledFor', {\n date: scheduledFor.toLocaleString(undefined, {\n dateStyle: 'medium',\n timeStyle: 'short',\n }),\n }),\n )\n\n dismiss()\n\n // The branch page shows nothing about a queued merge yet, but the jobs list\n // does — and the branch's own state may have been read before this.\n startRouteTransition(() => router.refresh())\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsScheduling(false)\n }\n }, [\n canCloseBranch,\n closeBranch,\n dismiss,\n isScheduling,\n router,\n scheduledFor,\n serverFunction,\n startRouteTransition,\n t,\n target,\n ])\n\n const handleCancel = useCallback(\n async (deleteID: number | string) => {\n setIsScheduling(true)\n\n try {\n await serverFunction({ name: 'schedule-merge', args: { deleteID } })\n await loadUpcoming()\n toast.success(t('general:deletedSuccessfully'))\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsScheduling(false)\n }\n },\n [loadUpcoming, serverFunction, t],\n )\n\n const handleMergeNow = useCallback(async () => {\n if (!target || isMerging) {\n return\n }\n\n setIsMerging(true)\n setProgress(null)\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${branchesCollectionSlug}/${target.branchID}/merge`,\n serverURL,\n }),\n {\n body: JSON.stringify({\n changes: target.selectedChangeIDs,\n // Ignored server-side when changes are left behind, but not sent at all\n // when a subset is selected: the checkbox is not offered then either.\n closeBranch: canCloseBranch && closeBranch,\n stream: true,\n }),\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n method: 'POST',\n },\n )\n\n if (!response.ok || !response.body) {\n // A non-streaming failure still returns JSON — a 403 carrying `blocked`,\n // most usefully — so read it as the result rather than a bare error.\n const json = (await response.json().catch(() => null)) as MergeResult | null\n\n if (json?.blocked?.length) {\n reportResult(json)\n } else {\n toast.error(t('error:unknown'))\n }\n\n return\n }\n\n const result = await readMergeStream({\n body: response.body,\n onProgress: setProgress,\n })\n\n if (!result) {\n // The stream ended without a terminal event, which means the connection\n // dropped mid-merge. The transaction rolls back with it, so nothing was\n // applied — but say so rather than implying success.\n toast.error(t('branching:mergeInterrupted'))\n\n return\n }\n\n if (result.type === 'error') {\n toast.error(result.message)\n\n return\n }\n\n reportResult(result.result)\n\n // Held open rather than dismissed. A small branch merges faster than the\n // progress bar can be read, so closing on success would make the whole\n // operation a flicker — the reader is left guessing whether it ran. The\n // completed state is the receipt, and it is dismissed deliberately.\n setOutcome(result.result)\n\n // The changed-documents list and the branch's status both moved. Refreshed\n // behind the modal so the page is already correct when it is dismissed.\n startRouteTransition(() => router.refresh())\n } catch (_err) {\n toast.error(t('error:unknown'))\n } finally {\n setIsMerging(false)\n }\n }, [\n api,\n canCloseBranch,\n closeBranch,\n isMerging,\n reportResult,\n router,\n serverURL,\n startRouteTransition,\n t,\n target,\n ])\n\n if (!target) {\n return null\n }\n\n const modeOptions = [\n { label: t('branching:mergeNow'), value: 'now' },\n { label: t('branching:scheduleMerge'), value: 'schedule' },\n ]\n\n const total = target.totalChanges ?? countedChanges ?? undefined\n const selectedCount = target.selectedChangeIDs?.length\n const summaryChanges = target.changes ?? sampledChanges\n\n // Three cases, in order of how much is known: a subset chosen, the whole branch\n // with a count, and the whole branch before the count lands.\n const summary =\n selectedCount !== undefined && total !== undefined\n ? t('branching:mergeSelectedOfTotal', { selected: selectedCount, total })\n : total !== undefined\n ? t('branching:mergeAllCount', { count: total })\n : t('branching:mergeAllChanges')\n\n const mergedCount = outcome?.merged.length ?? 0\n const isDone = Boolean(outcome)\n\n // Completed bar rather than a residual fraction: the last progress event fires\n // *before* the last document is applied, so it never reaches 100% on its own.\n const percentComplete = isDone\n ? 100\n : progress?.total\n ? Math.round((progress.current / progress.total) * 100)\n : 0\n\n return (\n <DialogModal className={baseClass} closeOnBlur={!isMerging} slug={mergeBranchModalSlug}>\n <DialogHeader\n showClose={!isMerging}\n title={\n isDone\n ? t('branching:mergeComplete')\n : t('branching:mergeBranchInto', {\n branch: target.branchName,\n target: MAIN_BRANCH,\n })\n }\n />\n <DialogBody>\n {!isDone && (\n <React.Fragment>\n <div className={`${baseClass}__intro`}>\n <p className={`${baseClass}__summary`}>{summary}</p>\n\n {/* The ledger: what the count is made of, which is what decides whether\n this merge is the one the reader meant to run. */}\n {summaryChanges && <ChangeSummary changes={summaryChanges} showOperations />}\n\n {/* Offered only where the choice cannot be made: from the switcher,\n which can be opened anywhere. On the changed-documents view this\n would link back to the page the reader is already on. */}\n {target.reviewURL && !isMerging && (\n <Link className={`${baseClass}__review`} href={target.reviewURL} onClick={dismiss}>\n {t('branching:mergeOnlySelected')}\n </Link>\n )}\n </div>\n\n <div className={`${baseClass}__modes`}>\n {modeOptions.map((option) => (\n <Radio\n id={`merge-mode-${option.value}`}\n isSelected={mode === option.value}\n key={option.value}\n onChange={() => setMode(option.value as MergeMode)}\n option={option}\n path=\"merge-mode\"\n readOnly={isMerging}\n />\n ))}\n </div>\n\n {/* Directly under the option it belongs to, and indented to it: the date\n is part of choosing \"schedule\", not a separate question that happens\n to appear afterwards. */}\n {mode === 'schedule' && (\n <div className={`${baseClass}__schedule`}>\n <div className={`${baseClass}__schedule-field`}>\n {/* The same label scheduled publish puts on the same control, so\n the two schedulers read alike. */}\n <FieldLabel label={t('general:time')} path=\"merge-scheduled-for\" required />\n <DatePickerField\n id=\"merge-scheduled-for\"\n minDate={new Date()}\n onChange={(value) => setScheduledFor(value ?? undefined)}\n pickerAppearance=\"dayAndTime\"\n readOnly={isScheduling}\n value={scheduledFor}\n />\n </div>\n <p className={`${baseClass}__schedule-help`}>{t('branching:scheduleMergeHelp')}</p>\n\n {/* Already-queued merges for this branch, so a second schedule is a\n deliberate addition rather than an accidental duplicate. */}\n {upcoming.length > 0 && (\n <div className={`${baseClass}__upcoming`}>\n <h4 className={`${baseClass}__upcoming-title`}>\n {t('branching:scheduledMerges')}\n </h4>\n <ul className={`${baseClass}__upcoming-list`}>\n {upcoming.map((event) => (\n <li className={`${baseClass}__upcoming-row`} key={String(event.id)}>\n <span>\n {new Date(event.waitUntil).toLocaleString(undefined, {\n dateStyle: 'medium',\n timeStyle: 'short',\n })}\n </span>\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__upcoming-cancel`}\n disabled={isScheduling}\n onClick={() => void handleCancel(event.id)}\n >\n {t('general:cancel')}\n </Button>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n )}\n\n {/* The GitHub move: merging does not decide the branch's fate, the\n author does — and at the moment they have the context to. */}\n {canCloseBranch && (\n <div className={`${baseClass}__close-branch`}>\n <CheckboxInput\n checked={closeBranch}\n id=\"merge-close-branch\"\n label={t('branching:closeBranchAfterMerge')}\n onToggle={() => setCloseBranch((prev) => !prev)}\n readOnly={isMerging}\n />\n <p className={`${baseClass}__close-branch-help`}>\n {closeBranch\n ? t('branching:closeBranchHelpOn')\n : t('branching:closeBranchHelpOff')}\n </p>\n </div>\n )}\n </React.Fragment>\n )}\n\n {(isMerging || isDone) && (\n <div className={`${baseClass}__progress`}>\n <div className={`${baseClass}__progress-bar`}>\n <div\n className={[\n `${baseClass}__progress-fill`,\n isDone && `${baseClass}__progress-fill--complete`,\n ]\n .filter(Boolean)\n .join(' ')}\n style={{ width: `${percentComplete}%` }}\n />\n </div>\n <span className={`${baseClass}__progress-label`}>\n {isDone\n ? t('branching:mergedOfTotal', { current: mergedCount, total: mergedCount })\n : progress\n ? t('branching:mergingProgress', {\n current: progress.current,\n total: progress.total,\n })\n : t('branching:mergeStarting')}\n </span>\n </div>\n )}\n\n {/* Refusals survive into the receipt: they are the reason the branch is\n still open, and a toast is gone before it can be acted on. */}\n {outcome && outcome.blocked.length > 0 && (\n <ul className={`${baseClass}__blocked`}>\n {outcome.blocked.map((each) => (\n <li key={String(each.changeID)}>{each.message}</li>\n ))}\n </ul>\n )}\n </DialogBody>\n <DialogFooter>\n {isDone ? (\n <Button buttonStyle=\"primary\" onClick={dismiss} size=\"medium\">\n {t('general:close')}\n </Button>\n ) : (\n <React.Fragment>\n <Button buttonStyle=\"secondary\" disabled={isMerging} onClick={dismiss} size=\"medium\">\n {t('general:cancel')}\n </Button>\n <Button\n buttonStyle=\"primary\"\n disabled={\n isMerging ||\n isScheduling ||\n // A schedule with no date is not a decision yet.\n (mode === 'schedule' && !scheduledFor)\n }\n onClick={() => void (mode === 'schedule' ? handleSchedule() : handleMergeNow())}\n size=\"medium\"\n >\n {mode === 'schedule'\n ? isScheduling\n ? t('branching:scheduling')\n : t('branching:scheduleMerge')\n : isMerging\n ? t('branching:merging')\n : t('branching:merge')}\n </Button>\n </React.Fragment>\n )}\n </DialogFooter>\n </DialogModal>\n )\n}\n\n/**\n * Reads the NDJSON merge stream, returning the terminal event.\n *\n * Returns null when the stream ends without one, which is how a dropped\n * connection presents — indistinguishable from the server never finishing, and\n * treated the same way, because in both cases the transaction did not commit.\n */\nconst readMergeStream = async ({\n body,\n onProgress,\n}: {\n body: ReadableStream<Uint8Array>\n onProgress: (progress: Progress) => void\n}): Promise<Extract<MergeStreamEvent, { type: 'complete' | 'error' }> | null> => {\n const reader = body.getReader()\n const decoder = new TextDecoder()\n\n let buffered = ''\n\n const handleLine = (\n line: string,\n ): Extract<MergeStreamEvent, { type: 'complete' | 'error' }> | null => {\n const trimmed = line.trim()\n\n if (!trimmed) {\n return null\n }\n\n let event: MergeStreamEvent\n\n try {\n event = JSON.parse(trimmed) as MergeStreamEvent\n } catch (_err) {\n return null\n }\n\n if (event.type === 'progress') {\n onProgress({ current: Number(event.current), total: Number(event.total) })\n\n return null\n }\n\n return event\n }\n\n while (true) {\n const { done, value } = await reader.read()\n\n if (done) {\n break\n }\n\n buffered += decoder.decode(value, { stream: true })\n\n // A chunk can split a line anywhere, so only whole lines are parsed and the\n // remainder is carried forward.\n const lines = buffered.split('\\n')\n buffered = lines.pop() ?? ''\n\n for (const line of lines) {\n const terminal = handleLine(line)\n\n if (terminal) {\n return terminal\n }\n }\n }\n\n return handleLine(buffered)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- import React from 'react';
2
- /**
3
- * The merge modal and the store that points it at something, mounted together.
4
- *
5
- * Composed here rather than leaving the modal to each entry point: one provider
6
- * renders exactly one modal, which is the only way to guarantee two dialogs cannot
7
- * share the slug. Every trigger calls `openMerge` instead of mounting its own.
8
- */
9
- export declare const MergeBranchProvider: React.FC<{
10
- children: React.ReactNode;
11
- }>;
12
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/elements/MergeBranch/provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAKvE,CAAA"}
@@ -1,19 +0,0 @@
1
- 'use client';
2
-
3
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import React from 'react';
5
- import { MergeBranchStoreProvider } from './context.js';
6
- import { MergeBranchModal } from './index.js';
7
- /**
8
- * The merge modal and the store that points it at something, mounted together.
9
- *
10
- * Composed here rather than leaving the modal to each entry point: one provider
11
- * renders exactly one modal, which is the only way to guarantee two dialogs cannot
12
- * share the slug. Every trigger calls `openMerge` instead of mounting its own.
13
- */
14
- export const MergeBranchProvider = ({
15
- children
16
- }) => /*#__PURE__*/_jsxs(MergeBranchStoreProvider, {
17
- children: [children, /*#__PURE__*/_jsx(MergeBranchModal, {})]
18
- });
19
- //# sourceMappingURL=provider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider.js","names":["React","MergeBranchStoreProvider","MergeBranchModal","MergeBranchProvider","children","_jsxs","_jsx"],"sources":["../../../src/elements/MergeBranch/provider.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nimport { MergeBranchStoreProvider } from './context.js'\nimport { MergeBranchModal } from './index.js'\n\n/**\n * The merge modal and the store that points it at something, mounted together.\n *\n * Composed here rather than leaving the modal to each entry point: one provider\n * renders exactly one modal, which is the only way to guarantee two dialogs cannot\n * share the slug. Every trigger calls `openMerge` instead of mounting its own.\n */\nexport const MergeBranchProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => (\n <MergeBranchStoreProvider>\n {children}\n <MergeBranchModal />\n </MergeBranchStoreProvider>\n)\n"],"mappings":"AAAA;;;AAEA,OAAOA,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AACzC,SAASC,gBAAgB,QAAQ;AAEjC;;;;;;;AAOA,OAAO,MAAMC,mBAAA,GAA+DA,CAAC;EAAEC;AAAQ,CAAE,kBACvFC,KAAA,CAACJ,wBAAA;aACEG,QAAA,E,aACDE,IAAA,CAACJ,gBAAA","ignoreList":[]}
@@ -1,9 +0,0 @@
1
- /**
2
- * The modal every merge entry point opens.
3
- *
4
- * Kept apart from the modal itself so that the entry points — the branch
5
- * switcher and the changed-documents view — can name the modal without importing
6
- * it, and so the modal can be rendered once per screen rather than per trigger.
7
- */
8
- export declare const mergeBranchModalSlug = "merge-branch";
9
- //# sourceMappingURL=slug.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slug.d.ts","sourceRoot":"","sources":["../../../src/elements/MergeBranch/slug.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,iBAAiB,CAAA"}
@@ -1,8 +0,0 @@
1
- /**
2
- * The modal every merge entry point opens.
3
- *
4
- * Kept apart from the modal itself so that the entry points — the branch
5
- * switcher and the changed-documents view — can name the modal without importing
6
- * it, and so the modal can be rendered once per screen rather than per trigger.
7
- */export const mergeBranchModalSlug = 'merge-branch';
8
- //# sourceMappingURL=slug.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"slug.js","names":["mergeBranchModalSlug"],"sources":["../../../src/elements/MergeBranch/slug.ts"],"sourcesContent":["/**\n * The modal every merge entry point opens.\n *\n * Kept apart from the modal itself so that the entry points — the branch\n * switcher and the changed-documents view — can name the modal without importing\n * it, and so the modal can be rendered once per screen rather than per trigger.\n */\nexport const mergeBranchModalSlug = 'merge-branch'\n"],"mappings":"AAAA;;;;;;GAOA,OAAO,MAAMA,oBAAA,GAAuB","ignoreList":[]}
@@ -1,34 +0,0 @@
1
- @layer payload-default {
2
- /* Sized by its label. The base `.status-cell` is `inline-flex`, which is
3
- shrink-to-fit on its own — but as a flex item in a column-direction parent it
4
- stretches to the full cell width instead, and `justify-content: center` then
5
- floats the label in the middle of the column. */
6
- .branch-status-cell {
7
- align-self: flex-start;
8
- width: fit-content;
9
- }
10
-
11
- /* Open is the working state, and reads like `draft` does: neutral, in progress. */
12
- .branch-status-cell--open {
13
- background: var(--color-bg-tertiary);
14
- color: var(--color-text);
15
- }
16
-
17
- /* Merged is the terminal, landed-in-production state, which is what `published`
18
- means for a document — so it takes the same brand treatment. */
19
- .branch-status-cell--merged {
20
- background: var(--color-bg-selected);
21
- color: var(--color-text-brand);
22
- }
23
-
24
- /* In flight. Warning rather than brand: it is a state to notice, not a result. */
25
- .branch-status-cell--merging {
26
- background: var(--color-bg-warning-tertiary);
27
- color: var(--color-text-warning);
28
- }
29
-
30
- .branch-status-cell--closed {
31
- background: var(--color-bg-tertiary);
32
- color: var(--color-text-secondary);
33
- }
34
- }
@@ -1,13 +0,0 @@
1
- import type { DefaultCellComponentProps, SelectFieldClient } from 'payload';
2
- import React from 'react';
3
- import './index.css';
4
- /**
5
- * A branch's lifecycle state, rendered like a document's draft/published status.
6
- *
7
- * Reuses the `status-cell` look deliberately: a branch's status answers the same
8
- * kind of question a document's does — is this live, is it still being worked on —
9
- * so two visual languages for it in the same list view would be noise. It cannot
10
- * reuse `StatusCell` itself, which keys its colours off `_status`'s own values.
11
- */
12
- export declare const BranchStatusCell: React.FC<DefaultCellComponentProps<SelectFieldClient>>;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/elements/Table/DefaultCell/fields/BranchStatus/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAE3E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,aAAa,CAAA;AAEpB;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CAuBnF,CAAA"}
@@ -1,51 +0,0 @@
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 from 'react';
6
- import { useTranslation } from '../../../../../providers/Translation/index.js';
7
- import './index.css';
8
- /**
9
- * A branch's lifecycle state, rendered like a document's draft/published status.
10
- *
11
- * Reuses the `status-cell` look deliberately: a branch's status answers the same
12
- * kind of question a document's does — is this live, is it still being worked on —
13
- * so two visual languages for it in the same list view would be noise. It cannot
14
- * reuse `StatusCell` itself, which keys its colours off `_status`'s own values.
15
- */
16
- export const BranchStatusCell = t0 => {
17
- const $ = _c(3);
18
- const {
19
- cellData
20
- } = t0;
21
- const {
22
- t
23
- } = useTranslation();
24
- if (!cellData) {
25
- return null;
26
- }
27
- const status = String(Array.isArray(cellData) ? cellData[0] : cellData);
28
- let t1;
29
- if ($[0] !== status || $[1] !== t) {
30
- const label = {
31
- closed: t("branching:status_closed"),
32
- merged: t("branching:status_merged"),
33
- merging: t("branching:status_merging"),
34
- open: t("branching:status_open")
35
- }[status];
36
- t1 = _jsx("span", {
37
- className: `status-cell branch-status-cell branch-status-cell--${status}`,
38
- children: _jsx("span", {
39
- className: "status-cell__label",
40
- children: label ?? status
41
- })
42
- });
43
- $[0] = status;
44
- $[1] = t;
45
- $[2] = t1;
46
- } else {
47
- t1 = $[2];
48
- }
49
- return t1;
50
- };
51
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useTranslation","BranchStatusCell","t0","$","cellData","t","status","String","Array","isArray","t1","label","closed","merged","merging","open","_jsx","className","children"],"sources":["../../../../../../src/elements/Table/DefaultCell/fields/BranchStatus/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps, SelectFieldClient } from 'payload'\n\nimport React from 'react'\n\nimport { useTranslation } from '../../../../../providers/Translation/index.js'\nimport './index.css'\n\n/**\n * A branch's lifecycle state, rendered like a document's draft/published status.\n *\n * Reuses the `status-cell` look deliberately: a branch's status answers the same\n * kind of question a document's does — is this live, is it still being worked on —\n * so two visual languages for it in the same list view would be noise. It cannot\n * reuse `StatusCell` itself, which keys its colours off `_status`'s own values.\n */\nexport const BranchStatusCell: React.FC<DefaultCellComponentProps<SelectFieldClient>> = ({\n cellData,\n}) => {\n const { t } = useTranslation()\n\n if (!cellData) {\n return null\n }\n\n const status = String(Array.isArray(cellData) ? cellData[0] : cellData)\n\n const label = {\n closed: t('branching:status_closed'),\n merged: t('branching:status_merged'),\n merging: t('branching:status_merging'),\n open: t('branching:status_open'),\n }[status]\n\n return (\n <span className={`status-cell branch-status-cell branch-status-cell--${status}`}>\n <span className=\"status-cell__label\">{label ?? status}</span>\n </span>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,cAAc,QAAQ;AAC/B,OAAO;AAEP;;;;;;;;AAQA,OAAO,MAAMC,gBAAA,GAA2EC,EAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAAC;IAAAM;EAAA,IAAAF,EAExF;EACC;IAAAG;EAAA,IAAcL,cAAA;EAAA,KAETI,QAAA;IAAA;EAAA;EAIL,MAAAE,MAAA,GAAeC,MAAA,CAAOC,KAAA,CAAAC,OAAA,CAAcL,QAAA,IAAYA,QAAQ,MAAMA,QAAA;EAAA,IAAAM,EAAA;EAAA,IAAAP,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAE,CAAA;IAE9D,MAAAM,KAAA;MAAAC,MAAA,EACUP,CAAA,CAAE;MAAAQ,MAAA,EACFR,CAAA,CAAE;MAAAS,OAAA,EACDT,CAAA,CAAE;MAAAU,IAAA,EACLV,CAAA,CAAE;IAAA,EACRC,MAAA;IAGAI,EAAA,GAAAM,IAAA,CAAC;MAAAC,SAAA,EAAgB,sDAAsDX,MAAA,EAAQ;MAAAY,QAAA,EAC7EF,IAAA,CAAC;QAAAC,SAAA,EAAe;QAAAC,QAAA,EAAsBP,KAAA,IAASL;MAAA,C;;;;;;;;SADjDI,E;CAIJ","ignoreList":[]}
@@ -1,5 +0,0 @@
1
- @layer payload-default {
2
- .icon--branch {
3
- flex-shrink: 0;
4
- }
5
- }
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import './index.css';
3
- export declare const BranchIcon: React.FC<{
4
- readonly className?: string;
5
- readonly size?: 16 | 24;
6
- }>;
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/icons/Branch/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,aAAa,CAAA;AAOpB,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA;CACxB,CAWA,CAAA"}
@@ -1,25 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import React from 'react';
3
- import './index.css';
4
- const paths = {
5
- 16: 'M3.5 4.5h3v6h5M9 4.5h3.5M10.5 8.5l2 2-2 2',
6
- 24: 'M5.5 7.5h6v8h6.5M13.5 7.5h5M16.5 13.5l2 2-2 2'
7
- };
8
- export const BranchIcon = ({
9
- className,
10
- size = 16
11
- }) => /*#__PURE__*/_jsx("svg", {
12
- className: ['icon', 'icon--branch', className].filter(Boolean).join(' '),
13
- fill: "none",
14
- height: size,
15
- viewBox: `0 0 ${size} ${size}`,
16
- width: size,
17
- xmlns: "http://www.w3.org/2000/svg",
18
- children: /*#__PURE__*/_jsx("path", {
19
- d: paths[size],
20
- stroke: "currentColor",
21
- strokeLinecap: "round",
22
- strokeLinejoin: "round"
23
- })
24
- });
25
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["React","paths","BranchIcon","className","size","_jsx","filter","Boolean","join","fill","height","viewBox","width","xmlns","d","stroke","strokeLinecap","strokeLinejoin"],"sources":["../../../src/icons/Branch/index.tsx"],"sourcesContent":["import React from 'react'\n\nimport './index.css'\n\nconst paths = {\n 16: 'M3.5 4.5h3v6h5M9 4.5h3.5M10.5 8.5l2 2-2 2',\n 24: 'M5.5 7.5h6v8h6.5M13.5 7.5h5M16.5 13.5l2 2-2 2',\n}\n\nexport const BranchIcon: React.FC<{\n readonly className?: string\n readonly size?: 16 | 24\n}> = ({ className, size = 16 }) => (\n <svg\n className={['icon', 'icon--branch', className].filter(Boolean).join(' ')}\n fill=\"none\"\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d={paths[size]} stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </svg>\n)\n"],"mappings":";AAAA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,KAAA,GAAQ;EACZ,IAAI;EACJ,IAAI;AACN;AAEA,OAAO,MAAMC,UAAA,GAGRA,CAAC;EAAEC,SAAS;EAAEC,IAAA,GAAO;AAAE,CAAE,kBAC5BC,IAAA,CAAC;EACCF,SAAA,EAAW,CAAC,QAAQ,gBAAgBA,SAAA,CAAU,CAACG,MAAM,CAACC,OAAA,EAASC,IAAI,CAAC;EACpEC,IAAA,EAAK;EACLC,MAAA,EAAQN,IAAA;EACRO,OAAA,EAAS,OAAOP,IAAA,IAAQA,IAAA,EAAM;EAC9BQ,KAAA,EAAOR,IAAA;EACPS,KAAA,EAAM;YAEN,aAAAR,IAAA,CAAC;IAAKS,CAAA,EAAGb,KAAK,CAACG,IAAA,CAAK;IAAEW,MAAA,EAAO;IAAeC,aAAA,EAAc;IAAQC,cAAA,EAAe","ignoreList":[]}
@@ -1,68 +0,0 @@
1
- import React from 'react';
2
- export type BranchOption = {
3
- /** Absent for `main`, which is a sentinel rather than a document. */
4
- id?: number | string;
5
- /**
6
- * Merged with nothing pending since — still a usable workspace, but worth
7
- * distinguishing from a branch with work on it.
8
- */
9
- isMerged?: boolean;
10
- /** A merge is queued for this branch — worth knowing before switching onto it. */
11
- isScheduled?: boolean;
12
- name: string;
13
- slug: string;
14
- };
15
- export type BranchContext = {
16
- /** Slug of the branch every read on this request resolved through. */
17
- activeBranch: string;
18
- /** Branches the user can read, excluding `main`. */
19
- branches: BranchOption[];
20
- /** Whether branching is enabled for this Payload instance. */
21
- isEnabled: boolean;
22
- /**
23
- * Switches the active branch: stores the choice in the user's preferences and
24
- * re-renders the current view against it.
25
- */
26
- setBranch: (slug: string, options?: {
27
- refresh?: boolean;
28
- }) => void;
29
- };
30
- export type BranchProviderProps = {
31
- /** Branch resolved for the request that rendered this page. */
32
- activeBranch: string;
33
- branches: BranchOption[];
34
- children: React.ReactNode;
35
- /**
36
- * Set when the request resolved to a branch the user can no longer see, so
37
- * the stored preference pointing at it can be cleared.
38
- */
39
- staleBranch?: null | string;
40
- };
41
- /**
42
- * Holds the active branch for the admin UI.
43
- *
44
- * The selection lives in the user's `admin` preference and nowhere else, so it
45
- * follows them between browsers and machines. The server resolves it during
46
- * request initialization, which is why switching is a preference write followed
47
- * by a refresh rather than any client-side state that has to be kept in sync.
48
- */
49
- export declare const BranchProvider: React.FC<BranchProviderProps>;
50
- export declare const useBranch: () => BranchContext;
51
- /**
52
- * The value to pass as the `branch` argument on an API call, or `undefined`
53
- * when the call should run against production.
54
- *
55
- * `main` is returned as `undefined` on purpose: passing no branch already means
56
- * `main` everywhere in Payload, so omitting it keeps ordinary requests free of
57
- * a parameter that changes nothing.
58
- */
59
- export declare const useBranchParam: () => string | undefined;
60
- /**
61
- * Whether to render the branch switcher at all.
62
- *
63
- * Shown whenever branching is enabled, even with no branches yet: the switcher
64
- * hosts the "new branch" action, so hiding it until a branch exists would leave
65
- * a project with no way to create its first one.
66
- */
67
- export declare const useShowBranchSelector: () => boolean;
68
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Branch/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAQnF,MAAM,MAAM,YAAY,GAAG;IACzB,qEAAqE;IACrE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAA;IACpB,oDAAoD;IACpD,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,8DAA8D;IAC9D,SAAS,EAAE,OAAO,CAAA;IAClB;;;OAGG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;CACnE,CAAA;AASD,MAAM,MAAM,mBAAmB,GAAG;IAChC,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAC5B,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4FxD,CAAA;AAED,eAAO,MAAM,SAAS,QAAO,aAA6B,CAAA;AAE1D;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,QAAO,MAAM,GAAG,SAI1C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,QAAO,OAIxC,CAAA"}
@@ -1,193 +0,0 @@
1
- 'use client';
2
-
3
- import { c as _c } from "react/compiler-runtime";
4
- import { jsx as _jsx } from "react/jsx-runtime";
5
- import { branchesCollectionSlug, MAIN_BRANCH, PREFERENCE_KEYS } from 'payload/shared';
6
- import React, { createContext, use, useCallback, useEffect, useState } from 'react';
7
- import { useConfig } from '../Config/index.js';
8
- import { useDocumentEvents } from '../DocumentEvents/index.js';
9
- import { usePreferences } from '../Preferences/index.js';
10
- import { useRouter } from '../RouterAdapter/index.js';
11
- import { useRouteTransition } from '../RouteTransition/index.js';
12
- const Context = /*#__PURE__*/createContext({
13
- activeBranch: MAIN_BRANCH,
14
- branches: [],
15
- isEnabled: false,
16
- setBranch: () => null
17
- });
18
- /**
19
- * Holds the active branch for the admin UI.
20
- *
21
- * The selection lives in the user's `admin` preference and nowhere else, so it
22
- * follows them between browsers and machines. The server resolves it during
23
- * request initialization, which is why switching is a preference write followed
24
- * by a refresh rather than any client-side state that has to be kept in sync.
25
- */
26
- export const BranchProvider = t0 => {
27
- const $ = _c(22);
28
- const {
29
- activeBranch: activeBranchFromServer,
30
- branches,
31
- children,
32
- staleBranch
33
- } = t0;
34
- const {
35
- config: t1
36
- } = useConfig();
37
- const {
38
- branching
39
- } = t1;
40
- const {
41
- setPreference
42
- } = usePreferences();
43
- const router = useRouter();
44
- const {
45
- startRouteTransition
46
- } = useRouteTransition();
47
- const isEnabled = Boolean(branching?.enabled);
48
- const [activeBranch, setActiveBranchState] = useState(activeBranchFromServer);
49
- let t2;
50
- let t3;
51
- if ($[0] !== activeBranchFromServer) {
52
- t2 = () => {
53
- setActiveBranchState(activeBranchFromServer);
54
- };
55
- t3 = [activeBranchFromServer];
56
- $[0] = activeBranchFromServer;
57
- $[1] = t2;
58
- $[2] = t3;
59
- } else {
60
- t2 = $[1];
61
- t3 = $[2];
62
- }
63
- useEffect(t2, t3);
64
- let t4;
65
- if ($[3] !== activeBranch || $[4] !== router || $[5] !== setPreference || $[6] !== startRouteTransition) {
66
- t4 = (slug, t5) => {
67
- const {
68
- refresh: t6
69
- } = t5 === undefined ? {} : t5;
70
- const refresh = t6 === undefined ? true : t6;
71
- if (slug === activeBranch) {
72
- return;
73
- }
74
- setActiveBranchState(slug);
75
- (async () => {
76
- await setPreference(PREFERENCE_KEYS.ADMIN, {
77
- branch: slug
78
- }, true);
79
- if (refresh) {
80
- startRouteTransition(() => {
81
- router.refresh();
82
- });
83
- }
84
- })();
85
- };
86
- $[3] = activeBranch;
87
- $[4] = router;
88
- $[5] = setPreference;
89
- $[6] = startRouteTransition;
90
- $[7] = t4;
91
- } else {
92
- t4 = $[7];
93
- }
94
- const setBranch = t4;
95
- const {
96
- mostRecentUpdate
97
- } = useDocumentEvents();
98
- let t5;
99
- let t6;
100
- if ($[8] !== mostRecentUpdate || $[9] !== setBranch) {
101
- t5 = () => {
102
- if (mostRecentUpdate?.entitySlug !== branchesCollectionSlug || mostRecentUpdate.operation !== "create") {
103
- return;
104
- }
105
- const createdSlug = mostRecentUpdate.doc?.slug;
106
- if (createdSlug) {
107
- setBranch(createdSlug, {
108
- refresh: false
109
- });
110
- }
111
- };
112
- t6 = [mostRecentUpdate, setBranch];
113
- $[8] = mostRecentUpdate;
114
- $[9] = setBranch;
115
- $[10] = t5;
116
- $[11] = t6;
117
- } else {
118
- t5 = $[10];
119
- t6 = $[11];
120
- }
121
- useEffect(t5, t6);
122
- let t7;
123
- let t8;
124
- if ($[12] !== setPreference || $[13] !== staleBranch) {
125
- t7 = () => {
126
- if (staleBranch) {
127
- setPreference(PREFERENCE_KEYS.ADMIN, {
128
- branch: MAIN_BRANCH
129
- }, true);
130
- }
131
- };
132
- t8 = [setPreference, staleBranch];
133
- $[12] = setPreference;
134
- $[13] = staleBranch;
135
- $[14] = t7;
136
- $[15] = t8;
137
- } else {
138
- t7 = $[14];
139
- t8 = $[15];
140
- }
141
- useEffect(t7, t8);
142
- let t9;
143
- if ($[16] !== activeBranch || $[17] !== branches || $[18] !== children || $[19] !== isEnabled || $[20] !== setBranch) {
144
- t9 = _jsx(Context, {
145
- value: {
146
- activeBranch,
147
- branches,
148
- isEnabled,
149
- setBranch
150
- },
151
- children
152
- });
153
- $[16] = activeBranch;
154
- $[17] = branches;
155
- $[18] = children;
156
- $[19] = isEnabled;
157
- $[20] = setBranch;
158
- $[21] = t9;
159
- } else {
160
- t9 = $[21];
161
- }
162
- return t9;
163
- };
164
- export const useBranch = () => use(Context);
165
- /**
166
- * The value to pass as the `branch` argument on an API call, or `undefined`
167
- * when the call should run against production.
168
- *
169
- * `main` is returned as `undefined` on purpose: passing no branch already means
170
- * `main` everywhere in Payload, so omitting it keeps ordinary requests free of
171
- * a parameter that changes nothing.
172
- */
173
- export const useBranchParam = () => {
174
- const {
175
- activeBranch,
176
- isEnabled
177
- } = useBranch();
178
- return isEnabled && activeBranch !== MAIN_BRANCH ? activeBranch : undefined;
179
- };
180
- /**
181
- * Whether to render the branch switcher at all.
182
- *
183
- * Shown whenever branching is enabled, even with no branches yet: the switcher
184
- * hosts the "new branch" action, so hiding it until a branch exists would leave
185
- * a project with no way to create its first one.
186
- */
187
- export const useShowBranchSelector = () => {
188
- const {
189
- isEnabled
190
- } = useBranch();
191
- return isEnabled;
192
- };
193
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["c","_c","branchesCollectionSlug","MAIN_BRANCH","PREFERENCE_KEYS","React","createContext","use","useCallback","useEffect","useState","useConfig","useDocumentEvents","usePreferences","useRouter","useRouteTransition","Context","activeBranch","branches","isEnabled","setBranch","BranchProvider","t0","$","activeBranchFromServer","children","staleBranch","config","t1","branching","setPreference","router","startRouteTransition","Boolean","enabled","setActiveBranchState","t2","t3","t4","slug","t5","refresh","t6","undefined","ADMIN","branch","mostRecentUpdate","entitySlug","operation","createdSlug","doc","t7","t8","t9","_jsx","value","useBranch","useBranchParam","useShowBranchSelector"],"sources":["../../../src/providers/Branch/index.tsx"],"sourcesContent":["'use client'\n\nimport { branchesCollectionSlug, MAIN_BRANCH, PREFERENCE_KEYS } from 'payload/shared'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useDocumentEvents } from '../DocumentEvents/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useRouter } from '../RouterAdapter/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\n\nexport type BranchOption = {\n /** Absent for `main`, which is a sentinel rather than a document. */\n id?: number | string\n /**\n * Merged with nothing pending since — still a usable workspace, but worth\n * distinguishing from a branch with work on it.\n */\n isMerged?: boolean\n /** A merge is queued for this branch — worth knowing before switching onto it. */\n isScheduled?: boolean\n name: string\n slug: string\n}\n\nexport type BranchContext = {\n /** Slug of the branch every read on this request resolved through. */\n activeBranch: string\n /** Branches the user can read, excluding `main`. */\n branches: BranchOption[]\n /** Whether branching is enabled for this Payload instance. */\n isEnabled: boolean\n /**\n * Switches the active branch: stores the choice in the user's preferences and\n * re-renders the current view against it.\n */\n setBranch: (slug: string, options?: { refresh?: boolean }) => void\n}\n\nconst Context = createContext<BranchContext>({\n activeBranch: MAIN_BRANCH,\n branches: [],\n isEnabled: false,\n setBranch: () => null,\n})\n\nexport type BranchProviderProps = {\n /** Branch resolved for the request that rendered this page. */\n activeBranch: string\n branches: BranchOption[]\n children: React.ReactNode\n /**\n * Set when the request resolved to a branch the user can no longer see, so\n * the stored preference pointing at it can be cleared.\n */\n staleBranch?: null | string\n}\n\n/**\n * Holds the active branch for the admin UI.\n *\n * The selection lives in the user's `admin` preference and nowhere else, so it\n * follows them between browsers and machines. The server resolves it during\n * request initialization, which is why switching is a preference write followed\n * by a refresh rather than any client-side state that has to be kept in sync.\n */\nexport const BranchProvider: React.FC<BranchProviderProps> = ({\n activeBranch: activeBranchFromServer,\n branches,\n children,\n staleBranch,\n}) => {\n const {\n config: { branching },\n } = useConfig()\n\n const { setPreference } = usePreferences()\n const router = useRouter()\n const { startRouteTransition } = useRouteTransition()\n\n const isEnabled = Boolean(branching?.enabled)\n\n // Tracked optimistically so the trigger label updates before the server\n // components finish re-rendering.\n const [activeBranch, setActiveBranchState] = useState(activeBranchFromServer)\n\n useEffect(() => {\n setActiveBranchState(activeBranchFromServer)\n }, [activeBranchFromServer])\n\n const setBranch = useCallback(\n (slug: string, { refresh = true }: { refresh?: boolean } = {}) => {\n if (slug === activeBranch) {\n return\n }\n\n setActiveBranchState(slug)\n\n // Merged, not replaced: the `admin` preference also carries nav state, and\n // a plain write would drop it. Awaited before refreshing, because the\n // server re-reads this preference to resolve the branch — refreshing first\n // would race the write and re-render against the branch we just left.\n void (async () => {\n await setPreference(PREFERENCE_KEYS.ADMIN, { branch: slug }, true)\n\n if (refresh) {\n startRouteTransition(() => {\n router.refresh()\n })\n }\n })()\n },\n [activeBranch, router, setPreference, startRouteTransition],\n )\n\n // Creating a branch is a declaration of intent to work on it, so the switch\n // follows the save. Listening for the document event rather than wiring up\n // the create view means this covers every route a branch can be created\n // from — the full create page, and any drawer that ever opens onto it.\n const { mostRecentUpdate } = useDocumentEvents()\n\n useEffect(() => {\n if (\n mostRecentUpdate?.entitySlug !== branchesCollectionSlug ||\n mostRecentUpdate.operation !== 'create'\n ) {\n return\n }\n\n const createdSlug = (mostRecentUpdate.doc as { slug?: string } | undefined)?.slug\n\n if (createdSlug) {\n // No refresh: the create view redirects to the new document immediately\n // after this fires, and that navigation re-resolves the branch.\n setBranch(createdSlug, { refresh: false })\n }\n }, [mostRecentUpdate, setBranch])\n\n // Drops a stored selection pointing at a branch that no longer resolves, so\n // the next request starts clean on main instead of resurrecting it.\n useEffect(() => {\n if (staleBranch) {\n void setPreference(PREFERENCE_KEYS.ADMIN, { branch: MAIN_BRANCH }, true)\n }\n }, [setPreference, staleBranch])\n\n return (\n <Context\n value={{\n activeBranch,\n branches,\n isEnabled,\n setBranch,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useBranch = (): BranchContext => use(Context)\n\n/**\n * The value to pass as the `branch` argument on an API call, or `undefined`\n * when the call should run against production.\n *\n * `main` is returned as `undefined` on purpose: passing no branch already means\n * `main` everywhere in Payload, so omitting it keeps ordinary requests free of\n * a parameter that changes nothing.\n */\nexport const useBranchParam = (): string | undefined => {\n const { activeBranch, isEnabled } = useBranch()\n\n return isEnabled && activeBranch !== MAIN_BRANCH ? activeBranch : undefined\n}\n\n/**\n * Whether to render the branch switcher at all.\n *\n * Shown whenever branching is enabled, even with no branches yet: the switcher\n * hosts the \"new branch\" action, so hiding it until a branch exists would leave\n * a project with no way to create its first one.\n */\nexport const useShowBranchSelector = (): boolean => {\n const { isEnabled } = useBranch()\n\n return isEnabled\n}\n"],"mappings":"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","ignoreList":[]}