@payloadcms/ui 3.56.0 → 3.57.0-canary.1

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 (183) hide show
  1. package/dist/elements/BulkUpload/EditForm/index.js +18 -4
  2. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  3. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  4. package/dist/elements/BulkUpload/FormsManager/index.js +2 -1
  5. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  6. package/dist/elements/Button/index.d.ts.map +1 -1
  7. package/dist/elements/Button/index.js +1 -2
  8. package/dist/elements/Button/index.js.map +1 -1
  9. package/dist/elements/ClipboardAction/index.js +74 -173
  10. package/dist/elements/ClipboardAction/index.js.map +1 -1
  11. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  12. package/dist/elements/CodeEditor/CodeEditor.js +82 -152
  13. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  14. package/dist/elements/CodeEditor/constants.d.ts +4 -0
  15. package/dist/elements/CodeEditor/constants.d.ts.map +1 -0
  16. package/dist/elements/CodeEditor/constants.js +19 -0
  17. package/dist/elements/CodeEditor/constants.js.map +1 -0
  18. package/dist/elements/CodeEditor/types.d.ts +1 -0
  19. package/dist/elements/CodeEditor/types.d.ts.map +1 -1
  20. package/dist/elements/CodeEditor/types.js.map +1 -1
  21. package/dist/elements/Collapsible/index.js +7 -15
  22. package/dist/elements/Collapsible/index.js.map +1 -1
  23. package/dist/elements/ConfirmationModal/index.js +8 -44
  24. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  25. package/dist/elements/CopyLocaleData/index.js +89 -97
  26. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  27. package/dist/elements/CopyToClipboard/index.js +2 -22
  28. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  29. package/dist/elements/DefaultListViewTabs/index.js +32 -47
  30. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  31. package/dist/elements/DeleteMany/index.js +47 -83
  32. package/dist/elements/DeleteMany/index.js.map +1 -1
  33. package/dist/elements/DocumentControls/index.js +27 -55
  34. package/dist/elements/DocumentControls/index.js.map +1 -1
  35. package/dist/elements/DocumentDrawer/DrawerHeader/index.js +2 -10
  36. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  37. package/dist/elements/DocumentDrawer/index.js +47 -99
  38. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  39. package/dist/elements/Drawer/index.js +23 -57
  40. package/dist/elements/Drawer/index.js.map +1 -1
  41. package/dist/elements/DrawerActionHeader/index.js +3 -21
  42. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  43. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js +149 -225
  44. package/dist/elements/FolderView/Drawers/MoveToFolder/index.js.map +1 -1
  45. package/dist/elements/FolderView/FolderFileCard/index.js +19 -27
  46. package/dist/elements/FolderView/FolderFileCard/index.js.map +1 -1
  47. package/dist/elements/FolderView/MoveDocToFolder/index.js +12 -23
  48. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  49. package/dist/elements/FullscreenModal/index.js +10 -20
  50. package/dist/elements/FullscreenModal/index.js.map +1 -1
  51. package/dist/elements/ListDrawer/index.js +18 -24
  52. package/dist/elements/ListDrawer/index.js.map +1 -1
  53. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js +19 -32
  54. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocInFolderButton.js.map +1 -1
  55. package/dist/elements/ListSelection/index.js +11 -27
  56. package/dist/elements/ListSelection/index.js.map +1 -1
  57. package/dist/elements/LivePreview/Window/index.js +65 -146
  58. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  59. package/dist/elements/Loading/index.js +2 -11
  60. package/dist/elements/Loading/index.js.map +1 -1
  61. package/dist/elements/LoadingOverlay/index.js +46 -102
  62. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  63. package/dist/elements/Localizer/LocalizerLabel/index.js +23 -36
  64. package/dist/elements/Localizer/LocalizerLabel/index.js.map +1 -1
  65. package/dist/elements/QueryPresets/QueryPresetToggler/index.js +41 -139
  66. package/dist/elements/QueryPresets/QueryPresetToggler/index.js.map +1 -1
  67. package/dist/elements/RenderIfInViewport/index.d.ts +2 -2
  68. package/dist/elements/RenderIfInViewport/index.d.ts.map +1 -1
  69. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  70. package/dist/elements/SelectRow/index.js +39 -40
  71. package/dist/elements/SelectRow/index.js.map +1 -1
  72. package/dist/elements/ShimmerEffect/index.js +20 -12
  73. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  74. package/dist/elements/SortColumn/index.js +21 -30
  75. package/dist/elements/SortColumn/index.js.map +1 -1
  76. package/dist/elements/Table/DefaultCell/fields/Date/index.js +9 -37
  77. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  78. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +35 -37
  79. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  80. package/dist/elements/Table/DefaultCell/fields/Select/index.js +12 -27
  81. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  82. package/dist/elements/Thumbnail/index.js +35 -75
  83. package/dist/elements/Thumbnail/index.js.map +1 -1
  84. package/dist/elements/ThumbnailCard/index.js +17 -26
  85. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  86. package/dist/elements/Tooltip/index.js +51 -127
  87. package/dist/elements/Tooltip/index.js.map +1 -1
  88. package/dist/elements/Upload/index.js +2 -10
  89. package/dist/elements/Upload/index.js.map +1 -1
  90. package/dist/elements/WhereBuilder/Condition/Select/index.js +31 -44
  91. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  92. package/dist/exports/client/{CodeEditor-4J4OH4TD.js → CodeEditor-B56LZ4XC.js} +2 -2
  93. package/dist/exports/client/{DatePicker-NMDEHPWL.js → DatePicker-F432AIH3.js} +2 -2
  94. package/dist/exports/client/{chunk-7RGKTZG2.js → chunk-AZDI6MW4.js} +1 -1
  95. package/dist/exports/client/{chunk-7RGKTZG2.js.map → chunk-AZDI6MW4.js.map} +1 -1
  96. package/dist/exports/client/chunk-IOKOROQ2.js +27 -0
  97. package/dist/exports/client/chunk-IOKOROQ2.js.map +7 -0
  98. package/dist/exports/client/index.d.ts +3 -2
  99. package/dist/exports/client/index.d.ts.map +1 -1
  100. package/dist/exports/client/index.js +24 -24
  101. package/dist/exports/client/index.js.map +4 -4
  102. package/dist/exports/rsc/index.d.ts +1 -0
  103. package/dist/exports/rsc/index.d.ts.map +1 -1
  104. package/dist/exports/rsc/index.js +1 -0
  105. package/dist/exports/rsc/index.js.map +1 -1
  106. package/dist/fields/Array/ArrayRow.d.ts +2 -3
  107. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  108. package/dist/fields/Array/ArrayRow.js +13 -23
  109. package/dist/fields/Array/ArrayRow.js.map +1 -1
  110. package/dist/fields/Array/index.js +273 -477
  111. package/dist/fields/Array/index.js.map +1 -1
  112. package/dist/fields/Checkbox/Input.js +2 -19
  113. package/dist/fields/Checkbox/Input.js.map +1 -1
  114. package/dist/fields/Code/index.d.ts.map +1 -1
  115. package/dist/fields/Code/index.js +15 -12
  116. package/dist/fields/Code/index.js.map +1 -1
  117. package/dist/fields/FieldError/index.js +30 -29
  118. package/dist/fields/FieldError/index.js.map +1 -1
  119. package/dist/fields/FieldLabel/index.js +12 -64
  120. package/dist/fields/FieldLabel/index.js.map +1 -1
  121. package/dist/fields/JSON/index.d.ts.map +1 -1
  122. package/dist/fields/JSON/index.js +34 -17
  123. package/dist/fields/JSON/index.js.map +1 -1
  124. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js +45 -103
  125. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  126. package/dist/fields/Relationship/select-components/SingleValue/index.js +29 -44
  127. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  128. package/dist/fields/Row/index.d.ts +1 -3
  129. package/dist/fields/Row/index.d.ts.map +1 -1
  130. package/dist/fields/Select/Input.js +18 -31
  131. package/dist/fields/Select/Input.js.map +1 -1
  132. package/dist/fields/Tabs/Tab/index.js +2 -11
  133. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  134. package/dist/fields/Tabs/index.d.ts +2 -1
  135. package/dist/fields/Tabs/index.d.ts.map +1 -1
  136. package/dist/fields/Tabs/index.js +185 -225
  137. package/dist/fields/Tabs/index.js.map +1 -1
  138. package/dist/fields/Upload/RelationshipContent/index.js +79 -127
  139. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  140. package/dist/forms/RenderFields/RenderField.js +245 -237
  141. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  142. package/dist/forms/RenderFields/types.d.ts +2 -10
  143. package/dist/forms/RenderFields/types.d.ts.map +1 -1
  144. package/dist/forms/RenderFields/types.js.map +1 -1
  145. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts +35 -0
  146. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -0
  147. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +83 -0
  148. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -0
  149. package/dist/forms/useField/index.d.ts +7 -0
  150. package/dist/forms/useField/index.d.ts.map +1 -1
  151. package/dist/forms/useField/index.js +76 -45
  152. package/dist/forms/useField/index.js.map +1 -1
  153. package/dist/hooks/useIntersect.js +35 -53
  154. package/dist/hooks/useIntersect.js.map +1 -1
  155. package/dist/hooks/usePayloadAPI.js +36 -44
  156. package/dist/hooks/usePayloadAPI.js.map +1 -1
  157. package/dist/providers/ServerFunctions/index.d.ts +4 -1
  158. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  159. package/dist/providers/ServerFunctions/index.js +13 -0
  160. package/dist/providers/ServerFunctions/index.js.map +1 -1
  161. package/dist/utilities/buildFormState.d.ts.map +1 -1
  162. package/dist/utilities/buildFormState.js +4 -30
  163. package/dist/utilities/buildFormState.js.map +1 -1
  164. package/dist/utilities/buildTableState.js +4 -30
  165. package/dist/utilities/buildTableState.js.map +1 -1
  166. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  167. package/dist/utilities/copyDataFromLocale.js +4 -19
  168. package/dist/utilities/copyDataFromLocale.js.map +1 -1
  169. package/dist/utilities/schedulePublishHandler.d.ts +1 -1
  170. package/dist/utilities/schedulePublishHandler.d.ts.map +1 -1
  171. package/dist/utilities/schedulePublishHandler.js +4 -18
  172. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  173. package/dist/views/BrowseByFolder/index.js +37 -55
  174. package/dist/views/BrowseByFolder/index.js.map +1 -1
  175. package/dist/views/CollectionFolder/index.js +13 -40
  176. package/dist/views/CollectionFolder/index.js.map +1 -1
  177. package/dist/views/Edit/Auth/index.js +93 -105
  178. package/dist/views/Edit/Auth/index.js.map +1 -1
  179. package/package.json +9 -9
  180. package/dist/exports/client/chunk-HBCG32CP.js +0 -26
  181. package/dist/exports/client/chunk-HBCG32CP.js.map +0 -7
  182. /package/dist/exports/client/{CodeEditor-4J4OH4TD.js.map → CodeEditor-B56LZ4XC.js.map} +0 -0
  183. /package/dist/exports/client/{DatePicker-NMDEHPWL.js.map → DatePicker-F432AIH3.js.map} +0 -0
