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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. package/dist/elements/AppHeader/index.css +5 -0
  2. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  3. package/dist/elements/AppHeader/index.js +3 -0
  4. package/dist/elements/AppHeader/index.js.map +1 -1
  5. package/dist/elements/ArrayAction/index.d.ts +1 -0
  6. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +45 -32
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.d.ts.map +1 -1
  10. package/dist/elements/Autosave/index.js +3 -0
  11. package/dist/elements/Autosave/index.js.map +1 -1
  12. package/dist/elements/BranchSelector/NewBranchModal/index.css +46 -0
  13. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts +12 -0
  14. package/dist/elements/BranchSelector/NewBranchModal/index.d.ts.map +1 -0
  15. package/dist/elements/BranchSelector/NewBranchModal/index.js +174 -0
  16. package/dist/elements/BranchSelector/NewBranchModal/index.js.map +1 -0
  17. package/dist/elements/BranchSelector/index.css +172 -0
  18. package/dist/elements/BranchSelector/index.d.ts +13 -0
  19. package/dist/elements/BranchSelector/index.d.ts.map +1 -0
  20. package/dist/elements/BranchSelector/index.js +255 -0
  21. package/dist/elements/BranchSelector/index.js.map +1 -0
  22. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/index.js +6 -2
  24. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  25. package/dist/elements/Button/index.css +2 -2
  26. package/dist/elements/ChangeSummary/index.css +18 -0
  27. package/dist/elements/ChangeSummary/index.d.ts +28 -0
  28. package/dist/elements/ChangeSummary/index.d.ts.map +1 -0
  29. package/dist/elements/ChangeSummary/index.js +147 -0
  30. package/dist/elements/ChangeSummary/index.js.map +1 -0
  31. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  32. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  33. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +55 -0
  34. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  35. package/dist/elements/ColumnSelection/Popup.d.ts.map +1 -1
  36. package/dist/elements/ColumnSelection/Popup.js +3 -3
  37. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  38. package/dist/elements/Combobox/index.css +84 -23
  39. package/dist/elements/Combobox/index.d.ts +21 -0
  40. package/dist/elements/Combobox/index.d.ts.map +1 -1
  41. package/dist/elements/Combobox/index.js +66 -21
  42. package/dist/elements/Combobox/index.js.map +1 -1
  43. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  44. package/dist/elements/DeleteDocument/index.js +9 -2
  45. package/dist/elements/DeleteDocument/index.js.map +1 -1
  46. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  47. package/dist/elements/DeleteMany/index.js +4 -1
  48. package/dist/elements/DeleteMany/index.js.map +1 -1
  49. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +5 -3
  50. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.css +12 -0
  51. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts +12 -0
  52. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.d.ts.map +1 -0
  53. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js +83 -0
  54. package/dist/elements/DocumentHeader/Tabs/tabs/BranchChangesPill/index.js.map +1 -0
  55. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts +14 -0
  56. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.d.ts.map +1 -0
  57. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js +28 -0
  58. package/dist/elements/DocumentHeader/Tabs/tabs/BranchSettingsTab/index.js.map +1 -0
  59. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  60. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +32 -1
  61. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  62. package/dist/elements/Drawer/index.css +10 -4
  63. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  64. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  65. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  66. package/dist/elements/DuplicateDocument/index.js +6 -1
  67. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  68. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  69. package/dist/elements/EditMany/DrawerContent.js +4 -1
  70. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  71. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  72. package/dist/elements/Hierarchy/ColumnBrowser/index.js +4 -1
  73. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
  74. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -1
  75. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +4 -1
  76. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -1
  77. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +2 -1
  78. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
  79. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +2 -0
  80. package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
  81. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  82. package/dist/elements/Hierarchy/Modal/index.js +3 -0
  83. package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
  84. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
  85. package/dist/elements/Hierarchy/MoveMany/index.js +4 -1
  86. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
  87. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  88. package/dist/elements/Hierarchy/Search/useHierarchySearch.js +3 -0
  89. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -1
  90. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  91. package/dist/elements/Hierarchy/Tree/useChildren.js +4 -1
  92. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
  93. package/dist/elements/IDLabel/index.css +6 -0
  94. package/dist/elements/IDLabel/index.d.ts +1 -1
  95. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  96. package/dist/elements/IDLabel/index.js +16 -21
  97. package/dist/elements/IDLabel/index.js.map +1 -1
  98. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  99. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  100. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  101. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  102. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  103. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +6 -2
  104. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  105. package/dist/elements/MergeBranch/context.d.ts +67 -0
  106. package/dist/elements/MergeBranch/context.d.ts.map +1 -0
  107. package/dist/elements/MergeBranch/context.js +47 -0
  108. package/dist/elements/MergeBranch/context.js.map +1 -0
  109. package/dist/elements/MergeBranch/index.css +136 -0
  110. package/dist/elements/MergeBranch/index.d.ts +15 -0
  111. package/dist/elements/MergeBranch/index.d.ts.map +1 -0
  112. package/dist/elements/MergeBranch/index.js +545 -0
  113. package/dist/elements/MergeBranch/index.js.map +1 -0
  114. package/dist/elements/MergeBranch/provider.d.ts +12 -0
  115. package/dist/elements/MergeBranch/provider.d.ts.map +1 -0
  116. package/dist/elements/MergeBranch/provider.js +19 -0
  117. package/dist/elements/MergeBranch/provider.js.map +1 -0
  118. package/dist/elements/MergeBranch/slug.d.ts +9 -0
  119. package/dist/elements/MergeBranch/slug.d.ts.map +1 -0
  120. package/dist/elements/MergeBranch/slug.js +8 -0
  121. package/dist/elements/MergeBranch/slug.js.map +1 -0
  122. package/dist/elements/Nav/context.js +2 -2
  123. package/dist/elements/Nav/context.js.map +1 -1
  124. package/dist/elements/Nav/getNavPrefs.d.ts +6 -0
  125. package/dist/elements/Nav/getNavPrefs.d.ts.map +1 -1
  126. package/dist/elements/Nav/getNavPrefs.js +14 -46
  127. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  128. package/dist/elements/NavGroup/index.js +1 -1
  129. package/dist/elements/NavGroup/index.js.map +1 -1
  130. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  131. package/dist/elements/PermanentlyDeleteButton/index.js +4 -1
  132. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  133. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  134. package/dist/elements/Popup/index.js +1 -1
  135. package/dist/elements/Popup/index.js.map +1 -1
  136. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  137. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  138. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  139. package/dist/elements/PublishButton/index.js +6 -2
  140. package/dist/elements/PublishButton/index.js.map +1 -1
  141. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  142. package/dist/elements/PublishMany/DrawerContent.js +4 -1
  143. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  144. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  145. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  146. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  147. package/dist/elements/RelationshipTable/index.js +5 -2
  148. package/dist/elements/RelationshipTable/index.js.map +1 -1
  149. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  150. package/dist/elements/RestoreButton/index.js +4 -1
  151. package/dist/elements/RestoreButton/index.js.map +1 -1
  152. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  153. package/dist/elements/RestoreMany/index.js +3 -0
  154. package/dist/elements/RestoreMany/index.js.map +1 -1
  155. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  156. package/dist/elements/SaveDraftButton/index.js +15 -2
  157. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  158. package/dist/elements/SchedulePublishButton/index.d.ts.map +1 -1
  159. package/dist/elements/SchedulePublishButton/index.js +7 -1
  160. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  161. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  162. package/dist/elements/SortHeader/index.js +29 -26
  163. package/dist/elements/SortHeader/index.js.map +1 -1
  164. package/dist/elements/Status/index.d.ts.map +1 -1
  165. package/dist/elements/Status/index.js +16 -3
  166. package/dist/elements/Status/index.js.map +1 -1
  167. package/dist/elements/StepNav/index.css +71 -14
  168. package/dist/elements/StepNav/index.d.ts.map +1 -1
  169. package/dist/elements/StepNav/index.js +135 -69
  170. package/dist/elements/StepNav/index.js.map +1 -1
  171. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.css +34 -0
  172. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts +13 -0
  173. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.d.ts.map +1 -0
  174. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js +51 -0
  175. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -0
  176. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  177. package/dist/elements/Table/DefaultCell/index.js +3 -11
  178. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  179. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  180. package/dist/elements/Table/OrderableTable.js +3 -1
  181. package/dist/elements/Table/OrderableTable.js.map +1 -1
  182. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  183. package/dist/elements/Table/RelationshipProvider/index.js +29 -23
  184. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  185. package/dist/elements/UnpublishButton/index.d.ts.map +1 -1
  186. package/dist/elements/UnpublishButton/index.js +4 -1
  187. package/dist/elements/UnpublishButton/index.js.map +1 -1
  188. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  189. package/dist/elements/UnpublishMany/DrawerContent.js +4 -1
  190. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  191. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  192. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +3 -0
  193. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  194. package/dist/exports/client/index.d.ts +19 -1
  195. package/dist/exports/client/index.d.ts.map +1 -1
  196. package/dist/exports/client/index.js +1 -1
  197. package/dist/exports/client/index.js.map +3 -3
  198. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  199. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  200. package/dist/fields/Array/ArrayRow.js +2 -0
  201. package/dist/fields/Array/ArrayRow.js.map +1 -1
  202. package/dist/fields/Array/index.d.ts.map +1 -1
  203. package/dist/fields/Array/index.js +38 -10
  204. package/dist/fields/Array/index.js.map +1 -1
  205. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  206. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  207. package/dist/fields/Blocks/BlockRow.js +2 -0
  208. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  209. package/dist/fields/Blocks/RowActions.d.ts +1 -0
  210. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  211. package/dist/fields/Blocks/RowActions.js +22 -19
  212. package/dist/fields/Blocks/RowActions.js.map +1 -1
  213. package/dist/fields/Blocks/index.d.ts.map +1 -1
  214. package/dist/fields/Blocks/index.js +35 -7
  215. package/dist/fields/Blocks/index.js.map +1 -1
  216. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  217. package/dist/fields/Relationship/Input.js +5 -1
  218. package/dist/fields/Relationship/Input.js.map +1 -1
  219. package/dist/fields/Upload/Input.d.ts.map +1 -1
  220. package/dist/fields/Upload/Input.js +4 -1
  221. package/dist/fields/Upload/Input.js.map +1 -1
  222. package/dist/forms/Form/index.d.ts.map +1 -1
  223. package/dist/forms/Form/index.js +4 -1
  224. package/dist/forms/Form/index.js.map +1 -1
  225. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  226. package/dist/hooks/usePayloadAPI.js +44 -40
  227. package/dist/hooks/usePayloadAPI.js.map +1 -1
  228. package/dist/icons/Branch/index.css +5 -0
  229. package/dist/icons/Branch/index.d.ts +7 -0
  230. package/dist/icons/Branch/index.d.ts.map +1 -0
  231. package/dist/icons/Branch/index.js +25 -0
  232. package/dist/icons/Branch/index.js.map +1 -0
  233. package/dist/icons/Edit/index.d.ts +0 -1
  234. package/dist/icons/Edit/index.d.ts.map +1 -1
  235. package/dist/icons/Edit/index.js +4 -4
  236. package/dist/icons/Edit/index.js.map +1 -1
  237. package/dist/providers/Actions/index.d.ts +1 -0
  238. package/dist/providers/Actions/index.d.ts.map +1 -1
  239. package/dist/providers/Actions/index.js +43 -11
  240. package/dist/providers/Actions/index.js.map +1 -1
  241. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  242. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  243. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  244. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  245. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  246. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  247. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  248. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  249. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  250. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  251. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  252. package/dist/providers/Auth/authSessionRequests.js +119 -0
  253. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  254. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  255. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  256. package/dist/providers/Auth/index.d.ts +2 -56
  257. package/dist/providers/Auth/index.d.ts.map +1 -1
  258. package/dist/providers/Auth/index.js +283 -135
  259. package/dist/providers/Auth/index.js.map +1 -1
  260. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  261. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  262. package/dist/providers/Auth/sessionActivity.js +49 -0
  263. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  264. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  265. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  266. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  267. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  268. package/dist/providers/Auth/sessionTiming.js +18 -0
  269. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  270. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  271. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  272. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  273. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  274. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  275. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  276. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  277. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  278. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  279. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  280. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  281. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  282. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  283. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  284. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  285. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  286. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  287. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  288. package/dist/providers/Auth/types.d.ts +65 -0
  289. package/dist/providers/Auth/types.d.ts.map +1 -0
  290. package/dist/providers/Auth/types.js +2 -0
  291. package/dist/providers/Auth/types.js.map +1 -0
  292. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  293. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  294. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  295. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  296. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  297. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  298. package/dist/providers/Branch/index.d.ts +68 -0
  299. package/dist/providers/Branch/index.d.ts.map +1 -0
  300. package/dist/providers/Branch/index.js +193 -0
  301. package/dist/providers/Branch/index.js.map +1 -0
  302. package/dist/providers/Branch/index.server.d.ts +14 -0
  303. package/dist/providers/Branch/index.server.d.ts.map +1 -0
  304. package/dist/providers/Branch/index.server.js +125 -0
  305. package/dist/providers/Branch/index.server.js.map +1 -0
  306. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  307. package/dist/providers/DocumentInfo/index.js +5 -1
  308. package/dist/providers/DocumentInfo/index.js.map +1 -1
  309. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +2 -1
  310. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  311. package/dist/providers/DocumentInfo/useGetDocPermissions.js +3 -1
  312. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  313. package/dist/providers/FormErrorHandler/index.d.ts +5 -1
  314. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
  315. package/dist/providers/FormErrorHandler/index.js.map +1 -1
  316. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  317. package/dist/providers/Hierarchy/index.js +4 -1
  318. package/dist/providers/Hierarchy/index.js.map +1 -1
  319. package/dist/providers/Locale/index.d.ts.map +1 -1
  320. package/dist/providers/Locale/index.js +41 -36
  321. package/dist/providers/Locale/index.js.map +1 -1
  322. package/dist/providers/Preferences/index.d.ts +3 -1
  323. package/dist/providers/Preferences/index.d.ts.map +1 -1
  324. package/dist/providers/Preferences/index.js +9 -3
  325. package/dist/providers/Preferences/index.js.map +1 -1
  326. package/dist/providers/Root/index.js +4 -4
  327. package/dist/providers/Root/index.js.map +1 -1
  328. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  329. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  330. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  331. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  332. package/dist/providers/RouteTransition/index.d.ts +2 -0
  333. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  334. package/dist/providers/RouteTransition/index.js +42 -14
  335. package/dist/providers/RouteTransition/index.js.map +1 -1
  336. package/dist/styles.css +1 -1
  337. package/dist/templates/Default/index.d.ts +1 -0
  338. package/dist/templates/Default/index.d.ts.map +1 -1
  339. package/dist/templates/Default/index.js +44 -36
  340. package/dist/templates/Default/index.js.map +1 -1
  341. package/dist/utilities/getAdminPreferences.d.ts +14 -0
  342. package/dist/utilities/getAdminPreferences.d.ts.map +1 -0
  343. package/dist/utilities/getAdminPreferences.js +22 -0
  344. package/dist/utilities/getAdminPreferences.js.map +1 -0
  345. package/dist/utilities/getRequestBranch.d.ts +20 -0
  346. package/dist/utilities/getRequestBranch.d.ts.map +1 -0
  347. package/dist/utilities/getRequestBranch.js +35 -0
  348. package/dist/utilities/getRequestBranch.js.map +1 -0
  349. package/dist/utilities/getVersions.d.ts +6 -1
  350. package/dist/utilities/getVersions.d.ts.map +1 -1
  351. package/dist/utilities/getVersions.js +5 -0
  352. package/dist/utilities/getVersions.js.map +1 -1
  353. package/dist/utilities/initReq.d.ts.map +1 -1
  354. package/dist/utilities/initReq.js +8 -0
  355. package/dist/utilities/initReq.js.map +1 -1
  356. package/dist/utilities/matchesSearchQuery.d.ts +12 -0
  357. package/dist/utilities/matchesSearchQuery.d.ts.map +1 -0
  358. package/dist/utilities/matchesSearchQuery.js +23 -0
  359. package/dist/utilities/matchesSearchQuery.js.map +1 -0
  360. package/dist/{elements/ColumnSelection/matchesColumnSearch.spec.js → utilities/matchesSearchQuery.spec.js} +29 -29
  361. package/dist/utilities/matchesSearchQuery.spec.js.map +1 -0
  362. package/dist/utilities/scheduleMergeHandler.d.ts +33 -0
  363. package/dist/utilities/scheduleMergeHandler.d.ts.map +1 -0
  364. package/dist/utilities/scheduleMergeHandler.js +119 -0
  365. package/dist/utilities/scheduleMergeHandler.js.map +1 -0
  366. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  367. package/dist/utilities/schedulePublishHandler.js +10 -0
  368. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  369. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  370. package/dist/utilities/serverFunctionRegistry.js +6 -0
  371. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  372. package/dist/views/API/index.client.d.ts.map +1 -1
  373. package/dist/views/API/index.client.js +10 -2
  374. package/dist/views/API/index.client.js.map +1 -1
  375. package/dist/views/Branch/BranchChanges/index.d.ts +23 -0
  376. package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -0
  377. package/dist/views/Branch/BranchChanges/index.js +150 -0
  378. package/dist/views/Branch/BranchChanges/index.js.map +1 -0
  379. package/dist/views/Branch/ChangedDocuments/index.css +118 -0
  380. package/dist/views/Branch/ChangedDocuments/index.d.ts +34 -0
  381. package/dist/views/Branch/ChangedDocuments/index.d.ts.map +1 -0
  382. package/dist/views/Branch/ChangedDocuments/index.js +233 -0
  383. package/dist/views/Branch/ChangedDocuments/index.js.map +1 -0
  384. package/dist/views/Branch/DiscardChangesButton/index.d.ts +16 -0
  385. package/dist/views/Branch/DiscardChangesButton/index.d.ts.map +1 -0
  386. package/dist/views/Branch/DiscardChangesButton/index.js +106 -0
  387. package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -0
  388. package/dist/views/Branch/Manage/index.d.ts +11 -0
  389. package/dist/views/Branch/Manage/index.d.ts.map +1 -0
  390. package/dist/views/Branch/Manage/index.js +71 -0
  391. package/dist/views/Branch/Manage/index.js.map +1 -0
  392. package/dist/views/Branch/MergeChangesButton/index.d.ts +14 -0
  393. package/dist/views/Branch/MergeChangesButton/index.d.ts.map +1 -0
  394. package/dist/views/Branch/MergeChangesButton/index.js +55 -0
  395. package/dist/views/Branch/MergeChangesButton/index.js.map +1 -0
  396. package/dist/views/Branch/MergeLedger/index.css +137 -0
  397. package/dist/views/Branch/MergeLedger/index.d.ts +31 -0
  398. package/dist/views/Branch/MergeLedger/index.d.ts.map +1 -0
  399. package/dist/views/Branch/MergeLedger/index.js +211 -0
  400. package/dist/views/Branch/MergeLedger/index.js.map +1 -0
  401. package/dist/views/Branch/ScheduledMerges/index.css +83 -0
  402. package/dist/views/Branch/ScheduledMerges/index.d.ts +32 -0
  403. package/dist/views/Branch/ScheduledMerges/index.d.ts.map +1 -0
  404. package/dist/views/Branch/ScheduledMerges/index.js +183 -0
  405. package/dist/views/Branch/ScheduledMerges/index.js.map +1 -0
  406. package/dist/views/Branch/index.css +77 -0
  407. package/dist/views/Branch/index.d.ts +17 -0
  408. package/dist/views/Branch/index.d.ts.map +1 -0
  409. package/dist/views/Branch/index.js +188 -0
  410. package/dist/views/Branch/index.js.map +1 -0
  411. package/dist/views/Branch/renderBranchDiff.d.ts +29 -0
  412. package/dist/views/Branch/renderBranchDiff.d.ts.map +1 -0
  413. package/dist/views/Branch/renderBranchDiff.js +151 -0
  414. package/dist/views/Branch/renderBranchDiff.js.map +1 -0
  415. package/dist/views/Branch/renderMergeDiff.d.ts +24 -0
  416. package/dist/views/Branch/renderMergeDiff.d.ts.map +1 -0
  417. package/dist/views/Branch/renderMergeDiff.js +94 -0
  418. package/dist/views/Branch/renderMergeDiff.js.map +1 -0
  419. package/dist/views/Branches/index.d.ts +16 -0
  420. package/dist/views/Branches/index.d.ts.map +1 -0
  421. package/dist/views/Branches/index.js +54 -0
  422. package/dist/views/Branches/index.js.map +1 -0
  423. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  424. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  425. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  426. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  427. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  428. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  429. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  430. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  431. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  432. package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
  433. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  434. package/dist/views/Document/getDocumentView.js +21 -2
  435. package/dist/views/Document/getDocumentView.js.map +1 -1
  436. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  437. package/dist/views/Document/getMetaBySegment.js +9 -0
  438. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  439. package/dist/views/Document/index.d.ts +3 -1
  440. package/dist/views/Document/index.d.ts.map +1 -1
  441. package/dist/views/Document/index.js +8 -1
  442. package/dist/views/Document/index.js.map +1 -1
  443. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  444. package/dist/views/HierarchyList/HierarchyTable/index.js +6 -2
  445. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  446. package/dist/views/List/ListHeader/index.d.ts +1 -10
  447. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  448. package/dist/views/List/ListHeader/index.js +1 -3
  449. package/dist/views/List/ListHeader/index.js.map +1 -1
  450. package/dist/views/List/index.client.d.ts.map +1 -1
  451. package/dist/views/List/index.client.js +0 -14
  452. package/dist/views/List/index.client.js.map +1 -1
  453. package/dist/views/List/index.css +5 -0
  454. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  455. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  456. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  457. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  458. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  459. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  460. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  461. package/dist/views/Root/getRouteData.js +12 -4
  462. package/dist/views/Root/getRouteData.js.map +1 -1
  463. package/dist/views/Root/index.d.ts.map +1 -1
  464. package/dist/views/Root/index.js +1 -0
  465. package/dist/views/Root/index.js.map +1 -1
  466. package/dist/views/Version/Default/index.css +26 -2
  467. package/dist/views/Version/Default/index.d.ts.map +1 -1
  468. package/dist/views/Version/Default/index.js +18 -6
  469. package/dist/views/Version/Default/index.js.map +1 -1
  470. package/dist/views/Version/Default/types.d.ts +9 -0
  471. package/dist/views/Version/Default/types.d.ts.map +1 -1
  472. package/dist/views/Version/Default/types.js.map +1 -1
  473. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  474. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +8 -0
  475. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  476. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  477. package/dist/views/Version/Restore/index.js +6 -3
  478. package/dist/views/Version/Restore/index.js.map +1 -1
  479. package/dist/views/Version/index.d.ts.map +1 -1
  480. package/dist/views/Version/index.js +4 -0
  481. package/dist/views/Version/index.js.map +1 -1
  482. package/dist/views/Versions/buildColumns.d.ts +2 -1
  483. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  484. package/dist/views/Versions/buildColumns.js +21 -1
  485. package/dist/views/Versions/buildColumns.js.map +1 -1
  486. package/dist/views/Versions/cells/Branch/index.d.ts +12 -0
  487. package/dist/views/Versions/cells/Branch/index.d.ts.map +1 -0
  488. package/dist/views/Versions/cells/Branch/index.js +27 -0
  489. package/dist/views/Versions/cells/Branch/index.js.map +1 -0
  490. package/dist/views/Versions/index.client.d.ts +0 -1
  491. package/dist/views/Versions/index.client.d.ts.map +1 -1
  492. package/dist/views/Versions/index.client.js.map +1 -1
  493. package/dist/views/Versions/index.d.ts.map +1 -1
  494. package/dist/views/Versions/index.js +2 -14
  495. package/dist/views/Versions/index.js.map +1 -1
  496. package/package.json +5 -5
  497. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts +0 -10
  498. package/dist/elements/ColumnSelection/matchesColumnSearch.d.ts.map +0 -1
  499. package/dist/elements/ColumnSelection/matchesColumnSearch.js +0 -21
  500. package/dist/elements/ColumnSelection/matchesColumnSearch.js.map +0 -1
  501. package/dist/elements/ColumnSelection/matchesColumnSearch.spec.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import React, { useCallback, useMemo, useState } from 'react';
