@payloadcms/ui 3.0.0-canary.a7293f6 → 3.0.0-canary.ab70b75

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 (236) hide show
  1. package/dist/elements/AddNewRelation/index.scss +36 -34
  2. package/dist/elements/AppHeader/index.scss +151 -150
  3. package/dist/elements/ArrayAction/index.scss +23 -21
  4. package/dist/elements/Autosave/index.scss +4 -2
  5. package/dist/elements/Banner/index.scss +51 -49
  6. package/dist/elements/BulkUpload/ActionsBar/index.scss +45 -43
  7. package/dist/elements/BulkUpload/AddFilesView/index.d.ts +2 -1
  8. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/AddFilesView/index.js +2 -0
  10. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/AddFilesView/index.scss +23 -21
  12. package/dist/elements/BulkUpload/AddingFilesView/index.scss +16 -14
  13. package/dist/elements/BulkUpload/DrawerCloseButton/index.scss +23 -21
  14. package/dist/elements/BulkUpload/EditForm/index.scss +6 -4
  15. package/dist/elements/BulkUpload/FileSidebar/index.scss +214 -212
  16. package/dist/elements/BulkUpload/Header/index.scss +11 -9
  17. package/dist/elements/BulkUpload/index.d.ts.map +1 -1
  18. package/dist/elements/BulkUpload/index.js +22 -42
  19. package/dist/elements/BulkUpload/index.js.map +1 -1
  20. package/dist/elements/Button/index.scss +202 -200
  21. package/dist/elements/Card/index.scss +58 -56
  22. package/dist/elements/CodeEditor/index.scss +16 -14
  23. package/dist/elements/Collapsible/index.scss +125 -123
  24. package/dist/elements/ColumnSelector/index.scss +36 -34
  25. package/dist/elements/CopyToClipboard/index.scss +21 -19
  26. package/dist/elements/DatePicker/DatePicker.d.ts +1 -1
  27. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  28. package/dist/elements/DatePicker/DatePicker.js +1 -1
  29. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  30. package/dist/elements/DatePicker/index.scss +309 -307
  31. package/dist/elements/DatePicker/library.scss +859 -0
  32. package/dist/elements/DeleteDocument/index.scss +32 -30
  33. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  34. package/dist/elements/DeleteMany/index.js +16 -5
  35. package/dist/elements/DeleteMany/index.js.map +1 -1
  36. package/dist/elements/DeleteMany/index.scss +29 -27
  37. package/dist/elements/DocumentControls/index.js +1 -1
  38. package/dist/elements/DocumentControls/index.js.map +1 -1
  39. package/dist/elements/DocumentControls/index.scss +190 -188
  40. package/dist/elements/DocumentDrawer/index.scss +55 -53
  41. package/dist/elements/DocumentFields/index.scss +144 -142
  42. package/dist/elements/Drawer/index.scss +111 -109
  43. package/dist/elements/Dropzone/index.scss +32 -30
  44. package/dist/elements/DuplicateDocument/index.scss +31 -29
  45. package/dist/elements/EditMany/index.scss +162 -160
  46. package/dist/elements/EditUpload/index.scss +180 -178
  47. package/dist/elements/ErrorPill/index.scss +27 -25
  48. package/dist/elements/FieldSelect/index.scss +4 -2
  49. package/dist/elements/FileDetails/DraggableFileDetails/index.scss +25 -23
  50. package/dist/elements/FileDetails/FileMeta/index.scss +21 -19
  51. package/dist/elements/FileDetails/StaticFileDetails/index.scss +104 -102
  52. package/dist/elements/GenerateConfirmation/index.scss +29 -27
  53. package/dist/elements/Gutter/index.scss +14 -12
  54. package/dist/elements/Hamburger/index.scss +38 -36
  55. package/dist/elements/IDLabel/index.scss +11 -9
  56. package/dist/elements/ListControls/index.scss +71 -69
  57. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  58. package/dist/elements/ListDrawer/DrawerContent.js +61 -57
  59. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  60. package/dist/elements/ListDrawer/index.scss +93 -91
  61. package/dist/elements/ListHeader/index.scss +9 -7
  62. package/dist/elements/ListSelection/index.scss +14 -12
  63. package/dist/elements/Loading/index.scss +108 -106
  64. package/dist/elements/Localizer/LocalizerLabel/index.scss +44 -42
  65. package/dist/elements/Localizer/index.scss +7 -5
  66. package/dist/elements/Locked/index.scss +11 -9
  67. package/dist/elements/Nav/NavToggler/index.scss +9 -7
  68. package/dist/elements/NavGroup/index.scss +43 -41
  69. package/dist/elements/Pagination/ClickableArrow/index.scss +34 -32
  70. package/dist/elements/Pagination/index.scss +40 -38
  71. package/dist/elements/PerPage/index.scss +37 -35
  72. package/dist/elements/Pill/index.scss +103 -101
  73. package/dist/elements/Popup/PopupButtonList/index.scss +45 -43
  74. package/dist/elements/Popup/PopupTrigger/index.scss +23 -21
  75. package/dist/elements/Popup/index.scss +185 -183
  76. package/dist/elements/PreviewSizes/index.scss +115 -113
  77. package/dist/elements/PublishMany/index.d.ts.map +1 -1
  78. package/dist/elements/PublishMany/index.js +16 -5
  79. package/dist/elements/PublishMany/index.js.map +1 -1
  80. package/dist/elements/PublishMany/index.scss +28 -26
  81. package/dist/elements/ReactSelect/ClearIndicator/index.scss +6 -4
  82. package/dist/elements/ReactSelect/DropdownIndicator/index.scss +11 -9
  83. package/dist/elements/ReactSelect/MultiValue/index.scss +26 -24
  84. package/dist/elements/ReactSelect/MultiValueLabel/index.scss +16 -14
  85. package/dist/elements/ReactSelect/MultiValueRemove/index.scss +20 -18
  86. package/dist/elements/ReactSelect/ValueContainer/index.scss +22 -20
  87. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  88. package/dist/elements/ReactSelect/index.js +2 -0
  89. package/dist/elements/ReactSelect/index.js.map +1 -1
  90. package/dist/elements/ReactSelect/index.scss +66 -59
  91. package/dist/elements/RelationshipTable/cells/DrawerLink/index.scss +5 -3
  92. package/dist/elements/RelationshipTable/index.scss +21 -19
  93. package/dist/elements/RenderTitle/index.scss +7 -5
  94. package/dist/elements/SearchFilter/index.scss +31 -28
  95. package/dist/elements/SelectAll/index.scss +5 -3
  96. package/dist/elements/SelectRow/index.scss +6 -4
  97. package/dist/elements/ShimmerEffect/index.scss +26 -24
  98. package/dist/elements/SortColumn/index.scss +51 -49
  99. package/dist/elements/SortComplex/index.scss +27 -25
  100. package/dist/elements/Status/index.scss +45 -43
  101. package/dist/elements/StayLoggedIn/index.scss +28 -26
  102. package/dist/elements/StepNav/index.scss +62 -61
  103. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.scss +20 -18
  104. package/dist/elements/Table/DefaultCell/fields/Code/index.scss +22 -20
  105. package/dist/elements/Table/DefaultCell/fields/File/index.scss +18 -16
  106. package/dist/elements/Table/DefaultCell/fields/JSON/index.scss +20 -18
  107. package/dist/elements/Table/DefaultCell/index.js +2 -2
  108. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  109. package/dist/elements/Table/index.scss +74 -72
  110. package/dist/elements/TableColumns/buildColumnState.js +1 -0
  111. package/dist/elements/TableColumns/buildColumnState.js.map +1 -1
  112. package/dist/elements/Thumbnail/index.scss +37 -35
  113. package/dist/elements/ThumbnailCard/index.scss +31 -29
  114. package/dist/elements/Tooltip/index.scss +77 -75
  115. package/dist/elements/UnpublishMany/index.d.ts.map +1 -1
  116. package/dist/elements/UnpublishMany/index.js +16 -5
  117. package/dist/elements/UnpublishMany/index.js.map +1 -1
  118. package/dist/elements/UnpublishMany/index.scss +28 -26
  119. package/dist/elements/Upload/index.d.ts.map +1 -1
  120. package/dist/elements/Upload/index.js +2 -0
  121. package/dist/elements/Upload/index.js.map +1 -1
  122. package/dist/elements/Upload/index.scss +117 -121
  123. package/dist/elements/WhereBuilder/Condition/Number/index.scss +4 -2
  124. package/dist/elements/WhereBuilder/Condition/Relationship/index.scss +9 -7
  125. package/dist/elements/WhereBuilder/Condition/Text/index.scss +4 -2
  126. package/dist/elements/WhereBuilder/Condition/index.scss +43 -41
  127. package/dist/elements/WhereBuilder/index.scss +28 -26
  128. package/dist/exports/client/{CodeEditor-4A6256PR.js → CodeEditor-VPUKDCXS.js} +1 -1
  129. package/dist/exports/client/{CodeEditor-4A6256PR.js.map → CodeEditor-VPUKDCXS.js.map} +1 -1
  130. package/dist/exports/client/{DatePicker-HNJMUG32.js → DatePicker-FUJV23KL.js} +2 -2
  131. package/dist/exports/client/{chunk-IHJK2MAT.js → chunk-UMJJTMDP.js} +2 -2
  132. package/dist/exports/client/{chunk-IHJK2MAT.js.map → chunk-UMJJTMDP.js.map} +4 -4
  133. package/dist/exports/client/index.d.ts +2 -1
  134. package/dist/exports/client/index.d.ts.map +1 -1
  135. package/dist/exports/client/index.js +22 -19
  136. package/dist/exports/client/index.js.map +4 -4
  137. package/dist/fields/Array/index.scss +74 -72
  138. package/dist/fields/Blocks/BlocksDrawer/BlockSearch/index.scss +25 -23
  139. package/dist/fields/Blocks/BlocksDrawer/index.scss +36 -34
  140. package/dist/fields/Blocks/SectionTitle/index.scss +51 -49
  141. package/dist/fields/Blocks/index.scss +89 -87
  142. package/dist/fields/Checkbox/index.d.ts.map +1 -1
  143. package/dist/fields/Checkbox/index.js +1 -0
  144. package/dist/fields/Checkbox/index.js.map +1 -1
  145. package/dist/fields/Checkbox/index.scss +107 -105
  146. package/dist/fields/Code/index.scss +18 -16
  147. package/dist/fields/Collapsible/index.d.ts.map +1 -1
  148. package/dist/fields/Collapsible/index.scss +8 -6
  149. package/dist/fields/ConfirmPassword/index.scss +18 -16
  150. package/dist/fields/DateTime/index.scss +13 -11
  151. package/dist/fields/Email/index.scss +21 -19
  152. package/dist/fields/FieldDescription/index.scss +9 -7
  153. package/dist/fields/FieldError/index.scss +13 -11
  154. package/dist/fields/FieldLabel/index.d.ts.map +1 -1
  155. package/dist/fields/FieldLabel/index.js +58 -30
  156. package/dist/fields/FieldLabel/index.js.map +1 -1
  157. package/dist/fields/FieldLabel/index.scss +34 -10
  158. package/dist/fields/Group/index.scss +107 -105
  159. package/dist/fields/JSON/index.scss +11 -9
  160. package/dist/fields/Number/index.scss +19 -17
  161. package/dist/fields/Password/index.scss +18 -16
  162. package/dist/fields/Point/index.scss +33 -31
  163. package/dist/fields/RadioGroup/Radio/index.scss +58 -56
  164. package/dist/fields/RadioGroup/index.d.ts +1 -0
  165. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  166. package/dist/fields/RadioGroup/index.js +33 -30
  167. package/dist/fields/RadioGroup/index.js.map +1 -1
  168. package/dist/fields/RadioGroup/index.scss +57 -55
  169. package/dist/fields/Relationship/index.scss +44 -42
  170. package/dist/fields/Relationship/select-components/MultiValueLabel/index.scss +40 -38
  171. package/dist/fields/Relationship/select-components/SingleValue/index.scss +43 -41
  172. package/dist/fields/Row/index.scss +31 -29
  173. package/dist/fields/Select/index.scss +16 -14
  174. package/dist/fields/Tabs/Tab/index.scss +58 -56
  175. package/dist/fields/Tabs/index.d.ts.map +1 -1
  176. package/dist/fields/Tabs/index.js +69 -53
  177. package/dist/fields/Tabs/index.js.map +1 -1
  178. package/dist/fields/Tabs/index.scss +46 -44
  179. package/dist/fields/Text/index.scss +23 -21
  180. package/dist/fields/Textarea/index.scss +89 -87
  181. package/dist/fields/Upload/HasMany/index.scss +20 -18
  182. package/dist/fields/Upload/HasOne/index.scss +5 -3
  183. package/dist/fields/Upload/Input.d.ts.map +1 -1
  184. package/dist/fields/Upload/Input.js +39 -36
  185. package/dist/fields/Upload/Input.js.map +1 -1
  186. package/dist/fields/Upload/RelationshipContent/index.scss +44 -42
  187. package/dist/fields/Upload/UploadCard/index.scss +21 -19
  188. package/dist/fields/Upload/index.scss +49 -47
  189. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  190. package/dist/forms/Form/fieldReducer.js +7 -0
  191. package/dist/forms/Form/fieldReducer.js.map +1 -1
  192. package/dist/forms/Form/index.scss +5 -3
  193. package/dist/forms/RenderFields/index.scss +47 -45
  194. package/dist/forms/Submit/index.scss +5 -3
  195. package/dist/forms/useField/index.d.ts.map +1 -1
  196. package/dist/forms/useField/index.js +1 -1
  197. package/dist/forms/useField/index.js.map +1 -1
  198. package/dist/graphics/Account/Default/index.scss +43 -41
  199. package/dist/icons/Calendar/index.scss +8 -6
  200. package/dist/icons/Check/index.scss +9 -7
  201. package/dist/icons/Chevron/index.scss +18 -16
  202. package/dist/icons/CloseMenu/index.scss +7 -5
  203. package/dist/icons/Copy/index.scss +9 -7
  204. package/dist/icons/DragHandle/index.scss +9 -7
  205. package/dist/icons/Edit/index.scss +9 -7
  206. package/dist/icons/Line/index.scss +8 -6
  207. package/dist/icons/Link/index.scss +8 -6
  208. package/dist/icons/Lock/index.scss +6 -4
  209. package/dist/icons/LogOut/index.scss +8 -6
  210. package/dist/icons/Menu/index.scss +6 -4
  211. package/dist/icons/More/index.scss +8 -6
  212. package/dist/icons/Plus/index.scss +6 -4
  213. package/dist/icons/Search/index.scss +8 -6
  214. package/dist/icons/Swap/index.scss +9 -7
  215. package/dist/icons/X/index.scss +6 -4
  216. package/dist/providers/Auth/index.d.ts +9 -4
  217. package/dist/providers/Auth/index.d.ts.map +1 -1
  218. package/dist/providers/Auth/index.js +51 -56
  219. package/dist/providers/Auth/index.js.map +1 -1
  220. package/dist/providers/Config/createClientConfig/fields.d.ts.map +1 -1
  221. package/dist/providers/Config/createClientConfig/fields.js +21 -3
  222. package/dist/providers/Config/createClientConfig/fields.js.map +1 -1
  223. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  224. package/dist/providers/DocumentInfo/index.js +4 -0
  225. package/dist/providers/DocumentInfo/index.js.map +1 -1
  226. package/dist/providers/Selection/index.js +3 -3
  227. package/dist/providers/Selection/index.js.map +1 -1
  228. package/dist/scss/app.scss +166 -162
  229. package/dist/scss/colors.scss +256 -254
  230. package/dist/scss/resets.scss +9 -7
  231. package/dist/scss/toastify.scss +42 -40
  232. package/dist/scss/toasts.scss +105 -103
  233. package/dist/scss/type.scss +81 -79
  234. package/dist/styles.css +1 -1
  235. package/package.json +8 -8
  236. /package/dist/exports/client/{DatePicker-HNJMUG32.js.map → DatePicker-FUJV23KL.js.map} +0 -0
