@payloadcms/ui 3.0.0-beta.107 → 3.0.0-beta.109

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 (288) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +1 -3
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/BulkUpload/ActionsBar/index.js +2 -2
  5. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  6. package/dist/elements/BulkUpload/EditForm/index.js +3 -1
  7. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  8. package/dist/elements/BulkUpload/FormsManager/index.js +3 -1
  9. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  10. package/dist/elements/Button/index.d.ts.map +1 -1
  11. package/dist/elements/Button/index.js +1 -0
  12. package/dist/elements/Button/index.js.map +1 -1
  13. package/dist/elements/Button/types.d.ts +6 -0
  14. package/dist/elements/Button/types.d.ts.map +1 -1
  15. package/dist/elements/Button/types.js.map +1 -1
  16. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  17. package/dist/elements/CodeEditor/CodeEditor.js +51 -25
  18. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  19. package/dist/elements/CodeEditor/index.d.ts.map +1 -1
  20. package/dist/elements/CodeEditor/index.js +2 -8
  21. package/dist/elements/CodeEditor/index.js.map +1 -1
  22. package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
  23. package/dist/elements/ColumnSelector/index.js +14 -2
  24. package/dist/elements/ColumnSelector/index.js.map +1 -1
  25. package/dist/elements/DocumentControls/index.d.ts +4 -1
  26. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  27. package/dist/elements/DocumentControls/index.js +42 -6
  28. package/dist/elements/DocumentControls/index.js.map +1 -1
  29. package/dist/elements/DocumentControls/index.scss +8 -0
  30. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  31. package/dist/elements/DocumentDrawer/DrawerContent.js +23 -17
  32. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  33. package/dist/elements/DocumentDrawer/types.d.ts +4 -1
  34. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  35. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  36. package/dist/elements/EditMany/index.d.ts.map +1 -1
  37. package/dist/elements/EditMany/index.js +235 -124
  38. package/dist/elements/EditMany/index.js.map +1 -1
  39. package/dist/elements/Hamburger/index.scss +4 -0
  40. package/dist/elements/ListControls/index.d.ts.map +1 -1
  41. package/dist/elements/ListControls/index.js +9 -5
  42. package/dist/elements/ListControls/index.js.map +1 -1
  43. package/dist/elements/ListControls/index.scss +0 -6
  44. package/dist/elements/ListDrawer/DrawerContent.d.ts +2 -0
  45. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  46. package/dist/elements/ListDrawer/DrawerContent.js +3 -3
  47. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  48. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  49. package/dist/elements/ListDrawer/index.js +18 -15
  50. package/dist/elements/ListDrawer/index.js.map +1 -1
  51. package/dist/elements/ListDrawer/types.d.ts +2 -0
  52. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  53. package/dist/elements/ListDrawer/types.js.map +1 -1
  54. package/dist/elements/Localizer/LocalizerLabel/index.d.ts.map +1 -1
  55. package/dist/elements/Localizer/LocalizerLabel/index.js +9 -5
  56. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  57. package/dist/elements/Localizer/LocalizerLabel/index.scss +7 -3
  58. package/dist/elements/Locked/index.d.ts +8 -0
  59. package/dist/elements/Locked/index.d.ts.map +1 -0
  60. package/dist/elements/Locked/index.js +72 -0
  61. package/dist/elements/Locked/index.js.map +1 -0
  62. package/dist/elements/Locked/index.scss +14 -0
  63. package/dist/elements/Pagination/index.d.ts.map +1 -1
  64. package/dist/elements/Pagination/index.js +1 -1
  65. package/dist/elements/Pagination/index.js.map +1 -1
  66. package/dist/elements/PerPage/index.d.ts +5 -5
  67. package/dist/elements/PerPage/index.d.ts.map +1 -1
  68. package/dist/elements/PerPage/index.js +2 -1
  69. package/dist/elements/PerPage/index.js.map +1 -1
  70. package/dist/elements/Pill/index.scss +3 -1
  71. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -0
  72. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  73. package/dist/elements/Popup/PopupTrigger/index.js +3 -2
  74. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  75. package/dist/elements/Popup/PopupTrigger/index.scss +12 -0
  76. package/dist/elements/Popup/index.d.ts +1 -0
  77. package/dist/elements/Popup/index.d.ts.map +1 -1
  78. package/dist/elements/Popup/index.js +6 -3
  79. package/dist/elements/Popup/index.js.map +1 -1
  80. package/dist/elements/Popup/index.scss +18 -1
  81. package/dist/elements/PreviewButton/usePreviewURL.d.ts.map +1 -1
  82. package/dist/elements/PreviewButton/usePreviewURL.js +11 -3
  83. package/dist/elements/PreviewButton/usePreviewURL.js.map +1 -1
  84. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  85. package/dist/elements/PublishButton/index.js +97 -46
  86. package/dist/elements/PublishButton/index.js.map +1 -1
  87. package/dist/elements/PublishMany/index.js +2 -1
  88. package/dist/elements/PublishMany/index.js.map +1 -1
  89. package/dist/elements/ReactSelect/index.scss +4 -0
  90. package/dist/elements/RelationshipTable/TableWrapper.d.ts +8 -0
  91. package/dist/elements/RelationshipTable/TableWrapper.d.ts.map +1 -0
  92. package/dist/elements/RelationshipTable/TableWrapper.js +69 -0
  93. package/dist/elements/RelationshipTable/TableWrapper.js.map +1 -0
  94. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts +8 -0
  95. package/dist/elements/RelationshipTable/cells/DrawerLink/index.d.ts.map +1 -0
  96. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +82 -0
  97. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -0
  98. package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +4 -0
  99. package/dist/elements/RelationshipTable/index.d.ts +15 -0
  100. package/dist/elements/RelationshipTable/index.d.ts.map +1 -0
  101. package/dist/elements/RelationshipTable/index.js +445 -0
  102. package/dist/elements/RelationshipTable/index.js.map +1 -0
  103. package/dist/elements/RelationshipTable/index.scss +26 -0
  104. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  105. package/dist/elements/SelectRow/index.js +60 -29
  106. package/dist/elements/SelectRow/index.js.map +1 -1
  107. package/dist/elements/SortColumn/index.d.ts +1 -0
  108. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  109. package/dist/elements/SortColumn/index.js +29 -17
  110. package/dist/elements/SortColumn/index.js.map +1 -1
  111. package/dist/elements/SortColumn/index.scss +10 -1
  112. package/dist/elements/Status/index.js +1 -1
  113. package/dist/elements/Status/index.js.map +1 -1
  114. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts +2 -3
  115. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  116. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +43 -40
  117. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  118. package/dist/elements/Table/DefaultCell/fields/Relationship/index.scss +0 -3
  119. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -0
  120. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  121. package/dist/elements/Table/DefaultCell/fields/index.js +1 -0
  122. package/dist/elements/Table/DefaultCell/fields/index.js.map +1 -1
  123. package/dist/elements/Table/RenderCell.d.ts +11 -0
  124. package/dist/elements/Table/RenderCell.d.ts.map +1 -0
  125. package/dist/elements/Table/RenderCell.js +30 -0
  126. package/dist/elements/Table/RenderCell.js.map +1 -0
  127. package/dist/elements/Table/index.d.ts +3 -6
  128. package/dist/elements/Table/index.d.ts.map +1 -1
  129. package/dist/elements/Table/index.js +36 -31
  130. package/dist/elements/Table/index.js.map +1 -1
  131. package/dist/elements/Table/index.scss +50 -0
  132. package/dist/elements/TableColumns/buildColumnState.d.ts +5 -2
  133. package/dist/elements/TableColumns/buildColumnState.d.ts.map +1 -1
  134. package/dist/elements/TableColumns/buildColumnState.js +35 -22
  135. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  136. package/dist/elements/TableColumns/index.d.ts +5 -0
  137. package/dist/elements/TableColumns/index.d.ts.map +1 -1
  138. package/dist/elements/TableColumns/index.js +107 -74
  139. package/dist/elements/TableColumns/index.js.map +1 -1
  140. package/dist/elements/Tooltip/index.d.ts +1 -0
  141. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  142. package/dist/elements/Tooltip/index.js +15 -13
  143. package/dist/elements/Tooltip/index.js.map +1 -1
  144. package/dist/elements/Tooltip/index.scss +2 -2
  145. package/dist/elements/UnpublishMany/index.js +2 -1
  146. package/dist/elements/UnpublishMany/index.js.map +1 -1
  147. package/dist/elements/WhereBuilder/Condition/index.js +32 -30
  148. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  149. package/dist/exports/client/{CodeEditor-CHKRX3U2.js → CodeEditor-FARZ6UIX.js} +6 -4
  150. package/dist/exports/client/CodeEditor-FARZ6UIX.js.map +8 -0
  151. package/dist/exports/client/{DatePicker-OLRZVTAD.js → DatePicker-NBYDOP2X.js} +2 -2
  152. package/dist/exports/client/chunk-6IWEPNUV.js +14 -0
  153. package/dist/exports/client/chunk-6IWEPNUV.js.map +8 -0
  154. package/dist/exports/client/{chunk-JINNHJP7.js → chunk-6MRITTMD.js} +3 -3
  155. package/dist/exports/client/{chunk-JINNHJP7.js.map → chunk-6MRITTMD.js.map} +4 -4
  156. package/dist/exports/client/index.d.ts +1 -0
  157. package/dist/exports/client/index.d.ts.map +1 -1
  158. package/dist/exports/client/index.js +19 -19
  159. package/dist/exports/client/index.js.map +4 -4
  160. package/dist/exports/shared/index.d.ts +3 -0
  161. package/dist/exports/shared/index.d.ts.map +1 -1
  162. package/dist/exports/shared/index.js +2 -2
  163. package/dist/exports/shared/index.js.map +4 -4
  164. package/dist/fields/Array/ArrayRow.js +2 -2
  165. package/dist/fields/Array/ArrayRow.js.map +1 -1
  166. package/dist/fields/Blocks/BlockRow.js +2 -2
  167. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  168. package/dist/fields/Collapsible/index.d.ts +16 -16
  169. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  170. package/dist/fields/Group/index.js +2 -2
  171. package/dist/fields/Group/index.js.map +1 -1
  172. package/dist/fields/Join/index.d.ts +9 -0
  173. package/dist/fields/Join/index.d.ts.map +1 -0
  174. package/dist/fields/Join/index.js +75 -0
  175. package/dist/fields/Join/index.js.map +1 -0
  176. package/dist/fields/Number/index.js +1 -1
  177. package/dist/fields/Number/index.js.map +1 -1
  178. package/dist/fields/Password/index.js +29 -25
  179. package/dist/fields/Password/index.js.map +1 -1
  180. package/dist/fields/Relationship/select-components/SingleValue/index.d.ts.map +1 -1
  181. package/dist/fields/Relationship/select-components/SingleValue/index.js +11 -13
  182. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  183. package/dist/fields/Row/index.scss +3 -0
  184. package/dist/fields/Textarea/index.d.ts.map +1 -1
  185. package/dist/fields/Textarea/index.js +2 -0
  186. package/dist/fields/Textarea/index.js.map +1 -1
  187. package/dist/fields/Upload/RelationshipContent/index.js +28 -29
  188. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  189. package/dist/fields/Upload/UploadCard/index.scss +0 -1
  190. package/dist/fields/index.d.ts.map +1 -1
  191. package/dist/fields/index.js +2 -0
  192. package/dist/fields/index.js.map +1 -1
  193. package/dist/forms/Form/index.js +6 -2
  194. package/dist/forms/Form/index.js.map +1 -1
  195. package/dist/forms/NullifyField/index.d.ts.map +1 -1
  196. package/dist/forms/NullifyField/index.js +1 -0
  197. package/dist/forms/NullifyField/index.js.map +1 -1
  198. package/dist/forms/RenderFields/RenderField.d.ts.map +1 -1
  199. package/dist/forms/RenderFields/RenderField.js +3 -1
  200. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  201. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  202. package/dist/forms/RenderFields/index.js +18 -15
  203. package/dist/forms/RenderFields/index.js.map +1 -1
  204. package/dist/forms/buildStateFromSchema/addFieldStatePromise.d.ts.map +1 -1
  205. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js +3 -4
  206. package/dist/forms/buildStateFromSchema/addFieldStatePromise.js.map +1 -1
  207. package/dist/forms/buildStateFromSchema/index.d.ts +2 -0
  208. package/dist/forms/buildStateFromSchema/index.d.ts.map +1 -1
  209. package/dist/forms/buildStateFromSchema/index.js.map +1 -1
  210. package/dist/forms/useField/index.js +203 -111
  211. package/dist/forms/useField/index.js.map +1 -1
  212. package/dist/hooks/useDelay.js +48 -15
  213. package/dist/hooks/useDelay.js.map +1 -1
  214. package/dist/hooks/useDelayedRender.js +71 -32
  215. package/dist/hooks/useDelayedRender.js.map +1 -1
  216. package/dist/hooks/usePayloadAPI.d.ts.map +1 -1
  217. package/dist/hooks/usePayloadAPI.js.map +1 -1
  218. package/dist/icons/Chevron/index.d.ts +3 -3
  219. package/dist/icons/Chevron/index.d.ts.map +1 -1
  220. package/dist/icons/Chevron/index.js +4 -4
  221. package/dist/icons/Chevron/index.js.map +1 -1
  222. package/dist/icons/Chevron/index.scss +9 -1
  223. package/dist/icons/Lock/index.d.ts +6 -0
  224. package/dist/icons/Lock/index.d.ts.map +1 -0
  225. package/dist/icons/Lock/index.js +27 -0
  226. package/dist/icons/Lock/index.js.map +1 -0
  227. package/dist/icons/Lock/index.scss +8 -0
  228. package/dist/providers/Config/createClientConfig/collections.d.ts.map +1 -1
  229. package/dist/providers/Config/createClientConfig/collections.js +11 -1
  230. package/dist/providers/Config/createClientConfig/collections.js.map +1 -1
  231. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  232. package/dist/providers/Config/createClientConfig/fields.js +3 -0
  233. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  234. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  235. package/dist/providers/DocumentInfo/index.js +101 -6
  236. package/dist/providers/DocumentInfo/index.js.map +1 -1
  237. package/dist/providers/DocumentInfo/types.d.ts +32 -27
  238. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  239. package/dist/providers/DocumentInfo/types.js.map +1 -1
  240. package/dist/providers/ListQuery/index.d.ts +5 -5
  241. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  242. package/dist/providers/ListQuery/index.js.map +1 -1
  243. package/dist/providers/Preferences/index.js +3 -1
  244. package/dist/providers/Preferences/index.js.map +1 -1
  245. package/dist/providers/Root/index.d.ts.map +1 -1
  246. package/dist/providers/Root/index.js +2 -2
  247. package/dist/providers/Root/index.js.map +1 -1
  248. package/dist/providers/Selection/index.d.ts +2 -1
  249. package/dist/providers/Selection/index.d.ts.map +1 -1
  250. package/dist/providers/Selection/index.js +23 -8
  251. package/dist/providers/Selection/index.js.map +1 -1
  252. package/dist/providers/Theme/index.d.ts +0 -1
  253. package/dist/providers/Theme/index.d.ts.map +1 -1
  254. package/dist/providers/Theme/index.js +29 -21
  255. package/dist/providers/Theme/index.js.map +1 -1
  256. package/dist/providers/Translation/index.d.ts.map +1 -1
  257. package/dist/providers/Translation/index.js +5 -7
  258. package/dist/providers/Translation/index.js.map +1 -1
  259. package/dist/styles.css +1 -1
  260. package/dist/utilities/buildFormState.d.ts +9 -3
  261. package/dist/utilities/buildFormState.d.ts.map +1 -1
  262. package/dist/utilities/buildFormState.js +82 -4
  263. package/dist/utilities/buildFormState.js.map +1 -1
  264. package/dist/utilities/deepMerge.d.ts +12 -0
  265. package/dist/utilities/deepMerge.d.ts.map +1 -0
  266. package/dist/utilities/deepMerge.js +25 -0
  267. package/dist/utilities/deepMerge.js.map +1 -0
  268. package/dist/utilities/getFormState.d.ts +8 -2
  269. package/dist/utilities/getFormState.d.ts.map +1 -1
  270. package/dist/utilities/getFormState.js +3 -1
  271. package/dist/utilities/getFormState.js.map +1 -1
  272. package/dist/utilities/handleBackToDashboard.d.ts +8 -0
  273. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -0
  274. package/dist/utilities/handleBackToDashboard.js +12 -0
  275. package/dist/utilities/handleBackToDashboard.js.map +1 -0
  276. package/dist/utilities/handleGoBack.d.ts +9 -0
  277. package/dist/utilities/handleGoBack.d.ts.map +1 -0
  278. package/dist/utilities/handleGoBack.js +13 -0
  279. package/dist/utilities/handleGoBack.js.map +1 -0
  280. package/dist/utilities/handleTakeOver.d.ts +7 -0
  281. package/dist/utilities/handleTakeOver.d.ts.map +1 -0
  282. package/dist/utilities/handleTakeOver.js +27 -0
  283. package/dist/utilities/handleTakeOver.js.map +1 -0
  284. package/package.json +14 -14
  285. package/dist/exports/client/CodeEditor-CHKRX3U2.js.map +0 -8
  286. package/dist/exports/client/chunk-BGA6EPOL.js +0 -14
  287. package/dist/exports/client/chunk-BGA6EPOL.js.map +0 -8
  288. /package/dist/exports/client/{DatePicker-OLRZVTAD.js.map → DatePicker-NBYDOP2X.js.map} +0 -0
