@payloadcms/ui 3.80.0-internal.21e9c47 → 3.80.0-internal.52ab774

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 (321) hide show
  1. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  2. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +53 -3
  3. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  4. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +541 -0
  5. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -0
  6. package/dist/elements/Combobox/index.d.ts.map +1 -1
  7. package/dist/elements/Combobox/index.js +1 -0
  8. package/dist/elements/Combobox/index.js.map +1 -1
  9. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -0
  10. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.js +5 -5
  11. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -0
  12. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.scss +1 -1
  13. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -0
  14. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.js +3 -3
  15. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -0
  16. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.scss +1 -1
  17. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.d.ts +1 -1
  18. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -0
  19. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.js +13 -10
  20. package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -0
  21. package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.d.ts +3 -0
  22. package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -0
  23. package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -0
  24. package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -0
  25. package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.js +6 -6
  26. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -0
  27. package/dist/elements/Hierarchy/DocHeaderButton/index.server.d.ts.map +1 -0
  28. package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.js +3 -3
  29. package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -0
  30. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.d.ts.map +1 -0
  31. package/dist/elements/Hierarchy/Drawer/fetchAncestorPath.js.map +1 -0
  32. package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.d.ts +3 -3
  33. package/dist/elements/Hierarchy/Drawer/index.d.ts.map +1 -0
  34. package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.js +4 -2
  35. package/dist/elements/Hierarchy/Drawer/index.js.map +1 -0
  36. package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.d.ts +4 -1
  37. package/dist/elements/Hierarchy/Drawer/types.d.ts.map +1 -0
  38. package/dist/elements/Hierarchy/Drawer/types.js.map +1 -0
  39. package/dist/elements/{HierarchyDrawer/index.d.ts → Hierarchy/Drawer/useHierarchyDrawer.d.ts} +1 -1
  40. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.d.ts.map +1 -0
  41. package/dist/elements/{HierarchyDrawer/index.js → Hierarchy/Drawer/useHierarchyDrawer.js} +10 -8
  42. package/dist/elements/Hierarchy/Drawer/useHierarchyDrawer.js.map +1 -0
  43. package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +1 -0
  44. package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.js +7 -16
  45. package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +1 -0
  46. package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.scss +1 -1
  47. package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -0
  48. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.js +17 -29
  49. package/dist/elements/Hierarchy/Field/index.client.js.map +1 -0
  50. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.scss +1 -1
  51. package/dist/elements/Hierarchy/Field/index.server.d.ts.map +1 -0
  52. package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.js +2 -2
  53. package/dist/elements/Hierarchy/Field/index.server.js.map +1 -0
  54. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts +4 -0
  55. package/dist/elements/Hierarchy/HydrateProvider/index.d.ts.map +1 -0
  56. package/dist/elements/Hierarchy/HydrateProvider/index.js +70 -0
  57. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -0
  58. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.d.ts +3 -3
  59. package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -0
  60. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.js +10 -10
  61. package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -0
  62. package/dist/elements/{MoveMany → Hierarchy/MoveMany}/index.scss +1 -1
  63. package/dist/elements/Hierarchy/Search/HierarchySearchInput.d.ts.map +1 -0
  64. package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.js +5 -5
  65. package/dist/elements/Hierarchy/Search/HierarchySearchInput.js.map +1 -0
  66. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.d.ts.map +1 -0
  67. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -0
  68. package/dist/elements/Hierarchy/Search/HierarchySearchResults.d.ts.map +1 -0
  69. package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.js +2 -2
  70. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -0
  71. package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -0
  72. package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.js +2 -2
  73. package/dist/elements/Hierarchy/Search/index.js.map +1 -0
  74. package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.scss +1 -1
  75. package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -0
  76. package/dist/elements/Hierarchy/Search/types.js.map +1 -0
  77. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -0
  78. package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.js +2 -2
  79. package/dist/elements/Hierarchy/Search/useHierarchySearch.js.map +1 -0
  80. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.d.ts +1 -0
  81. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -0
  82. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +194 -0
  83. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -0
  84. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -0
  85. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.js +20 -10
  86. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -0
  87. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.d.ts.map +1 -0
  88. package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/LoadMoreButton.js +1 -1
  89. package/dist/elements/Hierarchy/Tree/LoadMore/LoadMoreButton.js.map +1 -0
  90. package/dist/elements/Hierarchy/Tree/LoadMore/index.d.ts.map +1 -0
  91. package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.js +1 -1
  92. package/dist/elements/Hierarchy/Tree/LoadMore/index.js.map +1 -0
  93. package/dist/elements/Hierarchy/Tree/TreeConnector.d.ts.map +1 -0
  94. package/dist/elements/Hierarchy/Tree/TreeConnector.js.map +1 -0
  95. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -0
  96. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -0
  97. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +5 -0
  98. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -0
  99. package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.js +11 -4
  100. package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -0
  101. package/dist/elements/{Tree → Hierarchy/Tree}/TreeNode/index.scss +1 -1
  102. package/dist/elements/{HierarchyTree → Hierarchy/Tree}/index.d.ts +1 -0
  103. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -0
  104. package/dist/elements/Hierarchy/Tree/index.js +305 -0
  105. package/dist/elements/Hierarchy/Tree/index.js.map +1 -0
  106. package/dist/elements/{Tree → Hierarchy/Tree}/index.scss +2 -5
  107. package/dist/elements/{Tree → Hierarchy/Tree}/types.d.ts +31 -22
  108. package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -0
  109. package/dist/elements/Hierarchy/Tree/types.js.map +1 -0
  110. package/dist/elements/Hierarchy/Tree/useChildren.d.ts +32 -0
  111. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -0
  112. package/dist/elements/{Tree → Hierarchy/Tree}/useChildren.js +52 -32
  113. package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -0
  114. package/dist/elements/Link/index.d.ts.map +1 -1
  115. package/dist/elements/LoadMoreRow/index.js +1 -1
  116. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  117. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  118. package/dist/elements/PublishButton/index.js +3 -1
  119. package/dist/elements/PublishButton/index.js.map +1 -1
  120. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  121. package/dist/elements/RelationshipTable/index.js +14 -9
  122. package/dist/elements/RelationshipTable/index.js.map +1 -1
  123. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +1 -1
  124. package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
  125. package/dist/elements/Toasts/fieldErrors.d.ts +4 -0
  126. package/dist/elements/Toasts/fieldErrors.d.ts.map +1 -1
  127. package/dist/elements/Toasts/fieldErrors.js +4 -2
  128. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  129. package/dist/elements/Toasts/fieldErrors.spec.js +46 -0
  130. package/dist/elements/Toasts/fieldErrors.spec.js.map +1 -0
  131. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  132. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +8 -6
  133. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  134. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  135. package/dist/elements/WhereBuilder/field-types.js +2 -5
  136. package/dist/elements/WhereBuilder/field-types.js.map +1 -1
  137. package/dist/exports/client/{DatePicker-CL2EGBVQ.js → DatePicker-T2DMDMM5.js} +2 -2
  138. package/dist/exports/client/chunk-WDZJLNNB.js +29 -0
  139. package/dist/exports/client/{chunk-SH42NW5R.js.map → chunk-WDZJLNNB.js.map} +4 -4
  140. package/dist/exports/client/index.d.ts +11 -15
  141. package/dist/exports/client/index.d.ts.map +1 -1
  142. package/dist/exports/client/index.js +26 -26
  143. package/dist/exports/client/index.js.map +4 -4
  144. package/dist/exports/rsc/index.d.ts +3 -3
  145. package/dist/exports/rsc/index.d.ts.map +1 -1
  146. package/dist/exports/rsc/index.js +3 -3
  147. package/dist/exports/rsc/index.js.map +1 -1
  148. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  149. package/dist/forms/Form/mergeServerFormState.js +101 -24
  150. package/dist/forms/Form/mergeServerFormState.js.map +1 -1
  151. package/dist/icons/TableView/index.d.ts +3 -0
  152. package/dist/icons/TableView/index.d.ts.map +1 -0
  153. package/dist/icons/TableView/index.js +16 -0
  154. package/dist/icons/TableView/index.js.map +1 -0
  155. package/dist/providers/Hierarchy/index.d.ts.map +1 -1
  156. package/dist/providers/Hierarchy/index.js +29 -8
  157. package/dist/providers/Hierarchy/index.js.map +1 -1
  158. package/dist/providers/Hierarchy/types.d.ts +10 -5
  159. package/dist/providers/Hierarchy/types.d.ts.map +1 -1
  160. package/dist/providers/Hierarchy/types.js.map +1 -1
  161. package/dist/providers/SidebarTabs/index.d.ts +19 -0
  162. package/dist/providers/SidebarTabs/index.d.ts.map +1 -0
  163. package/dist/providers/SidebarTabs/index.js +24 -0
  164. package/dist/providers/SidebarTabs/index.js.map +1 -0
  165. package/dist/styles.css +1 -1
  166. package/dist/views/Edit/index.d.ts.map +1 -1
  167. package/dist/views/Edit/index.js +12 -3
  168. package/dist/views/Edit/index.js.map +1 -1
  169. package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
  170. package/dist/views/HierarchyList/DocumentListSelection/index.js +147 -86
  171. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  172. package/dist/views/HierarchyList/HierarchyListHeader/index.js +7 -6
  173. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  174. package/dist/views/HierarchyList/HierarchyTable/index.d.ts +7 -3
  175. package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
  176. package/dist/views/HierarchyList/HierarchyTable/index.js +19 -18
  177. package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
  178. package/dist/views/HierarchyList/index.d.ts.map +1 -1
  179. package/dist/views/HierarchyList/index.js +3 -1
  180. package/dist/views/HierarchyList/index.js.map +1 -1
  181. package/package.json +4 -4
  182. package/dist/elements/HierarchyButton/index.d.ts.map +0 -1
  183. package/dist/elements/HierarchyButton/index.js.map +0 -1
  184. package/dist/elements/HierarchyButton/index.server.d.ts.map +0 -1
  185. package/dist/elements/HierarchyButton/index.server.js.map +0 -1
  186. package/dist/elements/HierarchyColumnBrowser/Column/index.d.ts.map +0 -1
  187. package/dist/elements/HierarchyColumnBrowser/Column/index.js.map +0 -1
  188. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.d.ts.map +0 -1
  189. package/dist/elements/HierarchyColumnBrowser/ColumnItem/index.js.map +0 -1
  190. package/dist/elements/HierarchyColumnBrowser/index.d.ts.map +0 -1
  191. package/dist/elements/HierarchyColumnBrowser/index.js.map +0 -1
  192. package/dist/elements/HierarchyColumnBrowser/types.d.ts.map +0 -1
  193. package/dist/elements/HierarchyColumnBrowser/types.js.map +0 -1
  194. package/dist/elements/HierarchyDrawer/Drawer/index.d.ts.map +0 -1
  195. package/dist/elements/HierarchyDrawer/Drawer/index.js.map +0 -1
  196. package/dist/elements/HierarchyDrawer/fetchAncestorPath.d.ts.map +0 -1
  197. package/dist/elements/HierarchyDrawer/fetchAncestorPath.js.map +0 -1
  198. package/dist/elements/HierarchyDrawer/index.d.ts.map +0 -1
  199. package/dist/elements/HierarchyDrawer/index.js.map +0 -1
  200. package/dist/elements/HierarchyDrawer/types.d.ts.map +0 -1
  201. package/dist/elements/HierarchyDrawer/types.js.map +0 -1
  202. package/dist/elements/HierarchyField/SelectedHierarchies.d.ts.map +0 -1
  203. package/dist/elements/HierarchyField/SelectedHierarchies.js.map +0 -1
  204. package/dist/elements/HierarchyField/index.client.d.ts.map +0 -1
  205. package/dist/elements/HierarchyField/index.client.js.map +0 -1
  206. package/dist/elements/HierarchyField/index.server.d.ts.map +0 -1
  207. package/dist/elements/HierarchyField/index.server.js.map +0 -1
  208. package/dist/elements/HierarchySearch/HierarchySearchInput.d.ts.map +0 -1
  209. package/dist/elements/HierarchySearch/HierarchySearchInput.js.map +0 -1
  210. package/dist/elements/HierarchySearch/HierarchySearchResultItem.d.ts.map +0 -1
  211. package/dist/elements/HierarchySearch/HierarchySearchResultItem.js.map +0 -1
  212. package/dist/elements/HierarchySearch/HierarchySearchResults.d.ts.map +0 -1
  213. package/dist/elements/HierarchySearch/HierarchySearchResults.js.map +0 -1
  214. package/dist/elements/HierarchySearch/index.d.ts.map +0 -1
  215. package/dist/elements/HierarchySearch/index.js.map +0 -1
  216. package/dist/elements/HierarchySearch/types.d.ts.map +0 -1
  217. package/dist/elements/HierarchySearch/types.js.map +0 -1
  218. package/dist/elements/HierarchySearch/useHierarchySearch.d.ts.map +0 -1
  219. package/dist/elements/HierarchySearch/useHierarchySearch.js.map +0 -1
  220. package/dist/elements/HierarchyTree/HierarchySidebarTab.d.ts.map +0 -1
  221. package/dist/elements/HierarchyTree/HierarchySidebarTab.js +0 -156
  222. package/dist/elements/HierarchyTree/HierarchySidebarTab.js.map +0 -1
  223. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.d.ts.map +0 -1
  224. package/dist/elements/HierarchyTree/HierarchySidebarTab.server.js.map +0 -1
  225. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.d.ts.map +0 -1
  226. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js +0 -36
  227. package/dist/elements/HierarchyTree/LoadMore/LoadMoreButton.js.map +0 -1
  228. package/dist/elements/HierarchyTree/LoadMore/index.d.ts.map +0 -1
  229. package/dist/elements/HierarchyTree/LoadMore/index.js +0 -29
  230. package/dist/elements/HierarchyTree/LoadMore/index.js.map +0 -1
  231. package/dist/elements/HierarchyTree/LoadMore/index.scss +0 -26
  232. package/dist/elements/HierarchyTree/TreeConnector.d.ts.map +0 -1
  233. package/dist/elements/HierarchyTree/TreeConnector.js.map +0 -1
  234. package/dist/elements/HierarchyTree/TreeFocusContext.d.ts.map +0 -1
  235. package/dist/elements/HierarchyTree/TreeFocusContext.js.map +0 -1
  236. package/dist/elements/HierarchyTree/TreeNode/index.d.ts +0 -5
  237. package/dist/elements/HierarchyTree/TreeNode/index.d.ts.map +0 -1
  238. package/dist/elements/HierarchyTree/TreeNode/index.js +0 -201
  239. package/dist/elements/HierarchyTree/TreeNode/index.js.map +0 -1
  240. package/dist/elements/HierarchyTree/TreeNode/index.scss +0 -99
  241. package/dist/elements/HierarchyTree/index.d.ts.map +0 -1
  242. package/dist/elements/HierarchyTree/index.js +0 -64
  243. package/dist/elements/HierarchyTree/index.js.map +0 -1
  244. package/dist/elements/HierarchyTree/index.scss +0 -42
  245. package/dist/elements/HierarchyTree/types.d.ts +0 -55
  246. package/dist/elements/HierarchyTree/types.d.ts.map +0 -1
  247. package/dist/elements/HierarchyTree/types.js.map +0 -1
  248. package/dist/elements/HierarchyTree/useChildren.d.ts +0 -26
  249. package/dist/elements/HierarchyTree/useChildren.d.ts.map +0 -1
  250. package/dist/elements/HierarchyTree/useChildren.js +0 -150
  251. package/dist/elements/HierarchyTree/useChildren.js.map +0 -1
  252. package/dist/elements/HierarchyTree/useTreeState.d.ts +0 -9
  253. package/dist/elements/HierarchyTree/useTreeState.d.ts.map +0 -1
  254. package/dist/elements/HierarchyTree/useTreeState.js +0 -50
  255. package/dist/elements/HierarchyTree/useTreeState.js.map +0 -1
  256. package/dist/elements/HydrateHierarchyProvider/index.d.ts +0 -4
  257. package/dist/elements/HydrateHierarchyProvider/index.d.ts.map +0 -1
  258. package/dist/elements/HydrateHierarchyProvider/index.js +0 -67
  259. package/dist/elements/HydrateHierarchyProvider/index.js.map +0 -1
  260. package/dist/elements/MoveMany/index.d.ts.map +0 -1
  261. package/dist/elements/MoveMany/index.js.map +0 -1
  262. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts +0 -8
  263. package/dist/elements/Tree/LoadMore/LoadMoreButton.d.ts.map +0 -1
  264. package/dist/elements/Tree/LoadMore/LoadMoreButton.js.map +0 -1
  265. package/dist/elements/Tree/LoadMore/index.d.ts +0 -12
  266. package/dist/elements/Tree/LoadMore/index.d.ts.map +0 -1
  267. package/dist/elements/Tree/LoadMore/index.js.map +0 -1
  268. package/dist/elements/Tree/TreeConnector.d.ts +0 -7
  269. package/dist/elements/Tree/TreeConnector.d.ts.map +0 -1
  270. package/dist/elements/Tree/TreeConnector.js +0 -23
  271. package/dist/elements/Tree/TreeConnector.js.map +0 -1
  272. package/dist/elements/Tree/TreeFocusContext.d.ts +0 -28
  273. package/dist/elements/Tree/TreeFocusContext.d.ts.map +0 -1
  274. package/dist/elements/Tree/TreeFocusContext.js +0 -140
  275. package/dist/elements/Tree/TreeFocusContext.js.map +0 -1
  276. package/dist/elements/Tree/TreeNode/index.d.ts +0 -5
  277. package/dist/elements/Tree/TreeNode/index.d.ts.map +0 -1
  278. package/dist/elements/Tree/TreeNode/index.js.map +0 -1
  279. package/dist/elements/Tree/index.d.ts +0 -5
  280. package/dist/elements/Tree/index.d.ts.map +0 -1
  281. package/dist/elements/Tree/index.js +0 -258
  282. package/dist/elements/Tree/index.js.map +0 -1
  283. package/dist/elements/Tree/types.d.ts.map +0 -1
  284. package/dist/elements/Tree/types.js +0 -2
  285. package/dist/elements/Tree/types.js.map +0 -1
  286. package/dist/elements/Tree/useChildren.d.ts +0 -25
  287. package/dist/elements/Tree/useChildren.d.ts.map +0 -1
  288. package/dist/elements/Tree/useChildren.js.map +0 -1
  289. package/dist/exports/client/chunk-SH42NW5R.js +0 -29
  290. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/Column/index.d.ts +0 -0
  291. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/ColumnItem/index.d.ts +0 -0
  292. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/index.scss +0 -0
  293. /package/dist/elements/{HierarchyColumnBrowser → Hierarchy/ColumnBrowser}/types.js +0 -0
  294. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.d.ts +0 -0
  295. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.scss +0 -0
  296. /package/dist/elements/{HierarchyButton → Hierarchy/DocHeaderButton}/index.server.d.ts +0 -0
  297. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.d.ts +0 -0
  298. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/fetchAncestorPath.js +0 -0
  299. /package/dist/elements/{HierarchyDrawer → Hierarchy}/Drawer/index.scss +0 -0
  300. /package/dist/elements/{HierarchyDrawer → Hierarchy/Drawer}/types.js +0 -0
  301. /package/dist/elements/{HierarchyField → Hierarchy/Field}/SelectedHierarchies.d.ts +0 -0
  302. /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.client.d.ts +0 -0
  303. /package/dist/elements/{HierarchyField → Hierarchy/Field}/index.server.d.ts +0 -0
  304. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchInput.d.ts +0 -0
  305. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.d.ts +0 -0
  306. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResultItem.js +0 -0
  307. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/HierarchySearchResults.d.ts +0 -0
  308. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/index.d.ts +0 -0
  309. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.d.ts +0 -0
  310. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/types.js +0 -0
  311. /package/dist/elements/{HierarchySearch → Hierarchy/Search}/useHierarchySearch.d.ts +0 -0
  312. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/HierarchySidebarTab.server.d.ts +0 -0
  313. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/LoadMoreButton.d.ts +0 -0
  314. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/LoadMore/index.d.ts +0 -0
  315. /package/dist/elements/{Tree → Hierarchy/Tree}/LoadMore/index.scss +0 -0
  316. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.d.ts +0 -0
  317. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeConnector.js +0 -0
  318. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.d.ts +0 -0
  319. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/TreeFocusContext.js +0 -0
  320. /package/dist/elements/{HierarchyTree → Hierarchy/Tree}/types.js +0 -0
  321. /package/dist/exports/client/{DatePicker-CL2EGBVQ.js.map → DatePicker-T2DMDMM5.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAIlE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAqC1F,OAAO,cAAc,CAAA;AAKrB,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAKD,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EACN,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBA6uBzB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Edit/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAc,uBAAuB,EAAE,MAAM,SAAS,CAAA;AAIlE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAqC1F,OAAO,cAAc,CAAA;AAKrB,MAAM,MAAM,aAAa,GAAG;IAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC,CAAA;AAKD,wBAAgB,eAAe,CAAC,EAC9B,sBAAsB,EACtB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,WAAW,EAAE,iBAAiB,EAC9B,aAAa,EACb,aAAa,EACb,UAAU,EACV,eAAe,EACf,MAAM,EACN,eAAe,EACf,MAAM,EAAE,YAAY,EACpB,cAAc,GACf,EAAE,uBAAuB,qBAuvBzB"}
@@ -178,6 +178,7 @@ export function DefaultEditView({
178
178
  const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now());
179
179
  const hasCheckedForStaleDataRef = useRef(false);
180
180
  const originalUpdatedAtRef = useRef(data?.updatedAt);
181
+ const saveCounterRef = useRef(0);
181
182
  const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds;
182
183
  const isLockExpired = Date.now() > lockExpiryTime;
183
184
  const preventLeaveWithoutSaving = !isReadOnlyForIncomingUser && (typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled);
@@ -355,6 +356,9 @@ export function DefaultEditView({
355
356
  submitted
356
357
  }) => {
357
358
  const controller_0 = handleAbortRef(abortOnChangeRef);
359
+ // Capture save counter before the async form-state request so we can detect
360
+ // if a save was triggered while this request was in-flight
361
+ const saveCounterAtStart = saveCounterRef.current;
358
362
  // Sync originalUpdatedAt with current data if it's NEWER (e.g., after router.refresh())
359
363
  if (data?.updatedAt && data.updatedAt > originalUpdatedAtRef.current) {
360
364
  originalUpdatedAtRef.current = data.updatedAt;
@@ -404,8 +408,10 @@ export function DefaultEditView({
404
408
  if (isLockingEnabled) {
405
409
  handleDocumentLocking(lockedState_0);
406
410
  }
407
- // Handle stale data detection
408
- if (staleDataState?.isStale) {
411
+ // Handle stale data detection.
412
+ // Skip if a save was triggered after this request was initiated — the newer
413
+ // updatedAt the server sees is from our OWN save, not an external modification.
414
+ if (staleDataState?.isStale && saveCounterRef.current === saveCounterAtStart) {
409
415
  setShowStaleDataModal(true);
410
416
  }
411
417
  abortOnChangeRef.current = null;
@@ -452,6 +458,9 @@ export function DefaultEditView({
452
458
  isInitializing: isInitializing,
453
459
  method: id ? 'PATCH' : 'POST',
454
460
  onChange: [onChange],
461
+ onSubmit: () => {
462
+ saveCounterRef.current += 1;
463
+ },
455
464
  onSuccess: onSave,
456
465
  children: [isInDrawer && /*#__PURE__*/_jsx(DocumentDrawerHeader, {
457
466
  AfterHeader: Description,
@@ -525,7 +534,7 @@ export function DefaultEditView({
525
534
  UnpublishButton
526
535
  },
527
536
  data: data,
528
- disableActions: disableActions || isFolderCollection || isTrashed,
537
+ disableActions: disableActions || isTrashed,
529
538
  disableCreate: disableCreate,
530
539
  EditMenuItems: EditMenuItems,
531
540
  hasPublishPermission: hasPublishPermission,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","toast","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentStaleData","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","usePreviewURL","OperationProvider","useRouteCache","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","PENDING_SUCCESS_TOAST_KEY","DefaultEditView","BeforeDocumentControls","BeforeDocumentMeta","Description","EditMenuItems","LivePreview","CustomLivePreview","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","UnpublishButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isLocked","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","serverURL","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","clearRouteCache","isLivePreviewEnabled","isLivePreviewing","previewWindowType","setURL","setLivePreviewURL","typeofLivePreviewURL","url","livePreviewURL","isPreviewEnabled","setPreviewURL","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","showStaleDataModal","setShowStaleDataModal","editSessionStartTime","setEditSessionStartTime","Date","now","hasCheckedForStaleDataRef","originalUpdatedAtRef","updatedAt","lockExpiryTime","isLockExpired","preventLeaveWithoutSaving","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","lastEditedAt","getTime","handleStaleDataReload","refresh","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","ctx","context","formState","controller","document","doc","result","toISOString","message","window","sessionStorage","setItem","redirectRoute","push","docPreferences","previewURL","state","renderAllFields","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","join","signal","skipValidation","file","onChange","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","checkForStaleData","originalUpdatedAt","staleDataState","isStale","abortOnChange","abortOnSave","pendingMessage","getItem","removeItem","success","shouldShowDocumentLockedModal","isFolderCollection","hierarchy","allowHasMany","_jsx","className","filter","_jsxs","disabled","disableSuccessStatus","disableValidationOnSubmit","isDocumentForm","method","onSuccess","AfterHeader","showDocumentID","isActive","onReadOnly","onTakeOver","documentLockStateRef","isWithinDoc","onReload","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap","_Fragment"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentStaleData } from '../../elements/DocumentStaleData/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext, usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\nconst PENDING_SUCCESS_TOAST_KEY = 'payload-pending-success-toast'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n BeforeDocumentMeta,\n Description,\n EditMenuItems,\n LivePreview: CustomLivePreview,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isLocked,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n isLivePreviewEnabled,\n isLivePreviewing,\n previewWindowType,\n setURL: setLivePreviewURL,\n typeofLivePreviewURL,\n url: livePreviewURL,\n } = useLivePreviewContext()\n const { isPreviewEnabled, setPreviewURL } = usePreviewURL()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = hasAutosaveEnabled(docConfig)\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n const [showStaleDataModal, setShowStaleDataModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const hasCheckedForStaleDataRef = useRef(false)\n const originalUpdatedAtRef = useRef(data?.updatedAt)\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n const isLockExpired = Date.now() > lockExpiryTime\n\n const preventLeaveWithoutSaving =\n !isReadOnlyForIncomingUser &&\n (typeof disableLeaveWithoutSaving !== 'undefined'\n ? !disableLeaveWithoutSaving\n : !autosaveEnabled)\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.current?.user\n\n if (lockedState && lockedState.user) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n\n // Update lastUpdateTime when lock state changes\n if (lockedState.lastEditedAt) {\n setLastUpdateTime(new Date(lockedState.lastEditedAt).getTime())\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, setLastUpdateTime, user?.id],\n )\n\n const handleStaleDataReload = useCallback(() => {\n // Reset modal state so it can appear again if needed\n setShowStaleDataModal(false)\n\n // Refresh to get the latest data\n router.refresh()\n }, [router])\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Remove the lock if the user is navigating away from the document view they have locked\n if (isLockOwnedByCurrentUser && !isInternalView) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, ctx) => {\n const { context, formState } = ctx || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n setLastUpdateTime(new Date(updatedAt).getTime())\n\n // Update stale data check refs after successful save\n // This allows detecting if another user modifies the document after this save\n originalUpdatedAtRef.current = updatedAt\n hasCheckedForStaleDataRef.current = false\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Store success message to show after redirect\n if (json.message && typeof window !== 'undefined') {\n window.sessionStorage.setItem(PENDING_SUCCESS_TOAST_KEY, json.message)\n }\n\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { livePreviewURL, previewURL, state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLivePreviewURL: isLivePreviewEnabled && typeofLivePreviewURL === 'function',\n returnLockStatus: false,\n returnPreviewURL: isPreviewEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // For upload collections, clear the file field from the returned state\n // to prevent the File object from persisting in form state after save\n if (upload && state) {\n delete state.file\n }\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (isLivePreviewEnabled && typeofLivePreviewURL === 'function') {\n setLivePreviewURL(livePreviewURL)\n }\n\n if (isPreviewEnabled) {\n setPreviewURL(previewURL)\n }\n\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'update',\n updatedAt,\n })\n\n abortOnSaveRef.current = null\n\n return state\n } else {\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'create',\n updatedAt,\n })\n }\n },\n [\n user,\n collectionSlug,\n userSlug,\n id,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n isLivePreviewEnabled,\n typeofLivePreviewURL,\n isPreviewEnabled,\n schemaPathSegments,\n upload,\n isLockingEnabled,\n reportUpdate,\n drawerSlug,\n entitySlug,\n setDocumentIsLocked,\n setLivePreviewURL,\n setPreviewURL,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n // Sync originalUpdatedAt with current data if it's NEWER (e.g., after router.refresh())\n if (data?.updatedAt && data.updatedAt > originalUpdatedAtRef.current) {\n originalUpdatedAtRef.current = data.updatedAt\n // Reset check flag so we can detect new stale data\n hasCheckedForStaleDataRef.current = false\n }\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n // Check for stale data on first edit only\n // Skip this check entirely for autosave-enabled collections/globals to prevent\n // false positives from the user's own autosaves\n const checkForStaleData =\n !hasCheckedForStaleDataRef.current &&\n originalUpdatedAtRef.current &&\n operation === 'update' &&\n !autosaveEnabled\n\n if (checkForStaleData) {\n hasCheckedForStaleDataRef.current = true\n }\n\n const docPreferences = await getDocPreferences()\n\n const result = await getFormState({\n id,\n checkForStaleData,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n originalUpdatedAt: checkForStaleData ? originalUpdatedAtRef.current : undefined,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, staleDataState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n // Handle stale data detection\n if (staleDataState?.isStale) {\n setShowStaleDataModal(true)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n data?.updatedAt,\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n handleDocumentLocking,\n autosaveEnabled,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\n }, [])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n }, [])\n\n // Show pending success toast after redirect from create\n useEffect(() => {\n if (!isInitializing && typeof window !== 'undefined') {\n const pendingMessage = window.sessionStorage.getItem(PENDING_SUCCESS_TOAST_KEY)\n\n if (pendingMessage) {\n window.sessionStorage.removeItem(PENDING_SUCCESS_TOAST_KEY)\n toast.success(pendingMessage)\n }\n }\n }, [isInitializing])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = Boolean(\n collectionConfig?.hierarchy &&\n typeof collectionConfig.hierarchy === 'object' &&\n collectionConfig.hierarchy.allowHasMany === false,\n )\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableSuccessStatus={!isEditing && depth < 2 && redirectAfterCreate !== false}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n key={`${isLocked}`}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader\n AfterHeader={Description}\n drawerSlug={drawerSlug}\n showDocumentID={!isFolderCollection}\n />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router, serverURL })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: false,\n setCurrentEditor,\n updateDocumentEditor,\n user,\n })\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router, serverURL })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {showStaleDataModal && (\n <DocumentStaleData isActive={showStaleDataModal} onReload={handleStaleDataReload} />\n )}\n {preventLeaveWithoutSaving && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n BeforeDocumentMeta={BeforeDocumentMeta}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n }}\n data={data}\n disableActions={disableActions || isFolderCollection || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: true,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n })\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && livePreviewURL && (\n <>\n {CustomLivePreview || (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </>\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","formatAdminURL","hasAutosaveEnabled","React","Fragment","useCallback","useEffect","useMemo","useRef","useState","toast","DocumentControls","DocumentDrawerHeader","useDocumentDrawerContext","DocumentFields","DocumentLocked","DocumentStaleData","DocumentTakeOver","LeaveWithoutSaving","LivePreviewWindow","Upload","Form","useAuth","useConfig","useDocumentEvents","useDocumentInfo","useEditDepth","useLivePreviewContext","usePreviewURL","OperationProvider","useRouteCache","useRouteTransition","useServerFunctions","UploadControlsProvider","useUploadEdits","abortAndIgnore","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","Auth","SetDocumentStepNav","SetDocumentTitle","baseClass","PENDING_SUCCESS_TOAST_KEY","DefaultEditView","BeforeDocumentControls","BeforeDocumentMeta","Description","EditMenuItems","LivePreview","CustomLivePreview","PreviewButton","PublishButton","SaveButton","SaveDraftButton","Status","UnpublishButton","CustomUpload","UploadControls","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","data","disableActions","disableCreate","disableLeaveWithoutSaving","docPermissions","documentIsLocked","documentLockState","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialState","isEditing","isInitializing","isLocked","isTrashed","lastUpdateTime","redirectAfterCreate","redirectAfterDelete","redirectAfterDuplicate","redirectAfterRestore","setCurrentEditor","setData","setDocumentIsLocked","setLastUpdateTime","unlockDocument","updateDocumentEditor","clearDoc","drawerSlug","onDelete","onDuplicate","onRestore","onSave","onSaveFromContext","isInDrawer","Boolean","refreshCookieAsync","user","config","admin","userSlug","routes","adminRoute","serverURL","getEntityConfig","collectionConfig","globalConfig","depth","router","params","reportUpdate","resetUploadEdits","getFormState","startRouteTransition","clearRouteCache","isLivePreviewEnabled","isLivePreviewing","previewWindowType","setURL","setLivePreviewURL","typeofLivePreviewURL","url","livePreviewURL","isPreviewEnabled","setPreviewURL","abortOnChangeRef","abortOnSaveRef","locale","get","entitySlug","slug","operation","auth","undefined","upload","docConfig","lockDocumentsProp","lockDocuments","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","showStaleDataModal","setShowStaleDataModal","editSessionStartTime","setEditSessionStartTime","Date","now","hasCheckedForStaleDataRef","originalUpdatedAtRef","updatedAt","saveCounterRef","lockExpiryTime","isLockExpired","preventLeaveWithoutSaving","schemaPathSegments","validateBeforeSubmit","setValidateBeforeSubmit","disableLocalStrategy","nextHrefRef","handleDocumentLocking","lockedState","previousOwnerID","current","lockedUserID","hasShownLockedModal","lastEditedAt","getTime","handleStaleDataReload","refresh","handlePrevent","nextHref","handleLeaveConfirm","lockUser","isLockOwnedByCurrentUser","nextPath","URL","pathname","isInternalView","some","path","includes","err","console","error","json","ctx","context","formState","controller","document","doc","result","toISOString","message","window","sessionStorage","setItem","redirectRoute","push","docPreferences","previewURL","state","renderAllFields","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","join","signal","skipValidation","file","onChange","prevFormState","submitted","saveCounterAtStart","currentTime","timeSinceLastUpdate","updateLastEdited","checkForStaleData","originalUpdatedAt","staleDataState","isStale","abortOnChange","abortOnSave","pendingMessage","getItem","removeItem","success","shouldShowDocumentLockedModal","isFolderCollection","hierarchy","allowHasMany","_jsx","className","filter","_jsxs","disabled","disableSuccessStatus","disableValidationOnSubmit","isDocumentForm","method","onSubmit","onSuccess","AfterHeader","showDocumentID","isActive","onReadOnly","onTakeOver","documentLockStateRef","isWithinDoc","onReload","onConfirm","onPrevent","pluralLabel","labels","plural","useAsTitle","fallback","toString","customComponents","onDrawerCreateNew","permissions","readOnlyForIncomingUser","email","loginWithUsername","readOnly","requirePassword","useAPIKey","username","verify","uploadConfig","fields","forceSidebarWrap","_Fragment"],"sources":["../../../src/views/Edit/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ClientUser, DocumentViewClientProps } from 'payload'\n\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { formatAdminURL, hasAutosaveEnabled } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { FormProps } from '../../forms/Form/index.js'\nimport type { FormOnSuccess } from '../../forms/Form/types.js'\nimport type { LockedState } from '../../utilities/buildFormState.js'\n\nimport { DocumentControls } from '../../elements/DocumentControls/index.js'\nimport { DocumentDrawerHeader } from '../../elements/DocumentDrawer/DrawerHeader/index.js'\nimport { useDocumentDrawerContext } from '../../elements/DocumentDrawer/Provider.js'\nimport { DocumentFields } from '../../elements/DocumentFields/index.js'\nimport { DocumentLocked } from '../../elements/DocumentLocked/index.js'\nimport { DocumentStaleData } from '../../elements/DocumentStaleData/index.js'\nimport { DocumentTakeOver } from '../../elements/DocumentTakeOver/index.js'\nimport { LeaveWithoutSaving } from '../../elements/LeaveWithoutSaving/index.js'\nimport { LivePreviewWindow } from '../../elements/LivePreview/Window/index.js'\nimport { Upload } from '../../elements/Upload/index.js'\nimport { Form } from '../../forms/Form/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentEvents } from '../../providers/DocumentEvents/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useEditDepth } from '../../providers/EditDepth/index.js'\nimport { useLivePreviewContext, usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { OperationProvider } from '../../providers/Operation/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { useServerFunctions } from '../../providers/ServerFunctions/index.js'\nimport { UploadControlsProvider } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { abortAndIgnore, handleAbortRef } from '../../utilities/abortAndIgnore.js'\nimport { handleBackToDashboard } from '../../utilities/handleBackToDashboard.js'\nimport { handleGoBack } from '../../utilities/handleGoBack.js'\nimport { handleTakeOver } from '../../utilities/handleTakeOver.js'\nimport { Auth } from './Auth/index.js'\nimport { SetDocumentStepNav } from './SetDocumentStepNav/index.js'\nimport { SetDocumentTitle } from './SetDocumentTitle/index.js'\nimport './index.scss'\n\nconst baseClass = 'collection-edit'\nconst PENDING_SUCCESS_TOAST_KEY = 'payload-pending-success-toast'\n\nexport type OnSaveContext = {\n getDocPermissions?: boolean\n incrementVersionCount?: boolean\n}\n\n// This component receives props only on _pages_\n// When rendered within a drawer, props are empty\n// This is solely to support custom edit views which get server-rendered\nexport function DefaultEditView({\n BeforeDocumentControls,\n BeforeDocumentMeta,\n Description,\n EditMenuItems,\n LivePreview: CustomLivePreview,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n Upload: CustomUpload,\n UploadControls,\n}: DocumentViewClientProps) {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n data,\n disableActions,\n disableCreate,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n documentLockState,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialState,\n isEditing,\n isInitializing,\n isLocked,\n isTrashed,\n lastUpdateTime,\n redirectAfterCreate,\n redirectAfterDelete,\n redirectAfterDuplicate,\n redirectAfterRestore,\n setCurrentEditor,\n setData,\n setDocumentIsLocked,\n setLastUpdateTime,\n unlockDocument,\n updateDocumentEditor,\n } = useDocumentInfo()\n\n const {\n clearDoc,\n drawerSlug,\n onDelete,\n onDuplicate,\n onRestore,\n onSave: onSaveFromContext,\n } = useDocumentDrawerContext()\n\n const isInDrawer = Boolean(drawerSlug)\n\n const { refreshCookieAsync, user } = useAuth()\n\n const {\n config,\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n const globalConfig = getEntityConfig({ globalSlug })\n\n const depth = useEditDepth()\n\n const router = useRouter()\n const params = useSearchParams()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n const { startRouteTransition } = useRouteTransition()\n const { clearRouteCache } = useRouteCache()\n const {\n isLivePreviewEnabled,\n isLivePreviewing,\n previewWindowType,\n setURL: setLivePreviewURL,\n typeofLivePreviewURL,\n url: livePreviewURL,\n } = useLivePreviewContext()\n const { isPreviewEnabled, setPreviewURL } = usePreviewURL()\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const locale = params.get('locale')\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const operation = collectionSlug && !id ? 'create' : 'update'\n\n const auth = collectionConfig ? collectionConfig.auth : undefined\n const upload = collectionConfig ? collectionConfig.upload : undefined\n\n const docConfig = collectionConfig || globalConfig\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = hasAutosaveEnabled(docConfig)\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n const [showStaleDataModal, setShowStaleDataModal] = useState(false)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const hasCheckedForStaleDataRef = useRef(false)\n const originalUpdatedAtRef = useRef(data?.updatedAt)\n const saveCounterRef = useRef(0)\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n const isLockExpired = Date.now() > lockExpiryTime\n\n const preventLeaveWithoutSaving =\n !isReadOnlyForIncomingUser &&\n (typeof disableLeaveWithoutSaving !== 'undefined'\n ? !disableLeaveWithoutSaving\n : !autosaveEnabled)\n\n const schemaPathSegments = useMemo(() => [entitySlug], [entitySlug])\n\n const [validateBeforeSubmit, setValidateBeforeSubmit] = useState(() => {\n if (operation === 'create' && auth && !auth.disableLocalStrategy) {\n return true\n }\n\n return false\n })\n\n const nextHrefRef = React.useRef<null | string>(null)\n\n const handleDocumentLocking = useCallback(\n (lockedState: LockedState) => {\n setDocumentIsLocked(true)\n const previousOwnerID =\n typeof documentLockState.current?.user === 'object'\n ? documentLockState.current?.user?.id\n : documentLockState.current?.user\n\n if (lockedState && lockedState.user) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockState.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockState.current.hasShownLockedModal = true\n }\n\n documentLockState.current = {\n hasShownLockedModal: documentLockState.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n setCurrentEditor(lockedState.user as ClientUser)\n }\n\n // Update lastUpdateTime when lock state changes\n if (lockedState.lastEditedAt) {\n setLastUpdateTime(new Date(lockedState.lastEditedAt).getTime())\n }\n }\n },\n [documentLockState, setCurrentEditor, setDocumentIsLocked, setLastUpdateTime, user?.id],\n )\n\n const handleStaleDataReload = useCallback(() => {\n // Reset modal state so it can appear again if needed\n setShowStaleDataModal(false)\n\n // Refresh to get the latest data\n router.refresh()\n }, [router])\n\n const handlePrevent = useCallback((nextHref: null | string) => {\n nextHrefRef.current = nextHref\n }, [])\n\n const handleLeaveConfirm = useCallback(async () => {\n const lockUser = documentLockState.current?.user\n\n const isLockOwnedByCurrentUser =\n typeof lockUser === 'object' ? lockUser?.id === user?.id : lockUser === user?.id\n\n if (isLockingEnabled && documentIsLocked && (id || globalSlug)) {\n // Check where user is trying to go\n const nextPath = nextHrefRef.current ? new URL(nextHrefRef.current).pathname : ''\n const isInternalView = ['/preview', '/api', '/versions'].some((path) =>\n nextPath.includes(path),\n )\n\n // Remove the lock if the user is navigating away from the document view they have locked\n if (isLockOwnedByCurrentUser && !isInternalView) {\n try {\n await unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n } catch (err) {\n console.error('Failed to unlock before leave', err) // eslint-disable-line no-console\n }\n }\n }\n }, [\n collectionSlug,\n documentIsLocked,\n documentLockState,\n globalSlug,\n id,\n isLockingEnabled,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n user?.id,\n ])\n\n const onSave: FormOnSuccess<any, OnSaveContext> = useCallback(\n async (json, ctx) => {\n const { context, formState } = ctx || {}\n\n const controller = handleAbortRef(abortOnSaveRef)\n\n const document = json?.doc || json?.result\n\n const updatedAt = document?.updatedAt || new Date().toISOString()\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n setLastUpdateTime(new Date(updatedAt).getTime())\n\n // Update stale data check refs after successful save\n // This allows detecting if another user modifies the document after this save\n originalUpdatedAtRef.current = updatedAt\n hasCheckedForStaleDataRef.current = false\n\n if (context?.incrementVersionCount !== false) {\n incrementVersionCount()\n }\n\n if (typeof setData === 'function') {\n void setData(document || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n const operation = id ? 'update' : 'create'\n\n void onSaveFromContext({\n ...(json as Record<string, unknown>),\n context,\n operation,\n // @ts-expect-error todo: this is not right, should be under `doc`?\n updatedAt:\n operation === 'update'\n ? new Date().toISOString()\n : document?.updatedAt || new Date().toISOString(),\n })\n }\n\n if (!isEditing && depth < 2 && redirectAfterCreate !== false) {\n // Store success message to show after redirect\n if (json.message && typeof window !== 'undefined') {\n window.sessionStorage.setItem(PENDING_SUCCESS_TOAST_KEY, json.message)\n }\n\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${document?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n\n startRouteTransition(() => router.push(redirectRoute))\n } else {\n resetUploadEdits()\n }\n\n if (context?.getDocPermissions !== false) {\n await getDocPermissions(json)\n }\n\n if (id || globalSlug) {\n const docPreferences = await getDocPreferences()\n\n const { livePreviewURL, previewURL, state } = await getFormState({\n id,\n collectionSlug,\n data: document,\n docPermissions,\n docPreferences,\n formState,\n globalSlug,\n operation,\n renderAllFields: false,\n returnLivePreviewURL: isLivePreviewEnabled && typeofLivePreviewURL === 'function',\n returnLockStatus: false,\n returnPreviewURL: isPreviewEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: true,\n })\n\n // For upload collections, clear the file field from the returned state\n // to prevent the File object from persisting in form state after save\n if (upload && state) {\n delete state.file\n }\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n if (isLivePreviewEnabled && typeofLivePreviewURL === 'function') {\n setLivePreviewURL(livePreviewURL)\n }\n\n if (isPreviewEnabled) {\n setPreviewURL(previewURL)\n }\n\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'update',\n updatedAt,\n })\n\n abortOnSaveRef.current = null\n\n return state\n } else {\n reportUpdate({\n id,\n doc: document,\n drawerSlug,\n entitySlug,\n operation: 'create',\n updatedAt,\n })\n }\n },\n [\n user,\n collectionSlug,\n userSlug,\n id,\n setLastUpdateTime,\n setData,\n onSaveFromContext,\n isEditing,\n depth,\n redirectAfterCreate,\n globalSlug,\n refreshCookieAsync,\n incrementVersionCount,\n adminRoute,\n locale,\n startRouteTransition,\n router,\n resetUploadEdits,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n docPermissions,\n operation,\n isLivePreviewEnabled,\n typeofLivePreviewURL,\n isPreviewEnabled,\n schemaPathSegments,\n upload,\n isLockingEnabled,\n reportUpdate,\n drawerSlug,\n entitySlug,\n setDocumentIsLocked,\n setLivePreviewURL,\n setPreviewURL,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n // Capture save counter before the async form-state request so we can detect\n // if a save was triggered while this request was in-flight\n const saveCounterAtStart = saveCounterRef.current\n\n // Sync originalUpdatedAt with current data if it's NEWER (e.g., after router.refresh())\n if (data?.updatedAt && data.updatedAt > originalUpdatedAtRef.current) {\n originalUpdatedAtRef.current = data.updatedAt\n // Reset check flag so we can detect new stale data\n hasCheckedForStaleDataRef.current = false\n }\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n // Check for stale data on first edit only\n // Skip this check entirely for autosave-enabled collections/globals to prevent\n // false positives from the user's own autosaves\n const checkForStaleData =\n !hasCheckedForStaleDataRef.current &&\n originalUpdatedAtRef.current &&\n operation === 'update' &&\n !autosaveEnabled\n\n if (checkForStaleData) {\n hasCheckedForStaleDataRef.current = true\n }\n\n const docPreferences = await getDocPreferences()\n\n const result = await getFormState({\n id,\n checkForStaleData,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n originalUpdatedAt: checkForStaleData ? originalUpdatedAtRef.current : undefined,\n renderAllFields: false,\n returnLockStatus: isLockingEnabled,\n schemaPath: schemaPathSegments.join('.'),\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n if (!result) {\n return\n }\n\n const { lockedState, staleDataState, state } = result\n\n if (isLockingEnabled) {\n handleDocumentLocking(lockedState)\n }\n\n // Handle stale data detection.\n // Skip if a save was triggered after this request was initiated — the newer\n // updatedAt the server sees is from our OWN save, not an external modification.\n if (staleDataState?.isStale && saveCounterRef.current === saveCounterAtStart) {\n setShowStaleDataModal(true)\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n data?.updatedAt,\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPathSegments,\n handleDocumentLocking,\n autosaveEnabled,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n setShowTakeOverModal(false)\n }\n }, [])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n }, [])\n\n // Show pending success toast after redirect from create\n useEffect(() => {\n if (!isInitializing && typeof window !== 'undefined') {\n const pendingMessage = window.sessionStorage.getItem(PENDING_SUCCESS_TOAST_KEY)\n\n if (pendingMessage) {\n window.sessionStorage.removeItem(PENDING_SUCCESS_TOAST_KEY)\n toast.success(pendingMessage)\n }\n }\n }, [isInitializing])\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n !documentLockState.current?.hasShownLockedModal &&\n !isLockExpired\n\n const isFolderCollection = Boolean(\n collectionConfig?.hierarchy &&\n typeof collectionConfig.hierarchy === 'object' &&\n collectionConfig.hierarchy.allowHasMany === false,\n )\n\n return (\n <main\n className={[\n baseClass,\n (id || globalSlug) && `${baseClass}--is-editing`,\n globalSlug && `global-edit--${globalSlug}`,\n collectionSlug && `collection-edit--${collectionSlug}`,\n isLivePreviewing && previewWindowType === 'iframe' && `${baseClass}--is-live-previewing`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || isInitializing || !hasSavePermission || isTrashed}\n disableSuccessStatus={!isEditing && depth < 2 && redirectAfterCreate !== false}\n disableValidationOnSubmit={!validateBeforeSubmit}\n initialState={!isInitializing && initialState}\n isDocumentForm={true}\n isInitializing={isInitializing}\n key={`${isLocked}`}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSubmit={() => {\n saveCounterRef.current += 1\n }}\n onSuccess={onSave}\n >\n {isInDrawer && (\n <DocumentDrawerHeader\n AfterHeader={Description}\n drawerSlug={drawerSlug}\n showDocumentID={!isFolderCollection}\n />\n )}\n {isLockingEnabled && shouldShowDocumentLockedModal && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router, serverURL })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: false,\n setCurrentEditor,\n updateDocumentEditor,\n user,\n })\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router, serverURL })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {showStaleDataModal && (\n <DocumentStaleData isActive={showStaleDataModal} onReload={handleStaleDataReload} />\n )}\n {preventLeaveWithoutSaving && (\n <LeaveWithoutSaving onConfirm={handleLeaveConfirm} onPrevent={handlePrevent} />\n )}\n {!isInDrawer && (\n <SetDocumentStepNav\n collectionSlug={collectionConfig?.slug}\n globalSlug={globalConfig?.slug}\n id={id}\n isTrashed={isTrashed}\n pluralLabel={collectionConfig?.labels?.plural}\n useAsTitle={collectionConfig?.admin?.useAsTitle}\n />\n )}\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={depth <= 1 ? id?.toString() : undefined}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n BeforeDocumentControls={BeforeDocumentControls}\n BeforeDocumentMeta={BeforeDocumentMeta}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n Status,\n UnpublishButton,\n }}\n data={data}\n disableActions={disableActions || isTrashed}\n disableCreate={disableCreate}\n EditMenuItems={EditMenuItems}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n isInDrawer={isInDrawer}\n isTrashed={isTrashed}\n onDelete={onDelete}\n onDrawerCreateNew={clearDoc}\n onDuplicate={onDuplicate}\n onRestore={onRestore}\n onSave={onSave}\n onTakeOver={() =>\n handleTakeOver({\n id,\n clearRouteCache,\n collectionSlug,\n documentLockStateRef: documentLockState,\n globalSlug,\n isLockingEnabled,\n isWithinDoc: true,\n setCurrentEditor,\n setIsReadOnlyForIncomingUser,\n updateDocumentEditor,\n user,\n })\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n redirectAfterDelete={redirectAfterDelete}\n redirectAfterDuplicate={redirectAfterDuplicate}\n redirectAfterRestore={redirectAfterRestore}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[\n `${baseClass}__main-wrapper`,\n previewWindowType === 'popup' && `${baseClass}--detached`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={\n BeforeFields || (\n <Fragment>\n {auth && (\n <Auth\n className={`${baseClass}__auth`}\n collectionSlug={collectionConfig.slug}\n disableLocalStrategy={collectionConfig.auth?.disableLocalStrategy}\n email={data?.email}\n loginWithUsername={auth?.loginWithUsername}\n operation={operation}\n readOnly={!hasSavePermission}\n requirePassword={!id}\n setValidateBeforeSubmit={setValidateBeforeSubmit}\n // eslint-disable-next-line react-compiler/react-compiler\n useAPIKey={auth.useAPIKey}\n username={data?.username}\n verify={auth.verify}\n />\n )}\n {upload && (\n <React.Fragment>\n <UploadControlsProvider>\n {CustomUpload || (\n <Upload\n collectionSlug={collectionConfig.slug}\n initialState={initialState}\n uploadConfig={upload}\n UploadControls={UploadControls}\n />\n )}\n </UploadControlsProvider>\n </React.Fragment>\n )}\n </Fragment>\n )\n }\n Description={Description}\n docPermissions={docPermissions}\n fields={docConfig.fields}\n forceSidebarWrap={isLivePreviewing}\n isTrashed={isTrashed}\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission || isTrashed}\n schemaPathSegments={schemaPathSegments}\n />\n {AfterDocument}\n </div>\n {isLivePreviewEnabled && !isInDrawer && livePreviewURL && (\n <>\n {CustomLivePreview || (\n <LivePreviewWindow collectionSlug={collectionSlug} globalSlug={globalSlug} />\n )}\n </>\n )}\n </div>\n </Form>\n </OperationProvider>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/DocumentListSelection/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAevC,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,yCAAyC;IACzC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAoHtE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/HierarchyList/DocumentListSelection/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAevC,MAAM,MAAM,0BAA0B,GAAG;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,yCAAyC;IACzC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CAAA;AAyBD,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAmHtE,CAAA"}
@@ -6,8 +6,8 @@ import React, { Fragment } from 'react';
6
6
  import { DeleteMany_v4 } from '../../../elements/DeleteMany/index.js';
7
7
  import { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js';
8
8
  import { EditMany_v4 } from '../../../elements/EditMany/index.js';
9
+ import { MoveMany } from '../../../elements/Hierarchy/MoveMany/index.js';
9
10
  import { ListSelection_v4, ListSelectionButton } from '../../../elements/ListSelection/index.js';
10
- import { MoveMany } from '../../../elements/MoveMany/index.js';
11
11
  import { PublishMany_v4 } from '../../../elements/PublishMany/index.js';
12
12
  import { UnpublishMany_v4 } from '../../../elements/UnpublishMany/index.js';
13
13
  import { useConfig } from '../../../providers/Config/index.js';
@@ -15,8 +15,58 @@ import { useDocumentSelection } from '../../../providers/DocumentSelection/index
15
15
  import { useHierarchy } from '../../../providers/Hierarchy/index.js';
16
16
  import { useRouteCache } from '../../../providers/RouteCache/index.js';
17
17
  import { useTranslation } from '../../../providers/Translation/index.js';
18
+ /**
19
+ * Separate component for single hierarchy item edit
20
+ * Isolates useDocumentDrawer hook so it only runs when actually needed
21
+ */
22
+ const SingleHierarchyEdit = t0 => {
23
+ const $ = _c(8);
24
+ const {
25
+ id,
26
+ collectionSlug,
27
+ onSuccess
28
+ } = t0;
29
+ const {
30
+ t
31
+ } = useTranslation();
32
+ let t1;
33
+ if ($[0] !== collectionSlug || $[1] !== id) {
34
+ t1 = {
35
+ id,
36
+ collectionSlug
37
+ };
38
+ $[0] = collectionSlug;
39
+ $[1] = id;
40
+ $[2] = t1;
41
+ } else {
42
+ t1 = $[2];
43
+ }
44
+ const [DocumentDrawer,, t2] = useDocumentDrawer(t1);
45
+ const {
46
+ openDrawer
47
+ } = t2;
48
+ let t3;
49
+ if ($[3] !== DocumentDrawer || $[4] !== onSuccess || $[5] !== openDrawer || $[6] !== t) {
50
+ t3 = _jsxs(Fragment, {
51
+ children: [_jsx(ListSelectionButton, {
52
+ onClick: openDrawer,
53
+ children: t("general:edit")
54
+ }), _jsx(DocumentDrawer, {
55
+ onSave: onSuccess
56
+ })]
57
+ });
58
+ $[3] = DocumentDrawer;
59
+ $[4] = onSuccess;
60
+ $[5] = openDrawer;
61
+ $[6] = t;
62
+ $[7] = t3;
63
+ } else {
64
+ t3 = $[7];
65
+ }
66
+ return t3;
67
+ };
18
68
  export const DocumentListSelection = t0 => {
19
- const $ = _c(6);
69
+ const $ = _c(16);
20
70
  const {
21
71
  disableBulkDelete,
22
72
  disableBulkEdit,
@@ -41,95 +91,106 @@ export const DocumentListSelection = t0 => {
41
91
  const {
42
92
  t
43
93
  } = useTranslation();
44
- const count = getTotalCount();
45
- const groupedSelections = getSelectionsForActions();
46
- const collectionSlugs = Object.keys(groupedSelections);
47
- const singleCollectionSelected = collectionSlugs.length === 1;
48
- const singleCollectionSlug = singleCollectionSelected ? collectionSlugs[0] : null;
49
- const collectionConfig = singleCollectionSlug ? config.collections.find(collection => collection.slug === singleCollectionSlug) : null;
50
- const ids = singleCollectionSelected ? groupedSelections[singleCollectionSlug]?.ids || [] : [];
51
- const singleHierarchySelected = hierarchySlug && singleCollectionSlug === hierarchySlug && ids.length === 1 ? ids[0] : null;
52
- const [HierarchyDocDrawer,, t1] = useDocumentDrawer({
53
- id: singleHierarchySelected ?? undefined,
54
- collectionSlug: hierarchySlug || singleCollectionSlug || ""
55
- });
56
- const {
57
- openDrawer
58
- } = t1;
59
- if (count === 0) {
60
- return null;
61
- }
94
+ let t1;
62
95
  let t2;
63
- if ($[0] !== clearAll || $[1] !== clearRouteCache || $[2] !== refreshTree) {
64
- t2 = () => {
65
- refreshTree();
66
- clearRouteCache();
67
- clearAll();
68
- };
96
+ if ($[0] !== clearAll || $[1] !== clearRouteCache || $[2] !== config || $[3] !== disableBulkDelete || $[4] !== disableBulkEdit || $[5] !== getSelectionsForActions || $[6] !== getTotalCount || $[7] !== hierarchyIcon || $[8] !== hierarchySlug || $[9] !== parent?.id || $[10] !== refreshTree || $[11] !== t) {
97
+ t2 = Symbol.for("react.early_return_sentinel");
98
+ bb0: {
99
+ const count = getTotalCount();
100
+ const groupedSelections = getSelectionsForActions();
101
+ const collectionSlugs = Object.keys(groupedSelections);
102
+ const singleCollectionSelected = collectionSlugs.length === 1;
103
+ const singleCollectionSlug = singleCollectionSelected ? collectionSlugs[0] : null;
104
+ const collectionConfig = singleCollectionSlug ? config.collections.find(collection => collection.slug === singleCollectionSlug) : null;
105
+ const ids = singleCollectionSelected ? groupedSelections[singleCollectionSlug]?.ids || [] : [];
106
+ const singleHierarchySelected = hierarchySlug && singleCollectionSlug === hierarchySlug && ids.length === 1 ? ids[0] : null;
107
+ if (count === 0) {
108
+ t2 = null;
109
+ break bb0;
110
+ }
111
+ const handleActionSuccess = () => {
112
+ clearRouteCache();
113
+ if (hierarchySlug) {
114
+ refreshTree(hierarchySlug);
115
+ }
116
+ clearAll();
117
+ };
118
+ let t3;
119
+ if ($[14] !== clearAll) {
120
+ t3 = () => clearAll();
121
+ $[14] = clearAll;
122
+ $[15] = t3;
123
+ } else {
124
+ t3 = $[15];
125
+ }
126
+ t1 = _jsx(ListSelection_v4, {
127
+ count,
128
+ ListActions: [_jsx(ListSelectionButton, {
129
+ onClick: t3,
130
+ children: t("general:clearAll")
131
+ }, "clear-all")],
132
+ SelectionActions: [singleHierarchySelected && hierarchySlug && _jsx(SingleHierarchyEdit, {
133
+ collectionSlug: hierarchySlug,
134
+ id: singleHierarchySelected,
135
+ onSuccess: handleActionSuccess
136
+ }, "single-edit"), !disableBulkEdit && !singleHierarchySelected && singleCollectionSelected && collectionConfig && ids.length > 0 && _jsxs(Fragment, {
137
+ children: [_jsx(EditMany_v4, {
138
+ collection: collectionConfig,
139
+ count: ids.length,
140
+ ids,
141
+ modalPrefix: "hierarchy-list",
142
+ onSuccess: handleActionSuccess,
143
+ selectAll: false
144
+ }), _jsx(PublishMany_v4, {
145
+ collection: collectionConfig,
146
+ count: ids.length,
147
+ ids,
148
+ modalPrefix: "hierarchy-list",
149
+ onSuccess: handleActionSuccess,
150
+ selectAll: false
151
+ }), _jsx(UnpublishMany_v4, {
152
+ collection: collectionConfig,
153
+ count: ids.length,
154
+ ids,
155
+ modalPrefix: "hierarchy-list",
156
+ onSuccess: handleActionSuccess,
157
+ selectAll: false
158
+ })]
159
+ }, "bulk-actions"), !disableBulkDelete && _jsx(DeleteMany_v4, {
160
+ afterDelete: handleActionSuccess,
161
+ modalPrefix: "hierarchy-list",
162
+ selections: groupedSelections
163
+ }, "bulk-delete"), hierarchySlug && _jsx(MoveMany, {
164
+ currentParentID: parent?.id || null,
165
+ hierarchySlug,
166
+ Icon: hierarchyIcon,
167
+ modalPrefix: "hierarchy-list",
168
+ onSuccess: handleActionSuccess,
169
+ selections: groupedSelections
170
+ }, "bulk-move")].filter(Boolean)
171
+ });
172
+ }
69
173
  $[0] = clearAll;
70
174
  $[1] = clearRouteCache;
71
- $[2] = refreshTree;
72
- $[3] = t2;
175
+ $[2] = config;
176
+ $[3] = disableBulkDelete;
177
+ $[4] = disableBulkEdit;
178
+ $[5] = getSelectionsForActions;
179
+ $[6] = getTotalCount;
180
+ $[7] = hierarchyIcon;
181
+ $[8] = hierarchySlug;
182
+ $[9] = parent?.id;
183
+ $[10] = refreshTree;
184
+ $[11] = t;
185
+ $[12] = t1;
186
+ $[13] = t2;
73
187
  } else {
74
- t2 = $[3];
188
+ t1 = $[12];
189
+ t2 = $[13];
75
190
  }
76
- const handleActionSuccess = t2;
77
- let t3;
78
- if ($[4] !== clearAll) {
79
- t3 = () => clearAll();
80
- $[4] = clearAll;
81
- $[5] = t3;
82
- } else {
83
- t3 = $[5];
191
+ if (t2 !== Symbol.for("react.early_return_sentinel")) {
192
+ return t2;
84
193
  }
85
- return _jsx(ListSelection_v4, {
86
- count,
87
- ListActions: [_jsx(ListSelectionButton, {
88
- onClick: t3,
89
- children: t("general:clearAll")
90
- }, "clear-all")],
91
- SelectionActions: [singleHierarchySelected && _jsxs(Fragment, {
92
- children: [_jsx(ListSelectionButton, {
93
- onClick: openDrawer,
94
- children: t("general:edit")
95
- }), _jsx(HierarchyDocDrawer, {
96
- onSave: handleActionSuccess
97
- })]
98
- }, "single-edit"), !disableBulkEdit && !singleHierarchySelected && singleCollectionSelected && collectionConfig && ids.length > 0 && _jsxs(Fragment, {
99
- children: [_jsx(EditMany_v4, {
100
- collection: collectionConfig,
101
- count: ids.length,
102
- ids,
103
- modalPrefix: "hierarchy-list",
104
- onSuccess: handleActionSuccess,
105
- selectAll: false
106
- }), _jsx(PublishMany_v4, {
107
- collection: collectionConfig,
108
- count: ids.length,
109
- ids,
110
- modalPrefix: "hierarchy-list",
111
- onSuccess: handleActionSuccess,
112
- selectAll: false
113
- }), _jsx(UnpublishMany_v4, {
114
- collection: collectionConfig,
115
- count: ids.length,
116
- ids,
117
- modalPrefix: "hierarchy-list",
118
- onSuccess: handleActionSuccess,
119
- selectAll: false
120
- })]
121
- }, "bulk-actions"), !disableBulkDelete && _jsx(DeleteMany_v4, {
122
- afterDelete: handleActionSuccess,
123
- modalPrefix: "hierarchy-list",
124
- selections: groupedSelections
125
- }, "bulk-delete"), hierarchySlug && _jsx(MoveMany, {
126
- currentFolderId: parent?.id || null,
127
- hierarchySlug,
128
- Icon: hierarchyIcon,
129
- modalPrefix: "hierarchy-list",
130
- onSuccess: handleActionSuccess,
131
- selections: groupedSelections
132
- }, "bulk-move")].filter(Boolean)
133
- });
194
+ return t1;
134
195
  };
135
196
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","Fragment","DeleteMany_v4","useDocumentDrawer","EditMany_v4","ListSelection_v4","ListSelectionButton","MoveMany","PublishMany_v4","UnpublishMany_v4","useConfig","useDocumentSelection","useHierarchy","useRouteCache","useTranslation","DocumentListSelection","t0","$","disableBulkDelete","disableBulkEdit","hierarchyIcon","hierarchySlug","clearAll","getSelectionsForActions","getTotalCount","parent","refreshTree","clearRouteCache","config","t","count","groupedSelections","collectionSlugs","Object","keys","singleCollectionSelected","length","singleCollectionSlug","collectionConfig","collections","find","collection","slug","ids","singleHierarchySelected","HierarchyDocDrawer","t1","id","undefined","collectionSlug","openDrawer","t2","handleActionSuccess","t3","_jsx","ListActions","onClick","children","SelectionActions","_jsxs","onSave","modalPrefix","onSuccess","selectAll","afterDelete","selections","currentFolderId","Icon","filter","Boolean"],"sources":["../../../../src/views/HierarchyList/DocumentListSelection/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { Fragment } from 'react'\n\nimport { DeleteMany_v4 } from '../../../elements/DeleteMany/index.js'\nimport { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js'\nimport { EditMany_v4 } from '../../../elements/EditMany/index.js'\nimport { ListSelection_v4, ListSelectionButton } from '../../../elements/ListSelection/index.js'\nimport { MoveMany } from '../../../elements/MoveMany/index.js'\nimport { PublishMany_v4 } from '../../../elements/PublishMany/index.js'\nimport { UnpublishMany_v4 } from '../../../elements/UnpublishMany/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport type DocumentListSelectionProps = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n /** Icon to display in the move drawer */\n hierarchyIcon?: React.ReactNode\n hierarchySlug?: string\n}\n\nexport const DocumentListSelection: React.FC<DocumentListSelectionProps> = ({\n disableBulkDelete,\n disableBulkEdit,\n hierarchyIcon,\n hierarchySlug,\n}) => {\n const { clearAll, getSelectionsForActions, getTotalCount } = useDocumentSelection()\n const { parent, refreshTree } = useHierarchy()\n const { clearRouteCache } = useRouteCache()\n const { config } = useConfig()\n const { t } = useTranslation()\n\n const count = getTotalCount()\n const groupedSelections = getSelectionsForActions()\n\n const collectionSlugs = Object.keys(groupedSelections)\n const singleCollectionSelected = collectionSlugs.length === 1\n const singleCollectionSlug = singleCollectionSelected ? collectionSlugs[0] : null\n\n const collectionConfig = singleCollectionSlug\n ? config.collections.find((collection) => collection.slug === singleCollectionSlug)\n : null\n\n const ids = singleCollectionSelected ? groupedSelections[singleCollectionSlug]?.ids || [] : []\n\n // Check if single hierarchy item is selected (for direct edit)\n // Only available when hierarchySlug is provided\n const singleHierarchySelected =\n hierarchySlug && singleCollectionSlug === hierarchySlug && ids.length === 1 ? ids[0] : null\n\n const [HierarchyDocDrawer, , { openDrawer }] = useDocumentDrawer({\n id: singleHierarchySelected ?? undefined,\n collectionSlug: hierarchySlug || singleCollectionSlug || '',\n })\n\n if (count === 0) {\n return null\n }\n\n const handleActionSuccess = () => {\n refreshTree()\n clearRouteCache() // This already calls router.refresh()\n clearAll()\n }\n\n return (\n <ListSelection_v4\n count={count}\n ListActions={[\n <ListSelectionButton key=\"clear-all\" onClick={() => clearAll()}>\n {t('general:clearAll')}\n </ListSelectionButton>,\n ]}\n SelectionActions={[\n // Single hierarchy item selected - show direct edit button\n singleHierarchySelected && (\n <Fragment key=\"single-edit\">\n <ListSelectionButton onClick={openDrawer}>{t('general:edit')}</ListSelectionButton>\n <HierarchyDocDrawer onSave={handleActionSuccess} />\n </Fragment>\n ),\n // Multiple items or non-hierarchy items - show bulk actions\n !disableBulkEdit &&\n !singleHierarchySelected &&\n singleCollectionSelected &&\n collectionConfig &&\n ids.length > 0 && (\n <Fragment key=\"bulk-actions\">\n <EditMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n <PublishMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n <UnpublishMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n </Fragment>\n ),\n !disableBulkDelete && (\n <DeleteMany_v4\n afterDelete={handleActionSuccess}\n key=\"bulk-delete\"\n modalPrefix=\"hierarchy-list\"\n selections={groupedSelections}\n />\n ),\n hierarchySlug && (\n <MoveMany\n currentFolderId={parent?.id || null}\n hierarchySlug={hierarchySlug}\n Icon={hierarchyIcon}\n key=\"bulk-move\"\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selections={groupedSelections}\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","Fragment","DeleteMany_v4","useDocumentDrawer","EditMany_v4","MoveMany","ListSelection_v4","ListSelectionButton","PublishMany_v4","UnpublishMany_v4","useConfig","useDocumentSelection","useHierarchy","useRouteCache","useTranslation","SingleHierarchyEdit","t0","$","id","collectionSlug","onSuccess","t","t1","DocumentDrawer","t2","openDrawer","t3","_jsxs","children","_jsx","onClick","onSave","DocumentListSelection","disableBulkDelete","disableBulkEdit","hierarchyIcon","hierarchySlug","clearAll","getSelectionsForActions","getTotalCount","parent","refreshTree","clearRouteCache","config","Symbol","for","bb0","count","groupedSelections","collectionSlugs","Object","keys","singleCollectionSelected","length","singleCollectionSlug","collectionConfig","collections","find","collection","slug","ids","singleHierarchySelected","handleActionSuccess","ListActions","SelectionActions","modalPrefix","selectAll","afterDelete","selections","currentParentID","Icon","filter","Boolean"],"sources":["../../../../src/views/HierarchyList/DocumentListSelection/index.tsx"],"sourcesContent":["'use client'\n\nimport React, { Fragment } from 'react'\n\nimport { DeleteMany_v4 } from '../../../elements/DeleteMany/index.js'\nimport { useDocumentDrawer } from '../../../elements/DocumentDrawer/index.js'\nimport { EditMany_v4 } from '../../../elements/EditMany/index.js'\nimport { MoveMany } from '../../../elements/Hierarchy/MoveMany/index.js'\nimport { ListSelection_v4, ListSelectionButton } from '../../../elements/ListSelection/index.js'\nimport { PublishMany_v4 } from '../../../elements/PublishMany/index.js'\nimport { UnpublishMany_v4 } from '../../../elements/UnpublishMany/index.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useDocumentSelection } from '../../../providers/DocumentSelection/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouteCache } from '../../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\n\nexport type DocumentListSelectionProps = {\n disableBulkDelete?: boolean\n disableBulkEdit?: boolean\n /** Icon to display in the move drawer */\n hierarchyIcon?: React.ReactNode\n hierarchySlug?: string\n}\n\n/**\n * Separate component for single hierarchy item edit\n * Isolates useDocumentDrawer hook so it only runs when actually needed\n */\nconst SingleHierarchyEdit: React.FC<{\n collectionSlug: string\n id: number | string\n onSuccess: () => void\n}> = ({ id, collectionSlug, onSuccess }) => {\n const { t } = useTranslation()\n const [DocumentDrawer, , { openDrawer }] = useDocumentDrawer({\n id,\n collectionSlug,\n })\n\n return (\n <Fragment>\n <ListSelectionButton onClick={openDrawer}>{t('general:edit')}</ListSelectionButton>\n <DocumentDrawer onSave={onSuccess} />\n </Fragment>\n )\n}\n\nexport const DocumentListSelection: React.FC<DocumentListSelectionProps> = ({\n disableBulkDelete,\n disableBulkEdit,\n hierarchyIcon,\n hierarchySlug,\n}) => {\n const { clearAll, getSelectionsForActions, getTotalCount } = useDocumentSelection()\n const { parent, refreshTree } = useHierarchy()\n const { clearRouteCache } = useRouteCache()\n const { config } = useConfig()\n const { t } = useTranslation()\n\n const count = getTotalCount()\n const groupedSelections = getSelectionsForActions()\n\n const collectionSlugs = Object.keys(groupedSelections)\n const singleCollectionSelected = collectionSlugs.length === 1\n const singleCollectionSlug = singleCollectionSelected ? collectionSlugs[0] : null\n\n const collectionConfig = singleCollectionSlug\n ? config.collections.find((collection) => collection.slug === singleCollectionSlug)\n : null\n\n const ids = singleCollectionSelected ? groupedSelections[singleCollectionSlug]?.ids || [] : []\n\n // Check if single hierarchy item is selected (for direct edit)\n // Only available when hierarchySlug is provided\n const singleHierarchySelected =\n hierarchySlug && singleCollectionSlug === hierarchySlug && ids.length === 1 ? ids[0] : null\n\n if (count === 0) {\n return null\n }\n\n const handleActionSuccess = () => {\n clearRouteCache()\n if (hierarchySlug) {\n refreshTree(hierarchySlug)\n }\n clearAll()\n }\n\n return (\n <ListSelection_v4\n count={count}\n ListActions={[\n <ListSelectionButton key=\"clear-all\" onClick={() => clearAll()}>\n {t('general:clearAll')}\n </ListSelectionButton>,\n ]}\n SelectionActions={[\n // Single hierarchy item selected - show direct edit button\n singleHierarchySelected && hierarchySlug && (\n <SingleHierarchyEdit\n collectionSlug={hierarchySlug}\n id={singleHierarchySelected}\n key=\"single-edit\"\n onSuccess={handleActionSuccess}\n />\n ),\n // Multiple items or non-hierarchy items - show bulk actions\n !disableBulkEdit &&\n !singleHierarchySelected &&\n singleCollectionSelected &&\n collectionConfig &&\n ids.length > 0 && (\n <Fragment key=\"bulk-actions\">\n <EditMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n <PublishMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n <UnpublishMany_v4\n collection={collectionConfig}\n count={ids.length}\n ids={ids}\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selectAll={false}\n />\n </Fragment>\n ),\n !disableBulkDelete && (\n <DeleteMany_v4\n afterDelete={handleActionSuccess}\n key=\"bulk-delete\"\n modalPrefix=\"hierarchy-list\"\n selections={groupedSelections}\n />\n ),\n hierarchySlug && (\n <MoveMany\n currentParentID={parent?.id || null}\n hierarchySlug={hierarchySlug}\n Icon={hierarchyIcon}\n key=\"bulk-move\"\n modalPrefix=\"hierarchy-list\"\n onSuccess={handleActionSuccess}\n selections={groupedSelections}\n />\n ),\n ].filter(Boolean)}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}