@@ -1,12 +1,14 @@
1
1
  @import '../../scss/styles';
2
2
 
3
- .icon--swap {
4
- height: $baseline;
5
- width: $baseline;
3
+ @layer payload-default {
4
+ .icon--swap {
5
+ height: $baseline;
6
+ width: $baseline;
6
7
 
7
- .stroke {
8
- fill: none;
9
- stroke: currentColor;
10
- stroke-width: $style-stroke-width-s;
8
+ .stroke {
9
+ fill: none;
10
+ stroke: currentColor;
11
+ stroke-width: $style-stroke-width-s;
12
+ }
11
13
  }
12
14
  }
@@ -1,8 +1,10 @@
1
1
  @import '../../scss/styles';
2
2
 
3
- .icon--x {
4
- .stroke {
5
- stroke: currentColor;
6
- stroke-width: $style-stroke-width-s;
3
+ @layer payload-default {
4
+ .icon--x {
5
+ .stroke {
6
+ stroke: currentColor;
7
+ stroke-width: $style-stroke-width-s;
8
+ }
7
9
  }
8
10
  }
@@ -1,14 +1,19 @@
1
- import type { ClientUser, Permissions } from 'payload';
1
+ import type { ClientUser, Permissions, User } from 'payload';
2
2
  import React from 'react';
3
+ export type UserWithToken<T = ClientUser> = {
4
+ exp: number;
5
+ token: string;
6
+ user: T;
7
+ };
3
8
  export type AuthContext<T = ClientUser> = {
4
- fetchFullUser: () => Promise<void>;
5
- logOut: () => Promise<void>;
9
+ fetchFullUser: () => Promise<null | User>;
10
+ logOut: () => Promise<boolean>;
6
11
  permissions?: Permissions;
7
12
  refreshCookie: (forceRefresh?: boolean) => void;
8
13
  refreshCookieAsync: () => Promise<ClientUser>;
9
14
  refreshPermissions: () => Promise<void>;
10
15
  setPermissions: (permissions: Permissions) => void;
11
- setUser: (user: T) => void;
16
+ setUser: (user: null | UserWithToken<T>) => void;
12
17
  strategy?: string;
13
18
  token?: string;
14
19
  tokenExpiration?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAqB,WAAW,EAAE,MAAM,SAAS,CAAA;AAKzE,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AACD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAoSP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAK5D,OAAO,KAAsE,MAAM,OAAO,CAAA;AAU1F,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,UAAU,IAAI;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI;IACxC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAA;IAC7C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,IAAI,CAAA;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;CACzB,CAAA;AACD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAuRP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,oBAAmB,WAAW,CAAC,CAAC,CAA0C,CAAA"}
@@ -19,7 +19,7 @@ export function AuthProvider({
19
19
  permissions: initialPermissions,
20
20
  user: initialUser
21
21
  }) {
22
- const [user, setUser] = useState(initialUser);
22
+ const [user, setUserInMemory] = useState(initialUser);
23
23
  const [tokenInMemory, setTokenInMemory] = useState();
24
24
  const [tokenExpiration, setTokenExpiration] = useState();
25
25
  const pathname = usePathname();
@@ -50,6 +50,7 @@ export function AuthProvider({
50
50
  } = useModal();
51
51
  const [lastLocationChange, setLastLocationChange] = useState(0);
52
52
  const debouncedLocationChange = useDebounce(lastLocationChange, 10000);
53
+ const refreshTokenTimeoutRef = React.useRef(null);
53
54
  const id = user?.id;
54
55
  const redirectToInactivityRoute = useCallback(() => {
55
56
  if (window.location.pathname.startsWith(adminRoute)) {
@@ -69,13 +70,15 @@ export function AuthProvider({
69
70
  const revokeTokenAndExpire = useCallback(() => {
70
71
  setTokenInMemory(undefined);
71
72
  setTokenExpiration(undefined);
73
+ clearTimeout(refreshTokenTimeoutRef.current);
72
74
  }, []);
73
- const setTokenAndExpiration = useCallback(json => {
74
- const token = json?.token || json?.refreshedToken;
75
- if (token && json?.exp) {
76
- setTokenInMemory(token);
77
- setTokenExpiration(json.exp);
75
+ const setNewUser = useCallback(userResponse => {
76
+ if (userResponse?.user) {
77
+ setUserInMemory(userResponse.user);
78
+ setTokenInMemory(userResponse.token);
79
+ setTokenExpiration(userResponse.exp);
78
80
  } else {
81
+ setUserInMemory(null);
79
82
  revokeTokenAndExpire();
80
83
  }
81
84
  }, [revokeTokenAndExpire]);
@@ -83,20 +86,19 @@ export function AuthProvider({
83
86
  const now = Math.round(new Date().getTime() / 1000);
84
87
  const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now;
85
88
  if (forceRefresh || tokenExpiration && remainingTime < 120) {
86
- setTimeout(() => {
89
+ refreshTokenTimeoutRef.current = setTimeout(() => {
87
90
  async function refresh() {
88
91
  try {
89
- const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
92
+ const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`, {
90
93
  headers: {
91
94
  'Accept-Language': i18n.language
92
95
  }
93
96
  });
94
97
  if (request.status === 200) {
95
- const json_0 = await request.json();
96
- setUser(json_0.user);
97
- setTokenAndExpiration(json_0);
98
+ const json = await request.json();
99
+ setNewUser(json);
98
100
  } else {
99
- setUser(null);
101
+ setNewUser(null);
100
102
  redirectToInactivityRoute();
101
103
  }
102
104
  } catch (e) {
@@ -106,7 +108,10 @@ export function AuthProvider({
106
108
  void refresh();
107
109
  }, 1000);
108
110
  }
109
- }, [tokenExpiration, serverURL, apiRoute, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration]);
111
+ return () => {
112
+ clearTimeout(refreshTokenTimeoutRef.current);
113
+ };
114
+ }, [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, tokenExpiration, userSlug]);
110
115
  const refreshCookieAsync = useCallback(async skipSetUser => {
111
116
  try {
112
117
  const request_0 = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {
@@ -115,30 +120,31 @@ export function AuthProvider({
115
120
  }
116
121
  });
117
122
  if (request_0.status === 200) {
118
- const json_1 = await request_0.json();
123
+ const json_0 = await request_0.json();
119
124
  if (!skipSetUser) {
120
- setUser(json_1.user);
121
- setTokenAndExpiration(json_1);
125
+ setNewUser(json_0);
122
126
  }
123
- return json_1.user;
127
+ return json_0.user;
124
128
  }
125
- setUser(null);
129
+ setNewUser(null);
126
130
  redirectToInactivityRoute();
127
131
  return null;
128
132
  } catch (e_0) {
129
133
  toast.error(`Refreshing token failed: ${e_0.message}`);
130
134
  return null;
131
135
  }
132
- }, [serverURL, apiRoute, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration]);
136
+ }, [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug]);
133
137
  const logOut = useCallback(async () => {
134
- setUser(null);
135
- revokeTokenAndExpire();
136
138
  try {
137
139
  await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`);
140
+ setNewUser(null);
141
+ revokeTokenAndExpire();
142
+ return true;
138
143
  } catch (e_1) {
139
144
  toast.error(`Logging out failed: ${e_1.message}`);
145
+ return false;
140
146
  }
141
- }, [serverURL, apiRoute, userSlug, revokeTokenAndExpire]);
147
+ }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug]);
142
148
  const refreshPermissions = useCallback(async ({
143
149
  locale
144
150
  } = {}) => {
@@ -154,8 +160,8 @@ export function AuthProvider({
154
160
  }
155
161
  });
156
162
  if (request_1.status === 200) {
157
- const json_2 = await request_1.json();
158
- setPermissions(json_2);
163
+ const json_1 = await request_1.json();
164
+ setPermissions(json_1);
159
165
  } else {
160
166
  throw new Error(`Fetching permissions failed with status code ${request_1.status}`);
161
167
  }
@@ -166,26 +172,22 @@ export function AuthProvider({
166
172
  const fetchFullUser = React.useCallback(async () => {
167
173
  try {
168
174
  const request_2 = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {
175
+ credentials: 'include',
169
176
  headers: {
170
177
  'Accept-Language': i18n.language
171
178
  }
172
179
  });
173
180
  if (request_2.status === 200) {
174
- const json_3 = await request_2.json();
175
- if (json_3?.user) {
176
- setUser(json_3.user);
177
- if (json_3?.token) {
178
- setTokenAndExpiration(json_3);
179
- }
180
- } else {
181
- setUser(null);
182
- revokeTokenAndExpire();
183
- }
181
+ const json_2 = await request_2.json();
182
+ const user_0 = null;
183
+ setNewUser(json_2);
184
+ return user_0;
184
185
  }
185
186
  } catch (e_3) {
186
187
  toast.error(`Fetching user failed: ${e_3.message}`);
187
188
  }
188
- }, [serverURL, apiRoute, userSlug, i18n.language, setTokenAndExpiration, revokeTokenAndExpire]);
189
+ return null;
190
+ }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser]);
189
191
  // On mount, get user and set
190
192
  useEffect(() => {
191
193
  void fetchFullUser();
@@ -196,45 +198,38 @@ export function AuthProvider({
196
198
  refreshCookie();
197
199
  }
198
200
  }, [debouncedLocationChange, refreshCookie, id]);
199
- // When initialUser changes, reset in state
200
- useEffect(() => {
201
- setUser(initialUser);
202
- }, [initialUser]);
203
201
  useEffect(() => {
204
202
  setLastLocationChange(Date.now());
205
203
  }, [pathname]);
206
204
  useEffect(() => {
207
205
  let reminder;
206
+ let forceLogOut;
208
207
  const now_0 = Math.round(new Date().getTime() / 1000);
209
208
  const remainingTime_0 = typeof tokenExpiration === 'number' ? tokenExpiration - now_0 : 0;
209
+ const remindInTimeFromNow = Math.max(Math.min((remainingTime_0 - 60) * 1000, maxTimeoutTime), 0);
210
+ const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime_0 * 1000, maxTimeoutTime), 0);
211
+ if (!user) {
212
+ clearTimeout(reminder);
213
+ clearTimeout(forceLogOut);
214
+ return;
215
+ }
210
216
  if (remainingTime_0 > 0) {
211
217
  reminder = setTimeout(() => {
212
218
  openModal(stayLoggedInModalSlug);
213
- }, Math.max(Math.min((remainingTime_0 - 60) * 1000, maxTimeoutTime)));
219
+ }, remindInTimeFromNow);
220
+ forceLogOut = setTimeout(() => {
221
+ setNewUser(null);
222
+ }, forceLogOutInTimeFromNow);
214
223
  }
215
224
  return () => {
216
225
  if (reminder) {
217
226
  clearTimeout(reminder);
218
227
  }
219
- };
220
- }, [tokenExpiration, openModal]);
221
- useEffect(() => {
222
- let forceLogOut;
223
- const now_1 = Math.round(new Date().getTime() / 1000);
224
- const remainingTime_1 = typeof tokenExpiration === 'number' ? tokenExpiration - now_1 : 0;
225
- if (remainingTime_1 > 0) {
226
- forceLogOut = setTimeout(() => {
227
- setUser(null);
228
- revokeTokenAndExpire();
229
- redirectToInactivityRoute();
230
- }, Math.max(Math.min(remainingTime_1 * 1000, maxTimeoutTime), 0));
231
- }
232
- return () => {
233
228
  if (forceLogOut) {
234
229
  clearTimeout(forceLogOut);
235
230
  }
236
231
  };
237
- }, [tokenExpiration, closeAllModals, i18n, redirectToInactivityRoute, revokeTokenAndExpire]);
232
+ }, [tokenExpiration, openModal, i18n, setNewUser, user]);
238
233
  return /*#__PURE__*/_jsx(Context.Provider, {
239
234
  value: {
240
235
  fetchFullUser,
@@ -244,7 +239,7 @@ export function AuthProvider({
244
239
  refreshCookieAsync,
245
240
  refreshPermissions,
246
241
  setPermissions,
247
- setUser,
242
+ setUser: setNewUser,
248
243
  token: tokenInMemory,
249
244
  user
250
245
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUser","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","setTokenAndExpiration","json","token","refreshedToken","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","reminder","max","min","clearTimeout","forceLogOut","_jsx","Provider","value","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, MeOperationResult, Permissions } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<void>\n logOut: () => Promise<void>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: T) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUser] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n }, [])\n\n const setTokenAndExpiration = useCallback(\n (json) => {\n const token = json?.token || json?.refreshedToken\n if (token && json?.exp) {\n setTokenInMemory(token)\n setTokenExpiration(json.exp)\n } else {\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setUser(json.user)\n\n setTokenAndExpiration(json)\n } else {\n setUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n },\n [\n tokenExpiration,\n serverURL,\n apiRoute,\n userSlug,\n i18n,\n redirectToInactivityRoute,\n setTokenAndExpiration,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setUser(json.user)\n setTokenAndExpiration(json)\n }\n return json.user\n }\n\n setUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [serverURL, apiRoute, userSlug, i18n, redirectToInactivityRoute, setTokenAndExpiration],\n )\n\n const logOut = useCallback(async () => {\n setUser(null)\n revokeTokenAndExpire()\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n }\n }, [serverURL, apiRoute, userSlug, revokeTokenAndExpire])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: MeOperationResult = await request.json()\n\n if (json?.user) {\n setUser(json.user)\n\n if (json?.token) {\n setTokenAndExpiration(json)\n }\n } else {\n setUser(null)\n revokeTokenAndExpire()\n }\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n }, [serverURL, apiRoute, userSlug, i18n.language, setTokenAndExpiration, revokeTokenAndExpire])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n // When initialUser changes, reset in state\n useEffect(() => {\n setUser(initialUser)\n }, [initialUser])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n reminder = setTimeout(\n () => {\n openModal(stayLoggedInModalSlug)\n },\n Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime)),\n )\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n }\n }, [tokenExpiration, openModal])\n\n useEffect(() => {\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n\n if (remainingTime > 0) {\n forceLogOut = setTimeout(\n () => {\n setUser(null)\n revokeTokenAndExpire()\n redirectToInactivityRoute()\n },\n Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0),\n )\n }\n\n return () => {\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, closeAllModals, i18n, redirectToInactivityRoute, revokeTokenAndExpire])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useModal","usePathname","useRouter","qs","React","createContext","useCallback","useContext","useEffect","useState","toast","stayLoggedInModalSlug","useDebounce","useTranslation","requests","formatAdminURL","useConfig","Context","maxTimeoutTime","AuthProvider","children","permissions","initialPermissions","user","initialUser","setUserInMemory","tokenInMemory","setTokenInMemory","tokenExpiration","setTokenExpiration","pathname","router","config","admin","routes","inactivity","logoutInactivityRoute","userSlug","adminRoute","api","apiRoute","serverURL","setPermissions","i18n","closeAllModals","openModal","lastLocationChange","setLastLocationChange","debouncedLocationChange","refreshTokenTimeoutRef","useRef","id","redirectToInactivityRoute","window","location","startsWith","redirectParam","encodeURIComponent","replace","path","revokeTokenAndExpire","undefined","clearTimeout","current","setNewUser","userResponse","token","exp","refreshCookie","forceRefresh","now","Math","round","Date","getTime","remainingTime","setTimeout","refresh","request","post","headers","language","status","json","e","error","message","refreshCookieAsync","skipSetUser","logOut","refreshPermissions","locale","params","stringify","addQueryPrefix","get","Error","fetchFullUser","credentials","reminder","forceLogOut","remindInTimeFromNow","max","min","forceLogOutInTimeFromNow","_jsx","Provider","value","setUser","useAuth"],"sources":["../../../src/providers/Auth/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientUser, Permissions, User } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { usePathname, useRouter } from 'next/navigation.js'\nimport * as qs from 'qs-esm'\nimport React, { createContext, useCallback, useContext, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { stayLoggedInModalSlug } from '../../elements/StayLoggedIn/index.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { formatAdminURL } from '../../utilities/formatAdminURL.js'\nimport { useConfig } from '../Config/index.js'\n\nexport type UserWithToken<T = ClientUser> = {\n exp: number\n token: string\n user: T\n}\n\nexport type AuthContext<T = ClientUser> = {\n fetchFullUser: () => Promise<null | User>\n logOut: () => Promise<boolean>\n permissions?: Permissions\n refreshCookie: (forceRefresh?: boolean) => void\n refreshCookieAsync: () => Promise<ClientUser>\n refreshPermissions: () => Promise<void>\n setPermissions: (permissions: Permissions) => void\n setUser: (user: null | UserWithToken<T>) => void\n strategy?: string\n token?: string\n tokenExpiration?: number\n user?: null | T\n}\n\nconst Context = createContext({} as AuthContext)\n\nconst maxTimeoutTime = 2147483647\n\ntype Props = {\n children: React.ReactNode\n permissions?: Permissions\n user?: ClientUser | null\n}\nexport function AuthProvider({\n children,\n permissions: initialPermissions,\n user: initialUser,\n}: Props) {\n const [user, setUserInMemory] = useState<ClientUser | null>(initialUser)\n const [tokenInMemory, setTokenInMemory] = useState<string>()\n const [tokenExpiration, setTokenExpiration] = useState<number>()\n const pathname = usePathname()\n const router = useRouter()\n\n const { config } = useConfig()\n\n const {\n admin: {\n routes: { inactivity: logoutInactivityRoute },\n user: userSlug,\n },\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n } = config\n\n const [permissions, setPermissions] = useState<Permissions>(initialPermissions)\n\n const { i18n } = useTranslation()\n const { closeAllModals, openModal } = useModal()\n const [lastLocationChange, setLastLocationChange] = useState(0)\n const debouncedLocationChange = useDebounce(lastLocationChange, 10000)\n const refreshTokenTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>(null)\n\n const id = user?.id\n\n const redirectToInactivityRoute = useCallback(() => {\n if (window.location.pathname.startsWith(adminRoute)) {\n const redirectParam = `?redirect=${encodeURIComponent(window.location.pathname)}`\n router.replace(\n formatAdminURL({\n adminRoute,\n path: `${logoutInactivityRoute}${redirectParam}`,\n }),\n )\n } else {\n router.replace(\n formatAdminURL({\n adminRoute,\n path: logoutInactivityRoute,\n }),\n )\n }\n closeAllModals()\n }, [router, adminRoute, logoutInactivityRoute, closeAllModals])\n\n const revokeTokenAndExpire = useCallback(() => {\n setTokenInMemory(undefined)\n setTokenExpiration(undefined)\n clearTimeout(refreshTokenTimeoutRef.current)\n }, [])\n\n const setNewUser = useCallback(\n (userResponse: null | UserWithToken) => {\n if (userResponse?.user) {\n setUserInMemory(userResponse.user)\n setTokenInMemory(userResponse.token)\n setTokenExpiration(userResponse.exp)\n } else {\n setUserInMemory(null)\n revokeTokenAndExpire()\n }\n },\n [revokeTokenAndExpire],\n )\n\n const refreshCookie = useCallback(\n (forceRefresh?: boolean) => {\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = (typeof tokenExpiration === 'number' ? tokenExpiration : 0) - now\n\n if (forceRefresh || (tokenExpiration && remainingTime < 120)) {\n refreshTokenTimeoutRef.current = setTimeout(() => {\n async function refresh() {\n try {\n const request = await requests.post(\n `${serverURL}${apiRoute}/${userSlug}/refresh-token?refresh`,\n {\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (request.status === 200) {\n const json = await request.json()\n setNewUser(json)\n } else {\n setNewUser(null)\n redirectToInactivityRoute()\n }\n } catch (e) {\n toast.error(e.message)\n }\n }\n\n void refresh()\n }, 1000)\n }\n\n return () => {\n clearTimeout(refreshTokenTimeoutRef.current)\n }\n },\n [\n apiRoute,\n i18n.language,\n redirectToInactivityRoute,\n serverURL,\n setNewUser,\n tokenExpiration,\n userSlug,\n ],\n )\n\n const refreshCookieAsync = useCallback(\n async (skipSetUser?: boolean): Promise<ClientUser> => {\n try {\n const request = await requests.post(`${serverURL}${apiRoute}/${userSlug}/refresh-token`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json = await request.json()\n if (!skipSetUser) {\n setNewUser(json)\n }\n return json.user\n }\n\n setNewUser(null)\n redirectToInactivityRoute()\n return null\n } catch (e) {\n toast.error(`Refreshing token failed: ${e.message}`)\n return null\n }\n },\n [apiRoute, i18n.language, redirectToInactivityRoute, serverURL, setNewUser, userSlug],\n )\n\n const logOut = useCallback(async () => {\n try {\n await requests.post(`${serverURL}${apiRoute}/${userSlug}/logout`)\n setNewUser(null)\n revokeTokenAndExpire()\n return true\n } catch (e) {\n toast.error(`Logging out failed: ${e.message}`)\n return false\n }\n }, [apiRoute, revokeTokenAndExpire, serverURL, setNewUser, userSlug])\n\n const refreshPermissions = useCallback(\n async ({ locale }: { locale?: string } = {}) => {\n const params = qs.stringify(\n {\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/access${params}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: Permissions = await request.json()\n setPermissions(json)\n } else {\n throw new Error(`Fetching permissions failed with status code ${request.status}`)\n }\n } catch (e) {\n toast.error(`Refreshing permissions failed: ${e.message}`)\n }\n },\n [serverURL, apiRoute, i18n],\n )\n\n const fetchFullUser = React.useCallback(async () => {\n try {\n const request = await requests.get(`${serverURL}${apiRoute}/${userSlug}/me`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (request.status === 200) {\n const json: UserWithToken = await request.json()\n const user = null\n\n setNewUser(json)\n return user\n }\n } catch (e) {\n toast.error(`Fetching user failed: ${e.message}`)\n }\n\n return null\n }, [serverURL, apiRoute, userSlug, i18n.language, setNewUser])\n\n // On mount, get user and set\n useEffect(() => {\n void fetchFullUser()\n }, [fetchFullUser])\n\n // When location changes, refresh cookie\n useEffect(() => {\n if (id) {\n refreshCookie()\n }\n }, [debouncedLocationChange, refreshCookie, id])\n\n useEffect(() => {\n setLastLocationChange(Date.now())\n }, [pathname])\n\n useEffect(() => {\n let reminder: ReturnType<typeof setTimeout>\n let forceLogOut: ReturnType<typeof setTimeout>\n const now = Math.round(new Date().getTime() / 1000)\n const remainingTime = typeof tokenExpiration === 'number' ? tokenExpiration - now : 0\n const remindInTimeFromNow = Math.max(Math.min((remainingTime - 60) * 1000, maxTimeoutTime), 0)\n const forceLogOutInTimeFromNow = Math.max(Math.min(remainingTime * 1000, maxTimeoutTime), 0)\n\n if (!user) {\n clearTimeout(reminder)\n clearTimeout(forceLogOut)\n return\n }\n\n if (remainingTime > 0) {\n reminder = setTimeout(() => {\n openModal(stayLoggedInModalSlug)\n }, remindInTimeFromNow)\n\n forceLogOut = setTimeout(() => {\n setNewUser(null)\n }, forceLogOutInTimeFromNow)\n }\n\n return () => {\n if (reminder) {\n clearTimeout(reminder)\n }\n if (forceLogOut) {\n clearTimeout(forceLogOut)\n }\n }\n }, [tokenExpiration, openModal, i18n, setNewUser, user])\n\n return (\n <Context.Provider\n value={{\n fetchFullUser,\n logOut,\n permissions,\n refreshCookie,\n refreshCookieAsync,\n refreshPermissions,\n setPermissions,\n setUser: setNewUser,\n token: tokenInMemory,\n user,\n }}\n >\n {children}\n </Context.Provider>\n )\n}\n\nexport const useAuth = <T = ClientUser,>(): AuthContext<T> => useContext(Context) as AuthContext<T>\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,EAWR,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,iBAAiB,wGAQ3B;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAidH,CAAA;AAED,eAAO,MAAM,kBAAkB,4GAS5B;IACD,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAAW,EAyCd,CAAA"}
1
+ {"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAKV,WAAW,EACX,qBAAqB,EACrB,KAAK,EAGL,SAAS,EAGT,OAAO,EAYR,MAAM,SAAS,CAAA;AAkBhB,eAAO,MAAM,iBAAiB,wGAQ3B;IACD,WAAW,EAAE,WAAW,CAAA;IACxB,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,KAAK,EAAE,KAAK,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAqeH,CAAA;AAED,eAAO,MAAM,kBAAkB,4GAS5B;IACD,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,qBAAqB,EAAE,qBAAqB,CAAA;IAC5C,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,WAAW,EAyCd,CAAA"}
@@ -1,4 +1,4 @@
1
- import { MissingEditorProp } from 'payload';
1
+ import { deepCopyObjectSimple, MissingEditorProp } from 'payload';
2
2
  import { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared';
3
3
  import { getComponent } from './getComponent.js';
4
4
  function generateFieldPath(parentPath, name) {
@@ -151,8 +151,26 @@ export const createClientField = ({
151
151
  if (!field.admin.components) {
152
152
  field.admin.components = {};
153
153
  }
154
- field.admin.components.Field = createMappedComponent(incomingField.editor.FieldComponent, serverProps, undefined, 'incomingField.editor.FieldComponent');
155
- field.admin.components.Cell = createMappedComponent(incomingField.editor.CellComponent, serverProps, undefined, 'incomingField.editor.CellComponent');
154
+ /**
155
+ * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).
156
+ * That way, every editor's field / cell props we send to the client have their own object references.
157
+ *
158
+ * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields
159
+ * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since
160
+ * a newer Next.js update that made it break when sending the same object reference to the client twice.
161
+ *
162
+ * We can use deepCopyObjectSimple as client props should be JSON-serializable.
163
+ */
164
+ const FieldComponent = incomingField.editor.FieldComponent;
165
+ if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {
166
+ FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps);
167
+ }
168
+ field.admin.components.Field = createMappedComponent(FieldComponent, serverProps, undefined, 'incomingField.editor.FieldComponent');
169
+ const CellComponent = incomingField.editor.CellComponent;
170
+ if (typeof CellComponent === 'object' && CellComponent.clientProps) {
171
+ CellComponent.clientProps = deepCopyObjectSimple(CellComponent.clientProps);
172
+ }
173
+ field.admin.components.Cell = createMappedComponent(CellComponent, serverProps, undefined, 'incomingField.editor.CellComponent');
156
174
  if (incomingField.editor.generateComponentMap) {
157
175
  const {
158
176
  Component: generateComponentMap,
@@ -1 +1 @@
1
- {"version":3,"file":"fields.js","names":["MissingEditorProp","fieldAffectsData","fieldIsPresentationalOnly","getComponent","generateFieldPath","parentPath","name","tabPath","createClientField","clientField","createMappedComponent","field","incomingField","i18n","importMap","payload","serverOnlyFieldProperties","forEach","key","_isPresentational","isHidden","hidden","disabledFromAdmin","admin","disabled","_schemaPath","label","t","CustomLabel","components","Label","serverProps","undefined","style","width","Object","flex","type","fields","createClientFields","clientFields","disableAddingID","RowLabel","blocks","length","i","block","clientBlock","slug","custom","imageAltText","imageURL","labels","singular","plural","editor","Error","Field","FieldComponent","Cell","CellComponent","generateComponentMap","Component","richTextServerProps","identifier","payloadComponent","silent","actualGenerateComponentMap","result","schemaPath","richTextComponentMap","tabs","tab","clientTab","options","option","value","serverOnlyFieldAdminProperties","fieldServerProps","description","Description","Filter","beforeInput","afterInput","newClientFields","newField","push","hasID","findIndex","f","db","defaultIDType","disableBulkEdit","localized"],"sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminClient,\n ArrayFieldClient,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n CreateMappedComponent,\n Field,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n ImportMap,\n LabelsClient,\n MappedComponent,\n Payload,\n RadioFieldClient,\n RichTextFieldClient,\n RichTextGenerateComponentMap,\n RowFieldClient,\n RowLabelComponent,\n SelectFieldClient,\n ServerFieldBase,\n ServerOnlyFieldAdminProperties,\n ServerOnlyFieldProperties,\n TabsFieldClient,\n} from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport { getComponent } from './getComponent.js'\n\nfunction generateFieldPath(parentPath: string, name: string): string {\n let tabPath = parentPath || ''\n if (parentPath && name) {\n tabPath = `${parentPath}.${name}`\n } else if (!parentPath && name) {\n tabPath = name\n }\n\n return tabPath\n}\n\nexport const createClientField = ({\n clientField,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientField: ClientField\n createMappedComponent: CreateMappedComponent\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField => {\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientField) {\n delete clientField[key]\n }\n })\n\n if (fieldIsPresentationalOnly(incomingField)) {\n clientField._isPresentational = true\n }\n\n const isHidden = 'hidden' in incomingField && incomingField?.hidden\n const disabledFromAdmin =\n incomingField?.admin && 'disabled' in incomingField.admin && incomingField.admin.disabled\n\n if (fieldAffectsData(clientField) && (isHidden || disabledFromAdmin)) {\n return null\n }\n\n clientField._schemaPath = generateFieldPath(\n parentPath,\n fieldAffectsData(clientField) ? clientField.name : '',\n )\n\n if (\n 'label' in clientField &&\n 'label' in incomingField &&\n typeof incomingField.label === 'function'\n ) {\n clientField.label = incomingField.label({ t: i18n.t })\n }\n\n const CustomLabel: FieldLabelClientComponent | FieldLabelServerComponent | RowLabelComponent =\n 'admin' in incomingField &&\n 'components' in incomingField.admin &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label\n\n const serverProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField: undefined,\n field: incomingField,\n },\n }\n\n if ('admin' in incomingField && 'width' in incomingField.admin) {\n clientField.admin.style = {\n ...clientField.admin.style,\n '--field-width': clientField.admin.width,\n width: undefined, // avoid needlessly adding this to the element's style attribute\n }\n } else {\n if (!(clientField.admin instanceof Object)) {\n clientField.admin = {}\n }\n if (!(clientField.admin.style instanceof Object)) {\n clientField.admin.style = {}\n }\n clientField.admin.style.flex = '1 1 auto'\n }\n\n switch (incomingField.type) {\n case 'array':\n case 'group':\n case 'collapsible':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n field.fields = createClientFields({\n clientFields: field.fields,\n createMappedComponent,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n\n if (incomingField?.admin?.components && 'RowLabel' in incomingField.admin.components) {\n ;(field as unknown as ArrayFieldClient).admin.components.RowLabel = createMappedComponent(\n incomingField.admin.components.RowLabel,\n serverProps,\n undefined,\n 'incomingField.admin.components.RowLabel',\n )\n }\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.blocks?.length) {\n for (let i = 0; i < incomingField.blocks.length; i++) {\n const block = incomingField.blocks[i]\n const clientBlock: ClientBlock = {\n slug: block.slug,\n admin: {\n components: {},\n custom: block.admin?.custom,\n },\n fields: field.blocks[i].fields,\n imageAltText: block.imageAltText,\n imageURL: block.imageURL,\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ t: i18n.t })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ t: i18n.t })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n if (block.admin?.components?.Label) {\n clientBlock.admin.components.Label = createMappedComponent(\n block.admin.components.Label,\n serverProps,\n undefined,\n 'block.admin.components.Label',\n )\n }\n\n clientBlock.fields = createClientFields({\n clientFields: clientBlock.fields,\n createMappedComponent,\n fields: block.fields,\n i18n,\n importMap,\n parentPath: `${field._schemaPath}.${block.slug}`,\n payload,\n })\n\n field.blocks[i] = clientBlock\n }\n }\n\n break\n }\n\n case 'richText': {\n const field = clientField\n\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if (!field.admin.components) {\n field.admin.components = {}\n }\n\n field.admin.components.Field = createMappedComponent(\n incomingField.editor.FieldComponent,\n serverProps,\n undefined,\n 'incomingField.editor.FieldComponent',\n )\n\n field.admin.components.Cell = createMappedComponent(\n incomingField.editor.CellComponent,\n serverProps,\n undefined,\n 'incomingField.editor.CellComponent',\n )\n\n if (incomingField.editor.generateComponentMap) {\n const { Component: generateComponentMap, serverProps: richTextServerProps } = getComponent({\n identifier: 'richText-generateComponentMap',\n importMap,\n payloadComponent: incomingField.editor.generateComponentMap,\n silent: true,\n })\n\n if (generateComponentMap) {\n const actualGenerateComponentMap: RichTextGenerateComponentMap = (\n generateComponentMap as any\n )(richTextServerProps)\n\n const result = actualGenerateComponentMap({\n clientField: field as RichTextFieldClient,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n payload,\n schemaPath: field._schemaPath,\n })\n\n ;(field as RichTextFieldClient).richTextComponentMap = result\n }\n }\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = field.tabs[i]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientTab) {\n delete clientTab[key]\n }\n })\n\n clientTab.fields = createClientFields({\n clientFields: clientTab.fields,\n createMappedComponent,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n }\n }\n\n break\n }\n\n // case 'joins': {\n //\n // }\n\n case 'select':\n case 'radio': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ t: i18n.t }),\n value: option.value,\n }\n }\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = ['condition']\n\n if (!clientField.admin) {\n clientField.admin = {}\n }\n\n if (!clientField.admin.components) {\n clientField.admin.components = {}\n }\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in clientField.admin) {\n delete clientField.admin[key]\n }\n })\n\n const fieldServerProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField,\n field: incomingField,\n },\n }\n\n type FieldWithDescription = {\n admin: AdminClient\n } & ClientField\n\n if (incomingField.admin && 'description' in incomingField.admin) {\n if (\n typeof incomingField.admin?.description === 'string' ||\n typeof incomingField.admin?.description === 'object'\n ) {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin.description\n } else if (typeof incomingField.admin?.description === 'function') {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin?.description({\n t: i18n.t,\n })\n }\n }\n\n if (incomingField?.admin?.components?.Cell !== undefined) {\n clientField.admin.components.Cell = createMappedComponent(\n incomingField.admin.components.Cell,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Cell',\n )\n }\n\n type FieldWithDescriptionComponent = {\n admin: AdminClient\n } & ClientField\n\n if (\n incomingField?.admin?.components &&\n 'Description' in incomingField.admin.components &&\n incomingField?.admin?.components?.Description !== undefined\n ) {\n ;(clientField as FieldWithDescriptionComponent).admin.components.Description =\n createMappedComponent(\n incomingField.admin.components.Description,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Description',\n )\n }\n\n type FieldWithErrorComponent = {\n admin: {\n components: {\n Error: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Error' in incomingField.admin.components &&\n incomingField.admin.components.Error !== undefined\n ) {\n ;(clientField as FieldWithErrorComponent).admin.components.Error = createMappedComponent(\n incomingField.admin.components.Error,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Error',\n )\n }\n\n if (incomingField?.admin?.components?.Field !== undefined) {\n clientField.admin.components.Field = createMappedComponent(\n incomingField.admin.components.Field,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Field',\n )\n }\n\n if (\n incomingField?.admin?.components &&\n 'Filter' in incomingField.admin.components &&\n incomingField.admin.components.Filter !== undefined\n ) {\n clientField.admin.components.Filter = createMappedComponent(\n incomingField.admin.components.Filter,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Filter',\n )\n }\n\n type FieldWithLabelComponent = {\n admin: {\n components: {\n Label: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label !== undefined\n ) {\n ;(clientField as FieldWithLabelComponent).admin.components.Label = createMappedComponent(\n CustomLabel,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Label',\n )\n }\n\n type FieldWithBeforeInputComponent = {\n admin: {\n components: {\n beforeInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'beforeInput' in incomingField.admin.components &&\n incomingField.admin.components.beforeInput !== undefined\n ) {\n ;(clientField as FieldWithBeforeInputComponent).admin.components.beforeInput =\n createMappedComponent(\n incomingField.admin?.components?.beforeInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.beforeInput',\n )\n }\n\n type FieldWithAfterInputComponent = {\n admin: {\n components: {\n afterInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'afterInput' in incomingField.admin.components &&\n incomingField.admin.components.afterInput !== undefined\n ) {\n ;(clientField as FieldWithAfterInputComponent).admin.components.afterInput =\n createMappedComponent(\n incomingField.admin?.components?.afterInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.afterInput',\n )\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n clientFields,\n createMappedComponent,\n disableAddingID,\n fields,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientFields: ClientField[]\n createMappedComponent: CreateMappedComponent\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField[] => {\n const newClientFields: ClientField[] = []\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n const newField = createClientField({\n clientField: clientFields[i],\n createMappedComponent,\n field,\n i18n,\n importMap,\n parentPath,\n payload,\n })\n\n if (newField) {\n newClientFields.push(newField)\n }\n }\n\n const hasID = newClientFields.findIndex((f) => fieldAffectsData(f) && f.name === 'id') > -1\n\n if (!disableAddingID && !hasID) {\n newClientFields.push({\n name: 'id',\n type: payload.db.defaultIDType === 'number' ? 'number' : 'text',\n _schemaPath: generateFieldPath(parentPath, 'id'),\n admin: {\n components: {\n Field: null,\n },\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n localized: undefined,\n })\n }\n return newClientFields\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"fields.js","names":["deepCopyObjectSimple","MissingEditorProp","fieldAffectsData","fieldIsPresentationalOnly","getComponent","generateFieldPath","parentPath","name","tabPath","createClientField","clientField","createMappedComponent","field","incomingField","i18n","importMap","payload","serverOnlyFieldProperties","forEach","key","_isPresentational","isHidden","hidden","disabledFromAdmin","admin","disabled","_schemaPath","label","t","CustomLabel","components","Label","serverProps","undefined","style","width","Object","flex","type","fields","createClientFields","clientFields","disableAddingID","RowLabel","blocks","length","i","block","clientBlock","slug","custom","imageAltText","imageURL","labels","singular","plural","editor","Error","FieldComponent","clientProps","Field","CellComponent","Cell","generateComponentMap","Component","richTextServerProps","identifier","payloadComponent","silent","actualGenerateComponentMap","result","schemaPath","richTextComponentMap","tabs","tab","clientTab","options","option","value","serverOnlyFieldAdminProperties","fieldServerProps","description","Description","Filter","beforeInput","afterInput","newClientFields","newField","push","hasID","findIndex","f","db","defaultIDType","disableBulkEdit","localized"],"sources":["../../../../src/providers/Config/createClientConfig/fields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n AdminClient,\n ArrayFieldClient,\n BlocksFieldClient,\n ClientBlock,\n ClientField,\n CreateMappedComponent,\n Field,\n FieldLabelClientComponent,\n FieldLabelServerComponent,\n ImportMap,\n LabelsClient,\n MappedComponent,\n Payload,\n PayloadComponent,\n RadioFieldClient,\n RichTextFieldClient,\n RichTextGenerateComponentMap,\n RowFieldClient,\n RowLabelComponent,\n SelectFieldClient,\n ServerFieldBase,\n ServerOnlyFieldAdminProperties,\n ServerOnlyFieldProperties,\n TabsFieldClient,\n} from 'payload'\n\nimport { deepCopyObjectSimple, MissingEditorProp } from 'payload'\nimport { fieldAffectsData, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport { getComponent } from './getComponent.js'\n\nfunction generateFieldPath(parentPath: string, name: string): string {\n let tabPath = parentPath || ''\n if (parentPath && name) {\n tabPath = `${parentPath}.${name}`\n } else if (!parentPath && name) {\n tabPath = name\n }\n\n return tabPath\n}\n\nexport const createClientField = ({\n clientField,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientField: ClientField\n createMappedComponent: CreateMappedComponent\n field: Field\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField => {\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n 'typescriptSchema',\n 'dbName', // can be a function\n 'enumName', // can be a function\n // the following props are handled separately (see below):\n // `label`\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientField) {\n delete clientField[key]\n }\n })\n\n if (fieldIsPresentationalOnly(incomingField)) {\n clientField._isPresentational = true\n }\n\n const isHidden = 'hidden' in incomingField && incomingField?.hidden\n const disabledFromAdmin =\n incomingField?.admin && 'disabled' in incomingField.admin && incomingField.admin.disabled\n\n if (fieldAffectsData(clientField) && (isHidden || disabledFromAdmin)) {\n return null\n }\n\n clientField._schemaPath = generateFieldPath(\n parentPath,\n fieldAffectsData(clientField) ? clientField.name : '',\n )\n\n if (\n 'label' in clientField &&\n 'label' in incomingField &&\n typeof incomingField.label === 'function'\n ) {\n clientField.label = incomingField.label({ t: i18n.t })\n }\n\n const CustomLabel: FieldLabelClientComponent | FieldLabelServerComponent | RowLabelComponent =\n 'admin' in incomingField &&\n 'components' in incomingField.admin &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label\n\n const serverProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField: undefined,\n field: incomingField,\n },\n }\n\n if ('admin' in incomingField && 'width' in incomingField.admin) {\n clientField.admin.style = {\n ...clientField.admin.style,\n '--field-width': clientField.admin.width,\n width: undefined, // avoid needlessly adding this to the element's style attribute\n }\n } else {\n if (!(clientField.admin instanceof Object)) {\n clientField.admin = {}\n }\n if (!(clientField.admin.style instanceof Object)) {\n clientField.admin.style = {}\n }\n clientField.admin.style.flex = '1 1 auto'\n }\n\n switch (incomingField.type) {\n case 'array':\n case 'group':\n case 'collapsible':\n case 'row': {\n const field = clientField as unknown as RowFieldClient\n\n field.fields = createClientFields({\n clientFields: field.fields,\n createMappedComponent,\n disableAddingID: incomingField.type !== 'array',\n fields: incomingField.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n\n if (incomingField?.admin?.components && 'RowLabel' in incomingField.admin.components) {\n ;(field as unknown as ArrayFieldClient).admin.components.RowLabel = createMappedComponent(\n incomingField.admin.components.RowLabel,\n serverProps,\n undefined,\n 'incomingField.admin.components.RowLabel',\n )\n }\n\n break\n }\n\n case 'blocks': {\n const field = clientField as unknown as BlocksFieldClient\n\n if (incomingField.blocks?.length) {\n for (let i = 0; i < incomingField.blocks.length; i++) {\n const block = incomingField.blocks[i]\n const clientBlock: ClientBlock = {\n slug: block.slug,\n admin: {\n components: {},\n custom: block.admin?.custom,\n },\n fields: field.blocks[i].fields,\n imageAltText: block.imageAltText,\n imageURL: block.imageURL,\n }\n\n if (block.labels) {\n clientBlock.labels = {} as unknown as LabelsClient\n if (block.labels.singular) {\n if (typeof block.labels.singular === 'function') {\n clientBlock.labels.singular = block.labels.singular({ t: i18n.t })\n } else {\n clientBlock.labels.singular = block.labels.singular\n }\n if (typeof block.labels.plural === 'function') {\n clientBlock.labels.plural = block.labels.plural({ t: i18n.t })\n } else {\n clientBlock.labels.plural = block.labels.plural\n }\n }\n }\n\n if (block.admin?.components?.Label) {\n clientBlock.admin.components.Label = createMappedComponent(\n block.admin.components.Label,\n serverProps,\n undefined,\n 'block.admin.components.Label',\n )\n }\n\n clientBlock.fields = createClientFields({\n clientFields: clientBlock.fields,\n createMappedComponent,\n fields: block.fields,\n i18n,\n importMap,\n parentPath: `${field._schemaPath}.${block.slug}`,\n payload,\n })\n\n field.blocks[i] = clientBlock\n }\n }\n\n break\n }\n\n case 'richText': {\n const field = clientField\n\n if (!incomingField?.editor) {\n throw new MissingEditorProp(incomingField) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n\n if (typeof incomingField?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if (!field.admin.components) {\n field.admin.components = {}\n }\n\n /**\n * We have to deep copy all the props we send to the client (= FieldComponent.clientProps).\n * That way, every editor's field / cell props we send to the client have their own object references.\n *\n * If we send the same object reference to the client twice (e.g. through some configurations where 2 or more fields\n * reference the same editor object, like the root editor), the admin panel may hang indefinitely. This has been happening since\n * a newer Next.js update that made it break when sending the same object reference to the client twice.\n *\n * We can use deepCopyObjectSimple as client props should be JSON-serializable.\n */\n const FieldComponent: PayloadComponent = incomingField.editor.FieldComponent\n if (typeof FieldComponent === 'object' && FieldComponent.clientProps) {\n FieldComponent.clientProps = deepCopyObjectSimple(FieldComponent.clientProps)\n }\n\n field.admin.components.Field = createMappedComponent(\n FieldComponent,\n serverProps,\n undefined,\n 'incomingField.editor.FieldComponent',\n )\n\n const CellComponent: PayloadComponent = incomingField.editor.CellComponent\n if (typeof CellComponent === 'object' && CellComponent.clientProps) {\n CellComponent.clientProps = deepCopyObjectSimple(CellComponent.clientProps)\n }\n\n field.admin.components.Cell = createMappedComponent(\n CellComponent,\n serverProps,\n undefined,\n 'incomingField.editor.CellComponent',\n )\n\n if (incomingField.editor.generateComponentMap) {\n const { Component: generateComponentMap, serverProps: richTextServerProps } = getComponent({\n identifier: 'richText-generateComponentMap',\n importMap,\n payloadComponent: incomingField.editor.generateComponentMap,\n silent: true,\n })\n\n if (generateComponentMap) {\n const actualGenerateComponentMap: RichTextGenerateComponentMap = (\n generateComponentMap as any\n )(richTextServerProps)\n\n const result = actualGenerateComponentMap({\n clientField: field as RichTextFieldClient,\n createMappedComponent,\n field: incomingField,\n i18n,\n importMap,\n payload,\n schemaPath: field._schemaPath,\n })\n\n ;(field as RichTextFieldClient).richTextComponentMap = result\n }\n }\n break\n }\n\n case 'tabs': {\n const field = clientField as unknown as TabsFieldClient\n\n if (incomingField.tabs?.length) {\n for (let i = 0; i < incomingField.tabs.length; i++) {\n const tab = incomingField.tabs[i]\n const clientTab = field.tabs[i]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in clientTab) {\n delete clientTab[key]\n }\n })\n\n clientTab.fields = createClientFields({\n clientFields: clientTab.fields,\n createMappedComponent,\n disableAddingID: true,\n fields: tab.fields,\n i18n,\n importMap,\n parentPath: field._schemaPath,\n payload,\n })\n }\n }\n\n break\n }\n\n // case 'joins': {\n //\n // }\n\n case 'select':\n case 'radio': {\n const field = clientField as RadioFieldClient | SelectFieldClient\n\n if (incomingField.options?.length) {\n for (let i = 0; i < incomingField.options.length; i++) {\n const option = incomingField.options[i]\n\n if (typeof option === 'object' && typeof option.label === 'function') {\n field.options[i] = {\n label: option.label({ t: i18n.t }),\n value: option.value,\n }\n }\n }\n }\n\n break\n }\n\n default:\n break\n }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = ['condition']\n\n if (!clientField.admin) {\n clientField.admin = {}\n }\n\n if (!clientField.admin.components) {\n clientField.admin.components = {}\n }\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in clientField.admin) {\n delete clientField.admin[key]\n }\n })\n\n const fieldServerProps: {\n serverProps: ServerFieldBase\n } = {\n serverProps: {\n clientField,\n field: incomingField,\n },\n }\n\n type FieldWithDescription = {\n admin: AdminClient\n } & ClientField\n\n if (incomingField.admin && 'description' in incomingField.admin) {\n if (\n typeof incomingField.admin?.description === 'string' ||\n typeof incomingField.admin?.description === 'object'\n ) {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin.description\n } else if (typeof incomingField.admin?.description === 'function') {\n ;(clientField as FieldWithDescription).admin.description = incomingField.admin?.description({\n t: i18n.t,\n })\n }\n }\n\n if (incomingField?.admin?.components?.Cell !== undefined) {\n clientField.admin.components.Cell = createMappedComponent(\n incomingField.admin.components.Cell,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Cell',\n )\n }\n\n type FieldWithDescriptionComponent = {\n admin: AdminClient\n } & ClientField\n\n if (\n incomingField?.admin?.components &&\n 'Description' in incomingField.admin.components &&\n incomingField?.admin?.components?.Description !== undefined\n ) {\n ;(clientField as FieldWithDescriptionComponent).admin.components.Description =\n createMappedComponent(\n incomingField.admin.components.Description,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Description',\n )\n }\n\n type FieldWithErrorComponent = {\n admin: {\n components: {\n Error: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Error' in incomingField.admin.components &&\n incomingField.admin.components.Error !== undefined\n ) {\n ;(clientField as FieldWithErrorComponent).admin.components.Error = createMappedComponent(\n incomingField.admin.components.Error,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Error',\n )\n }\n\n if (incomingField?.admin?.components?.Field !== undefined) {\n clientField.admin.components.Field = createMappedComponent(\n incomingField.admin.components.Field,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Field',\n )\n }\n\n if (\n incomingField?.admin?.components &&\n 'Filter' in incomingField.admin.components &&\n incomingField.admin.components.Filter !== undefined\n ) {\n clientField.admin.components.Filter = createMappedComponent(\n incomingField.admin.components.Filter,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Filter',\n )\n }\n\n type FieldWithLabelComponent = {\n admin: {\n components: {\n Label: MappedComponent\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'Label' in incomingField.admin.components &&\n incomingField.admin.components.Label !== undefined\n ) {\n ;(clientField as FieldWithLabelComponent).admin.components.Label = createMappedComponent(\n CustomLabel,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.Label',\n )\n }\n\n type FieldWithBeforeInputComponent = {\n admin: {\n components: {\n beforeInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'beforeInput' in incomingField.admin.components &&\n incomingField.admin.components.beforeInput !== undefined\n ) {\n ;(clientField as FieldWithBeforeInputComponent).admin.components.beforeInput =\n createMappedComponent(\n incomingField.admin?.components?.beforeInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.beforeInput',\n )\n }\n\n type FieldWithAfterInputComponent = {\n admin: {\n components: {\n afterInput: MappedComponent[]\n }\n } & AdminClient\n } & ClientField\n if (\n incomingField?.admin?.components &&\n 'afterInput' in incomingField.admin.components &&\n incomingField.admin.components.afterInput !== undefined\n ) {\n ;(clientField as FieldWithAfterInputComponent).admin.components.afterInput =\n createMappedComponent(\n incomingField.admin?.components?.afterInput,\n fieldServerProps,\n undefined,\n 'incomingField.admin.components.afterInput',\n )\n }\n\n return clientField\n}\n\nexport const createClientFields = ({\n clientFields,\n createMappedComponent,\n disableAddingID,\n fields,\n i18n,\n importMap,\n parentPath,\n payload,\n}: {\n clientFields: ClientField[]\n createMappedComponent: CreateMappedComponent\n disableAddingID?: boolean\n fields: Field[]\n i18n: I18nClient\n importMap: ImportMap\n parentPath?: string\n payload: Payload\n}): ClientField[] => {\n const newClientFields: ClientField[] = []\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n const newField = createClientField({\n clientField: clientFields[i],\n createMappedComponent,\n field,\n i18n,\n importMap,\n parentPath,\n payload,\n })\n\n if (newField) {\n newClientFields.push(newField)\n }\n }\n\n const hasID = newClientFields.findIndex((f) => fieldAffectsData(f) && f.name === 'id') > -1\n\n if (!disableAddingID && !hasID) {\n newClientFields.push({\n name: 'id',\n type: payload.db.defaultIDType === 'number' ? 'number' : 'text',\n _schemaPath: generateFieldPath(parentPath, 'id'),\n admin: {\n components: {\n Field: null,\n },\n description: 'The unique identifier for this document',\n disableBulkEdit: true,\n hidden: true,\n },\n hidden: true,\n label: 'ID',\n localized: undefined,\n })\n }\n return newClientFields\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA;AAspB7E,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAA8E,MAAM,OAAO,CAAA;AAElG,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAgBxE,mBAAmB,YAAY,CAAA;AAE/B,eAAO,MAAM,eAAe,QAAO,mBAA0C,CAAA;AA2pB7E,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CACzC;IACE,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CACnC,GAAG,iBAAiB,CAOtB,CAAA"}
@@ -283,6 +283,10 @@ const DocumentInfo = ({
283
283
  where: {
284
284
  ...versionParams.where,
285
285
  and: [...versionParams.where.and, {
286
+ 'version._status': {
287
+ equals: 'draft'
288
+ }
289
+ }, {
286
290
  updatedAt: {
287
291
  greater_than: publishedJSON.updatedAt
288
292
  }