@@ -1,7 +1,13 @@
1
- import type { FormState, PayloadRequest } from 'payload';
1
+ import type { ClientUser, FormState, PayloadRequest } from 'payload';
2
2
  import type { FieldSchemaMap } from './buildFieldSchemaMap/types.js';
3
3
  export declare const getFieldSchemaMap: (req: PayloadRequest) => FieldSchemaMap;
4
- export declare const buildFormState: ({ req }: {
4
+ export declare const buildFormState: ({ req, }: {
5
5
  req: PayloadRequest;
6
- }) => Promise<FormState>;
6
+ }) => Promise<{
7
+ lockedState?: {
8
+ isLocked: boolean;
9
+ user: ClientUser | number | string;
10
+ };
11
+ state: FormState;
12
+ }>;
7
13
  //# sourceMappingURL=buildFormState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,SAAS,EAAE,cAAc,EAAc,MAAM,SAAS,CAAA;AAKhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAWpE,eAAO,MAAM,iBAAiB,QAAS,cAAc,KAAG,cAWvD,CAAA;AAED,eAAO,MAAM,cAAc,YAAmB;IAAE,GAAG,EAAE,cAAc,CAAA;CAAE,KAAG,OAAO,CAAC,SAAS,CAqLxF,CAAA"}
1
+ {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EAGV,SAAS,EACT,cAAc,EAEf,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAWpE,eAAO,MAAM,iBAAiB,QAAS,cAAc,KAAG,cAWvD,CAAA;AAED,eAAO,MAAM,cAAc,aAExB;IACD,GAAG,EAAE,cAAc,CAAA;CACpB,KAAG,OAAO,CAAC;IACV,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IACvE,KAAK,EAAE,SAAS,CAAA;CACjB,CAqQA,CAAA"}
@@ -25,7 +25,9 @@ export const buildFormState = async ({
25
25
  globalSlug,
26
26
  locale,
27
27
  operation,
28
- schemaPath
28
+ returnLockStatus,
29
+ schemaPath,
30
+ updateLastEdited
29
31
  } = reqData;
30
32
  const incomingUserSlug = req.user?.collection;
31
33
  const adminUserSlug = req.payload.config.admin.user;
@@ -60,7 +62,7 @@ export const buildFormState = async ({
60
62
  const id = collectionSlug ? reqData.id : undefined;
61
63
  const schemaPathSegments = schemaPath && schemaPath.split('.');
62
64
  let fieldSchema;
63
- if (schemaPathSegments.length === 1) {
65
+ if (schemaPathSegments && schemaPathSegments.length === 1) {
64
66
  if (req.payload.collections[schemaPath]) {
65
67
  fieldSchema = req.payload.collections[schemaPath].config.fields;
66
68
  } else {
@@ -154,7 +156,7 @@ export const buildFormState = async ({
154
156
  };
155
157
  promises.data = fetchData();
156
158
  }
157
- if (Object.keys(promises).length > 0) {
159
+ if (Object.keys(promises) && Object.keys(promises).length > 0) {
158
160
  await Promise.all(Object.values(promises));
159
161
  }
160
162
  const result = await buildStateFromSchema({
@@ -174,6 +176,82 @@ export const buildFormState = async ({
174
176
  result.file = formState.file;
175
177
  }
176
178
  }
177
- return result;
179
+ if (returnLockStatus && req.user && (id || globalSlug)) {
180
+ let lockedDocumentQuery;
181
+ if (collectionSlug) {
182
+ lockedDocumentQuery = {
183
+ and: [{
184
+ 'document.relationTo': {
185
+ equals: collectionSlug
186
+ }
187
+ }, {
188
+ 'document.value': {
189
+ equals: id
190
+ }
191
+ }]
192
+ };
193
+ } else if (globalSlug) {
194
+ lockedDocumentQuery = {
195
+ globalSlug: {
196
+ equals: globalSlug
197
+ }
198
+ };
199
+ }
200
+ if (lockedDocumentQuery) {
201
+ const lockedDocument = await req.payload.find({
202
+ collection: 'payload-locked-documents',
203
+ depth: 1,
204
+ limit: 1,
205
+ pagination: false,
206
+ where: lockedDocumentQuery
207
+ });
208
+ if (lockedDocument.docs && lockedDocument.docs.length > 0) {
209
+ const lockedState = {
210
+ isLocked: true,
211
+ user: lockedDocument.docs[0]?.user?.value
212
+ };
213
+ if (updateLastEdited) {
214
+ await req.payload.db.updateOne({
215
+ id: lockedDocument.docs[0].id,
216
+ collection: 'payload-locked-documents',
217
+ data: {},
218
+ req
219
+ });
220
+ }
221
+ return {
222
+ lockedState,
223
+ state: result
224
+ };
225
+ } else {
226
+ // If no lock document exists, create it
227
+ await req.payload.db.create({
228
+ collection: 'payload-locked-documents',
229
+ data: {
230
+ document: collectionSlug ? {
231
+ relationTo: [collectionSlug],
232
+ value: id
233
+ } : undefined,
234
+ globalSlug: globalSlug ? globalSlug : undefined,
235
+ user: {
236
+ relationTo: [req.user.collection],
237
+ value: req.user.id
238
+ }
239
+ },
240
+ req
241
+ });
242
+ const lockedState = {
243
+ isLocked: true,
244
+ user: req.user
245
+ };
246
+ return {
247
+ lockedState,
248
+ state: result
249
+ };
250
+ }
251
+ }
252
+ }
253
+ return {
254
+ state: result
255
+ };
178
256
  };
179
257
  //# sourceMappingURL=buildFormState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.js","names":["reduceFieldsToValues","buildStateFromSchema","buildFieldSchemaMap","cached","global","_payload_fieldSchemaMap","getFieldSchemaMap","req","process","env","NODE_ENV","config","payload","i18n","buildFormState","reqData","data","collectionSlug","formState","globalSlug","locale","operation","schemaPath","incomingUserSlug","user","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","fieldSchemaMap","id","undefined","schemaPathSegments","split","fieldSchema","fields","globals","global1","slug","has","get","docPreferences","promises","preferencesKey","fetchPreferences","preferencesResult","where","and","key","equals","value","preferences","fetchData","resolvedData","findByID","draft","fallbackLocale","overrideAccess","findGlobal","Object","keys","Promise","all","values","result","upload","file"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type { DocumentPreferences, Field, FormState, PayloadRequest, TypeWithID } from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport type { BuildFormStateArgs } from '../forms/buildStateFromSchema/index.js'\nimport type { FieldSchemaMap } from './buildFieldSchemaMap/types.js'\n\nimport { buildStateFromSchema } from '../forms/buildStateFromSchema/index.js'\nimport { buildFieldSchemaMap } from './buildFieldSchemaMap/index.js'\n\nlet cached = global._payload_fieldSchemaMap\n\nif (!cached) {\n cached = global._payload_fieldSchemaMap = null\n}\n\nexport const getFieldSchemaMap = (req: PayloadRequest): FieldSchemaMap => {\n if (cached && process.env.NODE_ENV !== 'development') {\n return cached\n }\n\n cached = buildFieldSchemaMap({\n config: req.payload.config,\n i18n: req.i18n,\n })\n\n return cached\n}\n\nexport const buildFormState = async ({ req }: { req: PayloadRequest }): Promise<FormState> => {\n const reqData: BuildFormStateArgs = (req.data || {}) as BuildFormStateArgs\n const { collectionSlug, formState, globalSlug, locale, operation, schemaPath } = reqData\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const fieldSchemaMap = getFieldSchemaMap(req)\n\n const id = collectionSlug ? reqData.id : undefined\n const schemaPathSegments = schemaPath && schemaPath.split('.')\n\n let fieldSchema: Field[]\n\n if (schemaPathSegments.length === 1) {\n if (req.payload.collections[schemaPath]) {\n fieldSchema = req.payload.collections[schemaPath].config.fields\n } else {\n fieldSchema = req.payload.config.globals.find((global) => global.slug === schemaPath)?.fields\n }\n } else if (fieldSchemaMap.has(schemaPath)) {\n fieldSchema = fieldSchemaMap.get(schemaPath)\n }\n\n if (!fieldSchema) {\n throw new Error(`Could not find field schema for given path \"${schemaPath}\"`)\n }\n\n let docPreferences = reqData.docPreferences\n let data = reqData.data\n\n const promises: {\n data?: Promise<void>\n preferences?: Promise<void>\n } = {}\n\n // If the request does not include doc preferences,\n // we should fetch them. This is useful for DocumentInfoProvider\n // as it reduces the amount of client-side fetches necessary\n // when we fetch data for the Edit View\n if (!docPreferences) {\n let preferencesKey\n\n if (collectionSlug && id) {\n preferencesKey = `collection-${collectionSlug}-${id}`\n }\n\n if (globalSlug) {\n preferencesKey = `global-${globalSlug}`\n }\n\n if (preferencesKey) {\n const fetchPreferences = async () => {\n const preferencesResult = (await req.payload.find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: req.user.collection,\n },\n },\n {\n 'user.value': {\n equals: req.user.id,\n },\n },\n ],\n },\n })) as unknown as { docs: { value: DocumentPreferences }[] }\n\n if (preferencesResult?.docs?.[0]?.value) {\n docPreferences = preferencesResult.docs[0].value\n }\n }\n\n promises.preferences = fetchPreferences()\n }\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n // If we do not have data at this point,\n // we can fetch it. This is useful for DocumentInfoProvider\n // to reduce the amount of fetches required\n if (!data) {\n const fetchData = async () => {\n let resolvedData: Record<string, unknown> | TypeWithID\n\n if (collectionSlug && id) {\n resolvedData = await req.payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n if (globalSlug && schemaPath === globalSlug) {\n resolvedData = await req.payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n data = resolvedData\n }\n\n promises.data = fetchData()\n }\n\n if (Object.keys(promises).length > 0) {\n await Promise.all(Object.values(promises))\n }\n\n const result = await buildStateFromSchema({\n id,\n collectionSlug,\n data,\n fieldSchema,\n operation,\n preferences: docPreferences || { fields: {} },\n req,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (req.payload.collections[collectionSlug]?.config?.upload && formState.file) {\n result.file = formState.file\n }\n }\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildFormState.js","names":["reduceFieldsToValues","buildStateFromSchema","buildFieldSchemaMap","cached","global","_payload_fieldSchemaMap","getFieldSchemaMap","req","process","env","NODE_ENV","config","payload","i18n","buildFormState","reqData","data","collectionSlug","formState","globalSlug","locale","operation","returnLockStatus","schemaPath","updateLastEdited","incomingUserSlug","user","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","fieldSchemaMap","id","undefined","schemaPathSegments","split","fieldSchema","fields","globals","global1","slug","has","get","docPreferences","promises","preferencesKey","fetchPreferences","preferencesResult","where","and","key","equals","value","preferences","fetchData","resolvedData","findByID","draft","fallbackLocale","overrideAccess","findGlobal","Object","keys","Promise","all","values","result","upload","file","lockedDocumentQuery","lockedDocument","lockedState","isLocked","db","updateOne","state","create","document","relationTo"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n ClientUser,\n DocumentPreferences,\n Field,\n FormState,\n PayloadRequest,\n TypeWithID,\n} from 'payload'\n\nimport { reduceFieldsToValues } from 'payload/shared'\n\nimport type { BuildFormStateArgs } from '../forms/buildStateFromSchema/index.js'\nimport type { FieldSchemaMap } from './buildFieldSchemaMap/types.js'\n\nimport { buildStateFromSchema } from '../forms/buildStateFromSchema/index.js'\nimport { buildFieldSchemaMap } from './buildFieldSchemaMap/index.js'\n\nlet cached = global._payload_fieldSchemaMap\n\nif (!cached) {\n cached = global._payload_fieldSchemaMap = null\n}\n\nexport const getFieldSchemaMap = (req: PayloadRequest): FieldSchemaMap => {\n if (cached && process.env.NODE_ENV !== 'development') {\n return cached\n }\n\n cached = buildFieldSchemaMap({\n config: req.payload.config,\n i18n: req.i18n,\n })\n\n return cached\n}\n\nexport const buildFormState = async ({\n req,\n}: {\n req: PayloadRequest\n}): Promise<{\n lockedState?: { isLocked: boolean; user: ClientUser | number | string }\n state: FormState\n}> => {\n const reqData: BuildFormStateArgs = (req.data || {}) as BuildFormStateArgs\n const {\n collectionSlug,\n formState,\n globalSlug,\n locale,\n operation,\n returnLockStatus,\n schemaPath,\n updateLastEdited,\n } = reqData\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin\n\n // Run the admin access function from the config if it exists\n if (adminAccessFunction) {\n const canAccessAdmin = await adminAccessFunction({ req })\n\n if (!canAccessAdmin) {\n throw new Error('Unauthorized')\n }\n // Match the user collection to the global admin config\n } else if (adminUserSlug !== incomingUserSlug) {\n throw new Error('Unauthorized')\n }\n } else {\n const hasUsers = await req.payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\n // If there are users, we should not allow access because of /create-first-user\n if (hasUsers.docs.length) {\n throw new Error('Unauthorized')\n }\n }\n\n const fieldSchemaMap = getFieldSchemaMap(req)\n\n const id = collectionSlug ? reqData.id : undefined\n const schemaPathSegments = schemaPath && schemaPath.split('.')\n\n let fieldSchema: Field[]\n\n if (schemaPathSegments && schemaPathSegments.length === 1) {\n if (req.payload.collections[schemaPath]) {\n fieldSchema = req.payload.collections[schemaPath].config.fields\n } else {\n fieldSchema = req.payload.config.globals.find((global) => global.slug === schemaPath)?.fields\n }\n } else if (fieldSchemaMap.has(schemaPath)) {\n fieldSchema = fieldSchemaMap.get(schemaPath)\n }\n\n if (!fieldSchema) {\n throw new Error(`Could not find field schema for given path \"${schemaPath}\"`)\n }\n\n let docPreferences = reqData.docPreferences\n let data = reqData.data\n\n const promises: {\n data?: Promise<void>\n preferences?: Promise<void>\n } = {}\n\n // If the request does not include doc preferences,\n // we should fetch them. This is useful for DocumentInfoProvider\n // as it reduces the amount of client-side fetches necessary\n // when we fetch data for the Edit View\n if (!docPreferences) {\n let preferencesKey\n\n if (collectionSlug && id) {\n preferencesKey = `collection-${collectionSlug}-${id}`\n }\n\n if (globalSlug) {\n preferencesKey = `global-${globalSlug}`\n }\n\n if (preferencesKey) {\n const fetchPreferences = async () => {\n const preferencesResult = (await req.payload.find({\n collection: 'payload-preferences',\n depth: 0,\n limit: 1,\n where: {\n and: [\n {\n key: {\n equals: preferencesKey,\n },\n },\n {\n 'user.relationTo': {\n equals: req.user.collection,\n },\n },\n {\n 'user.value': {\n equals: req.user.id,\n },\n },\n ],\n },\n })) as unknown as { docs: { value: DocumentPreferences }[] }\n\n if (preferencesResult?.docs?.[0]?.value) {\n docPreferences = preferencesResult.docs[0].value\n }\n }\n\n promises.preferences = fetchPreferences()\n }\n }\n\n // If there is a form state,\n // then we can deduce data from that form state\n if (formState) {\n data = reduceFieldsToValues(formState, true)\n }\n\n // If we do not have data at this point,\n // we can fetch it. This is useful for DocumentInfoProvider\n // to reduce the amount of fetches required\n if (!data) {\n const fetchData = async () => {\n let resolvedData: Record<string, unknown> | TypeWithID\n\n if (collectionSlug && id) {\n resolvedData = await req.payload.findByID({\n id,\n collection: collectionSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n if (globalSlug && schemaPath === globalSlug) {\n resolvedData = await req.payload.findGlobal({\n slug: globalSlug,\n depth: 0,\n draft: true,\n fallbackLocale: null,\n locale,\n overrideAccess: false,\n user: req.user,\n })\n }\n\n data = resolvedData\n }\n\n promises.data = fetchData()\n }\n\n if (Object.keys(promises) && Object.keys(promises).length > 0) {\n await Promise.all(Object.values(promises))\n }\n\n const result = await buildStateFromSchema({\n id,\n collectionSlug,\n data,\n fieldSchema,\n operation,\n preferences: docPreferences || { fields: {} },\n req,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (req.payload.collections[collectionSlug]?.config?.upload && formState.file) {\n result.file = formState.file\n }\n }\n\n if (returnLockStatus && req.user && (id || globalSlug)) {\n let lockedDocumentQuery\n\n if (collectionSlug) {\n lockedDocumentQuery = {\n and: [\n { 'document.relationTo': { equals: collectionSlug } },\n { 'document.value': { equals: id } },\n ],\n }\n } else if (globalSlug) {\n lockedDocumentQuery = {\n globalSlug: { equals: globalSlug },\n }\n }\n\n if (lockedDocumentQuery) {\n const lockedDocument = await req.payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n limit: 1,\n pagination: false,\n where: lockedDocumentQuery,\n })\n\n if (lockedDocument.docs && lockedDocument.docs.length > 0) {\n const lockedState = {\n isLocked: true,\n user: lockedDocument.docs[0]?.user?.value,\n }\n\n if (updateLastEdited) {\n await req.payload.db.updateOne({\n id: lockedDocument.docs[0].id,\n collection: 'payload-locked-documents',\n data: {},\n req,\n })\n }\n\n return { lockedState, state: result }\n } else {\n // If no lock document exists, create it\n await req.payload.db.create({\n collection: 'payload-locked-documents',\n data: {\n document: collectionSlug\n ? {\n relationTo: [collectionSlug],\n value: id,\n }\n : undefined,\n globalSlug: globalSlug ? globalSlug : undefined,\n user: {\n relationTo: [req.user.collection],\n value: req.user.id,\n },\n },\n req,\n })\n\n const lockedState = {\n isLocked: true,\n user: req.user,\n }\n\n return { lockedState, state: result }\n }\n }\n }\n\n return { state: result }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Very simple, but fast deepMerge implementation. Only deepMerges objects, not arrays and clones everything.
3
+ * Do not use this if your object contains any complex objects like React Components, or if you would like to combine Arrays.
4
+ * If you only have simple objects and need a fast deepMerge, this is the function for you.
5
+ *
6
+ * obj2 takes precedence over obj1 - thus if obj2 has a key that obj1 also has, obj2's value will be used.
7
+ *
8
+ * @param obj1 base object
9
+ * @param obj2 object to merge "into" obj1
10
+ */
11
+ export declare function deepMergeSimple<T = object>(obj1: object, obj2: object): T;
12
+ //# sourceMappingURL=deepMerge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepMerge.d.ts","sourceRoot":"","sources":["../../src/utilities/deepMerge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAczE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Very simple, but fast deepMerge implementation. Only deepMerges objects, not arrays and clones everything.
3
+ * Do not use this if your object contains any complex objects like React Components, or if you would like to combine Arrays.
4
+ * If you only have simple objects and need a fast deepMerge, this is the function for you.
5
+ *
6
+ * obj2 takes precedence over obj1 - thus if obj2 has a key that obj1 also has, obj2's value will be used.
7
+ *
8
+ * @param obj1 base object
9
+ * @param obj2 object to merge "into" obj1
10
+ */export function deepMergeSimple(obj1, obj2) {
11
+ const output = {
12
+ ...obj1
13
+ };
14
+ for (const key in obj2) {
15
+ if (Object.prototype.hasOwnProperty.call(obj2, key)) {
16
+ if (typeof obj2[key] === 'object' && !Array.isArray(obj2[key]) && obj1[key]) {
17
+ output[key] = deepMergeSimple(obj1[key], obj2[key]);
18
+ } else {
19
+ output[key] = obj2[key];
20
+ }
21
+ }
22
+ }
23
+ return output;
24
+ }
25
+ //# sourceMappingURL=deepMerge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deepMerge.js","names":["deepMergeSimple","obj1","obj2","output","key","Object","prototype","hasOwnProperty","call","Array","isArray"],"sources":["../../src/utilities/deepMerge.ts"],"sourcesContent":["/**\n * Very simple, but fast deepMerge implementation. Only deepMerges objects, not arrays and clones everything.\n * Do not use this if your object contains any complex objects like React Components, or if you would like to combine Arrays.\n * If you only have simple objects and need a fast deepMerge, this is the function for you.\n *\n * obj2 takes precedence over obj1 - thus if obj2 has a key that obj1 also has, obj2's value will be used.\n *\n * @param obj1 base object\n * @param obj2 object to merge \"into\" obj1\n */\nexport function deepMergeSimple<T = object>(obj1: object, obj2: object): T {\n const output = { ...obj1 }\n\n for (const key in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, key)) {\n if (typeof obj2[key] === 'object' && !Array.isArray(obj2[key]) && obj1[key]) {\n output[key] = deepMergeSimple(obj1[key], obj2[key])\n } else {\n output[key] = obj2[key]\n }\n }\n }\n\n return output as T\n}\n"],"mappings":"AAAA;;;;;;;;;GAUA,OAAO,SAASA,gBAA4BC,IAAY,EAAEC,IAAY;EACpE,MAAMC,MAAA,GAAS;IAAE,GAAGF;EAAK;EAEzB,KAAK,MAAMG,GAAA,IAAOF,IAAA,EAAM;IACtB,IAAIG,MAAA,CAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACN,IAAA,EAAME,GAAA,GAAM;MACnD,IAAI,OAAOF,IAAI,CAACE,GAAA,CAAI,KAAK,YAAY,CAACK,KAAA,CAAMC,OAAO,CAACR,IAAI,CAACE,GAAA,CAAI,KAAKH,IAAI,CAACG,GAAA,CAAI,EAAE;QAC3ED,MAAM,CAACC,GAAA,CAAI,GAAGJ,eAAA,CAAgBC,IAAI,CAACG,GAAA,CAAI,EAAEF,IAAI,CAACE,GAAA,CAAI;MACpD,OAAO;QACLD,MAAM,CAACC,GAAA,CAAI,GAAGF,IAAI,CAACE,GAAA,CAAI;MACzB;IACF;EACF;EAEA,OAAOD,MAAA;AACT","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { FormState, SanitizedConfig } from 'payload';
1
+ import type { ClientUser, FormState, SanitizedConfig } from 'payload';
2
2
  import type { BuildFormStateArgs } from '../forms/buildStateFromSchema/index.js';
3
3
  export declare const getFormState: (args: {
4
4
  apiRoute: SanitizedConfig["routes"]["api"];
@@ -7,5 +7,11 @@ export declare const getFormState: (args: {
7
7
  serverURL: SanitizedConfig["serverURL"];
8
8
  signal?: AbortSignal;
9
9
  token?: string;
10
- }) => Promise<FormState>;
10
+ }) => Promise<{
11
+ lockedState?: {
12
+ isLocked: boolean;
13
+ user: ClientUser;
14
+ };
15
+ state: FormState;
16
+ }>;
11
17
  //# sourceMappingURL=getFormState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/getFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAEhF,eAAO,MAAM,YAAY,SAAgB;IACvC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,KAAG,OAAO,CAAC,SAAS,CAyBpB,CAAA"}
1
+ {"version":3,"file":"getFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/getFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAErE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAA;AAEhF,eAAO,MAAM,YAAY,SAAgB;IACvC,QAAQ,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,EAAE,kBAAkB,CAAA;IACxB,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IAC9C,SAAS,EAAE,eAAe,CAAC,WAAW,CAAC,CAAA;IACvC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,KAAG,OAAO,CAAC;IAAE,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CA4BtF,CAAA"}
@@ -27,6 +27,8 @@ export const getFormState = async args => {
27
27
  void onError(json);
28
28
  }
29
29
  }
30
- return body?.formState;
30
+ return {
31
+ state: body?.formState
32
+ };
31
33
  };
32
34
  //# sourceMappingURL=getFormState.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFormState.js","names":["getFormState","args","apiRoute","body","onError","serverURL","signal","token","res","fetch","JSON","stringify","credentials","headers","Authorization","method","json","ok","formState"],"sources":["../../src/utilities/getFormState.ts"],"sourcesContent":["import type { FormState, SanitizedConfig } from 'payload'\n\nimport type { BuildFormStateArgs } from '../forms/buildStateFromSchema/index.js'\n\nexport const getFormState = async (args: {\n apiRoute: SanitizedConfig['routes']['api']\n body: BuildFormStateArgs\n onError?: (data?: any) => Promise<void> | void\n serverURL: SanitizedConfig['serverURL']\n signal?: AbortSignal\n token?: string\n}): Promise<FormState> => {\n const { apiRoute, body, onError, serverURL, signal, token } = args\n\n const res = await fetch(`${serverURL}${apiRoute}/form-state`, {\n body: JSON.stringify(body),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n ...(token ? { Authorization: `JWT ${token}` } : {}),\n },\n method: 'POST',\n signal,\n })\n\n const json = (await res.json()) as FormState\n\n if (res.ok) {\n return json\n } else {\n if (typeof onError === 'function') {\n void onError(json)\n }\n }\n\n return body?.formState\n}\n"],"mappings":"AAIA,OAAO,MAAMA,YAAA,GAAe,MAAOC,IAAA;EAQjC,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC,MAAM;IAAEC;EAAK,CAAE,GAAGN,IAAA;EAE9D,MAAMO,GAAA,GAAM,MAAMC,KAAA,CAAM,GAAGJ,SAAA,GAAYH,QAAA,aAAqB,EAAE;IAC5DC,IAAA,EAAMO,IAAA,CAAKC,SAAS,CAACR,IAAA;IACrBS,WAAA,EAAa;IACbC,OAAA,EAAS;MACP,gBAAgB;MAChB,IAAIN,KAAA,GAAQ;QAAEO,aAAA,EAAe,OAAOP,KAAA;MAAQ,IAAI,CAAC,CAAC;IACpD;IACAQ,MAAA,EAAQ;IACRT;EACF;EAEA,MAAMU,IAAA,GAAQ,MAAMR,GAAA,CAAIQ,IAAI;EAE5B,IAAIR,GAAA,CAAIS,EAAE,EAAE;IACV,OAAOD,IAAA;EACT,OAAO;IACL,IAAI,OAAOZ,OAAA,KAAY,YAAY;MACjC,KAAKA,OAAA,CAAQY,IAAA;IACf;EACF;EAEA,OAAOb,IAAA,EAAMe,SAAA;AACf","ignoreList":[]}
1
+ {"version":3,"file":"getFormState.js","names":["getFormState","args","apiRoute","body","onError","serverURL","signal","token","res","fetch","JSON","stringify","credentials","headers","Authorization","method","json","ok","state","formState"],"sources":["../../src/utilities/getFormState.ts"],"sourcesContent":["import type { ClientUser, FormState, SanitizedConfig } from 'payload'\n\nimport type { BuildFormStateArgs } from '../forms/buildStateFromSchema/index.js'\n\nexport const getFormState = async (args: {\n apiRoute: SanitizedConfig['routes']['api']\n body: BuildFormStateArgs\n onError?: (data?: any) => Promise<void> | void\n serverURL: SanitizedConfig['serverURL']\n signal?: AbortSignal\n token?: string\n}): Promise<{ lockedState?: { isLocked: boolean; user: ClientUser }; state: FormState }> => {\n const { apiRoute, body, onError, serverURL, signal, token } = args\n\n const res = await fetch(`${serverURL}${apiRoute}/form-state`, {\n body: JSON.stringify(body),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n ...(token ? { Authorization: `JWT ${token}` } : {}),\n },\n method: 'POST',\n signal,\n })\n\n const json = (await res.json()) as {\n lockedState?: { isLocked: boolean; user: ClientUser }\n state: FormState\n }\n\n if (res.ok) {\n return json\n } else {\n if (typeof onError === 'function') {\n void onError(json)\n }\n }\n\n return { state: body?.formState }\n}\n"],"mappings":"AAIA,OAAO,MAAMA,YAAA,GAAe,MAAOC,IAAA;EAQjC,MAAM;IAAEC,QAAQ;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC,MAAM;IAAEC;EAAK,CAAE,GAAGN,IAAA;EAE9D,MAAMO,GAAA,GAAM,MAAMC,KAAA,CAAM,GAAGJ,SAAA,GAAYH,QAAA,aAAqB,EAAE;IAC5DC,IAAA,EAAMO,IAAA,CAAKC,SAAS,CAACR,IAAA;IACrBS,WAAA,EAAa;IACbC,OAAA,EAAS;MACP,gBAAgB;MAChB,IAAIN,KAAA,GAAQ;QAAEO,aAAA,EAAe,OAAOP,KAAA;MAAQ,IAAI,CAAC,CAAC;IACpD;IACAQ,MAAA,EAAQ;IACRT;EACF;EAEA,MAAMU,IAAA,GAAQ,MAAMR,GAAA,CAAIQ,IAAI;EAK5B,IAAIR,GAAA,CAAIS,EAAE,EAAE;IACV,OAAOD,IAAA;EACT,OAAO;IACL,IAAI,OAAOZ,OAAA,KAAY,YAAY;MACjC,KAAKA,OAAA,CAAQY,IAAA;IACf;EACF;EAEA,OAAO;IAAEE,KAAA,EAAOf,IAAA,EAAMgB;EAAU;AAClC","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js';
2
+ type BackToDashboardProps = {
3
+ adminRoute: string;
4
+ router: AppRouterInstance;
5
+ };
6
+ export declare const handleBackToDashboard: ({ adminRoute, router }: BackToDashboardProps) => void;
7
+ export {};
8
+ //# sourceMappingURL=handleBackToDashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleBackToDashboard.d.ts","sourceRoot":"","sources":["../../src/utilities/handleBackToDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,qBAAqB,2BAA4B,oBAAoB,SAMjF,CAAA"}
@@ -0,0 +1,12 @@
1
+ import { formatAdminURL } from './formatAdminURL.js';
2
+ export const handleBackToDashboard = ({
3
+ adminRoute,
4
+ router
5
+ }) => {
6
+ const redirectRoute = formatAdminURL({
7
+ adminRoute,
8
+ path: '/'
9
+ });
10
+ router.push(redirectRoute);
11
+ };
12
+ //# sourceMappingURL=handleBackToDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleBackToDashboard.js","names":["formatAdminURL","handleBackToDashboard","adminRoute","router","redirectRoute","path","push"],"sources":["../../src/utilities/handleBackToDashboard.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from './formatAdminURL.js'\n\ntype BackToDashboardProps = {\n adminRoute: string\n router: AppRouterInstance\n}\n\nexport const handleBackToDashboard = ({ adminRoute, router }: BackToDashboardProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: '/',\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAO/B,OAAO,MAAMC,qBAAA,GAAwBA,CAAC;EAAEC,UAAU;EAAEC;AAAM,CAAwB;EAChF,MAAMC,aAAA,GAAgBJ,cAAA,CAAe;IACnCE,UAAA;IACAG,IAAA,EAAM;EACR;EACAF,MAAA,CAAOG,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js';
2
+ type GoBackProps = {
3
+ adminRoute: string;
4
+ collectionSlug: string;
5
+ router: AppRouterInstance;
6
+ };
7
+ export declare const handleGoBack: ({ adminRoute, collectionSlug, router }: GoBackProps) => void;
8
+ export {};
9
+ //# sourceMappingURL=handleGoBack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGoBack.d.ts","sourceRoot":"","sources":["../../src/utilities/handleGoBack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,2CAA4C,WAAW,SAM/E,CAAA"}
@@ -0,0 +1,13 @@
1
+ import { formatAdminURL } from './formatAdminURL.js';
2
+ export const handleGoBack = ({
3
+ adminRoute,
4
+ collectionSlug,
5
+ router
6
+ }) => {
7
+ const redirectRoute = formatAdminURL({
8
+ adminRoute,
9
+ path: collectionSlug ? `/collections/${collectionSlug}` : '/'
10
+ });
11
+ router.push(redirectRoute);
12
+ };
13
+ //# sourceMappingURL=handleGoBack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleGoBack.js","names":["formatAdminURL","handleGoBack","adminRoute","collectionSlug","router","redirectRoute","path","push"],"sources":["../../src/utilities/handleGoBack.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from './formatAdminURL.js'\n\ntype GoBackProps = {\n adminRoute: string\n collectionSlug: string\n router: AppRouterInstance\n}\n\nexport const handleGoBack = ({ adminRoute, collectionSlug, router }: GoBackProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: collectionSlug ? `/collections/${collectionSlug}` : '/',\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAQ/B,OAAO,MAAMC,YAAA,GAAeA,CAAC;EAAEC,UAAU;EAAEC,cAAc;EAAEC;AAAM,CAAe;EAC9E,MAAMC,aAAA,GAAgBL,cAAA,CAAe;IACnCE,UAAA;IACAI,IAAA,EAAMH,cAAA,GAAiB,gBAAgBA,cAAA,EAAgB,GAAG;EAC5D;EACAC,MAAA,CAAOG,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ import type { ClientUser } from 'payload';
2
+ export declare const handleTakeOver: (id: number | string, collectionSlug: string, globalSlug: string, user: ClientUser, isWithinDoc: boolean, updateDocumentEditor: (docId: number | string, slug: string, user: ClientUser) => Promise<void>, setCurrentEditor: (value: React.SetStateAction<ClientUser>) => void, documentLockStateRef: React.RefObject<{
3
+ hasShownLockedModal: boolean;
4
+ isLocked: boolean;
5
+ user: ClientUser;
6
+ }>, isLockingEnabled: boolean, setIsReadOnlyForIncomingUser?: (value: React.SetStateAction<boolean>) => void) => void;
7
+ //# sourceMappingURL=handleTakeOver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleTakeOver.d.ts","sourceRoot":"","sources":["../../src/utilities/handleTakeOver.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,eAAO,MAAM,cAAc,OACrB,MAAM,GAAG,MAAM,kBACH,MAAM,cACV,MAAM,QACZ,UAAU,eACH,OAAO,wBACE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,oBAC7E,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,KAAK,IAAI,wBAC7C,KAAK,CAAC,SAAS,CAAC;IACpC,mBAAmB,EAAE,OAAO,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,UAAU,CAAA;CACjB,CAAC,oBACgB,OAAO,iCACM,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,IAAI,KAC5E,IA6BF,CAAA"}
@@ -0,0 +1,27 @@
1
+ export const handleTakeOver = (id, collectionSlug, globalSlug, user, isWithinDoc, updateDocumentEditor, setCurrentEditor, documentLockStateRef, isLockingEnabled, setIsReadOnlyForIncomingUser) => {
2
+ if (!isLockingEnabled) {
3
+ return;
4
+ }
5
+ try {
6
+ // Call updateDocumentEditor to update the document's owner to the current user
7
+ void updateDocumentEditor(id, collectionSlug ?? globalSlug, user);
8
+ if (!isWithinDoc) {
9
+ documentLockStateRef.current.hasShownLockedModal = true;
10
+ }
11
+ // Update the locked state to reflect the current user as the owner
12
+ documentLockStateRef.current = {
13
+ hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal,
14
+ isLocked: true,
15
+ user
16
+ };
17
+ setCurrentEditor(user);
18
+ // If this is a takeover within the document, ensure the document is editable
19
+ if (isWithinDoc && setIsReadOnlyForIncomingUser) {
20
+ setIsReadOnlyForIncomingUser(false);
21
+ }
22
+ } catch (error) {
23
+ // eslint-disable-next-line no-console
24
+ console.error('Error during document takeover:', error);
25
+ }
26
+ };
27
+ //# sourceMappingURL=handleTakeOver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleTakeOver.js","names":["handleTakeOver","id","collectionSlug","globalSlug","user","isWithinDoc","updateDocumentEditor","setCurrentEditor","documentLockStateRef","isLockingEnabled","setIsReadOnlyForIncomingUser","current","hasShownLockedModal","isLocked","error","console"],"sources":["../../src/utilities/handleTakeOver.tsx"],"sourcesContent":["import type { ClientUser } from 'payload'\n\nexport const handleTakeOver = (\n id: number | string,\n collectionSlug: string,\n globalSlug: string,\n user: ClientUser,\n isWithinDoc: boolean,\n updateDocumentEditor: (docId: number | string, slug: string, user: ClientUser) => Promise<void>,\n setCurrentEditor: (value: React.SetStateAction<ClientUser>) => void,\n documentLockStateRef: React.RefObject<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser\n }>,\n isLockingEnabled: boolean,\n setIsReadOnlyForIncomingUser?: (value: React.SetStateAction<boolean>) => void,\n): void => {\n if (!isLockingEnabled) {\n return\n }\n\n try {\n // Call updateDocumentEditor to update the document's owner to the current user\n void updateDocumentEditor(id, collectionSlug ?? globalSlug, user)\n\n if (!isWithinDoc) {\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n // Update the locked state to reflect the current user as the owner\n documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal,\n isLocked: true,\n user,\n }\n setCurrentEditor(user)\n\n // If this is a takeover within the document, ensure the document is editable\n if (isWithinDoc && setIsReadOnlyForIncomingUser) {\n setIsReadOnlyForIncomingUser(false)\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error('Error during document takeover:', error)\n }\n}\n"],"mappings":"AAEA,OAAO,MAAMA,cAAA,GAAiBA,CAC5BC,EAAA,EACAC,cAAA,EACAC,UAAA,EACAC,IAAA,EACAC,WAAA,EACAC,oBAAA,EACAC,gBAAA,EACAC,oBAAA,EAKAC,gBAAA,EACAC,4BAAA;EAEA,IAAI,CAACD,gBAAA,EAAkB;IACrB;EACF;EAEA,IAAI;IACF;IACA,KAAKH,oBAAA,CAAqBL,EAAA,EAAIC,cAAA,IAAkBC,UAAA,EAAYC,IAAA;IAE5D,IAAI,CAACC,WAAA,EAAa;MAChBG,oBAAA,CAAqBG,OAAO,CAACC,mBAAmB,GAAG;IACrD;IAEA;IACAJ,oBAAA,CAAqBG,OAAO,GAAG;MAC7BC,mBAAA,EAAqBJ,oBAAA,CAAqBG,OAAO,EAAEC,mBAAA;MACnDC,QAAA,EAAU;MACVT;IACF;IACAG,gBAAA,CAAiBH,IAAA;IAEjB;IACA,IAAIC,WAAA,IAAeK,4BAAA,EAA8B;MAC/CA,4BAAA,CAA6B;IAC/B;EACF,EAAE,OAAOI,KAAA,EAAO;IACd;IACAC,OAAA,CAAQD,KAAK,CAAC,mCAAmCA,KAAA;EACnD;AACF","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/ui",
3
- "version": "3.0.0-beta.107",
3
+ "version": "3.0.0-beta.109",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -104,12 +104,12 @@
104
104
  "react-datepicker": "6.9.0",
105
105
  "react-image-crop": "10.1.8",
106
106
  "react-select": "5.8.0",
107
- "scheduler": "0.25.0-rc-f994737d14-20240522",
107
+ "scheduler": "0.0.0-experimental-5dcb0097-20240918",
108
108
  "sonner": "^1.5.0",
109
109
  "ts-essentials": "10.0.2",
110
110
  "use-context-selector": "2.0.0",
111
111
  "uuid": "10.0.0",
112
- "@payloadcms/translations": "3.0.0-beta.107"
112
+ "@payloadcms/translations": "3.0.0-beta.109"
113
113
  },
114
114
  "devDependencies": {
115
115
  "@babel/cli": "^7.24.5",
@@ -119,29 +119,29 @@
119
119
  "@babel/preset-typescript": "^7.24.1",
120
120
  "@hyrious/esbuild-plugin-commonjs": "^0.2.4",
121
121
  "@types/body-scroll-lock": "^3.1.0",
122
- "@types/react": "npm:types-react@19.0.0-rc.0",
122
+ "@types/react": "npm:types-react@19.0.0-rc.1",
123
123
  "@types/react-datepicker": "6.2.0",
124
- "@types/react-dom": "npm:types-react-dom@19.0.0-rc.0",
124
+ "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
125
125
  "@types/uuid": "10.0.0",
126
- "babel-plugin-react-compiler": "0.0.0-experimental-48eb8f4-20240822",
126
+ "babel-plugin-react-compiler": "0.0.0-experimental-24ec0eb-20240918",
127
127
  "esbuild": "0.23.1",
128
128
  "esbuild-sass-plugin": "3.3.1",
129
- "eslint-plugin-react-compiler": "0.0.0-experimental-72f06b2-20240822",
130
- "payload": "3.0.0-beta.107",
129
+ "eslint-plugin-react-compiler": "0.0.0-experimental-7670337-20240918",
130
+ "payload": "3.0.0-beta.109",
131
131
  "@payloadcms/eslint-config": "3.0.0-beta.97"
132
132
  },
133
133
  "peerDependencies": {
134
- "next": "^15.0.0-canary.104",
135
- "react": "^19.0.0 || ^19.0.0-rc-06d0b89e-20240801",
136
- "react-dom": "^19.0.0 || ^19.0.0-rc-06d0b89e-20240801",
137
- "payload": "3.0.0-beta.107"
134
+ "next": "^15.0.0-canary.160",
135
+ "react": "^19.0.0 || ^19.0.0-rc-5dcb0097-20240918",
136
+ "react-dom": "^19.0.0 || ^19.0.0-rc-5dcb0097-20240918",
137
+ "payload": "3.0.0-beta.109"
138
138
  },
139
139
  "engines": {
140
140
  "node": "^18.20.2 || >=20.9.0"
141
141
  },
142
142
  "overrides": {
143
- "@types/react": "npm:types-react@19.0.0-rc.0",
144
- "@types/react-dom": "npm:types-react-dom@19.0.0-rc.0"
143
+ "@types/react": "npm:types-react@19.0.0-rc.1",
144
+ "@types/react-dom": "npm:types-react-dom@19.0.0-rc.1"
145
145
  },
146
146
  "scripts": {
147
147
  "build": "pnpm build:reactcompiler",