@payloadcms/ui 3.30.0-internal.ef2a0e5 → 3.31.0-canary.0

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 (234) hide show
  1. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts +1 -0
  2. package/dist/elements/BulkUpload/EditMany/DrawerContent.d.ts.map +1 -1
  3. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +31 -26
  4. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  5. package/dist/elements/ColumnSelector/index.js +1 -1
  6. package/dist/elements/ColumnSelector/index.js.map +1 -1
  7. package/dist/elements/ColumnSelector/index.scss +2 -3
  8. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  9. package/dist/elements/DeleteDocument/index.js +1 -2
  10. package/dist/elements/DeleteDocument/index.js.map +1 -1
  11. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  12. package/dist/elements/DeleteMany/index.js +1 -1
  13. package/dist/elements/DeleteMany/index.js.map +1 -1
  14. package/dist/elements/DocumentDrawer/DrawerContent.d.ts.map +1 -1
  15. package/dist/elements/DocumentDrawer/DrawerContent.js +2 -1
  16. package/dist/elements/DocumentDrawer/DrawerContent.js.map +1 -1
  17. package/dist/elements/DocumentDrawer/types.d.ts +4 -0
  18. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  19. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  20. package/dist/elements/EditMany/DrawerContent.d.ts +3 -3
  21. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  22. package/dist/elements/EditMany/DrawerContent.js +17 -19
  23. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  24. package/dist/elements/EditMany/index.d.ts.map +1 -1
  25. package/dist/elements/EditMany/index.js.map +1 -1
  26. package/dist/elements/FieldSelect/index.d.ts +5 -5
  27. package/dist/elements/FieldSelect/index.d.ts.map +1 -1
  28. package/dist/elements/FieldSelect/index.js +23 -20
  29. package/dist/elements/FieldSelect/index.js.map +1 -1
  30. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts +13 -10
  31. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  32. package/dist/elements/FieldSelect/reduceFieldOptions.js +23 -6
  33. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  34. package/dist/elements/ListControls/ActiveQueryPreset/index.d.ts +8 -0
  35. package/dist/elements/ListControls/ActiveQueryPreset/index.d.ts.map +1 -0
  36. package/dist/elements/ListControls/ActiveQueryPreset/index.js +154 -0
  37. package/dist/elements/ListControls/ActiveQueryPreset/index.js.map +1 -0
  38. package/dist/elements/ListControls/ActiveQueryPreset/index.scss +21 -0
  39. package/dist/elements/ListControls/index.d.ts +1 -24
  40. package/dist/elements/ListControls/index.d.ts.map +1 -1
  41. package/dist/elements/ListControls/index.js +115 -86
  42. package/dist/elements/ListControls/index.js.map +1 -1
  43. package/dist/elements/ListControls/index.scss +5 -9
  44. package/dist/elements/ListControls/types.d.ts +28 -0
  45. package/dist/elements/ListControls/types.d.ts.map +1 -0
  46. package/dist/elements/ListControls/types.js.map +1 -0
  47. package/dist/elements/ListControls/useQueryPresets.d.ts +17 -0
  48. package/dist/elements/ListControls/useQueryPresets.d.ts.map +1 -0
  49. package/dist/elements/ListControls/useQueryPresets.js +260 -0
  50. package/dist/elements/ListControls/useQueryPresets.js.map +1 -0
  51. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  52. package/dist/elements/ListDrawer/DrawerContent.js +4 -2
  53. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  54. package/dist/elements/ListDrawer/types.d.ts +3 -2
  55. package/dist/elements/ListDrawer/types.d.ts.map +1 -1
  56. package/dist/elements/ListDrawer/types.js.map +1 -1
  57. package/dist/elements/Pill/index.d.ts +1 -1
  58. package/dist/elements/Pill/index.d.ts.map +1 -1
  59. package/dist/elements/Pill/index.js +2 -0
  60. package/dist/elements/Pill/index.js.map +1 -1
  61. package/dist/elements/Pill/index.scss +29 -6
  62. package/dist/elements/Popup/PopupButtonList/index.d.ts +2 -1
  63. package/dist/elements/Popup/PopupButtonList/index.d.ts.map +1 -1
  64. package/dist/elements/Popup/PopupButtonList/index.js +2 -0
  65. package/dist/elements/Popup/PopupButtonList/index.js.map +1 -1
  66. package/dist/elements/Popup/PopupDivider/index.d.ts +4 -0
  67. package/dist/elements/Popup/PopupDivider/index.d.ts.map +1 -0
  68. package/dist/elements/Popup/PopupDivider/index.js +10 -0
  69. package/dist/elements/Popup/PopupDivider/index.js.map +1 -0
  70. package/dist/elements/Popup/PopupDivider/index.scss +10 -0
  71. package/dist/elements/Popup/PopupGroupLabel/index.d.ts +6 -0
  72. package/dist/elements/Popup/PopupGroupLabel/index.d.ts.map +1 -0
  73. package/dist/elements/Popup/PopupGroupLabel/index.js +13 -0
  74. package/dist/elements/Popup/PopupGroupLabel/index.js.map +1 -0
  75. package/dist/elements/Popup/PopupGroupLabel/index.scss +8 -0
  76. package/dist/elements/Popup/index.d.ts.map +1 -1
  77. package/dist/elements/Popup/index.js +2 -2
  78. package/dist/elements/Popup/index.js.map +1 -1
  79. package/dist/elements/QueryPresets/cells/AccessCell/index.d.ts +4 -0
  80. package/dist/elements/QueryPresets/cells/AccessCell/index.d.ts.map +1 -0
  81. package/dist/elements/QueryPresets/cells/AccessCell/index.js +25 -0
  82. package/dist/elements/QueryPresets/cells/AccessCell/index.js.map +1 -0
  83. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts +5 -0
  84. package/dist/elements/QueryPresets/cells/ColumnsCell/index.d.ts.map +1 -0
  85. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +25 -0
  86. package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -0
  87. package/dist/elements/QueryPresets/cells/ColumnsCell/index.scss +9 -0
  88. package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts +4 -0
  89. package/dist/elements/QueryPresets/cells/WhereCell/index.d.ts.map +1 -0
  90. package/dist/elements/QueryPresets/cells/WhereCell/index.js +29 -0
  91. package/dist/elements/QueryPresets/cells/WhereCell/index.js.map +1 -0
  92. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts +4 -0
  93. package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -0
  94. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +65 -0
  95. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -0
  96. package/dist/elements/QueryPresets/fields/ColumnsField/index.scss +17 -0
  97. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts +4 -0
  98. package/dist/elements/QueryPresets/fields/WhereField/index.d.ts.map +1 -0
  99. package/dist/elements/QueryPresets/fields/WhereField/index.js +121 -0
  100. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -0
  101. package/dist/elements/QueryPresets/fields/WhereField/index.scss +23 -0
  102. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js +1 -1
  103. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  104. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  105. package/dist/elements/RelationshipTable/index.js +3 -4
  106. package/dist/elements/RelationshipTable/index.js.map +1 -1
  107. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  108. package/dist/elements/WhereBuilder/Condition/index.js +1 -1
  109. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  110. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  111. package/dist/elements/WhereBuilder/index.js +18 -15
  112. package/dist/elements/WhereBuilder/index.js.map +1 -1
  113. package/dist/exports/client/index.d.ts +7 -2
  114. package/dist/exports/client/index.d.ts.map +1 -1
  115. package/dist/exports/client/index.js +23 -23
  116. package/dist/exports/client/index.js.map +4 -4
  117. package/dist/exports/shared/index.d.ts +8 -3
  118. package/dist/exports/shared/index.d.ts.map +1 -1
  119. package/dist/exports/shared/index.js +2 -2
  120. package/dist/exports/shared/index.js.map +4 -4
  121. package/dist/fields/Upload/Input.js.map +1 -1
  122. package/dist/forms/RenderFields/index.d.ts.map +1 -1
  123. package/dist/forms/RenderFields/index.js +12 -5
  124. package/dist/forms/RenderFields/index.js.map +1 -1
  125. package/dist/icons/Chevron/index.d.ts +1 -0
  126. package/dist/icons/Chevron/index.d.ts.map +1 -1
  127. package/dist/icons/Chevron/index.js +2 -0
  128. package/dist/icons/Chevron/index.js.map +1 -1
  129. package/dist/icons/Dots/index.d.ts +2 -0
  130. package/dist/icons/Dots/index.d.ts.map +1 -1
  131. package/dist/icons/Dots/index.js +5 -2
  132. package/dist/icons/Dots/index.js.map +1 -1
  133. package/dist/icons/Dots/index.scss +14 -0
  134. package/dist/icons/People/index.d.ts +6 -0
  135. package/dist/icons/People/index.d.ts.map +1 -0
  136. package/dist/icons/People/index.js +18 -0
  137. package/dist/icons/People/index.js.map +1 -0
  138. package/dist/icons/People/index.scss +11 -0
  139. package/dist/providers/DocumentInfo/types.d.ts +1 -0
  140. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  141. package/dist/providers/DocumentInfo/types.js.map +1 -1
  142. package/dist/providers/EntityVisibility/index.d.ts.map +1 -1
  143. package/dist/providers/EntityVisibility/index.js.map +1 -1
  144. package/dist/providers/ListQuery/context.d.ts +2 -0
  145. package/dist/providers/ListQuery/context.d.ts.map +1 -1
  146. package/dist/providers/ListQuery/context.js +2 -0
  147. package/dist/providers/ListQuery/context.js.map +1 -1
  148. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  149. package/dist/providers/ListQuery/index.js +29 -13
  150. package/dist/providers/ListQuery/index.js.map +1 -1
  151. package/dist/providers/ListQuery/types.d.ts +6 -3
  152. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  153. package/dist/providers/ListQuery/types.js.map +1 -1
  154. package/dist/providers/Preferences/index.d.ts.map +1 -1
  155. package/dist/providers/Preferences/index.js.map +1 -1
  156. package/dist/providers/ServerFunctions/index.d.ts +1 -0
  157. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  158. package/dist/providers/ServerFunctions/index.js.map +1 -1
  159. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -0
  160. package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.js +2 -2
  161. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -0
  162. package/dist/{elements → providers}/TableColumns/buildColumnState.d.ts +1 -1
  163. package/dist/providers/TableColumns/buildColumnState.d.ts.map +1 -0
  164. package/dist/{elements → providers}/TableColumns/buildColumnState.js +1 -1
  165. package/dist/providers/TableColumns/buildColumnState.js.map +1 -0
  166. package/dist/{elements → providers}/TableColumns/buildPolymorphicColumnState.d.ts +1 -1
  167. package/dist/providers/TableColumns/buildPolymorphicColumnState.d.ts.map +1 -0
  168. package/dist/{elements → providers}/TableColumns/buildPolymorphicColumnState.js +1 -1
  169. package/dist/providers/TableColumns/buildPolymorphicColumnState.js.map +1 -0
  170. package/dist/providers/TableColumns/context.d.ts.map +1 -0
  171. package/dist/providers/TableColumns/context.js.map +1 -0
  172. package/dist/providers/TableColumns/filterFields.d.ts.map +1 -0
  173. package/dist/providers/TableColumns/filterFields.js.map +1 -0
  174. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -0
  175. package/dist/providers/TableColumns/getInitialColumns.js.map +1 -0
  176. package/dist/providers/TableColumns/index.d.ts.map +1 -0
  177. package/dist/{elements → providers}/TableColumns/index.js +4 -2
  178. package/dist/providers/TableColumns/index.js.map +1 -0
  179. package/dist/{elements → providers}/TableColumns/types.d.ts +1 -1
  180. package/dist/providers/TableColumns/types.d.ts.map +1 -0
  181. package/dist/providers/TableColumns/types.js +2 -0
  182. package/dist/providers/TableColumns/types.js.map +1 -0
  183. package/dist/styles.css +1 -1
  184. package/dist/utilities/renderTable.js +4 -4
  185. package/dist/utilities/renderTable.js.map +1 -1
  186. package/dist/utilities/upsertPreferences.d.ts +7 -2
  187. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  188. package/dist/utilities/upsertPreferences.js +11 -5
  189. package/dist/utilities/upsertPreferences.js.map +1 -1
  190. package/dist/views/Edit/index.d.ts.map +1 -1
  191. package/dist/views/Edit/index.js +2 -1
  192. package/dist/views/Edit/index.js.map +1 -1
  193. package/dist/views/List/index.d.ts.map +1 -1
  194. package/dist/views/List/index.js +7 -1
  195. package/dist/views/List/index.js.map +1 -1
  196. package/package.json +6 -6
  197. package/dist/elements/TableColumns/RenderDefaultCell/index.d.ts.map +0 -1
  198. package/dist/elements/TableColumns/RenderDefaultCell/index.js.map +0 -1
  199. package/dist/elements/TableColumns/buildColumnState.d.ts.map +0 -1
  200. package/dist/elements/TableColumns/buildColumnState.js.map +0 -1
  201. package/dist/elements/TableColumns/buildPolymorphicColumnState.d.ts.map +0 -1
  202. package/dist/elements/TableColumns/buildPolymorphicColumnState.js.map +0 -1
  203. package/dist/elements/TableColumns/context.d.ts.map +0 -1
  204. package/dist/elements/TableColumns/context.js.map +0 -1
  205. package/dist/elements/TableColumns/filterFields.d.ts.map +0 -1
  206. package/dist/elements/TableColumns/filterFields.js.map +0 -1
  207. package/dist/elements/TableColumns/getInitialColumns.d.ts.map +0 -1
  208. package/dist/elements/TableColumns/getInitialColumns.js.map +0 -1
  209. package/dist/elements/TableColumns/index.d.ts.map +0 -1
  210. package/dist/elements/TableColumns/index.js.map +0 -1
  211. package/dist/elements/TableColumns/types.d.ts.map +0 -1
  212. package/dist/elements/TableColumns/types.js.map +0 -1
  213. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts +0 -8
  214. package/dist/elements/WhereBuilder/transformWhereQuery.d.ts.map +0 -1
  215. package/dist/elements/WhereBuilder/transformWhereQuery.js +0 -45
  216. package/dist/elements/WhereBuilder/transformWhereQuery.js.map +0 -1
  217. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts +0 -4
  218. package/dist/elements/WhereBuilder/validateWhereQuery.d.ts.map +0 -1
  219. package/dist/elements/WhereBuilder/validateWhereQuery.js +0 -36
  220. package/dist/elements/WhereBuilder/validateWhereQuery.js.map +0 -1
  221. package/dist/utilities/mergeListSearchAndWhere.d.ts +0 -10
  222. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +0 -1
  223. package/dist/utilities/mergeListSearchAndWhere.js +0 -47
  224. package/dist/utilities/mergeListSearchAndWhere.js.map +0 -1
  225. /package/dist/elements/{TableColumns → ListControls}/types.js +0 -0
  226. /package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.d.ts +0 -0
  227. /package/dist/{elements → providers}/TableColumns/RenderDefaultCell/index.scss +0 -0
  228. /package/dist/{elements → providers}/TableColumns/context.d.ts +0 -0
  229. /package/dist/{elements → providers}/TableColumns/context.js +0 -0
  230. /package/dist/{elements → providers}/TableColumns/filterFields.d.ts +0 -0
  231. /package/dist/{elements → providers}/TableColumns/filterFields.js +0 -0
  232. /package/dist/{elements → providers}/TableColumns/getInitialColumns.d.ts +0 -0
  233. /package/dist/{elements → providers}/TableColumns/getInitialColumns.js +0 -0
  234. /package/dist/{elements → providers}/TableColumns/index.d.ts +0 -0