@@ -7,7 +7,7 @@ import { useLocale } from '../providers/Locale/index.js';
7
7
  import { useTranslation } from '../providers/Translation/index.js';
8
8
  import { requests } from '../utilities/api.js';
9
9
  export const usePayloadAPI = (url, t0) => {
10
- const $ = _c(32);
10
+ const $ = _c(30);
11
11
  let t1;
12
12
  if ($[0] !== t0) {
13
13
  t1 = t0 === undefined ? {} : t0;
@@ -51,17 +51,9 @@ export const usePayloadAPI = (url, t0) => {
51
51
  const hasInitialized = useRef(false);
52
52
  let t5;
53
53
  if ($[6] !== locale || $[7] !== params) {
54
- let t6;
55
- if ($[9] !== params) {
56
- t6 = typeof params === "object" ? params : {};
57
- $[9] = params;
58
- $[10] = t6;
59
- } else {
60
- t6 = $[10];
61
- }
62
54
  t5 = qs.stringify({
63
55
  locale,
64
- ...t6
56
+ ...(typeof params === "object" ? params : {})
65
57
  }, {
66
58
  addQueryPrefix: true
67
59
  });
@@ -73,7 +65,7 @@ export const usePayloadAPI = (url, t0) => {
73
65
  }
74
66
  const search = t5;
75
67
  let t6;
76
- if ($[11] !== i18n.language || $[12] !== initialData || $[13] !== search || $[14] !== url) {
68
+ if ($[9] !== i18n.language || $[10] !== initialData || $[11] !== search || $[12] !== url) {
77
69
  t6 = () => {
78
70
  if (initialData && !hasInitialized.current) {
79
71
  hasInitialized.current = true;
@@ -119,74 +111,74 @@ export const usePayloadAPI = (url, t0) => {
119
111
  }
120
112
  };
121
113
  };
122
- $[11] = i18n.language;
123
- $[12] = initialData;
124
- $[13] = search;
125
- $[14] = url;
126
- $[15] = t6;
114
+ $[9] = i18n.language;
115
+ $[10] = initialData;
116
+ $[11] = search;
117
+ $[12] = url;
118
+ $[13] = t6;
127
119
  } else {
128
- t6 = $[15];
120
+ t6 = $[13];
129
121
  }
130
122
  let t7;
131
- if ($[16] !== i18n.language || $[17] !== initialData || $[18] !== locale || $[19] !== search || $[20] !== url) {
123
+ if ($[14] !== i18n.language || $[15] !== initialData || $[16] !== locale || $[17] !== search || $[18] !== url) {
132
124
  t7 = [url, locale, search, i18n.language, initialData];
133
- $[16] = i18n.language;
134
- $[17] = initialData;
135
- $[18] = locale;
136
- $[19] = search;
137
- $[20] = url;
138
- $[21] = t7;
125
+ $[14] = i18n.language;
126
+ $[15] = initialData;
127
+ $[16] = locale;
128
+ $[17] = search;
129
+ $[18] = url;
130
+ $[19] = t7;
139
131
  } else {
140
- t7 = $[21];
132
+ t7 = $[19];
141
133
  }
142
134
  useEffect(t6, t7);
143
135
  let t8;
144
136
  let t9;
145
- if ($[22] !== initialData) {
137
+ if ($[20] !== initialData) {
146
138
  t8 = () => {
147
139
  if (initialData && hasInitialized.current) {
148
140
  setData(initialData);
149
141
  }
150
142
  };
151
143
  t9 = [initialData];
152
- $[22] = initialData;
153
- $[23] = t8;
154
- $[24] = t9;
144
+ $[20] = initialData;
145
+ $[21] = t8;
146
+ $[22] = t9;
155
147
  } else {
156
- t8 = $[23];
157
- t9 = $[24];
148
+ t8 = $[21];
149
+ t9 = $[22];
158
150
  }
159
151
  useEffect(t8, t9);
160
152
  let t10;
161
- if ($[25] !== data || $[26] !== isError || $[27] !== isLoading) {
153
+ if ($[23] !== data || $[24] !== isError || $[25] !== isLoading) {
162
154
  t10 = {
163
155
  data,
164
156
  isError,
165
157
  isLoading
166
158
  };
167
- $[25] = data;
168
- $[26] = isError;
169
- $[27] = isLoading;
170
- $[28] = t10;
159
+ $[23] = data;
160
+ $[24] = isError;
161
+ $[25] = isLoading;
162
+ $[26] = t10;
171
163
  } else {
172
- t10 = $[28];
164
+ t10 = $[26];
173
165
  }
174
166
  let t11;
175
- if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
167
+ if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
176
168
  t11 = {
177
169
  setParams
178
170
  };
179
- $[29] = t11;
171
+ $[27] = t11;
180
172
  } else {
181
- t11 = $[29];
173
+ t11 = $[27];
182
174
  }
183
175
  let t12;
184
- if ($[30] !== t10) {
176
+ if ($[28] !== t10) {
185
177
  t12 = [t10, t11];
186
- $[30] = t10;
187
- $[31] = t12;
178
+ $[28] = t10;
179
+ $[29] = t12;
188
180
  } else {
189
- t12 = $[31];
181
+ t12 = $[29];
190
182
  }
191
183
  return t12;
192
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","t5","t6","stringify","addQueryPrefix","search","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,YAAYC,EAAA,MAAQ;AACpB,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAE5C,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AAoBzB,OAAO,MAAMC,aAAA,GAA+BA,CAAAC,GAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAA,IAAAY,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAME,EAAA,GAAAF,EAAY,KAAAG,SAAA,QAAZH,EAAY;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAZ,MAAAG,OAAA,GAAAF,EAAY;EAC5D;IAAAG,WAAA;IAAAC,aAAA,EAAAC;EAAA,IAA4CH,OAAA;EAAA,IAAAI,EAAA;EAAA,IAAAP,CAAA,QAAAM,EAAA;IAAvBC,EAAA,GAAAD,EAAkB,KAAAJ,SAAA,QAAlBI,EAAkB;IAAAN,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAlB,MAAAK,aAAA,GAAAE,EAAkB;EAEvC;IAAAC;EAAA,IAAiBb,cAAA;EAAA,IAAAc,EAAA;EAAA,IAAAT,CAAA,QAAAI,WAAA;IACgBK,EAAA,GAAAL,WAAA,MAAgB;IAAAJ,CAAA,MAAAI,WAAA;IAAAJ,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EAAjD,OAAAU,IAAA,EAAAC,OAAA,IAAwBlB,QAAA,CAASgB,EAAgB;EACjD,OAAAG,MAAA,EAAAC,SAAA,IAA4BpB,QAAA,CAASY,aAAA;EACrC,OAAAS,SAAA,EAAAC,YAAA,IAAkCtB,QAAA,EAAUW,WAAA;EAC5C,OAAAY,OAAA,EAAAC,UAAA,IAA8BxB,QAAA,MAAS;EACvC;IAAAyB,IAAA,EAAAC;EAAA,IAAyBzB,SAAA;EACzB,MAAA0B,cAAA,GAAuB5B,MAAA,MAAO;EAAA,IAAA6B,EAAA;EAAA,IAAArB,CAAA,QAAAmB,MAAA,IAAAnB,CAAA,QAAAY,MAAA;IAAA,IAAAU,EAAA;IAAA,IAAAtB,CAAA,QAAAY,MAAA;MAKtBU,EAAA,UAAOV,MAAA,KAAW,WAAWA,MAAA,KAAW;MAAAZ,CAAA,MAAAY,MAAA;MAAAZ,CAAA,OAAAsB,EAAA;IAAA;MAAAA,EAAA,GAAAtB,CAAA;IAAA;IAHjCqB,EAAA,GAAA/B,EAAA,CAAAiC,SAAA;MAAAJ,MAAA;MAAA,GAGPG;IAAwC;MAAAE,cAAA;IAAA,CAI9C;IAAAxB,CAAA,MAAAmB,MAAA;IAAAnB,CAAA,MAAAY,MAAA;IAAAZ,CAAA,MAAAqB,EAAA;EAAA;IAAAA,EAAA,GAAArB,CAAA;EAAA;EAPF,MAAAyB,MAAA,GAAeJ,EAOb;EAAA,IAAAC,EAAA;EAAA,IAAAtB,CAAA,SAAAQ,IAAA,CAAAkB,QAAA,IAAA1B,CAAA,SAAAI,WAAA,IAAAJ,CAAA,SAAAyB,MAAA,IAAAzB,CAAA,SAAAF,GAAA;IAIQwB,EAAA,GAAAA,CAAA;MAAA,IACJlB,WAAA,KAAgBgB,cAAA,CAAAO,OAAsB;QACxCP,cAAA,CAAAO,OAAA;QAAA;MAAA;MAIF,MAAAC,eAAA,OAAAC,eAAA;MAEA,MAAAC,SAAA,SAAAA,CAAA;QACEb,UAAA,MAAW;QACXF,YAAA,KAAa;QAAA;QAAA;UAGX,MAAAgB,QAAA,SAAuBnC,QAAA,CAAAoC,GAAA,CAAa,GAAGlC,GAAA,GAAM2B,MAAA,EAAQ;YAAAQ,OAAA;cAAA,mBAE9BzB,IAAA,CAAAkB;YAAA;YAAAQ,MAAA,EAEbN,eAAA,CAAAM;UAAA,CACV;UAAA,IAEIH,QAAA,CAAAI,MAAA,MAAkB;YACpBlB,UAAA,KAAW;UAAA;UAGb,MAAAmB,IAAA,SAAmBL,QAAA,CAAAK,IAAA,CAAa;UAEhCzB,OAAA,CAAQyB,IAAA;UACRrB,YAAA,MAAa;QAAA,SAAAsB,EAAA;UAAA,KAERT,eAAA,CAAAM,MAAA,CAAAI,OAAA;YACHrB,UAAA,KAAW;YACXF,YAAA,MAAa;UAAA;QAAA;MAAA;MAGnB,IAEIjB,GAAA;QACGgC,SAAA;MAAA;QAELb,UAAA,MAAW;QACXF,YAAA,MAAa;MAAA;MAAA;QAAA;QAAA;UAKXa,eAAA,CAAAW,KAAA,CAAqB;QAAA,SAAAC,EAAA;UACdC,KAAA,CAAAA,IAAA,CAAAA,CAAA,CAAAA,EAAA;QAAA;MAAA;IAAA;IAIbzC,CAAA,OAAAQ,IAAA,CAAAkB,QAAA;IAAA1B,CAAA,OAAAI,WAAA;IAAAJ,CAAA,OAAAyB,MAAA;IAAAzB,CAAA,OAAAF,GAAA;IAAAE,CAAA,OAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAAA,IAAAqC,EAAA;EAAA,IAAArC,CAAA,SAAAQ,IAAA,CAAAkB,QAAA,IAAA1B,CAAA,SAAAI,WAAA,IAAAJ,CAAA,SAAAmB,MAAA,IAAAnB,CAAA,SAAAyB,MAAA,IAAAzB,CAAA,SAAAF,GAAA;IAAGuC,EAAA,IAACvC,GAAA,EAAKqB,MAAA,EAAQM,MAAA,EAAQjB,IAAA,CAAAkB,QAAA,EAAetB,WAAA;IAAYJ,CAAA,OAAAQ,IAAA,CAAAkB,QAAA;IAAA1B,CAAA,OAAAI,WAAA;IAAAJ,CAAA,OAAAmB,MAAA;IAAAnB,CAAA,OAAAyB,MAAA;IAAAzB,CAAA,OAAAF,GAAA;IAAAE,CAAA,OAAAqC,EAAA;EAAA;IAAAA,EAAA,GAAArC,CAAA;EAAA;EAlDpDT,SAAA,CAAU+B,EAkDV,EAAGe,EAAiD;EAAA,IAAAG,EAAA;EAAA,IAAAE,EAAA;EAAA,IAAA1C,CAAA,SAAAI,WAAA;IAG1CoC,EAAA,GAAAA,CAAA;MAAA,IACJpC,WAAA,IAAegB,cAAA,CAAAO,OAAsB;QACvChB,OAAA,CAAQP,WAAA;MAAA;IAAA;IAETsC,EAAA,IAACtC,WAAA;IAAYJ,CAAA,OAAAI,WAAA;IAAAJ,CAAA,OAAAwC,EAAA;IAAAxC,CAAA,OAAA0C,EAAA;EAAA;IAAAF,EAAA,GAAAxC,CAAA;IAAA0C,EAAA,GAAA1C,CAAA;EAAA;EAJhBT,SAAA,CAAUiD,EAIV,EAAGE,EAAa;EAAA,IAAAC,GAAA;EAAA,IAAA3C,CAAA,SAAAU,IAAA,IAAAV,CAAA,SAAAgB,OAAA,IAAAhB,CAAA,SAAAc,SAAA;IAER6B,GAAA;MAAAjC,IAAA;MAAAM,OAAA;MAAAF;IAAA;IAA2Bd,CAAA,OAAAU,IAAA;IAAAV,CAAA,OAAAgB,OAAA;IAAAhB,CAAA,OAAAc,SAAA;IAAAd,CAAA,OAAA2C,GAAA;EAAA;IAAAA,GAAA,GAAA3C,CAAA;EAAA;EAAA,IAAA4C,GAAA;EAAA,IAAA5C,CAAA,SAAA6C,MAAA,CAAAC,GAAA;IAAGF,GAAA;MAAA/B;IAAA;IAAYb,CAAA,OAAA4C,GAAA;EAAA;IAAAA,GAAA,GAAA5C,CAAA;EAAA;EAAA,IAAA+C,GAAA;EAAA,IAAA/C,CAAA,SAAA2C,GAAA;IAA3CI,GAAA,IAACJ,GAA2B,EAAGC,GAAY;IAAE5C,CAAA,OAAA2C,GAAA;IAAA3C,CAAA,OAAA+C,GAAA;EAAA;IAAAA,GAAA,GAAA/C,CAAA;EAAA;EAAA,OAA7C+C,GAA6C;AAAA,CACtD","ignoreList":[]}
1
+ {"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","code","locale","hasInitialized","t5","stringify","addQueryPrefix","search","t6","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const { code: locale } = useLocale()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { AdminViewServerPropsOnly, BuildFormStateArgs, BuildTableStateArgs, Data, DocumentPreferences, DocumentSlots, FormState, GetFolderResultsComponentAndDataArgs, Locale, Params, RenderDocumentVersionsProperties, ServerFunction, ServerFunctionClient } from 'payload';
2
2
  import React from 'react';
3
+ import type { RenderFieldServerFnArgs, RenderFieldServerFnReturnType } from '../../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js';
3
4
  import type { buildFormStateHandler } from '../../utilities/buildFormState.js';
4
5
  import type { buildTableStateHandler } from '../../utilities/buildTableState.js';
5
6
  import type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js';
@@ -56,7 +57,9 @@ type GetDocumentSlots = (args: {
56
57
  type GetFolderResultsComponentAndDataClient = (args: {
57
58
  signal?: AbortSignal;
58
59
  } & Omit<GetFolderResultsComponentAndDataArgs, 'req'>) => ReturnType<typeof getFolderResultsComponentAndDataHandler>;
59
- type ServerFunctionsContextType = {
60
+ type RenderFieldClient = (args: RenderFieldServerFnArgs) => Promise<RenderFieldServerFnReturnType>;
61
+ export type ServerFunctionsContextType = {
62
+ _internal_renderField: RenderFieldClient;
60
63
  copyDataFromLocale: CopyDataFromLocaleClient;
61
64
  getDocumentSlots: GetDocumentSlots;
62
65
  getFolderResultsComponentAndData: GetFolderResultsComponentAndDataClient;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ServerFunctions/index.tsx"],"names":[],"mappings":"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"}
@@ -157,8 +157,21 @@ export const ServerFunctionsProvider = ({
157
157
  ;
158
158
  }
159
159
  }, [serverFunction]);
160
+ const _internal_renderField = useCallback(async args => {
161
+ try {
162
+ const result = await serverFunction({
163
+ name: 'render-field',
164
+ args
165
+ });
166
+ return result;
167
+ } catch (_err) {
168
+ console.error(_err) // eslint-disable-line no-console
169
+ ;
170
+ }
171
+ }, [serverFunction]);
160
172
  return /*#__PURE__*/_jsx(ServerFunctionsContext, {
161
173
  value: {
174
+ _internal_renderField,
162
175
  copyDataFromLocale,
163
176
  getDocumentSlots,
164
177
  getFolderResultsComponentAndData,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","createContext","useCallback","ServerFunctionsContext","undefined","useServerFunctions","context","use","Error","ServerFunctionsProvider","children","serverFunction","getDocumentSlots","args","name","schedulePublish","signal","remoteSignal","rest","aborted","result","_err","console","error","type","doc","value","relationTo","getFormState","fallbackLocale","state","getTableState","renderDocument","copyDataFromLocale","getFolderResultsComponentAndData","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n AdminViewServerPropsOnly,\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentPreferences,\n DocumentSlots,\n FormState,\n GetFolderResultsComponentAndDataArgs,\n Locale,\n Params,\n RenderDocumentVersionsProperties,\n ServerFunction,\n ServerFunctionClient,\n} from 'payload'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\nimport type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js'\nimport type { getFolderResultsComponentAndDataHandler } from '../../utilities/getFolderResultsComponentAndData.js'\nimport type {\n schedulePublishHandler,\n SchedulePublishHandlerArgs,\n} from '../../utilities/schedulePublishHandler.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype SchedulePublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof schedulePublishHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\nexport type RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\ntype RenderDocumentBaseArgs = {\n collectionSlug: string\n disableActions?: boolean\n docID: number | string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n locale?: Locale\n overrideEntityVisibility?: boolean\n paramsOverride?: AdminViewServerPropsOnly['params']\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n redirectAfterRestore?: boolean\n searchParams?: Params\n /**\n * Properties specific to the versions view\n */\n versions?: RenderDocumentVersionsProperties\n}\n\nexport type RenderDocumentServerFunction = ServerFunction<\n RenderDocumentBaseArgs,\n Promise<RenderDocumentResult>\n>\n\ntype RenderDocumentServerFunctionHookFn = (\n // No req or importMap - those are augmented by handleServerFunctions\n args: {\n signal?: AbortSignal\n } & RenderDocumentBaseArgs,\n) => Promise<RenderDocumentResult>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n id?: number | string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype GetFolderResultsComponentAndDataClient = (\n args: {\n signal?: AbortSignal\n } & Omit<GetFolderResultsComponentAndDataArgs, 'req'>,\n) => ReturnType<typeof getFolderResultsComponentAndDataHandler>\n\ntype ServerFunctionsContextType = {\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFolderResultsComponentAndData: GetFolderResultsComponentAndDataClient\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocumentServerFunctionHookFn\n schedulePublish: SchedulePublishClient\n serverFunction: ServerFunctionClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.use(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const schedulePublish = useCallback<SchedulePublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'schedule-publish',\n args: { ...rest },\n })) as Awaited<ReturnType<typeof schedulePublishHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n let error = `Error scheduling ${rest.type}`\n\n if (rest.doc) {\n error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`\n }\n\n return { error }\n },\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildFormStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildTableStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocumentServerFunctionHookFn>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: {\n fallbackLocale: false,\n ...rest,\n } as Parameters<RenderDocumentServerFunctionHookFn>[0],\n })) as Awaited<ReturnType<RenderDocumentServerFunctionHookFn>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const copyDataFromLocale = useCallback<CopyDataFromLocaleClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'copy-data-from-locale',\n args: rest,\n })) as { data: Data }\n\n if (!remoteSignal?.aborted) {\n return result\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const getFolderResultsComponentAndData = useCallback<GetFolderResultsComponentAndDataClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'get-folder-results-component-and-data',\n args: rest,\n })) as Awaited<ReturnType<typeof getFolderResultsComponentAndDataHandler>>\n\n if (!remoteSignal?.aborted) {\n return result\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext\n value={{\n copyDataFromLocale,\n getDocumentSlots,\n getFolderResultsComponentAndData,\n getFormState,\n getTableState,\n renderDocument,\n schedulePublish,\n serverFunction,\n }}\n >\n {children}\n </ServerFunctionsContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","useCallback","ServerFunctionsContext","undefined","useServerFunctions","context","use","Error","ServerFunctionsProvider","children","serverFunction","getDocumentSlots","args","name","schedulePublish","signal","remoteSignal","rest","aborted","result","_err","console","error","type","doc","value","relationTo","getFormState","fallbackLocale","state","getTableState","renderDocument","copyDataFromLocale","getFolderResultsComponentAndData","_internal_renderField","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n AdminViewServerPropsOnly,\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentPreferences,\n DocumentSlots,\n FormState,\n GetFolderResultsComponentAndDataArgs,\n Locale,\n Params,\n RenderDocumentVersionsProperties,\n ServerFunction,\n ServerFunctionClient,\n} from 'payload'\n\nimport React, { createContext, useCallback } from 'react'\n\nimport type {\n RenderFieldServerFnArgs,\n RenderFieldServerFnReturnType,\n} from '../../forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js'\nimport type { buildFormStateHandler } from '../../utilities/buildFormState.js'\nimport type { buildTableStateHandler } from '../../utilities/buildTableState.js'\nimport type { CopyDataFromLocaleArgs } from '../../utilities/copyDataFromLocale.js'\nimport type { getFolderResultsComponentAndDataHandler } from '../../utilities/getFolderResultsComponentAndData.js'\nimport type {\n schedulePublishHandler,\n SchedulePublishHandlerArgs,\n} from '../../utilities/schedulePublishHandler.js'\n\ntype GetFormStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildFormStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildFormStateHandler>\n\ntype SchedulePublishClient = (\n args: {\n signal?: AbortSignal\n } & Omit<SchedulePublishHandlerArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof schedulePublishHandler>\n\ntype GetTableStateClient = (\n args: {\n signal?: AbortSignal\n } & Omit<BuildTableStateArgs, 'clientConfig' | 'req'>,\n) => ReturnType<typeof buildTableStateHandler>\n\nexport type RenderDocumentResult = {\n data: any\n Document: React.ReactNode\n preferences: DocumentPreferences\n}\n\ntype RenderDocumentBaseArgs = {\n collectionSlug: string\n disableActions?: boolean\n docID: number | string\n drawerSlug?: string\n initialData?: Data\n initialState?: FormState\n locale?: Locale\n overrideEntityVisibility?: boolean\n paramsOverride?: AdminViewServerPropsOnly['params']\n redirectAfterCreate?: boolean\n redirectAfterDelete: boolean\n redirectAfterDuplicate: boolean\n redirectAfterRestore?: boolean\n searchParams?: Params\n /**\n * Properties specific to the versions view\n */\n versions?: RenderDocumentVersionsProperties\n}\n\nexport type RenderDocumentServerFunction = ServerFunction<\n RenderDocumentBaseArgs,\n Promise<RenderDocumentResult>\n>\n\ntype RenderDocumentServerFunctionHookFn = (\n // No req or importMap - those are augmented by handleServerFunctions\n args: {\n signal?: AbortSignal\n } & RenderDocumentBaseArgs,\n) => Promise<RenderDocumentResult>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n id?: number | string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype GetFolderResultsComponentAndDataClient = (\n args: {\n signal?: AbortSignal\n } & Omit<GetFolderResultsComponentAndDataArgs, 'req'>,\n) => ReturnType<typeof getFolderResultsComponentAndDataHandler>\n\ntype RenderFieldClient = (args: RenderFieldServerFnArgs) => Promise<RenderFieldServerFnReturnType>\nexport type ServerFunctionsContextType = {\n _internal_renderField: RenderFieldClient\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFolderResultsComponentAndData: GetFolderResultsComponentAndDataClient\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocumentServerFunctionHookFn\n schedulePublish: SchedulePublishClient\n serverFunction: ServerFunctionClient\n}\n\nexport const ServerFunctionsContext = createContext<ServerFunctionsContextType | undefined>(\n undefined,\n)\n\nexport const useServerFunctions = () => {\n const context = React.use(ServerFunctionsContext)\n if (context === undefined) {\n throw new Error('useServerFunctions must be used within a ServerFunctionsProvider')\n }\n return context\n}\n\nexport const ServerFunctionsProvider: React.FC<{\n children: React.ReactNode\n serverFunction: ServerFunctionClient\n}> = ({ children, serverFunction }) => {\n if (!serverFunction) {\n throw new Error('ServerFunctionsProvider requires a serverFunction prop')\n }\n\n const getDocumentSlots = useCallback<GetDocumentSlots>(\n async (args) =>\n await serverFunction({\n name: 'render-document-slots',\n args,\n }),\n [serverFunction],\n )\n\n const schedulePublish = useCallback<SchedulePublishClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'schedule-publish',\n args: { ...rest },\n })) as Awaited<ReturnType<typeof schedulePublishHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n let error = `Error scheduling ${rest.type}`\n\n if (rest.doc) {\n error += ` for document with ID ${rest.doc.value} in collection ${rest.doc.relationTo}`\n }\n\n return { error }\n },\n [serverFunction],\n )\n\n const getFormState = useCallback<GetFormStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'form-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildFormStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n return { state: null }\n },\n [serverFunction],\n )\n\n const getTableState = useCallback<GetTableStateClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n if (!remoteSignal?.aborted) {\n const result = (await serverFunction({\n name: 'table-state',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof buildTableStateHandler>> // TODO: infer this type when `strictNullChecks` is enabled\n\n if (!remoteSignal?.aborted) {\n return result\n }\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n\n // return { state: args.formState }\n },\n [serverFunction],\n )\n\n const renderDocument = useCallback<RenderDocumentServerFunctionHookFn>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: {\n fallbackLocale: false,\n ...rest,\n } as Parameters<RenderDocumentServerFunctionHookFn>[0],\n })) as Awaited<ReturnType<RenderDocumentServerFunctionHookFn>> // TODO: infer this type when `strictNullChecks` is enabled\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const copyDataFromLocale = useCallback<CopyDataFromLocaleClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'copy-data-from-locale',\n args: rest,\n })) as { data: Data }\n\n if (!remoteSignal?.aborted) {\n return result\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const getFolderResultsComponentAndData = useCallback<GetFolderResultsComponentAndDataClient>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'get-folder-results-component-and-data',\n args: rest,\n })) as Awaited<ReturnType<typeof getFolderResultsComponentAndDataHandler>>\n\n if (!remoteSignal?.aborted) {\n return result\n }\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n const _internal_renderField = useCallback<RenderFieldClient>(\n async (args) => {\n try {\n const result = (await serverFunction({\n name: 'render-field',\n args,\n })) as RenderFieldServerFnReturnType\n\n return result\n } catch (_err) {\n console.error(_err) // eslint-disable-line no-console\n }\n },\n [serverFunction],\n )\n\n return (\n <ServerFunctionsContext\n value={{\n _internal_renderField,\n copyDataFromLocale,\n getDocumentSlots,\n getFolderResultsComponentAndData,\n getFormState,\n getTableState,\n renderDocument,\n schedulePublish,\n serverFunction,\n }}\n >\n {children}\n </ServerFunctionsContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAsD9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAgKrC,CAAA"}
1
+ {"version":3,"file":"buildFormState.d.ts","sourceRoot":"","sources":["../../src/utilities/buildFormState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,SAAS,EACT,cAAc,EACf,MAAM,SAAS,CAAA;AAYhB,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;CACnC,CAAA;AAED,KAAK,2BAA2B,GAAG;IACjC,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAED,KAAK,yBAAyB,GAAG;IAC/B,WAAW,CAAC,EAAE,KAAK,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,CACA;IACE,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,WAAW,CACd,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,yBAAyB,GAAG,2BAA2B,CAAA;AAE1F,eAAO,MAAM,qBAAqB,EAAE,cAAc,CAChD,kBAAkB,EAClB,OAAO,CAAC,oBAAoB,CAAC,CAwB9B,CAAA;AAED,eAAO,MAAM,cAAc,SACnB,kBAAkB,KACvB,OAAO,CAAC,2BAA2B,CAgKrC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { formatErrors } from 'payload';
1
+ import { canAccessAdmin, formatErrors } from 'payload';
2
2
  import { getSelectMode, reduceFieldsToValues } from 'payload/shared';
3
3
  import { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js';
4
4
  import { renderField } from '../forms/fieldSchemasToFormState/renderField.js';
@@ -10,36 +10,10 @@ export const buildFormStateHandler = async args => {
10
10
  const {
11
11
  req
12
12
  } = args;
13
- const incomingUserSlug = req.user?.collection;
14
- const adminUserSlug = req.payload.config.admin.user;
15
13
  try {
16
- // If we have a user slug, test it against the functions
17
- if (incomingUserSlug) {
18
- const adminAccessFunction = req.payload.collections[incomingUserSlug].config.access?.admin;
19
- // Run the admin access function from the config if it exists
20
- if (adminAccessFunction) {
21
- const canAccessAdmin = await adminAccessFunction({
22
- req
23
- });
24
- if (!canAccessAdmin) {
25
- throw new Error('Unauthorized');
26
- }
27
- // Match the user collection to the global admin config
28
- } else if (adminUserSlug !== incomingUserSlug) {
29
- throw new Error('Unauthorized');
30
- }
31
- } else {
32
- const hasUsers = await req.payload.find({
33
- collection: adminUserSlug,
34
- depth: 0,
35
- limit: 1,
36
- pagination: false
37
- });
38
- // If there are users, we should not allow access because of /create-first-user
39
- if (hasUsers.docs.length) {
40
- throw new Error('Unauthorized');
41
- }
42
- }
14
+ await canAccessAdmin({
15
+ req
16
+ });
43
17
  const res = await buildFormState(args);
44
18
  return res;
45
19
  } catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.js","names":["formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","incomingUserSlug","user","collection","adminUserSlug","payload","config","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","res","buildFormState","err","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","returnLockStatus","schemaPath","select","skipClientConfigAuth","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","fieldOrEntityConfig","get","fields","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n const incomingUserSlug = req.user?.collection\n const adminUserSlug = req.payload.config.admin.user\n\n try {\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\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 res = await buildFormState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipClientConfigAuth,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user: skipClientConfigAuth ? true : req.user,\n }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n // Ensure data.id is present during form state requests, where the data\n // is passed from the client as an argument, without the ID\n if (!data.id && id) {\n data.id = id\n }\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildFormState.js","names":["canAccessAdmin","formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","buildFormStateHandler","args","req","res","buildFormState","err","payload","logger","error","msg","message","Error","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","config","returnLockStatus","schemaPath","select","skipClientConfigAuth","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","user","fieldOrEntityConfig","get","fields","length","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","collections","upload","file","lockedStateResult","lockedState","state"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { canAccessAdmin, formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n lockedState?: LockedState\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n lockedState?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n await canAccessAdmin({ req })\n const res = await buildFormState(args)\n\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLockStatus,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipClientConfigAuth,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user: skipClientConfigAuth ? true : req.user,\n }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n // Ensure data.id is present during form state requests, where the data\n // is passed from the client as an argument, without the ID\n if (!data.id && id) {\n data.id = id\n }\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n return {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { APIError, formatErrors } from 'payload';
1
+ import { APIError, canAccessAdmin, formatErrors } from 'payload';
2
2
  import { isNumber } from 'payload/shared';
3
3
  import { getClientConfig } from './getClientConfig.js';
4
4
  import { getColumns } from './getColumns.js';
@@ -48,35 +48,9 @@ const buildTableState = async args => {
48
48
  },
49
49
  tableAppearance
50
50
  } = args;
51
- const incomingUserSlug = user?.collection;
52
- const adminUserSlug = config.admin.user;
53
- // If we have a user slug, test it against the functions
54
- if (incomingUserSlug) {
55
- const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin;
56
- // Run the admin access function from the config if it exists
57
- if (adminAccessFunction) {
58
- const canAccessAdmin = await adminAccessFunction({
59
- req
60
- });
61
- if (!canAccessAdmin) {
62
- throw new Error('Unauthorized');
63
- }
64
- // Match the user collection to the global admin config
65
- } else if (adminUserSlug !== incomingUserSlug) {
66
- throw new Error('Unauthorized');
67
- }
68
- } else {
69
- const hasUsers = await payload.find({
70
- collection: adminUserSlug,
71
- depth: 0,
72
- limit: 1,
73
- pagination: false
74
- });
75
- // If there are users, we should not allow access because of /create-first-user
76
- if (hasUsers.docs.length) {
77
- throw new Error('Unauthorized');
78
- }
79
- }
51
+ await canAccessAdmin({
52
+ req
53
+ });
80
54
  const clientConfig = getClientConfig({
81
55
  config,
82
56
  i18n,
@@ -1 +1 @@
1
- {"version":3,"file":"buildTableState.js","names":["APIError","formatErrors","isNumber","getClientConfig","getColumns","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","columnsFromArgs","data","dataFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","incomingUserSlug","collection","adminUserSlug","admin","adminAccessFunction","collections","access","canAccessAdmin","Error","hasUsers","find","depth","limit","pagination","docs","length","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","slug","collectionPreferences","key","joinPath","value","Number","undefined","sort","select","currentSelectRef","segments","split","i","joinQuery","where","isNaN","page","parentDoc","findByID","id","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { getColumns } from './getColumns.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns: columnsFromArgs,\n data: dataFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n const incomingUserSlug = user?.collection\n\n const adminUserSlug = config.admin.user\n\n // If we have a user slug, test it against the functions\n if (incomingUserSlug) {\n const adminAccessFunction = 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\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 payload.find({\n collection: adminUserSlug,\n depth: 0,\n limit: 1,\n pagination: false,\n })\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 clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n user,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns: columnsFromArgs,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let data: PaginatedDocs = dataFromArgs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!data?.docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns: getColumns({\n clientConfig,\n collectionConfig: clientCollectionConfig,\n collectionSlug,\n columns: columnsFromArgs,\n i18n: req.i18n,\n }),\n data,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n query,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildTableState.js","names":["APIError","canAccessAdmin","formatErrors","isNumber","getClientConfig","getColumns","renderFilters","renderTable","upsertPreferences","buildTableStateHandler","args","req","res","buildTableState","err","payload","logger","error","msg","message","collectionSlug","columns","columnsFromArgs","data","dataFromArgs","enableRowSelections","orderableFieldName","parent","query","renderRowTypes","i18n","config","user","tableAppearance","clientConfig","importMap","collectionConfig","clientCollectionConfig","Array","isArray","collections","find","collection","slug","collectionPreferences","key","joinPath","value","limit","Number","undefined","sort","docs","select","currentSelectRef","segments","split","i","length","joinQuery","where","isNaN","page","parentDoc","findByID","id","depth","joins","overrideAccess","draft","locale","columnState","Table","useAsTitle","admin","renderedFilters","fields","preferences","state"],"sources":["../../src/utilities/buildTableState.ts"],"sourcesContent":["import type {\n BuildTableStateArgs,\n ClientCollectionConfig,\n ClientConfig,\n CollectionPreferences,\n Column,\n ErrorResult,\n PaginatedDocs,\n SanitizedCollectionConfig,\n ServerFunction,\n Where,\n} from 'payload'\n\nimport { APIError, canAccessAdmin, formatErrors } from 'payload'\nimport { isNumber } from 'payload/shared'\n\nimport { getClientConfig } from './getClientConfig.js'\nimport { getColumns } from './getColumns.js'\nimport { renderFilters, renderTable } from './renderTable.js'\nimport { upsertPreferences } from './upsertPreferences.js'\n\ntype BuildTableStateSuccessResult = {\n clientConfig?: ClientConfig\n data: PaginatedDocs\n errors?: never\n preferences: CollectionPreferences\n renderedFilters: Map<string, React.ReactNode>\n state: Column[]\n Table: React.ReactNode\n}\n\ntype BuildTableStateErrorResult = {\n data?: any\n renderedFilters?: never\n state?: never\n Table?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildTableStateResult = BuildTableStateErrorResult | BuildTableStateSuccessResult\n\nexport const buildTableStateHandler: ServerFunction<\n BuildTableStateArgs,\n Promise<BuildTableStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n const res = await buildTableState(args)\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n return null\n }\n\n return formatErrors(err)\n }\n}\n\nconst buildTableState = async (\n args: BuildTableStateArgs,\n): Promise<BuildTableStateSuccessResult> => {\n const {\n collectionSlug,\n columns: columnsFromArgs,\n data: dataFromArgs,\n enableRowSelections,\n orderableFieldName,\n parent,\n query,\n renderRowTypes,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n user,\n },\n tableAppearance,\n } = args\n\n await canAccessAdmin({ req })\n\n const clientConfig = getClientConfig({\n config,\n i18n,\n importMap: payload.importMap,\n user,\n })\n\n let collectionConfig: SanitizedCollectionConfig\n let clientCollectionConfig: ClientCollectionConfig\n\n if (!Array.isArray(collectionSlug)) {\n if (req.payload.collections[collectionSlug]) {\n collectionConfig = req.payload.collections[collectionSlug].config\n clientCollectionConfig = clientConfig.collections.find(\n (collection) => collection.slug === collectionSlug,\n )\n }\n }\n\n const collectionPreferences = await upsertPreferences<CollectionPreferences>({\n key: Array.isArray(collectionSlug)\n ? `${parent.collectionSlug}-${parent.joinPath}`\n : `collection-${collectionSlug}`,\n req,\n value: {\n columns: columnsFromArgs,\n limit: isNumber(query?.limit) ? Number(query.limit) : undefined,\n sort: query?.sort as string,\n },\n })\n\n let data: PaginatedDocs = dataFromArgs\n\n // lookup docs, if desired, i.e. within `join` field which initialize with `depth: 0`\n\n if (!data?.docs || query) {\n if (Array.isArray(collectionSlug)) {\n if (!parent) {\n throw new APIError('Unexpected array of collectionSlug, parent must be provided')\n }\n\n const select = {}\n let currentSelectRef = select\n\n const segments = parent.joinPath.split('.')\n\n for (let i = 0; i < segments.length; i++) {\n currentSelectRef[segments[i]] = i === segments.length - 1 ? true : {}\n currentSelectRef = currentSelectRef[segments[i]]\n }\n\n const joinQuery: { limit?: number; page?: number; sort?: string; where?: Where } = {\n sort: query?.sort as string,\n where: query?.where,\n }\n\n if (query) {\n if (!Number.isNaN(Number(query.limit))) {\n joinQuery.limit = Number(query.limit)\n }\n\n if (!Number.isNaN(Number(query.page))) {\n joinQuery.limit = Number(query.limit)\n }\n }\n\n let parentDoc = await payload.findByID({\n id: parent.id,\n collection: parent.collectionSlug,\n depth: 1,\n joins: {\n [parent.joinPath]: joinQuery,\n },\n overrideAccess: false,\n select,\n user: req.user,\n })\n\n for (let i = 0; i < segments.length; i++) {\n if (i === segments.length - 1) {\n data = parentDoc[segments[i]]\n } else {\n parentDoc = parentDoc[segments[i]]\n }\n }\n } else {\n data = await payload.find({\n collection: collectionSlug,\n depth: 0,\n draft: true,\n limit: query?.limit,\n locale: req.locale,\n overrideAccess: false,\n page: query?.page,\n sort: query?.sort,\n user: req.user,\n where: query?.where,\n })\n }\n }\n\n const { columnState, Table } = renderTable({\n clientCollectionConfig,\n clientConfig,\n collectionConfig,\n collections: Array.isArray(collectionSlug) ? collectionSlug : undefined,\n columns: getColumns({\n clientConfig,\n collectionConfig: clientCollectionConfig,\n collectionSlug,\n columns: columnsFromArgs,\n i18n: req.i18n,\n }),\n data,\n enableRowSelections,\n i18n: req.i18n,\n orderableFieldName,\n payload,\n query,\n renderRowTypes,\n tableAppearance,\n useAsTitle: Array.isArray(collectionSlug)\n ? payload.collections[collectionSlug[0]]?.config?.admin?.useAsTitle\n : collectionConfig?.admin?.useAsTitle,\n })\n\n let renderedFilters\n\n if (collectionConfig) {\n renderedFilters = renderFilters(collectionConfig.fields, req.payload.importMap)\n }\n\n return {\n data,\n preferences: collectionPreferences,\n renderedFilters,\n state: columnState,\n Table,\n }\n}\n"],"mappings":"AAaA,SAASA,QAAQ,EAAEC,cAAc,EAAEC,YAAY,QAAQ;AACvD,SAASC,QAAQ,QAAQ;AAEzB,SAASC,eAAe,QAAQ;AAChC,SAASC,UAAU,QAAQ;AAC3B,SAASC,aAAa,EAAEC,WAAW,QAAQ;AAC3C,SAASC,iBAAiB,QAAQ;AA0BlC,OAAO,MAAMC,sBAAA,GAGT,MAAOC,IAAA;EACT,MAAM;IAAEC;EAAG,CAAE,GAAGD,IAAA;EAEhB,IAAI;IACF,MAAME,GAAA,GAAM,MAAMC,eAAA,CAAgBH,IAAA;IAClC,OAAOE,GAAA;EACT,EAAE,OAAOE,GAAA,EAAK;IACZH,GAAA,CAAII,OAAO,CAACC,MAAM,CAACC,KAAK,CAAC;MAAEH,GAAA;MAAKI,GAAA,EAAK;IAAyC;IAE9E,IAAIJ,GAAA,CAAIK,OAAO,KAAK,8CAA8C;MAChE,OAAO;QACLA,OAAA,EAASL,GAAA,CAAIK;MACf;IACF;IAEA,IAAIL,GAAA,CAAIK,OAAO,KAAK,gBAAgB;MAClC,OAAO;IACT;IAEA,OAAOjB,YAAA,CAAaY,GAAA;EACtB;AACF;AAEA,MAAMD,eAAA,GAAkB,MACtBH,IAAA;EAEA,MAAM;IACJU,cAAc;IACdC,OAAA,EAASC,eAAe;IACxBC,IAAA,EAAMC,YAAY;IAClBC,mBAAmB;IACnBC,kBAAkB;IAClBC,MAAM;IACNC,KAAK;IACLC,cAAc;IACdlB,GAAG;IACHA,GAAA,EAAK;MACHmB,IAAI;MACJf,OAAO;MACPA,OAAA,EAAS;QAAEgB;MAAM,CAAE;MACnBC;IAAI,CACL;IACDC;EAAe,CAChB,GAAGvB,IAAA;EAEJ,MAAMT,cAAA,CAAe;IAAEU;EAAI;EAE3B,MAAMuB,YAAA,GAAe9B,eAAA,CAAgB;IACnC2B,MAAA;IACAD,IAAA;IACAK,SAAA,EAAWpB,OAAA,CAAQoB,SAAS;IAC5BH;EACF;EAEA,IAAII,gBAAA;EACJ,IAAIC,sBAAA;EAEJ,IAAI,CAACC,KAAA,CAAMC,OAAO,CAACnB,cAAA,GAAiB;IAClC,IAAIT,GAAA,CAAII,OAAO,CAACyB,WAAW,CAACpB,cAAA,CAAe,EAAE;MAC3CgB,gBAAA,GAAmBzB,GAAA,CAAII,OAAO,CAACyB,WAAW,CAACpB,cAAA,CAAe,CAACW,MAAM;MACjEM,sBAAA,GAAyBH,YAAA,CAAaM,WAAW,CAACC,IAAI,CACnDC,UAAA,IAAeA,UAAA,CAAWC,IAAI,KAAKvB,cAAA;IAExC;EACF;EAEA,MAAMwB,qBAAA,GAAwB,MAAMpC,iBAAA,CAAyC;IAC3EqC,GAAA,EAAKP,KAAA,CAAMC,OAAO,CAACnB,cAAA,IACf,GAAGO,MAAA,CAAOP,cAAc,IAAIO,MAAA,CAAOmB,QAAQ,EAAE,GAC7C,cAAc1B,cAAA,EAAgB;IAClCT,GAAA;IACAoC,KAAA,EAAO;MACL1B,OAAA,EAASC,eAAA;MACT0B,KAAA,EAAO7C,QAAA,CAASyB,KAAA,EAAOoB,KAAA,IAASC,MAAA,CAAOrB,KAAA,CAAMoB,KAAK,IAAIE,SAAA;MACtDC,IAAA,EAAMvB,KAAA,EAAOuB;IACf;EACF;EAEA,IAAI5B,IAAA,GAAsBC,YAAA;EAE1B;EAEA,IAAI,CAACD,IAAA,EAAM6B,IAAA,IAAQxB,KAAA,EAAO;IACxB,IAAIU,KAAA,CAAMC,OAAO,CAACnB,cAAA,GAAiB;MACjC,IAAI,CAACO,MAAA,EAAQ;QACX,MAAM,IAAI3B,QAAA,CAAS;MACrB;MAEA,MAAMqD,MAAA,GAAS,CAAC;MAChB,IAAIC,gBAAA,GAAmBD,MAAA;MAEvB,MAAME,QAAA,GAAW5B,MAAA,CAAOmB,QAAQ,CAACU,KAAK,CAAC;MAEvC,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIF,QAAA,CAASG,MAAM,EAAED,CAAA,IAAK;QACxCH,gBAAgB,CAACC,QAAQ,CAACE,CAAA,CAAE,CAAC,GAAGA,CAAA,KAAMF,QAAA,CAASG,MAAM,GAAG,IAAI,OAAO,CAAC;QACpEJ,gBAAA,GAAmBA,gBAAgB,CAACC,QAAQ,CAACE,CAAA,CAAE,CAAC;MAClD;MAEA,MAAME,SAAA,GAA6E;QACjFR,IAAA,EAAMvB,KAAA,EAAOuB,IAAA;QACbS,KAAA,EAAOhC,KAAA,EAAOgC;MAChB;MAEA,IAAIhC,KAAA,EAAO;QACT,IAAI,CAACqB,MAAA,CAAOY,KAAK,CAACZ,MAAA,CAAOrB,KAAA,CAAMoB,KAAK,IAAI;UACtCW,SAAA,CAAUX,KAAK,GAAGC,MAAA,CAAOrB,KAAA,CAAMoB,KAAK;QACtC;QAEA,IAAI,CAACC,MAAA,CAAOY,KAAK,CAACZ,MAAA,CAAOrB,KAAA,CAAMkC,IAAI,IAAI;UACrCH,SAAA,CAAUX,KAAK,GAAGC,MAAA,CAAOrB,KAAA,CAAMoB,KAAK;QACtC;MACF;MAEA,IAAIe,SAAA,GAAY,MAAMhD,OAAA,CAAQiD,QAAQ,CAAC;QACrCC,EAAA,EAAItC,MAAA,CAAOsC,EAAE;QACbvB,UAAA,EAAYf,MAAA,CAAOP,cAAc;QACjC8C,KAAA,EAAO;QACPC,KAAA,EAAO;UACL,CAACxC,MAAA,CAAOmB,QAAQ,GAAGa;QACrB;QACAS,cAAA,EAAgB;QAChBf,MAAA;QACArB,IAAA,EAAMrB,GAAA,CAAIqB;MACZ;MAEA,KAAK,IAAIyB,CAAA,GAAI,GAAGA,CAAA,GAAIF,QAAA,CAASG,MAAM,EAAED,CAAA,IAAK;QACxC,IAAIA,CAAA,KAAMF,QAAA,CAASG,MAAM,GAAG,GAAG;UAC7BnC,IAAA,GAAOwC,SAAS,CAACR,QAAQ,CAACE,CAAA,CAAE,CAAC;QAC/B,OAAO;UACLM,SAAA,GAAYA,SAAS,CAACR,QAAQ,CAACE,CAAA,CAAE,CAAC;QACpC;MACF;IACF,OAAO;MACLlC,IAAA,GAAO,MAAMR,OAAA,CAAQ0B,IAAI,CAAC;QACxBC,UAAA,EAAYtB,cAAA;QACZ8C,KAAA,EAAO;QACPG,KAAA,EAAO;QACPrB,KAAA,EAAOpB,KAAA,EAAOoB,KAAA;QACdsB,MAAA,EAAQ3D,GAAA,CAAI2D,MAAM;QAClBF,cAAA,EAAgB;QAChBN,IAAA,EAAMlC,KAAA,EAAOkC,IAAA;QACbX,IAAA,EAAMvB,KAAA,EAAOuB,IAAA;QACbnB,IAAA,EAAMrB,GAAA,CAAIqB,IAAI;QACd4B,KAAA,EAAOhC,KAAA,EAAOgC;MAChB;IACF;EACF;EAEA,MAAM;IAAEW,WAAW;IAAEC;EAAK,CAAE,GAAGjE,WAAA,CAAY;IACzC8B,sBAAA;IACAH,YAAA;IACAE,gBAAA;IACAI,WAAA,EAAaF,KAAA,CAAMC,OAAO,CAACnB,cAAA,IAAkBA,cAAA,GAAiB8B,SAAA;IAC9D7B,OAAA,EAAShB,UAAA,CAAW;MAClB6B,YAAA;MACAE,gBAAA,EAAkBC,sBAAA;MAClBjB,cAAA;MACAC,OAAA,EAASC,eAAA;MACTQ,IAAA,EAAMnB,GAAA,CAAImB;IACZ;IACAP,IAAA;IACAE,mBAAA;IACAK,IAAA,EAAMnB,GAAA,CAAImB,IAAI;IACdJ,kBAAA;IACAX,OAAA;IACAa,KAAA;IACAC,cAAA;IACAI,eAAA;IACAwC,UAAA,EAAYnC,KAAA,CAAMC,OAAO,CAACnB,cAAA,IACtBL,OAAA,CAAQyB,WAAW,CAACpB,cAAc,CAAC,EAAE,CAAC,EAAEW,MAAA,EAAQ2C,KAAA,EAAOD,UAAA,GACvDrC,gBAAA,EAAkBsC,KAAA,EAAOD;EAC/B;EAEA,IAAIE,eAAA;EAEJ,IAAIvC,gBAAA,EAAkB;IACpBuC,eAAA,GAAkBrE,aAAA,CAAc8B,gBAAA,CAAiBwC,MAAM,EAAEjE,GAAA,CAAII,OAAO,CAACoB,SAAS;EAChF;EAEA,OAAO;IACLZ,IAAA;IACAsD,WAAA,EAAajC,qBAAA;IACb+B,eAAA;IACAG,KAAA,EAAOP,WAAA;IACPC;EACF;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAA;AAKhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AA6LD,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,sBAAsB,CAiB5E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAqHpE,CAAA"}
1
+ {"version":3,"file":"copyDataFromLocale.d.ts","sourceRoot":"","sources":["../../src/utilities/copyDataFromLocale.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,cAAc,EAKnB,KAAK,cAAc,EACnB,KAAK,cAAc,EAEpB,MAAM,SAAS,CAAA;AAKhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,EAAE,cAAc,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AA6LD,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,sBAAsB,CAiB5E,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,sBAAsB,0CAkGpE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import ObjectIdImport from 'bson-objectid';
2
- import { formatErrors, traverseFields } from 'payload';
2
+ import { canAccessAdmin, formatErrors, traverseFields } from 'payload';
3
3
  import { fieldAffectsData, fieldShouldBeLocalized, tabHasName } from 'payload/shared';
4
4
  const ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport;
5
5
  function iterateFields(fields, fromLocaleData, toLocaleData, req, parentIsLocalized) {
@@ -165,24 +165,9 @@ export const copyDataFromLocale = async args => {
165
165
  req,
166
166
  toLocale
167
167
  } = args;
168
- const incomingUserSlug = user?.collection;
169
- const adminUserSlug = payload.config.admin.user;
170
- // If we have a user slug, test it against the functions
171
- if (incomingUserSlug) {
172
- const adminAccessFunction = payload.collections[incomingUserSlug].config.access?.admin;
173
- // Run the admin access function from the config if it exists
174
- if (adminAccessFunction) {
175
- const canAccessAdmin = await adminAccessFunction({
176
- req: args.req
177
- });
178
- if (!canAccessAdmin) {
179
- throw new Error('Unauthorized');
180
- }
181
- // Match the user collection to the global admin config
182
- } else if (adminUserSlug !== incomingUserSlug) {
183
- throw new Error('Unauthorized');
184
- }
185
- }
168
+ await canAccessAdmin({
169
+ req
170
+ });
186
171
  const [fromLocaleData, toLocaleData] = await Promise.allSettled([globalSlug ? payload.findGlobal({
187
172
  slug: globalSlug,
188
173
  depth: 0,