5
+ import { Gutter } from '../../../elements/Gutter/index.js';
6
+ import { Link } from '../../../elements/Link/index.js';
7
+ import { useTranslation } from '../../../providers/Translation/index.js';
8
+ import { ChangedDocuments } from '../ChangedDocuments/index.js';
9
+ import { DiscardChangesButton } from '../DiscardChangesButton/index.js';
10
+ import { MergeChangesButton } from '../MergeChangesButton/index.js';
11
+ import { MergeLedger } from '../MergeLedger/index.js';
12
+ import { ScheduledMerges } from '../ScheduledMerges/index.js';
13
+ const baseClass = 'branch-changes';
14
+ /**
15
+ * The branch's changes, and the action that applies them.
16
+ *
17
+ * The two live in one client component because the selection connects them: the
18
+ * checkboxes decide what "merge" means, so the state cannot sit inside the list
19
+ * while the button sits outside it.
20
+ */
21
+ export const BranchChanges = ({
22
+ branchID,
23
+ branchName,
24
+ branchSlug,
25
+ changes,
26
+ historyPage = 1,
27
+ historyTotalPages = 1,
28
+ isClosed = false,
29
+ mergeEvents = [],
30
+ scheduledMerges = []
31
+ }) => {
32
+ const {
33
+ t
34
+ } = useTranslation();
35
+ // Everything selected to begin with: the common intent is to merge the branch,
36
+ // and deselecting the exceptions is less work than selecting the rule.
37
+ const [selected, setSelected] = useState(() => new Set(changes.map(c => c.id)));
38
+ const toggleAll = useCallback(() => {
39
+ setSelected(prev => prev.size === changes.length ? new Set() : new Set(changes.map(c_0 => c_0.id)));
40
+ }, [changes]);
41
+ const toggleSelected = useCallback(id => {
42
+ setSelected(prev_0 => {
43
+ const next = new Set(prev_0);
44
+ if (next.has(id)) {
45
+ next.delete(id);
46
+ } else {
47
+ next.add(id);
48
+ }
49
+ return next;
50
+ });
51
+ }, []);
52
+ // Undefined when everything is selected, which the endpoint reads as "apply
53
+ // every pending change" — the same outcome, but it keeps the merge honest if a
54
+ // change lands between this page render and the merge.
55
+ const selectedChangeIDs = useMemo(() => selected.size === changes.length ? undefined : [...selected], [changes.length, selected]);
56
+ // No `reviewURL`: this is the page one would link to. The changes are already read
57
+ // here, so the modal describes the merge without a request of its own — and it
58
+ // describes the *selection*, which is what will actually be applied.
59
+ const mergeTarget = useMemo(() => ({
60
+ branchID,
61
+ branchName,
62
+ branchSlug,
63
+ changes: changes.filter(change => selected.has(change.id)),
64
+ selectedChangeIDs,
65
+ totalChanges: changes.length
66
+ }), [branchID, branchName, branchSlug, changes, selected, selectedChangeIDs]);
67
+ const hasPending = changes.length > 0;
68
+ const hasHistory = mergeEvents.length > 0;
69
+ // Labelled as soon as more than one of the three is on screen; a lone section is
70
+ // already named by the heading above it.
71
+ const showSectionHeadings = [hasPending, hasHistory, scheduledMerges.length > 0].filter(Boolean).length > 1;
72
+ return /*#__PURE__*/_jsxs(React.Fragment, {
73
+ children: [/*#__PURE__*/_jsxs("div", {
74
+ className: `${baseClass}__controls`,
75
+ children: [/*#__PURE__*/_jsx("h2", {
76
+ className: `${baseClass}__title`,
77
+ children: hasPending ? t('branching:reviewingChangedDocuments') : hasHistory ? t('branching:branchHistory') : t('branching:reviewingChangedDocuments')
78
+ }), hasPending && !isClosed && /*#__PURE__*/_jsxs("div", {
79
+ className: `${baseClass}__actions`,
80
+ children: [/*#__PURE__*/_jsx(DiscardChangesButton, {
81
+ branchID: branchID,
82
+ selectedChangeIDs: selectedChangeIDs,
83
+ totalChanges: changes.length
84
+ }), /*#__PURE__*/_jsx(MergeChangesButton, {
85
+ disabled: !selected.size,
86
+ target: mergeTarget
87
+ })]
88
+ })]
89
+ }), /*#__PURE__*/_jsxs(Gutter, {
90
+ className: baseClass,
91
+ children: [scheduledMerges.length > 0 && /*#__PURE__*/_jsxs("section", {
92
+ className: `${baseClass}__section`,
93
+ children: [showSectionHeadings && /*#__PURE__*/_jsx("h3", {
94
+ className: `${baseClass}__section-title`,
95
+ children: t('branching:scheduledMerges')
96
+ }), /*#__PURE__*/_jsx(ScheduledMerges, {
97
+ branchID: branchID,
98
+ branchSlug: branchSlug,
99
+ schedules: scheduledMerges
100
+ })]
101
+ }), hasPending && /*#__PURE__*/_jsxs("section", {
102
+ className: `${baseClass}__section`,
103
+ children: [showSectionHeadings && /*#__PURE__*/_jsx("h3", {
104
+ className: `${baseClass}__section-title`,
105
+ children: t('branching:currentChanges')
106
+ }), /*#__PURE__*/_jsx(ChangedDocuments, {
107
+ branch: branchSlug,
108
+ changes: changes,
109
+ selected: selected,
110
+ toggleAll: toggleAll,
111
+ toggleSelected: toggleSelected
112
+ })]
113
+ }), hasHistory && /*#__PURE__*/_jsxs("section", {
114
+ className: `${baseClass}__section`,
115
+ children: [showSectionHeadings && /*#__PURE__*/_jsx("h3", {
116
+ className: `${baseClass}__section-title`,
117
+ children: t('branching:mergeHistory')
118
+ }), isClosed && /*#__PURE__*/_jsx("p", {
119
+ className: `${baseClass}__closed`,
120
+ children: t('branching:branchClosed')
121
+ }), /*#__PURE__*/_jsx(MergeLedger, {
122
+ events: mergeEvents
123
+ }), historyTotalPages > 1 && /*#__PURE__*/_jsxs("nav", {
124
+ className: `${baseClass}__history-pages`,
125
+ children: [/*#__PURE__*/_jsx(Link, {
126
+ "aria-disabled": historyPage <= 1,
127
+ className: `${baseClass}__history-page`,
128
+ href: `?historyPage=${historyPage - 1}`,
129
+ children: t('general:previous')
130
+ }), /*#__PURE__*/_jsx("span", {
131
+ className: `${baseClass}__history-position`,
132
+ children: t('branching:historyPageOf', {
133
+ page: historyPage,
134
+ total: historyTotalPages
135
+ })
136
+ }), /*#__PURE__*/_jsx(Link, {
137
+ "aria-disabled": historyPage >= historyTotalPages,
138
+ className: `${baseClass}__history-page`,
139
+ href: `?historyPage=${historyPage + 1}`,
140
+ children: t('general:next')
141
+ })]
142
+ })]
143
+ }), !hasPending && !hasHistory && /*#__PURE__*/_jsx("p", {
144
+ className: `${baseClass}__empty`,
145
+ children: t('branching:noChangesYet')
146
+ })]
147
+ })]
148
+ });
149
+ };
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["React","useCallback","useMemo","useState","Gutter","Link","useTranslation","ChangedDocuments","DiscardChangesButton","MergeChangesButton","MergeLedger","ScheduledMerges","baseClass","BranchChanges","branchID","branchName","branchSlug","changes","historyPage","historyTotalPages","isClosed","mergeEvents","scheduledMerges","t","selected","setSelected","Set","map","c","id","toggleAll","prev","size","length","toggleSelected","next","has","delete","add","selectedChangeIDs","undefined","mergeTarget","filter","change","totalChanges","hasPending","hasHistory","showSectionHeadings","Boolean","_jsxs","Fragment","className","_jsx","disabled","target","schedules","branch","events","href","page","total"],"sources":["../../../../src/views/Branch/BranchChanges/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { useCallback, useMemo, useState } from 'react'\n\nimport type { BranchChange } from '../ChangedDocuments/index.js'\nimport type { MergeEvent } from '../MergeLedger/index.js'\nimport type { ScheduledMerge } from '../ScheduledMerges/index.js'\n\nimport { Gutter } from '../../../elements/Gutter/index.js'\nimport { Link } from '../../../elements/Link/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { ChangedDocuments } from '../ChangedDocuments/index.js'\nimport { DiscardChangesButton } from '../DiscardChangesButton/index.js'\nimport { MergeChangesButton } from '../MergeChangesButton/index.js'\nimport { MergeLedger } from '../MergeLedger/index.js'\nimport { ScheduledMerges } from '../ScheduledMerges/index.js'\n\nconst baseClass = 'branch-changes'\n\n/**\n * The branch's changes, and the action that applies them.\n *\n * The two live in one client component because the selection connects them: the\n * checkboxes decide what \"merge\" means, so the state cannot sit inside the list\n * while the button sits outside it.\n */\nexport const BranchChanges: React.FC<{\n branchID: number | string\n branchName: string\n branchSlug: string\n changes: BranchChange[]\n historyPage?: number\n historyTotalPages?: number\n isClosed?: boolean\n mergeEvents?: MergeEvent[]\n scheduledMerges?: ScheduledMerge[]\n}> = ({\n branchID,\n branchName,\n branchSlug,\n changes,\n historyPage = 1,\n historyTotalPages = 1,\n isClosed = false,\n mergeEvents = [],\n scheduledMerges = [],\n}) => {\n const { t } = useTranslation()\n\n // Everything selected to begin with: the common intent is to merge the branch,\n // and deselecting the exceptions is less work than selecting the rule.\n const [selected, setSelected] = useState<Set<string>>(() => new Set(changes.map((c) => c.id)))\n\n const toggleAll = useCallback(() => {\n setSelected((prev) =>\n prev.size === changes.length ? new Set() : new Set(changes.map((c) => c.id)),\n )\n }, [changes])\n\n const toggleSelected = useCallback((id: string) => {\n setSelected((prev) => {\n const next = new Set(prev)\n\n if (next.has(id)) {\n next.delete(id)\n } else {\n next.add(id)\n }\n\n return next\n })\n }, [])\n\n // Undefined when everything is selected, which the endpoint reads as \"apply\n // every pending change\" — the same outcome, but it keeps the merge honest if a\n // change lands between this page render and the merge.\n const selectedChangeIDs = useMemo(\n () => (selected.size === changes.length ? undefined : [...selected]),\n [changes.length, selected],\n )\n\n // No `reviewURL`: this is the page one would link to. The changes are already read\n // here, so the modal describes the merge without a request of its own — and it\n // describes the *selection*, which is what will actually be applied.\n const mergeTarget = useMemo(\n () => ({\n branchID,\n branchName,\n branchSlug,\n changes: changes.filter((change) => selected.has(change.id)),\n selectedChangeIDs,\n totalChanges: changes.length,\n }),\n [branchID, branchName, branchSlug, changes, selected, selectedChangeIDs],\n )\n\n const hasPending = changes.length > 0\n const hasHistory = mergeEvents.length > 0\n // Labelled as soon as more than one of the three is on screen; a lone section is\n // already named by the heading above it.\n const showSectionHeadings =\n [hasPending, hasHistory, scheduledMerges.length > 0].filter(Boolean).length > 1\n\n return (\n <React.Fragment>\n {/* Full-bleed and bordered like `doc-controls`, the bar this one sits below,\n rather than inset with the list it heads. */}\n <div className={`${baseClass}__controls`}>\n {/* Named for what the screen is, not for what happens to be on it. With\n nothing pending, this is the branch's history — a heading that describes\n the last merge event would be a caption pretending to be a title. */}\n <h2 className={`${baseClass}__title`}>\n {hasPending\n ? t('branching:reviewingChangedDocuments')\n : hasHistory\n ? t('branching:branchHistory')\n : t('branching:reviewingChangedDocuments')}\n </h2>\n {/* Closed branches take nothing further, and a branch with nothing pending\n has nothing to take — in both cases the buttons would be a dead end.\n Discard sits beside merge and is scoped by the same checkboxes: the two\n are the same decision about the same set, pointed in opposite directions. */}\n {hasPending && !isClosed && (\n <div className={`${baseClass}__actions`}>\n <DiscardChangesButton\n branchID={branchID}\n selectedChangeIDs={selectedChangeIDs}\n totalChanges={changes.length}\n />\n <MergeChangesButton disabled={!selected.size} target={mergeTarget} />\n </div>\n )}\n </div>\n <Gutter className={baseClass}>\n {/* Above everything, because it changes what the rest of the page means: the\n pending changes below are no longer only a proposal, they have a date. */}\n {scheduledMerges.length > 0 && (\n <section className={`${baseClass}__section`}>\n {showSectionHeadings && (\n <h3 className={`${baseClass}__section-title`}>{t('branching:scheduledMerges')}</h3>\n )}\n <ScheduledMerges\n branchID={branchID}\n branchSlug={branchSlug}\n schedules={scheduledMerges}\n />\n </section>\n )}\n\n {/* Both at once when both exist. Merging does not end a branch (§16), so a\n branch that has merged and been worked on again has two things to say —\n and replacing the history with the new work hid everything the branch had\n already done. Labelled only when both are present: with one section the\n heading above already names it. */}\n {hasPending && (\n <section className={`${baseClass}__section`}>\n {showSectionHeadings && (\n <h3 className={`${baseClass}__section-title`}>{t('branching:currentChanges')}</h3>\n )}\n <ChangedDocuments\n branch={branchSlug}\n changes={changes}\n selected={selected}\n toggleAll={toggleAll}\n toggleSelected={toggleSelected}\n />\n </section>\n )}\n\n {hasHistory && (\n <section className={`${baseClass}__section`}>\n {showSectionHeadings && (\n <h3 className={`${baseClass}__section-title`}>{t('branching:mergeHistory')}</h3>\n )}\n {isClosed && <p className={`${baseClass}__closed`}>{t('branching:branchClosed')}</p>}\n <MergeLedger events={mergeEvents} />\n {historyTotalPages > 1 && (\n <nav className={`${baseClass}__history-pages`}>\n <Link\n aria-disabled={historyPage <= 1}\n className={`${baseClass}__history-page`}\n href={`?historyPage=${historyPage - 1}`}\n >\n {t('general:previous')}\n </Link>\n <span className={`${baseClass}__history-position`}>\n {t('branching:historyPageOf', { page: historyPage, total: historyTotalPages })}\n </span>\n <Link\n aria-disabled={historyPage >= historyTotalPages}\n className={`${baseClass}__history-page`}\n href={`?historyPage=${historyPage + 1}`}\n >\n {t('general:next')}\n </Link>\n </nav>\n )}\n </section>\n )}\n\n {!hasPending && !hasHistory && (\n <p className={`${baseClass}__empty`}>{t('branching:noChangesYet')}</p>\n )}\n </Gutter>\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,118 @@
1
+ @layer payload-default {
2
+ .changed-docs__controls {
3
+ display: flex;
4
+ align-items: center;
5
+ justify-content: space-between;
6
+ gap: var(--spacer-2);
7
+ margin-block-end: var(--spacer-2);
8
+ }
9
+
10
+ .changed-docs__count {
11
+ color: var(--color-text-secondary);
12
+ }
13
+
14
+ .changed-docs__list {
15
+ display: flex;
16
+ flex-direction: column;
17
+ gap: var(--spacer-1);
18
+ margin: 0;
19
+ padding: 0;
20
+ list-style: none;
21
+ }
22
+
23
+ .changed-docs__row {
24
+ border: var(--stroke-width-small) solid var(--color-border);
25
+ border-radius: var(--radius-medium);
26
+ overflow: hidden;
27
+ }
28
+
29
+ .changed-docs__header {
30
+ position: relative;
31
+ display: flex;
32
+ align-items: center;
33
+ background: var(--color-bg-secondary);
34
+ cursor: pointer;
35
+
36
+ &:hover {
37
+ background: var(--color-bg-secondary-hover);
38
+ }
39
+ }
40
+
41
+ /* Covers the header so the whole row is the control. Transparent text rather
42
+ than hidden, so it still carries the row's accessible name. */
43
+ .changed-docs__toggle {
44
+ position: absolute;
45
+ inset: 0;
46
+ text-align: start;
47
+ color: transparent;
48
+ background: none;
49
+ border: none;
50
+ border-radius: inherit;
51
+ cursor: pointer;
52
+ outline: none;
53
+
54
+ &:focus-visible {
55
+ outline: var(--accessibility-outline);
56
+ outline-offset: -1px;
57
+ }
58
+
59
+ span {
60
+ user-select: none;
61
+ }
62
+ }
63
+
64
+ .changed-docs__header-content {
65
+ pointer-events: none;
66
+ display: flex;
67
+ align-items: center;
68
+ gap: var(--spacer-2);
69
+ flex: 1 1 auto;
70
+ min-width: 0;
71
+ padding: var(--spacer-1-5) var(--spacer-2);
72
+ }
73
+
74
+ /* The one part of the header that is not the toggle. */
75
+ .changed-docs__select {
76
+ position: relative;
77
+ z-index: 1;
78
+ display: flex;
79
+ align-items: center;
80
+ pointer-events: all;
81
+ }
82
+
83
+ /* The header it sits on is `--color-bg-secondary`, which is also the
84
+ light-gray pill's background, so give it its own edge to read against. */
85
+ .changed-docs__entity {
86
+ background: var(--color-bg);
87
+ box-shadow: inset 0 0 0 var(--stroke-width-small) var(--color-border);
88
+ }
89
+
90
+ /* Leading the row, so a long changeset can be scanned down a single column of
91
+ operations. Sized by its label like the entity pill beside it — a fixed width
92
+ to align the columns made the three verbs read as buttons. */
93
+ .changed-docs__operation {
94
+ flex-shrink: 0;
95
+ }
96
+
97
+ .changed-docs__title {
98
+ flex: 1 1 auto;
99
+ min-width: 0;
100
+ overflow: hidden;
101
+ text-overflow: ellipsis;
102
+ white-space: nowrap;
103
+ }
104
+
105
+ .changed-docs__indicator {
106
+ flex-shrink: 0;
107
+ color: var(--color-icon);
108
+ }
109
+
110
+ .changed-docs__diff {
111
+ padding: var(--spacer-3);
112
+ border-block-start: var(--stroke-width-small) solid var(--color-border);
113
+ }
114
+
115
+ .changed-docs__error {
116
+ color: var(--color-text-secondary);
117
+ }
118
+ }
@@ -0,0 +1,34 @@
1
+ import type React from 'react';
2
+ import './index.css';
3
+ export type BranchChange = {
4
+ /** Absent for a global, which has one of itself and so needs no document ID. */
5
+ collectionSlug?: string;
6
+ docID?: number | string;
7
+ globalSlug?: string;
8
+ id: string;
9
+ operation: 'create' | 'delete' | 'update';
10
+ };
11
+ /**
12
+ * The changed documents on a branch, one collapsible row each.
13
+ *
14
+ * Diffs are fetched per row rather than with the page. A branch can hold hundreds
15
+ * of changes and each diff is a full field-tree render on the server, so building
16
+ * them all up front would dominate the page load for a list most of which is never
17
+ * opened. A row loads when it is expanded, and is prefetched once it scrolls into
18
+ * view so that opening one feels instant.
19
+ */
20
+ export declare const ChangedDocuments: React.FC<{
21
+ branch: string;
22
+ changes: BranchChange[];
23
+ /**
24
+ * Off for a list that is describing rather than deciding — a scheduled merge's
25
+ * documents, where what merges is already settled. The rows and their diffs are
26
+ * identical either way; only the choosing is dropped.
27
+ */
28
+ selectable?: boolean;
29
+ /** Owned by `BranchChanges`, because the merge action needs to read it too. */
30
+ selected?: Set<string>;
31
+ toggleAll?: () => void;
32
+ toggleSelected?: (id: string) => void;
33
+ }>;
34
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Branch/ChangedDocuments/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAc9B,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,YAAY,GAAG;IACzB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAC1C,CAAA;AAaD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,cAAc,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;CACtC,CAuHA,CAAA"}
@@ -0,0 +1,233 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { getTranslation } from '@payloadcms/translations';
5
+ import { useCallback, useEffect, useRef, useState } from 'react';
6
+ import { Pill } from '../../../elements/Pill/index.js';
7
+ import { ShimmerEffect } from '../../../elements/ShimmerEffect/index.js';
8
+ import { CheckboxInput } from '../../../fields/Checkbox/Input.js';
9
+ import { ChevronIcon } from '../../../icons/Chevron/index.js';
10
+ import { useConfig } from '../../../providers/Config/index.js';
11
+ import { useServerFunctions } from '../../../providers/ServerFunctions/index.js';
12
+ import { useTranslation } from '../../../providers/Translation/index.js';
13
+ import './index.css';
14
+ const baseClass = 'changed-docs';
15
+ const operationPillStyle = {
16
+ create: 'success',
17
+ delete: 'error',
18
+ update: 'warning'
19
+ };
20
+ /**
21
+ * The changed documents on a branch, one collapsible row each.
22
+ *
23
+ * Diffs are fetched per row rather than with the page. A branch can hold hundreds
24
+ * of changes and each diff is a full field-tree render on the server, so building
25
+ * them all up front would dominate the page load for a list most of which is never
26
+ * opened. A row loads when it is expanded, and is prefetched once it scrolls into
27
+ * view so that opening one feels instant.
28
+ */
29
+ export const ChangedDocuments = ({
30
+ branch,
31
+ changes,
32
+ selectable = true,
33
+ selected = emptySelection,
34
+ toggleAll,
35
+ toggleSelected
36
+ }) => {
37
+ const {
38
+ serverFunction
39
+ } = useServerFunctions();
40
+ const {
41
+ getEntityConfig
42
+ } = useConfig();
43
+ const {
44
+ i18n,
45
+ t
46
+ } = useTranslation();
47
+ const [expanded, setExpanded] = useState(() => new Set());
48
+ const [loaded, setLoaded] = useState({});
49
+ // Read inside the loader without making it a dependency, so a completed load
50
+ // doesn't re-create the callback and re-trigger observers.
51
+ const loadedRef = useRef(loaded);
52
+ loadedRef.current = loaded;
53
+ const load = useCallback(async change => {
54
+ if (loadedRef.current[change.id]) {
55
+ return;
56
+ }
57
+ setLoaded(prev => ({
58
+ ...prev,
59
+ [change.id]: {
60
+ status: 'loading'
61
+ }
62
+ }));
63
+ try {
64
+ const result = await serverFunction({
65
+ name: 'render-branch-diff',
66
+ args: {
67
+ branch,
68
+ collectionSlug: change.collectionSlug,
69
+ docID: change.docID,
70
+ globalSlug: change.globalSlug,
71
+ operation: change.operation
72
+ }
73
+ });
74
+ setLoaded(prev_1 => ({
75
+ ...prev_1,
76
+ [change.id]: {
77
+ result,
78
+ status: 'ready'
79
+ }
80
+ }));
81
+ } catch (_err) {
82
+ setLoaded(prev_0 => ({
83
+ ...prev_0,
84
+ [change.id]: {
85
+ status: 'error'
86
+ }
87
+ }));
88
+ }
89
+ }, [branch, serverFunction]);
90
+ const allSelected = selected.size === changes.length && changes.length > 0;
91
+ const toggleExpanded = useCallback(change_0 => {
92
+ // Outside the updater: a state updater must be pure, and React may run it
93
+ // during another component's render, which puts `load`'s `setLoaded` mid-render.
94
+ const willExpand = !expanded.has(change_0.id);
95
+ setExpanded(prev_2 => {
96
+ const next = new Set(prev_2);
97
+ if (next.has(change_0.id)) {
98
+ next.delete(change_0.id);
99
+ } else {
100
+ next.add(change_0.id);
101
+ }
102
+ return next;
103
+ });
104
+ if (willExpand) {
105
+ void load(change_0);
106
+ }
107
+ }, [expanded, load]);
108
+ return /*#__PURE__*/_jsxs("div", {
109
+ className: baseClass,
110
+ children: [/*#__PURE__*/_jsxs("div", {
111
+ className: `${baseClass}__controls`,
112
+ children: [selectable && /*#__PURE__*/_jsx(CheckboxInput, {
113
+ checked: allSelected,
114
+ id: `${baseClass}-select-all`,
115
+ label: t('general:selectAll', {
116
+ count: changes.length,
117
+ label: t('general:documents')
118
+ }),
119
+ onToggle: toggleAll,
120
+ partialChecked: !allSelected && selected.size > 0
121
+ }), /*#__PURE__*/_jsxs("span", {
122
+ className: `${baseClass}__count`,
123
+ children: [t('branching:changedDocuments'), " ", changes.length]
124
+ })]
125
+ }), /*#__PURE__*/_jsx("ul", {
126
+ className: `${baseClass}__list`,
127
+ children: changes.map(change_1 => /*#__PURE__*/_jsx(ChangedDocumentRow, {
128
+ change: change_1,
129
+ collectionLabel: getTranslation(change_1.globalSlug ? getEntityConfig({
130
+ globalSlug: change_1.globalSlug
131
+ })?.label ?? change_1.globalSlug : getEntityConfig({
132
+ collectionSlug: change_1.collectionSlug
133
+ })?.labels?.singular ?? change_1.collectionSlug, i18n),
134
+ isExpanded: expanded.has(change_1.id),
135
+ isSelected: selected.has(change_1.id),
136
+ load: load,
137
+ selectable: selectable,
138
+ state: loaded[change_1.id],
139
+ toggleExpanded: toggleExpanded,
140
+ toggleSelected: toggleSelected
141
+ }, change_1.id))
142
+ })]
143
+ });
144
+ };
145
+ const emptySelection = new Set();
146
+ const ChangedDocumentRow = ({
147
+ change,
148
+ collectionLabel,
149
+ isExpanded,
150
+ isSelected,
151
+ load,
152
+ selectable,
153
+ state,
154
+ toggleExpanded,
155
+ toggleSelected
156
+ }) => {
157
+ const {
158
+ t
159
+ } = useTranslation();
160
+ const rowRef = useRef(null);
161
+ // Prefetch on approach, so the diff is usually already there by the time the row
162
+ // is opened. Disconnects after firing once — this is a warm-up, not a subscription.
163
+ useEffect(() => {
164
+ const node = rowRef.current;
165
+ if (!node || state) {
166
+ return;
167
+ }
168
+ const observer = new IntersectionObserver(entries => {
169
+ if (entries.some(entry => entry.isIntersecting)) {
170
+ observer.disconnect();
171
+ void load(change);
172
+ }
173
+ }, {
174
+ rootMargin: '200px'
175
+ });
176
+ observer.observe(node);
177
+ return () => observer.disconnect();
178
+ }, [change, load, state]);
179
+ const title = state?.result?.title ?? String(change.docID);
180
+ return /*#__PURE__*/_jsxs("li", {
181
+ className: `${baseClass}__row`,
182
+ ref: rowRef,
183
+ children: [/*#__PURE__*/_jsxs("div", {
184
+ className: `${baseClass}__header`,
185
+ children: [/*#__PURE__*/_jsx("button", {
186
+ "aria-expanded": isExpanded,
187
+ className: `${baseClass}__toggle`,
188
+ onClick: () => toggleExpanded(change),
189
+ type: "button",
190
+ children: /*#__PURE__*/_jsx("span", {
191
+ children: title
192
+ })
193
+ }), /*#__PURE__*/_jsxs("div", {
194
+ className: `${baseClass}__header-content`,
195
+ children: [selectable && /*#__PURE__*/_jsx("span", {
196
+ className: `${baseClass}__select`,
197
+ children: /*#__PURE__*/_jsx(CheckboxInput, {
198
+ checked: isSelected,
199
+ id: `${baseClass}-${change.id}`,
200
+ label: "",
201
+ onToggle: () => toggleSelected?.(change.id)
202
+ })
203
+ }), /*#__PURE__*/_jsx(Pill, {
204
+ className: `${baseClass}__operation`,
205
+ pillStyle: operationPillStyle[change.operation],
206
+ size: "small",
207
+ children: t(`branching:operation_${change.operation}`)
208
+ }), /*#__PURE__*/_jsx(Pill, {
209
+ className: `${baseClass}__entity`,
210
+ pillStyle: "light-gray",
211
+ size: "small",
212
+ children: collectionLabel
213
+ }), /*#__PURE__*/_jsx("span", {
214
+ className: `${baseClass}__title`,
215
+ children: title
216
+ }), /*#__PURE__*/_jsx(ChevronIcon, {
217
+ className: `${baseClass}__indicator`,
218
+ direction: isExpanded ? 'up' : 'down',
219
+ size: 16
220
+ })]
221
+ })]
222
+ }), isExpanded ? /*#__PURE__*/_jsxs("div", {
223
+ className: `${baseClass}__diff`,
224
+ children: [state?.status === 'ready' ? state.result?.diff : null, state?.status === 'loading' || !state ? /*#__PURE__*/_jsx(ShimmerEffect, {
225
+ height: "3rem"
226
+ }) : null, state?.status === 'error' ? /*#__PURE__*/_jsx("p", {
227
+ className: `${baseClass}__error`,
228
+ children: t('error:unknown')
229
+ }) : null]
230
+ }) : null]
231
+ });
232
+ };
233
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","useCallback","useEffect","useRef","useState","Pill","ShimmerEffect","CheckboxInput","ChevronIcon","useConfig","useServerFunctions","useTranslation","baseClass","operationPillStyle","create","delete","update","ChangedDocuments","branch","changes","selectable","selected","emptySelection","toggleAll","toggleSelected","serverFunction","getEntityConfig","i18n","t","expanded","setExpanded","Set","loaded","setLoaded","loadedRef","current","load","change","id","prev","status","result","name","args","collectionSlug","docID","globalSlug","operation","_err","allSelected","size","length","toggleExpanded","willExpand","has","next","add","_jsxs","className","_jsx","checked","label","count","onToggle","partialChecked","map","ChangedDocumentRow","collectionLabel","labels","singular","isExpanded","isSelected","state","rowRef","node","observer","IntersectionObserver","entries","some","entry","isIntersecting","disconnect","rootMargin","observe","title","String","ref","onClick","type","pillStyle","direction","diff","height"],"sources":["../../../../src/views/Branch/ChangedDocuments/index.tsx"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { RenderBranchDiffResult } from '../renderBranchDiff.js'\n\nimport { Pill } from '../../../elements/Pill/index.js'\nimport { ShimmerEffect } from '../../../elements/ShimmerEffect/index.js'\nimport { CheckboxInput } from '../../../fields/Checkbox/Input.js'\nimport { ChevronIcon } from '../../../icons/Chevron/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useServerFunctions } from '../../../providers/ServerFunctions/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport './index.css'\n\nconst baseClass = 'changed-docs'\n\nexport type BranchChange = {\n /** Absent for a global, which has one of itself and so needs no document ID. */\n collectionSlug?: string\n docID?: number | string\n globalSlug?: string\n id: string\n operation: 'create' | 'delete' | 'update'\n}\n\ntype LoadState = {\n result?: RenderBranchDiffResult\n status: 'error' | 'loading' | 'ready'\n}\n\nconst operationPillStyle = {\n create: 'success',\n delete: 'error',\n update: 'warning',\n} as const\n\n/**\n * The changed documents on a branch, one collapsible row each.\n *\n * Diffs are fetched per row rather than with the page. A branch can hold hundreds\n * of changes and each diff is a full field-tree render on the server, so building\n * them all up front would dominate the page load for a list most of which is never\n * opened. A row loads when it is expanded, and is prefetched once it scrolls into\n * view so that opening one feels instant.\n */\nexport const ChangedDocuments: React.FC<{\n branch: string\n changes: BranchChange[]\n /**\n * Off for a list that is describing rather than deciding — a scheduled merge's\n * documents, where what merges is already settled. The rows and their diffs are\n * identical either way; only the choosing is dropped.\n */\n selectable?: boolean\n /** Owned by `BranchChanges`, because the merge action needs to read it too. */\n selected?: Set<string>\n toggleAll?: () => void\n toggleSelected?: (id: string) => void\n}> = ({\n branch,\n changes,\n selectable = true,\n selected = emptySelection,\n toggleAll,\n toggleSelected,\n}) => {\n const { serverFunction } = useServerFunctions()\n const { getEntityConfig } = useConfig()\n const { i18n, t } = useTranslation()\n\n const [expanded, setExpanded] = useState<Set<string>>(() => new Set())\n const [loaded, setLoaded] = useState<Record<string, LoadState>>({})\n\n // Read inside the loader without making it a dependency, so a completed load\n // doesn't re-create the callback and re-trigger observers.\n const loadedRef = useRef(loaded)\n loadedRef.current = loaded\n\n const load = useCallback(\n async (change: BranchChange) => {\n if (loadedRef.current[change.id]) {\n return\n }\n\n setLoaded((prev) => ({ ...prev, [change.id]: { status: 'loading' } }))\n\n try {\n const result = (await serverFunction({\n name: 'render-branch-diff',\n args: {\n branch,\n collectionSlug: change.collectionSlug,\n docID: change.docID,\n globalSlug: change.globalSlug,\n operation: change.operation,\n },\n })) as RenderBranchDiffResult\n\n setLoaded((prev) => ({ ...prev, [change.id]: { result, status: 'ready' } }))\n } catch (_err) {\n setLoaded((prev) => ({ ...prev, [change.id]: { status: 'error' } }))\n }\n },\n [branch, serverFunction],\n )\n\n const allSelected = selected.size === changes.length && changes.length > 0\n\n const toggleExpanded = useCallback(\n (change: BranchChange) => {\n // Outside the updater: a state updater must be pure, and React may run it\n // during another component's render, which puts `load`'s `setLoaded` mid-render.\n const willExpand = !expanded.has(change.id)\n\n setExpanded((prev) => {\n const next = new Set(prev)\n\n if (next.has(change.id)) {\n next.delete(change.id)\n } else {\n next.add(change.id)\n }\n\n return next\n })\n\n if (willExpand) {\n void load(change)\n }\n },\n [expanded, load],\n )\n\n return (\n <div className={baseClass}>\n <div className={`${baseClass}__controls`}>\n {selectable && (\n <CheckboxInput\n checked={allSelected}\n id={`${baseClass}-select-all`}\n label={t('general:selectAll', {\n count: changes.length,\n label: t('general:documents'),\n })}\n onToggle={toggleAll}\n partialChecked={!allSelected && selected.size > 0}\n />\n )}\n <span className={`${baseClass}__count`}>\n {t('branching:changedDocuments')} {changes.length}\n </span>\n </div>\n\n <ul className={`${baseClass}__list`}>\n {changes.map((change) => (\n <ChangedDocumentRow\n change={change}\n collectionLabel={getTranslation(\n change.globalSlug\n ? (getEntityConfig({ globalSlug: change.globalSlug })?.label ?? change.globalSlug)\n : (getEntityConfig({ collectionSlug: change.collectionSlug })?.labels?.singular ??\n change.collectionSlug),\n i18n,\n )}\n isExpanded={expanded.has(change.id)}\n isSelected={selected.has(change.id)}\n key={change.id}\n load={load}\n selectable={selectable}\n state={loaded[change.id]}\n toggleExpanded={toggleExpanded}\n toggleSelected={toggleSelected}\n />\n ))}\n </ul>\n </div>\n )\n}\n\nconst emptySelection: Set<string> = new Set()\n\nconst ChangedDocumentRow: React.FC<{\n change: BranchChange\n collectionLabel: string\n isExpanded: boolean\n isSelected: boolean\n load: (change: BranchChange) => Promise<void>\n selectable: boolean\n state?: LoadState\n toggleExpanded: (change: BranchChange) => void\n toggleSelected?: (id: string) => void\n}> = ({\n change,\n collectionLabel,\n isExpanded,\n isSelected,\n load,\n selectable,\n state,\n toggleExpanded,\n toggleSelected,\n}) => {\n const { t } = useTranslation()\n const rowRef = useRef<HTMLLIElement>(null)\n\n // Prefetch on approach, so the diff is usually already there by the time the row\n // is opened. Disconnects after firing once — this is a warm-up, not a subscription.\n useEffect(() => {\n const node = rowRef.current\n\n if (!node || state) {\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n if (entries.some((entry) => entry.isIntersecting)) {\n observer.disconnect()\n void load(change)\n }\n },\n { rootMargin: '200px' },\n )\n\n observer.observe(node)\n\n return () => observer.disconnect()\n }, [change, load, state])\n\n const title = state?.result?.title ?? String(change.docID)\n\n return (\n <li className={`${baseClass}__row`} ref={rowRef}>\n {/* The row opens from anywhere in its header. Following `Collapsible`: an\n overlay button takes the clicks, the header content sits above it with\n pointer events off, and the checkbox turns them back on for itself. */}\n <div className={`${baseClass}__header`}>\n <button\n aria-expanded={isExpanded}\n className={`${baseClass}__toggle`}\n onClick={() => toggleExpanded(change)}\n type=\"button\"\n >\n <span>{title}</span>\n </button>\n {/* Operation first, then entity, then title: the row reads as a sentence —\n \"Created Page — Spooky Exclusive\" — and the operation is what the eye\n scans a long changeset for, so it anchors the left edge where every\n row's copy starts at the same x. */}\n <div className={`${baseClass}__header-content`}>\n {selectable && (\n <span className={`${baseClass}__select`}>\n <CheckboxInput\n checked={isSelected}\n id={`${baseClass}-${change.id}`}\n label=\"\"\n onToggle={() => toggleSelected?.(change.id)}\n />\n </span>\n )}\n <Pill\n className={`${baseClass}__operation`}\n pillStyle={operationPillStyle[change.operation]}\n size=\"small\"\n >\n {t(`branching:operation_${change.operation}` as Parameters<typeof t>[0])}\n </Pill>\n <Pill className={`${baseClass}__entity`} pillStyle=\"light-gray\" size=\"small\">\n {collectionLabel}\n </Pill>\n <span className={`${baseClass}__title`}>{title}</span>\n <ChevronIcon\n className={`${baseClass}__indicator`}\n direction={isExpanded ? 'up' : 'down'}\n size={16}\n />\n </div>\n </div>\n\n {isExpanded ? (\n <div className={`${baseClass}__diff`}>\n {state?.status === 'ready' ? state.result?.diff : null}\n {state?.status === 'loading' || !state ? <ShimmerEffect height=\"3rem\" /> : null}\n {state?.status === 'error' ? (\n <p className={`${baseClass}__error`}>{t('error:unknown')}</p>\n ) : null}\n </div>\n ) : null}\n </li>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ /**
3
+ * Throws away branch work, at the same scope the merge button applies it.
4
+ *
5
+ * Scoped by the same checkboxes deliberately: "these are the changes I am looking
6
+ * at" should mean one thing on the page, whichever of the two actions follows. A
7
+ * confirmation stands in front of it because discarding is the one action here that
8
+ * destroys work rather than promoting it, and there is no undo.
9
+ */
10
+ export declare const DiscardChangesButton: React.FC<{
11
+ branchID: number | string;
12
+ /** Undefined means every pending change, matching the merge target's convention. */
13
+ selectedChangeIDs?: (number | string)[];
14
+ totalChanges: number;
15
+ }>;
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Branch/DiscardChangesButton/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAYpD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1C,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAA;IACzB,oFAAoF;IACpF,iBAAiB,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACvC,YAAY,EAAE,MAAM,CAAA;CACrB,CAwFA,CAAA"}