@@ -4,15 +4,16 @@ import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { useRouter, useSearchParams } from 'next/navigation.js';
5
5
  import { isNumber, transformColumnsToSearchParams } from 'payload/shared';
6
6
  import * as qs from 'qs-esm';
7
- import React, { useCallback, useEffect, useMemo, useState } from 'react';
7
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
8
8
  import { useListDrawerContext } from '../../elements/ListDrawer/Provider.js';
9
9
  import { useEffectEvent } from '../../hooks/useEffectEvent.js';
10
10
  import { useRouteTransition } from '../../providers/RouteTransition/index.js';
11
11
  import { parseSearchParams } from '../../utilities/parseSearchParams.js';
12
- import { ListQueryContext } from './context.js';
12
+ import { ListQueryContext, ListQueryModifiedContext } from './context.js';
13
13
  export { useListQuery } from './context.js';
14
14
  export const ListQueryProvider = ({
15
15
  children,
16
+ collectionSlug,
16
17
  columns,
17
18
  data,
18
19
  defaultLimit,
@@ -28,7 +29,10 @@ export const ListQueryProvider = ({
28
29
  const {
29
30
  startRouteTransition
30
31
  } = useRouteTransition();
32
+ const [modified, setModified] = useState(false);
31
33
  const searchParams = useMemo(() => parseSearchParams(rawSearchParams), [rawSearchParams]);
34
+ const contextRef = useRef({});
35
+ contextRef.current.modified = modified;
32
36
  const {
33
37
  onQueryChange
34
38
  } = useListDrawerContext();
@@ -41,18 +45,24 @@ export const ListQueryProvider = ({
41
45
  });
42
46
  const refineListData = useCallback(
43
47
  // eslint-disable-next-line @typescript-eslint/require-await
44
- async query => {
45
- let page = 'page' in query ? query.page : currentQuery?.page;
46
- if ('where' in query || 'search' in query) {
48
+ async (incomingQuery, modified_0) => {
49
+ if (modified_0 !== undefined) {
50
+ setModified(modified_0);
51
+ } else {
52
+ setModified(true);
53
+ }
54
+ let page = 'page' in incomingQuery ? incomingQuery.page : currentQuery?.page;
55
+ if ('where' in incomingQuery || 'search' in incomingQuery) {
47
56
  page = '1';
48
57
  }
49
58
  const newQuery = {
50
- columns: 'columns' in query ? query.columns : currentQuery.columns,
51
- limit: 'limit' in query ? query.limit : currentQuery?.limit ?? String(defaultLimit),
59
+ columns: 'columns' in incomingQuery ? incomingQuery.columns : currentQuery.columns,
60
+ limit: 'limit' in incomingQuery ? incomingQuery.limit : currentQuery?.limit ?? String(defaultLimit),
52
61
  page,
53
- search: 'search' in query ? query.search : currentQuery?.search,
54
- sort: 'sort' in query ? query.sort : currentQuery?.sort ?? defaultSort,
55
- where: 'where' in query ? query.where : currentQuery?.where
62
+ preset: 'preset' in incomingQuery ? incomingQuery.preset : currentQuery?.preset,
63
+ search: 'search' in incomingQuery ? incomingQuery.search : currentQuery?.search,
64
+ sort: 'sort' in incomingQuery ? incomingQuery.sort : currentQuery?.sort ?? defaultSort,
65
+ where: 'where' in incomingQuery ? incomingQuery.where : currentQuery?.where
56
66
  };
57
67
  if (modifySearchParams) {
58
68
  startRouteTransition(() => router.replace(`${qs.stringify({
@@ -66,7 +76,7 @@ export const ListQueryProvider = ({
66
76
  onChangeFn(newQuery);
67
77
  }
68
78
  setCurrentQuery(newQuery);
69
- }, [currentQuery?.columns, currentQuery?.limit, currentQuery?.page, currentQuery?.search, currentQuery?.sort, currentQuery?.where, startRouteTransition, defaultLimit, defaultSort, modifySearchParams, onQueryChange, onQueryChangeFromProps, router]);
79
+ }, [currentQuery?.columns, currentQuery?.limit, currentQuery?.page, currentQuery?.search, currentQuery?.sort, currentQuery?.where, currentQuery?.preset, startRouteTransition, defaultLimit, defaultSort, modifySearchParams, onQueryChange, onQueryChangeFromProps, router]);
70
80
  const handlePageChange = useCallback(async arg => {
71
81
  await refineListData({
72
82
  page: String(arg)
@@ -133,6 +143,7 @@ export const ListQueryProvider = ({
133
143
  }, [defaultSort, defaultLimit, modifySearchParams, columns]);
134
144
  return /*#__PURE__*/_jsx(ListQueryContext, {
135
145
  value: {
146
+ collectionSlug,
136
147
  data,
137
148
  handlePageChange,
138
149
  handlePerPageChange,
@@ -140,9 +151,14 @@ export const ListQueryProvider = ({
140
151
  handleSortChange,
141
152
  handleWhereChange,
142
153
  query: currentQuery,
143
- refineListData
154
+ refineListData,
155
+ setModified,
156
+ ...contextRef.current
144
157
  },
145
- children: children
158
+ children: /*#__PURE__*/_jsx(ListQueryModifiedContext, {
159
+ value: modified,
160
+ children: children
161
+ })
146
162
  });
147
163
  };
148
164
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","transformColumnsToSearchParams","qs","React","useCallback","useEffect","useMemo","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","ListQueryContext","useListQuery","ListQueryProvider","children","columns","data","defaultLimit","defaultSort","listPreferences","modifySearchParams","onQueryChange","onQueryChangeFromProps","router","rawSearchParams","startRouteTransition","searchParams","currentQuery","setCurrentQuery","refineListData","query","page","newQuery","limit","String","search","sort","where","replace","stringify","JSON","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","syncQuery","shouldUpdateQueryString","window","history","replaceState","_jsx","value"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport { isNumber, transformColumnsToSearchParams } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useState } from 'react'\n\nimport type { ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ListQueryContext } from './context.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n columns,\n data,\n defaultLimit,\n defaultSort,\n listPreferences,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n}) => {\n 'use no memo'\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n\n const searchParams = useMemo<ListQuery>(\n () => parseSearchParams(rawSearchParams),\n [rawSearchParams],\n )\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {}\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (query: ListQuery) => {\n let page = 'page' in query ? query.page : currentQuery?.page\n\n if ('where' in query || 'search' in query) {\n page = '1'\n }\n\n const newQuery: ListQuery = {\n columns: 'columns' in query ? query.columns : currentQuery.columns,\n limit: 'limit' in query ? query.limit : (currentQuery?.limit ?? String(defaultLimit)),\n page,\n search: 'search' in query ? query.search : currentQuery?.search,\n sort: 'sort' in query ? query.sort : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in query ? query.where : currentQuery?.where,\n }\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify(\n { ...newQuery, columns: JSON.stringify(newQuery.columns) },\n { addQueryPrefix: true },\n )}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setCurrentQuery(newQuery)\n },\n [\n currentQuery?.columns,\n currentQuery?.limit,\n currentQuery?.page,\n currentQuery?.search,\n currentQuery?.sort,\n currentQuery?.where,\n startRouteTransition,\n defaultLimit,\n defaultSort,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: String(arg) })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: String(arg), page: '1' })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (arg: string) => {\n await refineListData({ sort: arg })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (arg: Where) => {\n await refineListData({ where: arg })\n },\n [refineListData],\n )\n\n const syncQuery = useEffectEvent(() => {\n let shouldUpdateQueryString = false\n const newQuery = { ...(currentQuery || {}) }\n\n // Allow the URL to override the default limit\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n newQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n // Allow the URL to override the default sort\n if (defaultSort && !('sort' in currentQuery)) {\n newQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n // Only modify columns if they originated from preferences\n // We can assume they did if `listPreferences.columns` is defined\n if (columns && listPreferences?.columns && !('columns' in currentQuery)) {\n newQuery.columns = transformColumnsToSearchParams(columns)\n shouldUpdateQueryString = true\n }\n\n if (shouldUpdateQueryString) {\n setCurrentQuery(newQuery)\n // Do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(\n null,\n '',\n `?${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) })}`,\n )\n }\n })\n\n // If `defaultLimit` or `defaultSort` are updated externally, update the query\n // I.e. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n syncQuery()\n }\n }, [defaultSort, defaultLimit, modifySearchParams, columns])\n\n return (\n <ListQueryContext\n value={{\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n query: currentQuery,\n refineListData,\n }}\n >\n {children}\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useRouter","useSearchParams","isNumber","transformColumnsToSearchParams","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","ListQueryContext","ListQueryModifiedContext","useListQuery","ListQueryProvider","children","collectionSlug","columns","data","defaultLimit","defaultSort","listPreferences","modifySearchParams","onQueryChange","onQueryChangeFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","searchParams","contextRef","current","currentQuery","setCurrentQuery","refineListData","incomingQuery","undefined","page","newQuery","limit","String","preset","search","sort","where","replace","stringify","JSON","addQueryPrefix","onChangeFn","handlePageChange","arg","handlePerPageChange","handleSearchChange","handleSortChange","handleWhereChange","syncQuery","shouldUpdateQueryString","window","history","replaceState","_jsx","value","query"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { type ListQuery, type Where } from 'payload'\nimport { isNumber, transformColumnsToSearchParams } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n columns,\n data,\n defaultLimit,\n defaultSort,\n listPreferences,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n}) => {\n 'use no memo'\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n\n const searchParams = useMemo<ListQuery>(\n () => parseSearchParams(rawSearchParams),\n [rawSearchParams],\n )\n\n const contextRef = useRef({} as IListQueryContext)\n\n contextRef.current.modified = modified\n\n const { onQueryChange } = useListDrawerContext()\n\n const [currentQuery, setCurrentQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return searchParams\n } else {\n return {}\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n if (modified !== undefined) {\n setModified(modified)\n } else {\n setModified(true)\n }\n\n let page = 'page' in incomingQuery ? incomingQuery.page : currentQuery?.page\n\n if ('where' in incomingQuery || 'search' in incomingQuery) {\n page = '1'\n }\n\n const newQuery: ListQuery = {\n columns: 'columns' in incomingQuery ? incomingQuery.columns : currentQuery.columns,\n limit:\n 'limit' in incomingQuery\n ? incomingQuery.limit\n : (currentQuery?.limit ?? String(defaultLimit)),\n page,\n preset: 'preset' in incomingQuery ? incomingQuery.preset : currentQuery?.preset,\n search: 'search' in incomingQuery ? incomingQuery.search : currentQuery?.search,\n sort:\n 'sort' in incomingQuery\n ? incomingQuery.sort\n : ((currentQuery?.sort as string) ?? defaultSort),\n where: 'where' in incomingQuery ? incomingQuery.where : currentQuery?.where,\n }\n\n if (modifySearchParams) {\n startRouteTransition(() =>\n router.replace(\n `${qs.stringify(\n { ...newQuery, columns: JSON.stringify(newQuery.columns) },\n { addQueryPrefix: true },\n )}`,\n ),\n )\n } else if (\n typeof onQueryChange === 'function' ||\n typeof onQueryChangeFromProps === 'function'\n ) {\n const onChangeFn = onQueryChange || onQueryChangeFromProps\n onChangeFn(newQuery)\n }\n\n setCurrentQuery(newQuery)\n },\n [\n currentQuery?.columns,\n currentQuery?.limit,\n currentQuery?.page,\n currentQuery?.search,\n currentQuery?.sort,\n currentQuery?.where,\n currentQuery?.preset,\n startRouteTransition,\n defaultLimit,\n defaultSort,\n modifySearchParams,\n onQueryChange,\n onQueryChangeFromProps,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: String(arg) })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: String(arg), page: '1' })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (arg: string) => {\n await refineListData({ sort: arg })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (arg: Where) => {\n await refineListData({ where: arg })\n },\n [refineListData],\n )\n\n const syncQuery = useEffectEvent(() => {\n let shouldUpdateQueryString = false\n const newQuery = { ...(currentQuery || {}) }\n\n // Allow the URL to override the default limit\n if (isNumber(defaultLimit) && !('limit' in currentQuery)) {\n newQuery.limit = String(defaultLimit)\n shouldUpdateQueryString = true\n }\n\n // Allow the URL to override the default sort\n if (defaultSort && !('sort' in currentQuery)) {\n newQuery.sort = defaultSort\n shouldUpdateQueryString = true\n }\n\n // Only modify columns if they originated from preferences\n // We can assume they did if `listPreferences.columns` is defined\n if (columns && listPreferences?.columns && !('columns' in currentQuery)) {\n newQuery.columns = transformColumnsToSearchParams(columns)\n shouldUpdateQueryString = true\n }\n\n if (shouldUpdateQueryString) {\n setCurrentQuery(newQuery)\n // Do not use router.replace here to avoid re-rendering on initial load\n window.history.replaceState(\n null,\n '',\n `?${qs.stringify({ ...newQuery, columns: JSON.stringify(newQuery.columns) })}`,\n )\n }\n })\n\n // If `defaultLimit` or `defaultSort` are updated externally, update the query\n // I.e. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams) {\n syncQuery()\n }\n }, [defaultSort, defaultLimit, modifySearchParams, columns])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n query: currentQuery,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { ColumnPreference, ListPreferences, ListQuery, PaginatedDocs, Sort, Where } from 'payload';
1
+ import type { ClientCollectionConfig, ColumnPreference, ListPreferences, ListQuery, PaginatedDocs, Sort, Where } from 'payload';
2
2
  type ContextHandlers = {
3
3
  handlePageChange?: (page: number) => Promise<void>;
4
4
  handlePerPageChange?: (limit: number) => Promise<void>;
@@ -9,7 +9,7 @@ type ContextHandlers = {
9
9
  export type OnListQueryChange = (query: ListQuery) => void;
10
10
  export type ListQueryProps = {
11
11
  readonly children: React.ReactNode;
12
- readonly collectionSlug?: string;
12
+ readonly collectionSlug?: ClientCollectionConfig['slug'];
13
13
  readonly columns?: ColumnPreference[];
14
14
  readonly data: PaginatedDocs;
15
15
  readonly defaultLimit?: number;
@@ -23,11 +23,14 @@ export type ListQueryProps = {
23
23
  readonly preferenceKey?: string;
24
24
  };
25
25
  export type IListQueryContext = {
26
+ collectionSlug: ClientCollectionConfig['slug'];
26
27
  data: PaginatedDocs;
27
28
  defaultLimit?: number;
28
29
  defaultSort?: Sort;
30
+ modified: boolean;
29
31
  query: ListQuery;
30
- refineListData: (args: ListQuery) => Promise<void>;
32
+ refineListData: (args: ListQuery, setModified?: boolean) => Promise<void>;
33
+ setModified: (modified: boolean) => void;
31
34
  } & ContextHandlers;
32
35
  export {};
33
36
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,aAAa,EACb,IAAI,EACJ,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,aAAa,EAEb,IAAI,EACJ,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACtD,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAClD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAA;AAE1D,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IACxD,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAA;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IAC1C;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9C,IAAI,EAAE,aAAa,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,SAAS,CAAA;IAChB,cAAc,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACzE,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CACzC,GAAG,eAAe,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/ListQuery/types.ts"],"sourcesContent":["import type {\n ColumnPreference,\n ListPreferences,\n ListQuery,\n PaginatedDocs,\n Sort,\n Where,\n} from 'payload'\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type OnListQueryChange = (query: ListQuery) => void\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug?: string\n readonly columns?: ColumnPreference[]\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: Sort\n readonly listPreferences?: ListPreferences\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: OnListQueryChange\n /**\n * @deprecated\n */\n readonly preferenceKey?: string\n}\n\nexport type IListQueryContext = {\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: Sort\n query: ListQuery\n refineListData: (args: ListQuery) => Promise<void>\n} & ContextHandlers\n"],"mappings":"AAmCA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/providers/ListQuery/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n ColumnPreference,\n ListPreferences,\n ListQuery,\n PaginatedDocs,\n QueryPreset,\n Sort,\n Where,\n} from 'payload'\n\ntype ContextHandlers = {\n handlePageChange?: (page: number) => Promise<void>\n handlePerPageChange?: (limit: number) => Promise<void>\n handleSearchChange?: (search: string) => Promise<void>\n handleSortChange?: (sort: string) => Promise<void>\n handleWhereChange?: (where: Where) => Promise<void>\n}\n\nexport type OnListQueryChange = (query: ListQuery) => void\n\nexport type ListQueryProps = {\n readonly children: React.ReactNode\n readonly collectionSlug?: ClientCollectionConfig['slug']\n readonly columns?: ColumnPreference[]\n readonly data: PaginatedDocs\n readonly defaultLimit?: number\n readonly defaultSort?: Sort\n readonly listPreferences?: ListPreferences\n readonly modifySearchParams?: boolean\n readonly onQueryChange?: OnListQueryChange\n /**\n * @deprecated\n */\n readonly preferenceKey?: string\n}\n\nexport type IListQueryContext = {\n collectionSlug: ClientCollectionConfig['slug']\n data: PaginatedDocs\n defaultLimit?: number\n defaultSort?: Sort\n modified: boolean\n query: ListQuery\n refineListData: (args: ListQuery, setModified?: boolean) => Promise<void>\n setModified: (modified: boolean) => void\n} & ContextHandlers\n"],"mappings":"AAqCA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAQjF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACnD;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClF,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CA0HxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Preferences/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA6D,MAAM,OAAO,CAAA;AAQjF,KAAK,kBAAkB,GAAG;IACxB,aAAa,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IACnD;;;;OAIG;IACH,aAAa,EAAE,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAClF,CAAA;AAYD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,CAkIxE,CAAA;AAED,eAAO,MAAM,cAAc,QAAO,kBAAkC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","serverURL","current","getPreference","key","prefs","promise","Promise","resolve","request","get","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = any>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = any>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = any,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n let value = null\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n preferencesRef.current[key] = value\n resolve(value)\n })()\n })\n prefs[key] = promise\n return promise\n },\n [i18n.language, api, preferencesRef, serverURL],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, serverURL],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","React","createContext","use","useCallback","useEffect","useRef","useTranslation","requests","deepMergeSimple","useAuth","useConfig","Context","requestOptions","value","language","body","JSON","stringify","headers","PreferencesProvider","children","contextRef","preferencesRef","pendingUpdate","config","user","i18n","routes","api","serverURL","current","getPreference","key","prefs","promise","Promise","resolve","request","get","status","preference","json","setPreference","merge","post","newValue","currentPreference","updatePreference","setTimeout","_jsx","usePreferences"],"sources":["../../../src/providers/Preferences/index.tsx"],"sourcesContent":["'use client'\nimport { dequal } from 'dequal/lite' // lite: no need for Map and Set support\nimport React, { createContext, use, useCallback, useEffect, useRef } from 'react'\n\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { deepMergeSimple } from '../../utilities/deepMerge.js'\nimport { useAuth } from '../Auth/index.js'\nimport { useConfig } from '../Config/index.js'\n\ntype PreferencesContext = {\n getPreference: <T = any>(key: string) => Promise<T>\n /**\n * @param key - a string identifier for the property being set\n * @param value - preference data to store\n * @param merge - when true will combine the existing preference object batch the change into one request for objects, default = false\n */\n setPreference: <T = any>(key: string, value: T, merge?: boolean) => Promise<void>\n}\n\nconst Context = createContext({} as PreferencesContext)\n\nconst requestOptions = (value, language) => ({\n body: JSON.stringify({ value }),\n headers: {\n 'Accept-Language': language,\n 'Content-Type': 'application/json',\n },\n})\n\nexport const PreferencesProvider: React.FC<{ children?: React.ReactNode }> = ({ children }) => {\n const contextRef = useRef({} as PreferencesContext)\n const preferencesRef = useRef({})\n const pendingUpdate = useRef({})\n const { config } = useConfig()\n const { user } = useAuth()\n const { i18n } = useTranslation()\n\n const {\n routes: { api },\n serverURL,\n } = config\n\n useEffect(() => {\n if (!user) {\n // clear preferences between users\n preferencesRef.current = {}\n }\n }, [user])\n\n const getPreference = useCallback(\n async <T = any,>(key: string): Promise<T> => {\n const prefs = preferencesRef.current\n\n if (typeof prefs[key] !== 'undefined') {\n return prefs[key]\n }\n\n const promise = new Promise((resolve: (value: T) => void) => {\n void (async () => {\n const request = await requests.get(`${serverURL}${api}/payload-preferences/${key}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n let value = null\n\n if (request.status === 200) {\n const preference = await request.json()\n value = preference.value\n }\n\n preferencesRef.current[key] = value\n\n resolve(value)\n })()\n })\n\n prefs[key] = promise\n\n return promise\n },\n [i18n.language, api, preferencesRef, serverURL],\n )\n\n const setPreference = useCallback(\n async (key: string, value: unknown, merge = false): Promise<void> => {\n if (merge === false) {\n preferencesRef.current[key] = value\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(value, i18n.language),\n )\n\n return\n }\n\n let newValue = value\n const currentPreference = await getPreference(key)\n\n // handle value objects where multiple values can be set under one key\n if (\n typeof value === 'object' &&\n typeof currentPreference === 'object' &&\n typeof newValue === 'object'\n ) {\n // merge the value with any existing preference for the key\n if (currentPreference) {\n newValue = deepMergeSimple(currentPreference, newValue)\n }\n\n if (dequal(newValue, currentPreference)) {\n return\n }\n\n // add the requested changes to a pendingUpdate batch for the key\n pendingUpdate.current[key] = {\n ...pendingUpdate.current[key],\n ...(newValue as Record<string, unknown>),\n }\n } else {\n if (newValue === currentPreference) {\n return\n }\n\n pendingUpdate.current[key] = newValue\n }\n\n const updatePreference = async () => {\n // compare the value stored in context before sending to eliminate duplicate requests\n if (dequal(pendingUpdate.current[key], preferencesRef.current[key])) {\n return\n }\n\n // preference set in context here to prevent other updatePreference at the same time\n preferencesRef.current[key] = pendingUpdate.current[key]\n\n await requests.post(\n `${serverURL}${api}/payload-preferences/${key}`,\n requestOptions(preferencesRef.current[key], i18n.language),\n )\n\n // reset any changes for this key after sending the request\n delete pendingUpdate.current[key]\n }\n\n // use timeout to allow multiple changes of different values using the same key in one request\n setTimeout(() => {\n void updatePreference()\n })\n },\n [api, getPreference, i18n.language, pendingUpdate, serverURL],\n )\n\n contextRef.current.getPreference = getPreference\n contextRef.current.setPreference = setPreference\n\n return <Context value={contextRef.current}>{children}</Context>\n}\n\nexport const usePreferences = (): PreferencesContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
@@ -21,6 +21,7 @@ type RenderDocument = (args: {
21
21
  initialData?: Data;
22
22
  locale?: Locale;
23
23
  overrideEntityVisibility?: boolean;
24
+ redirectAfterCreate?: boolean;
24
25
  redirectAfterDelete?: boolean;
25
26
  redirectAfterDuplicate?: boolean;
26
27
  signal?: AbortSignal;
@@ -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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"}
@@ -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","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentSlots,\n ErrorResult,\n Locale,\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 {\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\ntype RenderDocument = (args: {\n collectionSlug: string\n disableActions?: boolean\n docID?: number | string\n drawerSlug?: string\n initialData?: Data\n locale?: Locale\n overrideEntityVisibility?: boolean\n redirectAfterDelete?: boolean\n redirectAfterDuplicate?: boolean\n signal?: AbortSignal\n}) => Promise<\n { data: Data; Document: React.ReactNode } | ({ data: never; Document: never } & ErrorResult)\n>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype ServerFunctionsContextType = {\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocument\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<RenderDocument>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof renderDocument>> // 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 return (\n <ServerFunctionsContext\n value={{\n copyDataFromLocale,\n getDocumentSlots,\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","_jsx"],"sources":["../../../src/providers/ServerFunctions/index.tsx"],"sourcesContent":["import type {\n BuildFormStateArgs,\n BuildTableStateArgs,\n Data,\n DocumentSlots,\n ErrorResult,\n Locale,\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 {\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\ntype RenderDocument = (args: {\n collectionSlug: string\n disableActions?: boolean\n docID?: number | string\n drawerSlug?: string\n initialData?: Data\n locale?: Locale\n overrideEntityVisibility?: boolean\n redirectAfterCreate?: boolean\n redirectAfterDelete?: boolean\n redirectAfterDuplicate?: boolean\n signal?: AbortSignal\n}) => Promise<\n { data: Data; Document: React.ReactNode } | ({ data: never; Document: never } & ErrorResult)\n>\n\ntype CopyDataFromLocaleClient = (\n args: {\n signal?: AbortSignal\n } & Omit<CopyDataFromLocaleArgs, 'req'>,\n) => Promise<{ data: Data }>\n\ntype GetDocumentSlots = (args: {\n collectionSlug: string\n signal?: AbortSignal\n}) => Promise<DocumentSlots>\n\ntype ServerFunctionsContextType = {\n copyDataFromLocale: CopyDataFromLocaleClient\n getDocumentSlots: GetDocumentSlots\n getFormState: GetFormStateClient\n getTableState: GetTableStateClient\n renderDocument: RenderDocument\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<RenderDocument>(\n async (args) => {\n const { signal: remoteSignal, ...rest } = args || {}\n\n try {\n const result = (await serverFunction({\n name: 'render-document',\n args: { fallbackLocale: false, ...rest },\n })) as Awaited<ReturnType<typeof renderDocument>> // 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 return (\n <ServerFunctionsContext\n value={{\n copyDataFromLocale,\n getDocumentSlots,\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":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/RenderDefaultCell/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AAExD,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,YAAY,QAAO,yBAAyB,GAAG,IAAmC,CAAA;AAE/F,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,WAAW,EAAE,yBAAyB,CAAA;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CA4BA,CAAA"}
@@ -4,9 +4,9 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import React from 'react';
6
6
  import { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js';
7
- import { DefaultCell } from '../../Table/DefaultCell/index.js';
8
- import './index.scss';
7
+ import { DefaultCell } from '../../../elements/Table/DefaultCell/index.js';
9
8
  import { useTableColumns } from '../index.js';
9
+ import './index.scss';
10
10
  const baseClass = 'default-cell';
11
11
  const CellPropsContext = /*#__PURE__*/React.createContext(null);
12
12
  export const useCellProps = () => React.use(CellPropsContext);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useListDrawerContext","DefaultCell","useTableColumns","baseClass","CellPropsContext","createContext","useCellProps","use","RenderDefaultCell","t0","$","clientProps","columnIndex","isLinkedColumn","drawerSlug","onSelect","LinkedCellOverride","t1","propsToPass","className","link","t2","t3","collectionSlug","rowColl","rowData","doc","docID","id","onClick","_jsx","value","children"],"sources":["../../../../src/providers/TableColumns/RenderDefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DefaultCell } from '../../../elements/Table/DefaultCell/index.js'\nimport { useTableColumns } from '../index.js'\nimport './index.scss'\n\nconst baseClass = 'default-cell'\n\nconst CellPropsContext = React.createContext<DefaultCellComponentProps | null>(null)\n\nexport const useCellProps = (): DefaultCellComponentProps | null => React.use(CellPropsContext)\n\nexport const RenderDefaultCell: React.FC<{\n clientProps: DefaultCellComponentProps\n columnIndex: number\n enableRowSelections?: boolean\n isLinkedColumn?: boolean\n}> = ({ clientProps, columnIndex, isLinkedColumn }) => {\n const { drawerSlug, onSelect } = useListDrawerContext()\n const { LinkedCellOverride } = useTableColumns()\n\n const propsToPass: DefaultCellComponentProps = {\n ...clientProps,\n columnIndex,\n }\n\n if (isLinkedColumn && drawerSlug) {\n propsToPass.className = `${baseClass}__first-cell`\n propsToPass.link = false\n propsToPass.onClick = ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n doc: rowData,\n docID: rowData.id as string,\n })\n }\n }\n }\n\n return (\n <CellPropsContext value={propsToPass}>\n {isLinkedColumn && LinkedCellOverride ? LinkedCellOverride : <DefaultCell {...propsToPass} />}\n </CellPropsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,oBAAoB,QAAQ;AACrC,SAASC,WAAW,QAAQ;AAC5B,SAASC,eAAe,QAAQ;AAChC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,MAAMC,gBAAA,gBAAmBL,KAAA,CAAMM,aAAa,CAAmC;AAE/E,OAAO,MAAMC,YAAA,GAAeA,CAAA,KAAwCP,KAAA,CAAMQ,GAAG,CAACH,gBAAA;AAE9E,OAAO,MAAMI,iBAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAAC;IAAAa,WAAA;IAAAC,WAAA;IAAAC;EAAA,IAAAJ,EAA4C;EAChD;IAAAK,UAAA;IAAAC;EAAA,IAAiCf,oBAAA;EACjC;IAAAgB;EAAA,IAA+Bd,eAAA;EAAA,IAAAe,EAAA;EAAA,IAAAP,CAAA,QAAAM,kBAAA,IAAAN,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAK,QAAA;IAE/B,MAAAG,WAAA;MAAA,GACKP,WAAW;MAAAC;IAAA;IAEhB,IAEIC,cAAA,IAAkBC,UAAA;MACpBI,WAAA,CAAAC,SAAA,GAAwB,GAAAhB,SAAA,cAA0B;MAClDe,WAAA,CAAAE,IAAA;MAAA,IAAAC,EAAA;MAAA,IAAAX,CAAA,QAAAK,QAAA;QACsBM,EAAA,GAAAC,EAAA;UAAC;YAAAC,cAAA,EAAAC,OAAA;YAAAC;UAAA,IAAAH,EAAoC;UAAA,IACrD,OAAOP,QAAA,KAAa;YACtBA,QAAA;cAAAQ,cAAA,EACkBC,OAAA;cAAAE,GAAA,EACXD,OAAA;cAAAE,KAAA,EACEF,OAAA,CAAAG;YAAA,CACT;UAAA;QAAA;QAEJlB,CAAA,MAAAK,QAAA;QAAAL,CAAA,MAAAW,EAAA;MAAA;QAAAA,EAAA,GAAAX,CAAA;MAAA;MARAQ,WAAA,CAAAW,OAAA,GAAsBR,EAQtB;IAAA;IAIAJ,EAAA,GAAAa,IAAA,CAAA1B,gBAAA;MAAA2B,KAAA,EAAyBb,WAAA;MAAAc,QAAA,EACtBnB,cAAA,IAAkBG,kBAAA,GAAqBA,kBAAA,GAAqBc,IAAA,CAAA7B,WAAA;QAAA,GAAiBiB;MAAW,C;;;;;;;;;;;;SAD3FD,E;CAIJ","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { ClientCollectionConfig, Column, DefaultCellComponentProps, ListPreferences, PaginatedDocs, Payload, SanitizedCollectionConfig } from 'payload';
3
- import type { SortColumnProps } from '../SortColumn/index.js';
3
+ import type { SortColumnProps } from '../../elements/SortColumn/index.js';
4
4
  type Args = {
5
5
  beforeRows?: Column[];
6
6
  clientCollectionConfig: ClientCollectionConfig;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildColumnState.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/buildColumnState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,sBAAsB,EAGtB,MAAM,EACN,yBAAyB,EAGzB,eAAe,EACf,aAAa,EACb,OAAO,EACP,yBAAyB,EAG1B,MAAM,SAAS,CAAA;AAWhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAazE,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,sBAAsB,EAAE,sBAAsB,CAAA;IAC9C,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,iBAAiB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D,CAAA;AAED,eAAO,MAAM,gBAAgB,SAAU,IAAI,KAAG,MAAM,EAgRnD,CAAA"}
@@ -2,9 +2,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { MissingEditorProp } from 'payload';
3
3
  import { fieldIsHiddenOrDisabled, fieldIsID, fieldIsPresentationalOnly, flattenTopLevelFields } from 'payload/shared';
4
4
  import React from 'react';
5
+ import { RenderServerComponent } from '../../elements/RenderServerComponent/index.js';
5
6
  import { DefaultCell, RenderCustomComponent, RenderDefaultCell, SortColumn } from '../../exports/client/index.js';
6
7
  import { hasOptionLabelJSXElement } from '../../utilities/hasOptionLabelJSXElement.js';
7
- import { RenderServerComponent } from '../RenderServerComponent/index.js';
8
8
  import { filterFields } from './filterFields.js';
9
9
  export const buildColumnState = args => {
10
10
  const {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildColumnState.js","names":["MissingEditorProp","fieldIsHiddenOrDisabled","fieldIsID","fieldIsPresentationalOnly","flattenTopLevelFields","React","RenderServerComponent","DefaultCell","RenderCustomComponent","RenderDefaultCell","SortColumn","hasOptionLabelJSXElement","filterFields","buildColumnState","args","beforeRows","clientCollectionConfig","collectionConfig","columnPreferences","columns","customCellProps","docs","enableRowSelections","i18n","payload","sortColumnProps","useAsTitle","sortedFieldMap","fields","_sortedFieldMap","idFieldIndex","findIndex","field","idField","splice","unshift","useAsTitleFieldIndex","name","useAsTitleField","sortTo","sortFieldMap","fieldMap","sort","a","b","aIndex","column","accessor","bIndex","activeColumnsIndices","sorted","reduce","acc","index","_field","find","f","columnPreference","preference","active","Array","isArray","length","includes","push","CustomLabelToRender","admin","components","Label","undefined","clientProps","customLabelServerProps","clientField","collectionSlug","slug","CustomLabel","Component","importMap","serverProps","fieldAffectsDataSubFields","type","Heading","_jsx","disable","label","baseCellClientProps","cellData","rowData","renderedCells","map","doc","i","isLinkedColumn","cellClientProps","link","cellServerProps","className","columnIndex","onClick","CustomCell","editor","Error","CellComponent","CustomCellComponent","Cell","CustomComponent","Fallback"],"sources":["../../../src/providers/TableColumns/buildColumnState.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientCollectionConfig,\n ClientComponentProps,\n ClientField,\n Column,\n DefaultCellComponentProps,\n DefaultServerCellComponentProps,\n Field,\n ListPreferences,\n PaginatedDocs,\n Payload,\n SanitizedCollectionConfig,\n ServerComponentProps,\n StaticLabel,\n} from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport {\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsPresentationalOnly,\n flattenTopLevelFields,\n} from 'payload/shared'\nimport React from 'react'\n\nimport type { SortColumnProps } from '../../elements/SortColumn/index.js'\n\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\nimport {\n DefaultCell,\n RenderCustomComponent,\n RenderDefaultCell,\n SortColumn,\n // eslint-disable-next-line payload/no-imports-from-exports-dir\n} from '../../exports/client/index.js'\nimport { hasOptionLabelJSXElement } from '../../utilities/hasOptionLabelJSXElement.js'\nimport { filterFields } from './filterFields.js'\n\ntype Args = {\n beforeRows?: Column[]\n clientCollectionConfig: ClientCollectionConfig\n collectionConfig: SanitizedCollectionConfig\n columnPreferences: ListPreferences['columns']\n columns?: ListPreferences['columns']\n customCellProps: DefaultCellComponentProps['customCellProps']\n docs: PaginatedDocs['docs']\n enableRowSelections: boolean\n enableRowTypes?: boolean\n i18n: I18nClient\n payload: Payload\n sortColumnProps?: Partial<SortColumnProps>\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const buildColumnState = (args: Args): Column[] => {\n const {\n beforeRows,\n clientCollectionConfig,\n collectionConfig,\n columnPreferences,\n columns,\n customCellProps,\n docs,\n enableRowSelections,\n i18n,\n payload,\n sortColumnProps,\n useAsTitle,\n } = args\n\n // clientFields contains the fake `id` column\n let sortedFieldMap = flattenTopLevelFields(\n filterFields(clientCollectionConfig.fields),\n true,\n ) as ClientField[]\n\n let _sortedFieldMap = flattenTopLevelFields(\n filterFields(collectionConfig.fields),\n true,\n ) as Field[] // TODO: think of a way to avoid this additional flatten\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`\n const idFieldIndex = sortedFieldMap?.findIndex((field) => fieldIsID(field))\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => 'name' in field && field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columnPreferences || columns\n\n const sortFieldMap = (fieldMap, sortTo) =>\n fieldMap?.sort((a, b) => {\n const aIndex = sortTo.findIndex((column) => 'name' in a && column.accessor === a.name)\n const bIndex = sortTo.findIndex((column) => 'name' in b && column.accessor === b.name)\n\n if (aIndex === -1 && bIndex === -1) {\n return 0\n }\n\n if (aIndex === -1) {\n return 1\n }\n\n if (bIndex === -1) {\n return -1\n }\n\n return aIndex - bIndex\n })\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columnPreferences`\n sortedFieldMap = sortFieldMap(sortedFieldMap, sortTo)\n _sortedFieldMap = sortFieldMap(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort\n }\n\n const activeColumnsIndices = []\n\n const sorted: Column[] = sortedFieldMap?.reduce((acc, field, index) => {\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return acc\n }\n\n const _field = _sortedFieldMap.find(\n (f) => 'name' in field && 'name' in f && f.name === field.name,\n )\n\n const columnPreference = columnPreferences?.find(\n (preference) => field && 'name' in field && preference.accessor === field.name,\n )\n\n let active = false\n\n if (columnPreference) {\n active = columnPreference.active\n } else if (columns && Array.isArray(columns) && columns.length > 0) {\n active = columns.find(\n (column) => field && 'name' in field && column.accessor === field.name,\n )?.active\n } else if (activeColumnsIndices.length < 4) {\n active = true\n }\n\n if (active && !activeColumnsIndices.includes(index)) {\n activeColumnsIndices.push(index)\n }\n\n const CustomLabelToRender =\n _field &&\n 'admin' in _field &&\n 'components' in _field.admin &&\n 'Label' in _field.admin.components &&\n _field.admin.components.Label !== undefined // let it return `null`\n ? _field.admin.components.Label\n : undefined\n\n // TODO: customComponent will be optional in v4\n const clientProps: Omit<ClientComponentProps, 'customComponents'> = {\n field,\n }\n\n const customLabelServerProps: Pick<\n ServerComponentProps,\n 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'\n > = {\n clientField: field,\n collectionSlug: collectionConfig.slug,\n field: _field,\n i18n,\n payload,\n }\n\n const CustomLabel = CustomLabelToRender\n ? RenderServerComponent({\n clientProps,\n Component: CustomLabelToRender,\n importMap: payload.importMap,\n serverProps: customLabelServerProps,\n })\n : undefined\n\n const fieldAffectsDataSubFields =\n field &&\n field.type &&\n (field.type === 'array' || field.type === 'group' || field.type === 'blocks')\n\n const Heading = (\n <SortColumn\n disable={fieldAffectsDataSubFields || fieldIsPresentationalOnly(field) || undefined}\n Label={CustomLabel}\n label={field && 'label' in field ? (field.label as StaticLabel) : undefined}\n name={'name' in field ? field.name : undefined}\n {...(sortColumnProps || {})}\n />\n )\n\n const baseCellClientProps: DefaultCellComponentProps = {\n cellData: undefined,\n collectionSlug: clientCollectionConfig.slug,\n customCellProps,\n field,\n rowData: undefined,\n }\n\n const column: Column = {\n accessor: 'name' in field ? field.name : undefined,\n active,\n CustomLabel,\n field,\n Heading,\n renderedCells: active\n ? docs.map((doc, i) => {\n const isLinkedColumn = index === activeColumnsIndices[0]\n\n const cellClientProps: DefaultCellComponentProps = {\n ...baseCellClientProps,\n cellData: 'name' in field ? doc[field.name] : undefined,\n link: isLinkedColumn,\n rowData: doc,\n }\n\n const cellServerProps: DefaultServerCellComponentProps = {\n cellData: cellClientProps.cellData,\n className: baseCellClientProps.className,\n collectionConfig,\n collectionSlug: collectionConfig.slug,\n columnIndex: baseCellClientProps.columnIndex,\n customCellProps: baseCellClientProps.customCellProps,\n field: _field,\n i18n,\n link: cellClientProps.link,\n onClick: baseCellClientProps.onClick,\n payload,\n rowData: doc,\n }\n\n let CustomCell = null\n\n if (_field?.type === 'richText') {\n if (!_field?.editor) {\n throw new MissingEditorProp(_field) // 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 _field?.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 CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: _field.editor.CellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else if (\n cellClientProps.cellData &&\n cellClientProps.field &&\n hasOptionLabelJSXElement(cellClientProps)\n ) {\n CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: DefaultCell,\n importMap: payload.importMap,\n })\n } else {\n const CustomCellComponent = _field?.admin?.components?.Cell\n\n if (CustomCellComponent) {\n CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: CustomCellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else {\n CustomCell = undefined\n }\n }\n\n return (\n <RenderCustomComponent\n CustomComponent={CustomCell}\n Fallback={\n <RenderDefaultCell\n clientProps={cellClientProps}\n columnIndex={index}\n enableRowSelections={enableRowSelections}\n isLinkedColumn={isLinkedColumn}\n />\n }\n key={`${i}-${index}`}\n />\n )\n })\n : [],\n }\n\n acc.push(column)\n\n return acc\n }, [])\n\n if (beforeRows) {\n sorted.unshift(...beforeRows)\n }\n\n return sorted\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { ClientField, Column, DefaultCellComponentProps, ListPreferences, PaginatedDocs, Payload, SanitizedCollectionConfig } from 'payload';
3
- import type { SortColumnProps } from '../SortColumn/index.js';
3
+ import type { SortColumnProps } from '../../elements/SortColumn/index.js';
4
4
  type Args = {
5
5
  beforeRows?: Column[];
6
6
  columnPreferences: ListPreferences['columns'];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildPolymorphicColumnState.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/buildPolymorphicColumnState.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,yBAAyB,EAGzB,eAAe,EACf,aAAa,EACb,OAAO,EACP,yBAAyB,EAE1B,MAAM,SAAS,CAAA;AAWhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAWzE,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,iBAAiB,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACpC,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IAC3B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;CAC7D,CAAA;AAED,eAAO,MAAM,2BAA2B,SAAU,IAAI,KAAG,MAAM,EA2P9D,CAAA"}
@@ -4,7 +4,7 @@ import { MissingEditorProp } from 'payload';
4
4
  import { fieldIsHiddenOrDisabled, fieldIsID, fieldIsPresentationalOnly, flattenTopLevelFields } from 'payload/shared';
5
5
  import React from 'react';
6
6
  import { RenderCustomComponent, RenderDefaultCell, SortColumn } from '../../exports/client/index.js';
7
- import { RenderServerComponent } from '../RenderServerComponent/index.js';
7
+ import { RenderServerComponent } from '../../elements/RenderServerComponent/index.js';
8
8
  import { filterFields } from './filterFields.js';
9
9
  export const buildPolymorphicColumnState = args => {
10
10
  const {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildPolymorphicColumnState.js","names":["MissingEditorProp","fieldIsHiddenOrDisabled","fieldIsID","fieldIsPresentationalOnly","flattenTopLevelFields","React","RenderCustomComponent","RenderDefaultCell","SortColumn","RenderServerComponent","filterFields","buildPolymorphicColumnState","args","beforeRows","columnPreferences","columns","customCellProps","docs","enableRowSelections","fields","i18n","payload","sortColumnProps","useAsTitle","sortedFieldMap","_sortedFieldMap","idFieldIndex","findIndex","field","idField","splice","unshift","useAsTitleFieldIndex","name","useAsTitleField","sortTo","sortFieldMap","fieldMap","sort","a","b","aIndex","column","accessor","bIndex","activeColumnsIndices","sorted","reduce","acc","index","_field","find","f","columnPreference","preference","active","Array","isArray","length","includes","push","CustomLabel","undefined","fieldAffectsDataSubFields","type","Heading","_jsx","disable","Label","label","renderedCells","map","doc","i","isLinkedColumn","collectionSlug","relationTo","value","baseCellClientProps","cellData","rowData","cellClientProps","link","cellServerProps","className","collectionConfig","collections","config","columnIndex","onClick","CustomCell","editor","Error","admin","components","clientProps","Component","CellComponent","importMap","serverProps","CustomCellComponent","Cell","CustomComponent","Fallback"],"sources":["../../../src/providers/TableColumns/buildPolymorphicColumnState.tsx"],"sourcesContent":["// Dirty copy of buildColumnState.tsx with some changes to not break things\n\nimport type { I18nClient } from '@payloadcms/translations'\nimport type {\n ClientField,\n Column,\n DefaultCellComponentProps,\n DefaultServerCellComponentProps,\n Field,\n ListPreferences,\n PaginatedDocs,\n Payload,\n SanitizedCollectionConfig,\n StaticLabel,\n} from 'payload'\n\nimport { MissingEditorProp } from 'payload'\nimport {\n fieldIsHiddenOrDisabled,\n fieldIsID,\n fieldIsPresentationalOnly,\n flattenTopLevelFields,\n} from 'payload/shared'\nimport React from 'react'\n\nimport type { SortColumnProps } from '../../elements/SortColumn/index.js'\n\nimport {\n RenderCustomComponent,\n RenderDefaultCell,\n SortColumn,\n // eslint-disable-next-line payload/no-imports-from-exports-dir\n} from '../../exports/client/index.js'\nimport { RenderServerComponent } from '../../elements/RenderServerComponent/index.js'\nimport { filterFields } from './filterFields.js'\n\ntype Args = {\n beforeRows?: Column[]\n columnPreferences: ListPreferences['columns']\n columns?: ListPreferences['columns']\n customCellProps: DefaultCellComponentProps['customCellProps']\n docs: PaginatedDocs['docs']\n enableRowSelections: boolean\n enableRowTypes?: boolean\n fields: ClientField[]\n i18n: I18nClient\n payload: Payload\n sortColumnProps?: Partial<SortColumnProps>\n useAsTitle: SanitizedCollectionConfig['admin']['useAsTitle']\n}\n\nexport const buildPolymorphicColumnState = (args: Args): Column[] => {\n const {\n beforeRows,\n columnPreferences,\n columns,\n customCellProps,\n docs,\n enableRowSelections,\n fields,\n i18n,\n payload,\n sortColumnProps,\n useAsTitle,\n } = args\n\n // clientFields contains the fake `id` column\n let sortedFieldMap = flattenTopLevelFields(filterFields(fields), true) as ClientField[]\n\n let _sortedFieldMap = flattenTopLevelFields(filterFields(fields), true) as Field[] // TODO: think of a way to avoid this additional flatten\n\n // place the `ID` field first, if it exists\n // do the same for the `useAsTitle` field with precedence over the `ID` field\n // then sort the rest of the fields based on the `defaultColumns` or `columnPreferences`\n const idFieldIndex = sortedFieldMap?.findIndex((field) => fieldIsID(field))\n\n if (idFieldIndex > -1) {\n const idField = sortedFieldMap.splice(idFieldIndex, 1)[0]\n sortedFieldMap.unshift(idField)\n }\n\n const useAsTitleFieldIndex = useAsTitle\n ? sortedFieldMap.findIndex((field) => 'name' in field && field.name === useAsTitle)\n : -1\n\n if (useAsTitleFieldIndex > -1) {\n const useAsTitleField = sortedFieldMap.splice(useAsTitleFieldIndex, 1)[0]\n sortedFieldMap.unshift(useAsTitleField)\n }\n\n const sortTo = columnPreferences || columns\n\n const sortFieldMap = (fieldMap, sortTo) =>\n fieldMap?.sort((a, b) => {\n const aIndex = sortTo.findIndex((column) => 'name' in a && column.accessor === a.name)\n const bIndex = sortTo.findIndex((column) => 'name' in b && column.accessor === b.name)\n\n if (aIndex === -1 && bIndex === -1) {\n return 0\n }\n\n if (aIndex === -1) {\n return 1\n }\n\n if (bIndex === -1) {\n return -1\n }\n\n return aIndex - bIndex\n })\n\n if (sortTo) {\n // sort the fields to the order of `defaultColumns` or `columnPreferences`\n sortedFieldMap = sortFieldMap(sortedFieldMap, sortTo)\n _sortedFieldMap = sortFieldMap(_sortedFieldMap, sortTo) // TODO: think of a way to avoid this additional sort\n }\n\n const activeColumnsIndices = []\n\n const sorted: Column[] = sortedFieldMap?.reduce((acc, field, index) => {\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return acc\n }\n\n const _field = _sortedFieldMap.find(\n (f) => 'name' in field && 'name' in f && f.name === field.name,\n )\n\n const columnPreference = columnPreferences?.find(\n (preference) => field && 'name' in field && preference.accessor === field.name,\n )\n\n let active = false\n\n if (columnPreference) {\n active = columnPreference.active\n } else if (columns && Array.isArray(columns) && columns.length > 0) {\n active = columns.find(\n (column) => field && 'name' in field && column.accessor === field.name,\n )?.active\n } else if (activeColumnsIndices.length < 4) {\n active = true\n }\n\n if (active && !activeColumnsIndices.includes(index)) {\n activeColumnsIndices.push(index)\n }\n\n // const CustomLabelToRender =\n // _field &&\n // 'admin' in _field &&\n // 'components' in _field.admin &&\n // 'Label' in _field.admin.components &&\n // _field.admin.components.Label !== undefined // let it return `null`\n // ? _field.admin.components.Label\n // : undefined\n\n // // TODO: customComponent will be optional in v4\n // const clientProps: Omit<ClientComponentProps, 'customComponents'> = {\n // field,\n // }\n\n // const customLabelServerProps: Pick<\n // ServerComponentProps,\n // 'clientField' | 'collectionSlug' | 'field' | 'i18n' | 'payload'\n // > = {\n // clientField: field,\n // collectionSlug: collectionConfig.slug,\n // field: _field,\n // i18n,\n // payload,\n // }\n\n const CustomLabel = undefined\n\n const fieldAffectsDataSubFields =\n field &&\n field.type &&\n (field.type === 'array' || field.type === 'group' || field.type === 'blocks')\n\n const Heading = (\n <SortColumn\n disable={fieldAffectsDataSubFields || fieldIsPresentationalOnly(field) || undefined}\n Label={CustomLabel}\n label={field && 'label' in field ? (field.label as StaticLabel) : undefined}\n name={'name' in field ? field.name : undefined}\n {...(sortColumnProps || {})}\n />\n )\n\n const column: Column = {\n accessor: 'name' in field ? field.name : undefined,\n active,\n CustomLabel,\n field,\n Heading,\n renderedCells: active\n ? docs.map((doc, i) => {\n const isLinkedColumn = index === activeColumnsIndices[0]\n\n const collectionSlug = doc.relationTo\n doc = doc.value\n\n const baseCellClientProps: DefaultCellComponentProps = {\n cellData: undefined,\n collectionSlug,\n customCellProps,\n field,\n rowData: undefined,\n }\n\n const cellClientProps: DefaultCellComponentProps = {\n ...baseCellClientProps,\n cellData: 'name' in field ? doc[field.name] : undefined,\n link: isLinkedColumn,\n rowData: doc,\n }\n\n const cellServerProps: DefaultServerCellComponentProps = {\n cellData: cellClientProps.cellData,\n className: baseCellClientProps.className,\n collectionConfig: payload.collections[collectionSlug].config,\n collectionSlug,\n columnIndex: baseCellClientProps.columnIndex,\n customCellProps: baseCellClientProps.customCellProps,\n field: _field,\n i18n,\n link: cellClientProps.link,\n onClick: baseCellClientProps.onClick,\n payload,\n rowData: doc,\n }\n\n let CustomCell = null\n\n if (_field?.type === 'richText') {\n if (!_field?.editor) {\n throw new MissingEditorProp(_field) // 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 _field?.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 CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: _field.editor.CellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else {\n const CustomCellComponent = _field?.admin?.components?.Cell\n\n if (CustomCellComponent) {\n CustomCell = RenderServerComponent({\n clientProps: cellClientProps,\n Component: CustomCellComponent,\n importMap: payload.importMap,\n serverProps: cellServerProps,\n })\n } else {\n CustomCell = undefined\n }\n }\n\n return (\n <RenderCustomComponent\n CustomComponent={CustomCell}\n Fallback={\n <RenderDefaultCell\n clientProps={cellClientProps}\n columnIndex={index}\n enableRowSelections={enableRowSelections}\n isLinkedColumn={isLinkedColumn}\n />\n }\n key={`${i}-${index}`}\n />\n )\n })\n : [],\n }\n\n acc.push(column)\n\n return acc\n }, [])\n\n if (beforeRows) {\n sorted.unshift(...beforeRows)\n }\n\n return sorted\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,kBAAkB,wCAAoD,CAAA;AAEnF,eAAO,MAAM,eAAe,QAAO,aAAwC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","names":["createContext","use","TableColumnContext","useTableColumns"],"sources":["../../../src/providers/TableColumns/context.ts"],"sourcesContent":["import { createContext, use } from 'react'\n\nimport type { ITableColumns } from './types.js'\n\nexport const TableColumnContext = createContext<ITableColumns>({} as ITableColumns)\n\nexport const useTableColumns = (): ITableColumns => use(TableColumnContext)\n"],"mappings":"AAAA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AAInC,OAAO,MAAMC,kBAAA,GAAqBF,aAAA,CAA6B,CAAC;AAEhE,OAAO,MAAMG,eAAA,GAAkBA,CAAA,KAAqBF,GAAA,CAAIC,kBAAA","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterFields.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/filterFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIjD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,kBAAkB,CAAC,EAAE,KAAG,CAAC,EA4BlF,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filterFields.js","names":["fieldIsHiddenOrDisabled","fieldIsID","filterFields","incomingFields","shouldSkipField","field","type","admin","disableListColumn","fields","reduce","acc","formattedField","tabs","map","tab","filter","tabField","push"],"sources":["../../../src/providers/TableColumns/filterFields.tsx"],"sourcesContent":["import type { ClientField, Field } from 'payload'\n\nimport { fieldIsHiddenOrDisabled, fieldIsID } from 'payload/shared'\n\n/**\n * Filters fields that are hidden, disabled, or have `disableListColumn` set to `true`\n * Does so recursively for `tabs` fields.\n */\nexport const filterFields = <T extends ClientField | Field>(incomingFields: T[]): T[] => {\n const shouldSkipField = (field: T): boolean =>\n (field.type !== 'ui' && fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) ||\n field?.admin?.disableListColumn === true\n\n const fields: T[] = incomingFields?.reduce((acc, field) => {\n if (shouldSkipField(field)) {\n return acc\n }\n\n // extract top-level `tabs` fields and filter out the same\n const formattedField: T =\n field.type === 'tabs' && 'tabs' in field\n ? {\n ...field,\n tabs: field.tabs.map((tab) => ({\n ...tab,\n fields: tab.fields.filter((tabField) => !shouldSkipField(tabField)),\n })),\n }\n : field\n\n acc.push(formattedField)\n\n return acc\n }, [])\n\n return fields\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,EAAEC,SAAS,QAAQ;AAEnD;;;;AAIA,OAAO,MAAMC,YAAA,GAA+CC,cAAA;EAC1D,MAAMC,eAAA,GAAmBC,KAAA,IACvBA,KAAC,CAAMC,IAAI,KAAK,QAAQN,uBAAA,CAAwBK,KAAA,KAAU,CAACJ,SAAA,CAAUI,KAAA,KACrEA,KAAA,EAAOE,KAAA,EAAOC,iBAAA,KAAsB;EAEtC,MAAMC,MAAA,GAAcN,cAAA,EAAgBO,MAAA,CAAO,CAACC,GAAA,EAAKN,KAAA;IAC/C,IAAID,eAAA,CAAgBC,KAAA,GAAQ;MAC1B,OAAOM,GAAA;IACT;IAEA;IACA,MAAMC,cAAA,GACJP,KAAA,CAAMC,IAAI,KAAK,UAAU,UAAUD,KAAA,GAC/B;MACE,GAAGA,KAAK;MACRQ,IAAA,EAAMR,KAAA,CAAMQ,IAAI,CAACC,GAAG,CAAEC,GAAA,KAAS;QAC7B,GAAGA,GAAG;QACNN,MAAA,EAAQM,GAAA,CAAIN,MAAM,CAACO,MAAM,CAAEC,QAAA,IAAa,CAACb,eAAA,CAAgBa,QAAA;MAC3D;IACF,IACAZ,KAAA;IAENM,GAAA,CAAIO,IAAI,CAACN,cAAA;IAET,OAAOD,GAAA;EACT,GAAG,EAAE;EAEL,OAAOF,MAAA;AACT","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInitialColumns.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/getInitialColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAiCpF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,EAAE,GAAG,KAAK,EAAE,UACzD,CAAC,cACG,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,kBACnC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAC1D,eAAe,CAAC,SAAS,CAoB3B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getInitialColumns.js","names":["fieldAffectsData","getRemainingColumns","fields","useAsTitle","reduce","remaining","field","name","type","tabs","tabFieldColumns","tab","getInitialColumns","defaultColumns","initialColumns","Array","isArray","length","push","remainingColumns","concat","slice","map","column","accessor","active"],"sources":["../../../src/providers/TableColumns/getInitialColumns.ts"],"sourcesContent":["import type { ClientField, CollectionConfig, Field, ListPreferences } from 'payload'\n\nimport { fieldAffectsData } from 'payload/shared'\n\nconst getRemainingColumns = <T extends ClientField[] | Field[]>(\n fields: T,\n useAsTitle: string,\n): ListPreferences['columns'] =>\n fields?.reduce((remaining, field) => {\n if (fieldAffectsData(field) && field.name === useAsTitle) {\n return remaining\n }\n\n if (!fieldAffectsData(field) && 'fields' in field) {\n return [...remaining, ...getRemainingColumns(field.fields, useAsTitle)]\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n return [\n ...remaining,\n ...field.tabs.reduce(\n (tabFieldColumns, tab) => [\n ...tabFieldColumns,\n ...('name' in tab ? [tab.name] : getRemainingColumns(tab.fields, useAsTitle)),\n ],\n [],\n ),\n ]\n }\n\n return [...remaining, field.name]\n }, [])\n\n/**\n * Returns the initial columns to display in the table based on the following criteria:\n * 1. If `defaultColumns` is set in the collection config, use those columns\n * 2. Otherwise take `useAtTitle, if set, and the next 3 fields that are not hidden or disabled\n */\nexport const getInitialColumns = <T extends ClientField[] | Field[]>(\n fields: T,\n useAsTitle: CollectionConfig['admin']['useAsTitle'],\n defaultColumns: CollectionConfig['admin']['defaultColumns'],\n): ListPreferences['columns'] => {\n let initialColumns = []\n\n if (Array.isArray(defaultColumns) && defaultColumns.length >= 1) {\n initialColumns = defaultColumns\n } else {\n if (useAsTitle) {\n initialColumns.push(useAsTitle)\n }\n\n const remainingColumns = getRemainingColumns(fields, useAsTitle)\n\n initialColumns = initialColumns.concat(remainingColumns)\n initialColumns = initialColumns.slice(0, 4)\n }\n\n return initialColumns.map((column) => ({\n accessor: column,\n active: true,\n }))\n}\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AAEjC,MAAMC,mBAAA,GAAsBA,CAC1BC,MAAA,EACAC,UAAA,KAEAD,MAAA,EAAQE,MAAA,CAAO,CAACC,SAAA,EAAWC,KAAA;EACzB,IAAIN,gBAAA,CAAiBM,KAAA,KAAUA,KAAA,CAAMC,IAAI,KAAKJ,UAAA,EAAY;IACxD,OAAOE,SAAA;EACT;EAEA,IAAI,CAACL,gBAAA,CAAiBM,KAAA,KAAU,YAAYA,KAAA,EAAO;IACjD,OAAO,C,GAAID,SAAA,E,GAAcJ,mBAAA,CAAoBK,KAAA,CAAMJ,MAAM,EAAEC,UAAA,EAAY;EACzE;EAEA,IAAIG,KAAA,CAAME,IAAI,KAAK,UAAU,UAAUF,KAAA,EAAO;IAC5C,OAAO,C,GACFD,SAAA,E,GACAC,KAAA,CAAMG,IAAI,CAACL,MAAM,CAClB,CAACM,eAAA,EAAiBC,GAAA,KAAQ,C,GACrBD,eAAA,E,IACC,UAAUC,GAAA,GAAM,CAACA,GAAA,CAAIJ,IAAI,CAAC,GAAGN,mBAAA,CAAoBU,GAAA,CAAIT,MAAM,EAAEC,UAAA,GAClE,EACD,EAAE,EAEL;EACH;EAEA,OAAO,C,GAAIE,SAAA,EAAWC,KAAA,CAAMC,IAAI,CAAC;AACnC,GAAG,EAAE;AAEP;;;;;AAKA,OAAO,MAAMK,iBAAA,GAAoBA,CAC/BV,MAAA,EACAC,UAAA,EACAU,cAAA;EAEA,IAAIC,cAAA,GAAiB,EAAE;EAEvB,IAAIC,KAAA,CAAMC,OAAO,CAACH,cAAA,KAAmBA,cAAA,CAAeI,MAAM,IAAI,GAAG;IAC/DH,cAAA,GAAiBD,cAAA;EACnB,OAAO;IACL,IAAIV,UAAA,EAAY;MACdW,cAAA,CAAeI,IAAI,CAACf,UAAA;IACtB;IAEA,MAAMgB,gBAAA,GAAmBlB,mBAAA,CAAoBC,MAAA,EAAQC,UAAA;IAErDW,cAAA,GAAiBA,cAAA,CAAeM,MAAM,CAACD,gBAAA;IACvCL,cAAA,GAAiBA,cAAA,CAAeO,KAAK,CAAC,GAAG;EAC3C;EAEA,OAAOP,cAAA,CAAeQ,GAAG,CAAEC,MAAA,KAAY;IACrCC,QAAA,EAAUD,MAAA;IACVE,MAAA,EAAQ;EACV;AACF","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA+C,MAAM,OAAO,CAAA;AAEnE,OAAO,KAAK,EAAiB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAM1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA+FpE,CAAA"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { transformColumnsToSearchParams } from 'payload/shared';
5
- import React, { startTransition, useCallback } from 'react';
5
+ import React, { startTransition, useCallback, useRef } from 'react';
6
6
  import { useConfig } from '../../providers/Config/index.js';
7
7
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
8
  import { TableColumnContext } from './context.js';
@@ -28,6 +28,7 @@ export const TableColumnsProvider = ({
28
28
  collectionSlug
29
29
  });
30
30
  const [columnState, setOptimisticColumnState] = React.useOptimistic(columnStateFromProps, (state, action) => action);
31
+ const contextRef = useRef({});
31
32
  const toggleColumn = useCallback(async column => {
32
33
  const newColumnState = (columnState || []).map(col => {
33
34
  if (col.accessor === column) {
@@ -83,7 +84,8 @@ export const TableColumnsProvider = ({
83
84
  moveColumn,
84
85
  resetColumnsState,
85
86
  setActiveColumns,
86
- toggleColumn
87
+ toggleColumn,
88
+ ...contextRef.current
87
89
  },
88
90
  children: children
89
91
  });