@payloadcms/next 3.24.0-canary.72057b1 → 3.24.0-canary.7d9fbaf

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 (92) hide show
  1. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  2. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +1 -2
  3. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  4. package/dist/elements/DocumentHeader/index.scss +0 -2
  5. package/dist/elements/Nav/index.client.d.ts.map +1 -1
  6. package/dist/elements/Nav/index.client.js +1 -3
  7. package/dist/elements/Nav/index.client.js.map +1 -1
  8. package/dist/elements/Nav/index.d.ts.map +1 -1
  9. package/dist/elements/Nav/index.js.map +1 -1
  10. package/dist/layouts/Root/index.d.ts.map +1 -1
  11. package/dist/layouts/Root/index.js +4 -4
  12. package/dist/layouts/Root/index.js.map +1 -1
  13. package/dist/prod/styles.css +1 -1
  14. package/dist/views/Dashboard/Default/index.d.ts +6 -1
  15. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  16. package/dist/views/Dashboard/Default/index.js +0 -3
  17. package/dist/views/Dashboard/Default/index.js.map +1 -1
  18. package/dist/views/Dashboard/index.d.ts.map +1 -1
  19. package/dist/views/Dashboard/index.js +0 -4
  20. package/dist/views/Dashboard/index.js.map +1 -1
  21. package/dist/views/ForgotPassword/index.d.ts.map +1 -1
  22. package/dist/views/ForgotPassword/index.js +1 -4
  23. package/dist/views/ForgotPassword/index.js.map +1 -1
  24. package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
  25. package/dist/views/LivePreview/Context/index.js +5 -1
  26. package/dist/views/LivePreview/Context/index.js.map +1 -1
  27. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  28. package/dist/views/LivePreview/index.client.js +6 -3
  29. package/dist/views/LivePreview/index.client.js.map +1 -1
  30. package/dist/views/Login/LoginForm/index.d.ts.map +1 -1
  31. package/dist/views/Login/LoginForm/index.js +1 -3
  32. package/dist/views/Login/LoginForm/index.js.map +1 -1
  33. package/dist/views/Login/index.d.ts.map +1 -1
  34. package/dist/views/Login/index.js.map +1 -1
  35. package/dist/views/Logout/LogoutClient.d.ts.map +1 -1
  36. package/dist/views/Logout/LogoutClient.js +32 -30
  37. package/dist/views/Logout/LogoutClient.js.map +1 -1
  38. package/dist/views/NotFound/index.client.d.ts.map +1 -1
  39. package/dist/views/NotFound/index.client.js +0 -3
  40. package/dist/views/NotFound/index.client.js.map +1 -1
  41. package/dist/views/ResetPassword/index.d.ts.map +1 -1
  42. package/dist/views/ResetPassword/index.js +1 -4
  43. package/dist/views/ResetPassword/index.js.map +1 -1
  44. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  45. package/dist/views/Unauthorized/index.js +0 -3
  46. package/dist/views/Unauthorized/index.js.map +1 -1
  47. package/dist/views/Verify/index.client.d.ts.map +1 -1
  48. package/dist/views/Verify/index.client.js +13 -9
  49. package/dist/views/Verify/index.client.js.map +1 -1
  50. package/dist/views/Version/Default/index.d.ts.map +1 -1
  51. package/dist/views/Version/Default/index.js +9 -5
  52. package/dist/views/Version/Default/index.js.map +1 -1
  53. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts +2 -0
  54. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
  55. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +126 -59
  56. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  57. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts +2 -1
  58. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  59. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +18 -4
  60. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  61. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -1
  62. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +12 -8
  63. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  64. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -1
  65. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +12 -8
  66. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  67. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  68. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +20 -11
  69. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  70. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  71. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +30 -21
  72. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  73. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +13 -9
  74. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  75. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +7 -3
  76. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  77. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +36 -3
  78. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  79. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +3 -2
  80. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
  81. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +7 -6
  82. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  83. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  84. package/dist/views/Version/Restore/index.js +6 -3
  85. package/dist/views/Version/Restore/index.js.map +1 -1
  86. package/dist/views/Version/index.d.ts.map +1 -1
  87. package/dist/views/Version/index.js +1 -0
  88. package/dist/views/Version/index.js.map +1 -1
  89. package/dist/views/Versions/cells/CreatedAt/index.d.ts.map +1 -1
  90. package/dist/views/Versions/cells/CreatedAt/index.js +1 -3
  91. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  92. package/package.json +6 -6
@@ -1,3 +1,4 @@
1
+ import { fieldShouldBeLocalized } from 'payload/shared';
1
2
  import { fieldHasChanges } from './fieldHasChanges.js';
2
3
  import { getFieldsForRowComparison } from './getFieldsForRowComparison.js';
3
4
  /**
@@ -6,8 +7,10 @@ import { getFieldsForRowComparison } from './getFieldsForRowComparison.js';
6
7
  */
7
8
  export function countChangedFields({
8
9
  comparison,
10
+ config,
9
11
  fields,
10
12
  locales,
13
+ parentIsLocalized,
11
14
  version
12
15
  }) {
13
16
  let count = 0;
@@ -23,14 +26,19 @@ export function countChangedFields({
23
26
  case 'array':
24
27
  case 'blocks':
25
28
  {
26
- if (locales && field.localized) {
29
+ if (locales && fieldShouldBeLocalized({
30
+ field,
31
+ parentIsLocalized
32
+ })) {
27
33
  locales.forEach(locale => {
28
34
  const comparisonRows = comparison?.[field.name]?.[locale] ?? [];
29
35
  const versionRows = version?.[field.name]?.[locale] ?? [];
30
36
  count += countChangedFieldsInRows({
31
37
  comparisonRows,
38
+ config,
32
39
  field,
33
40
  locales,
41
+ parentIsLocalized: parentIsLocalized || field.localized,
34
42
  versionRows
35
43
  });
36
44
  });
@@ -39,8 +47,10 @@ export function countChangedFields({
39
47
  const versionRows = version?.[field.name] ?? [];
40
48
  count += countChangedFieldsInRows({
41
49
  comparisonRows,
50
+ config,
42
51
  field,
43
52
  locales,
53
+ parentIsLocalized: parentIsLocalized || field.localized,
44
54
  versionRows
45
55
  });
46
56
  }
@@ -64,7 +74,10 @@ export function countChangedFields({
64
74
  case 'upload':
65
75
  {
66
76
  // Fields that have a name and contain data. We can just check if the data has changed.
67
- if (locales && field.localized) {
77
+ if (locales && fieldShouldBeLocalized({
78
+ field,
79
+ parentIsLocalized
80
+ })) {
68
81
  locales.forEach(locale => {
69
82
  if (fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])) {
70
83
  count++;
@@ -81,8 +94,10 @@ export function countChangedFields({
81
94
  {
82
95
  count += countChangedFields({
83
96
  comparison,
97
+ config,
84
98
  fields: field.fields,
85
99
  locales,
100
+ parentIsLocalized: parentIsLocalized || field.localized,
86
101
  version
87
102
  });
88
103
  break;
@@ -90,20 +105,27 @@ export function countChangedFields({
90
105
  // Fields that have nested fields and nest their fields' data.
91
106
  case 'group':
92
107
  {
93
- if (locales && field.localized) {
108
+ if (locales && fieldShouldBeLocalized({
109
+ field,
110
+ parentIsLocalized
111
+ })) {
94
112
  locales.forEach(locale => {
95
113
  count += countChangedFields({
96
114
  comparison: comparison?.[field.name]?.[locale],
115
+ config,
97
116
  fields: field.fields,
98
117
  locales,
118
+ parentIsLocalized: parentIsLocalized || field.localized,
99
119
  version: version?.[field.name]?.[locale]
100
120
  });
101
121
  });
102
122
  } else {
103
123
  count += countChangedFields({
104
124
  comparison: comparison?.[field.name],
125
+ config,
105
126
  fields: field.fields,
106
127
  locales,
128
+ parentIsLocalized: parentIsLocalized || field.localized,
107
129
  version: version?.[field.name]
108
130
  });
109
131
  }
@@ -119,8 +141,10 @@ export function countChangedFields({
119
141
  locales.forEach(locale => {
120
142
  count += countChangedFields({
121
143
  comparison: comparison?.[tab.name]?.[locale],
144
+ config,
122
145
  fields: tab.fields,
123
146
  locales,
147
+ parentIsLocalized: parentIsLocalized || tab.localized,
124
148
  version: version?.[tab.name]?.[locale]
125
149
  });
126
150
  });
@@ -128,16 +152,20 @@ export function countChangedFields({
128
152
  // Named tab
129
153
  count += countChangedFields({
130
154
  comparison: comparison?.[tab.name],
155
+ config,
131
156
  fields: tab.fields,
132
157
  locales,
158
+ parentIsLocalized: parentIsLocalized || tab.localized,
133
159
  version: version?.[tab.name]
134
160
  });
135
161
  } else {
136
162
  // Unnamed tab
137
163
  count += countChangedFields({
138
164
  comparison,
165
+ config,
139
166
  fields: tab.fields,
140
167
  locales,
168
+ parentIsLocalized: parentIsLocalized || tab.localized,
141
169
  version
142
170
  });
143
171
  }
@@ -161,8 +189,10 @@ export function countChangedFields({
161
189
  }
162
190
  export function countChangedFieldsInRows({
163
191
  comparisonRows = [],
192
+ config,
164
193
  field,
165
194
  locales,
195
+ parentIsLocalized,
166
196
  versionRows = []
167
197
  }) {
168
198
  let count = 0;
@@ -180,14 +210,17 @@ export function countChangedFieldsInRows({
180
210
  schemaPath: ''
181
211
  },
182
212
  comparisonRow,
213
+ config,
183
214
  field,
184
215
  row: i,
185
216
  versionRow
186
217
  });
187
218
  count += countChangedFields({
188
219
  comparison: comparisonRow,
220
+ config,
189
221
  fields: rowFields,
190
222
  locales,
223
+ parentIsLocalized: parentIsLocalized || field.localized,
191
224
  version: versionRow
192
225
  });
193
226
  i++;
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.js","names":["fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","fields","locales","version","count","forEach","field","name","fieldType","type","localized","locale","comparisonRows","versionRows","countChangedFieldsInRows","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientField } from 'payload'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n fields: ClientField[]\n locales: string[] | undefined\n version: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({ comparison, fields, locales, version }: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n const comparisonRows = comparison?.[field.name]?.[locale] ?? []\n const versionRows = version?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({ comparisonRows, field, locales, versionRows })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({ comparisonRows, field, locales, versionRows })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && field.localized) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(version?.[field.name], comparison?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n comparison,\n fields: field.fields,\n locales,\n version,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[field.name]?.[locale],\n fields: field.fields,\n locales,\n version: version?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n comparison: comparison?.[field.name],\n fields: field.fields,\n locales,\n version: version?.[field.name],\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[tab.name]?.[locale],\n fields: tab.fields,\n locales,\n version: version?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n comparison: comparison?.[tab.name],\n fields: tab.fields,\n locales,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n fields: tab.fields,\n locales,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n field,\n locales,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n fields: rowFields,\n locales,\n version: versionRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAChC,SAASC,yBAAyB,QAAQ;AAS1C;;;;AAIA,OAAO,SAASC,mBAAmB;EAAEC,UAAU;EAAEC,MAAM;EAAEC,OAAO;EAAEC;AAAO,CAAQ;EAC/E,IAAIC,KAAA,GAAQ;EAEZH,MAAA,CAAOI,OAAO,CAAEC,KAAA;IACd;IACA,IAAI,UAAUA,KAAA,IAASA,KAAA,CAAMC,IAAI,KAAK,MAAM;MAC1C;IACF;IACA,MAAMC,SAAA,GAAYF,KAAA,CAAMG,IAAI;IAC5B,QAAQD,SAAA;MACN;MACA;MACA,KAAK;MACL,KAAK;QAAU;UACb,IAAIN,OAAA,IAAWI,KAAA,CAAMI,SAAS,EAAE;YAC9BR,OAAA,CAAQG,OAAO,CAAEM,MAAA;cACf,MAAMC,cAAA,GAAiBZ,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA,CAAO,IAAI,EAAE;cAC/D,MAAME,WAAA,GAAcV,OAAA,GAAUG,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA,CAAO,IAAI,EAAE;cACzDP,KAAA,IAASU,wBAAA,CAAyB;gBAAEF,cAAA;gBAAgBN,KAAA;gBAAOJ,OAAA;gBAASW;cAAY;YAClF;UACF,OAAO;YACL,MAAMD,cAAA,GAAiBZ,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC,IAAI,EAAE;YACrD,MAAMM,WAAA,GAAcV,OAAA,GAAUG,KAAA,CAAMC,IAAI,CAAC,IAAI,EAAE;YAC/CH,KAAA,IAASU,wBAAA,CAAyB;cAAEF,cAAA;cAAgBN,KAAA;cAAOJ,OAAA;cAASW;YAAY;UAClF;UACA;QACF;MAEA;MACA,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;MACL,KAAK;QAAU;UACb;UACA,IAAIX,OAAA,IAAWI,KAAA,CAAMI,SAAS,EAAE;YAC9BR,OAAA,CAAQG,OAAO,CAAEM,MAAA;cACf,IACEd,eAAA,CAAgBM,OAAA,GAAUG,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA,CAAO,EAAEX,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA,CAAO,GACnF;gBACAP,KAAA;cACF;YACF;UACF,OAAO,IAAIP,eAAA,CAAgBM,OAAA,GAAUG,KAAA,CAAMC,IAAI,CAAC,EAAEP,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC,GAAG;YAC3EH,KAAA;UACF;UACA;QACF;MACA;MACA,KAAK;MACL,KAAK;QAAO;UACVA,KAAA,IAASL,kBAAA,CAAmB;YAC1BC,UAAA;YACAC,MAAA,EAAQK,KAAA,CAAML,MAAM;YACpBC,OAAA;YACAC;UACF;UAEA;QACF;MAEA;MACA,KAAK;QAAS;UACZ,IAAID,OAAA,IAAWI,KAAA,CAAMI,SAAS,EAAE;YAC9BR,OAAA,CAAQG,OAAO,CAAEM,MAAA;cACfP,KAAA,IAASL,kBAAA,CAAmB;gBAC1BC,UAAA,EAAYA,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA,CAAO;gBAC9CV,MAAA,EAAQK,KAAA,CAAML,MAAM;gBACpBC,OAAA;gBACAC,OAAA,EAASA,OAAA,GAAUG,KAAA,CAAMC,IAAI,CAAC,GAAGI,MAAA;cACnC;YACF;UACF,OAAO;YACLP,KAAA,IAASL,kBAAA,CAAmB;cAC1BC,UAAA,EAAYA,UAAA,GAAaM,KAAA,CAAMC,IAAI,CAAC;cACpCN,MAAA,EAAQK,KAAA,CAAML,MAAM;cACpBC,OAAA;cACAC,OAAA,EAASA,OAAA,GAAUG,KAAA,CAAMC,IAAI;YAC/B;UACF;UACA;QACF;MAEA;MACA;MACA,KAAK;QAAQ;UACXD,KAAA,CAAMS,IAAI,CAACV,OAAO,CAAEW,GAAA;YAClB,IAAI,UAAUA,GAAA,IAAOd,OAAA,IAAWc,GAAA,CAAIN,SAAS,EAAE;cAC7C;cACAR,OAAA,CAAQG,OAAO,CAAEM,MAAA;gBACfP,KAAA,IAASL,kBAAA,CAAmB;kBAC1BC,UAAA,EAAYA,UAAA,GAAagB,GAAA,CAAIT,IAAI,CAAC,GAAGI,MAAA,CAAO;kBAC5CV,MAAA,EAAQe,GAAA,CAAIf,MAAM;kBAClBC,OAAA;kBACAC,OAAA,EAASA,OAAA,GAAUa,GAAA,CAAIT,IAAI,CAAC,GAAGI,MAAA;gBACjC;cACF;YACF,OAAO,IAAI,UAAUK,GAAA,EAAK;cACxB;cACAZ,KAAA,IAASL,kBAAA,CAAmB;gBAC1BC,UAAA,EAAYA,UAAA,GAAagB,GAAA,CAAIT,IAAI,CAAC;gBAClCN,MAAA,EAAQe,GAAA,CAAIf,MAAM;gBAClBC,OAAA;gBACAC,OAAA,EAASA,OAAA,GAAUa,GAAA,CAAIT,IAAI;cAC7B;YACF,OAAO;cACL;cACAH,KAAA,IAASL,kBAAA,CAAmB;gBAC1BC,UAAA;gBACAC,MAAA,EAAQe,GAAA,CAAIf,MAAM;gBAClBC,OAAA;gBACAC;cACF;YACF;UACF;UACA;QACF;MAEA;MACA;MACA,KAAK;QAAM;UACT;QACF;MAEA;QAAS;UACP,MAAMc,gBAAA,GAA0BT,SAAA;UAChC,MAAM,IAAIU,KAAA,CAAM,iDAAiDC,MAAA,CAAOX,SAAA,GAAY;QACtF;IACF;EACF;EAEA,OAAOJ,KAAA;AACT;AASA,OAAO,SAASU,yBAAyB;EACvCF,cAAA,GAAiB,EAAE;EACnBN,KAAK;EACLJ,OAAO;EACPW,WAAA,GAAc;AAAE,CACa;EAC7B,IAAIT,KAAA,GAAQ;EACZ,IAAIgB,CAAA,GAAI;EAER,OAAOR,cAAc,CAACQ,CAAA,CAAE,IAAIP,WAAW,CAACO,CAAA,CAAE,EAAE;IAC1C,MAAMC,aAAA,GAAgBT,cAAA,GAAiBQ,CAAA,CAAE,IAAI,CAAC;IAC9C,MAAME,UAAA,GAAaT,WAAA,GAAcO,CAAA,CAAE,IAAI,CAAC;IAExC,MAAM;MAAEnB,MAAA,EAAQsB;IAAS,CAAE,GAAGzB,yBAAA,CAA0B;MACtD0B,gBAAA,EAAkB;QAAEf,IAAA,EAAM;QAAQR,MAAA,EAAQ,EAAE;QAAEwB,IAAA,EAAM;QAAIC,UAAA,EAAY;MAAG;MACvEL,aAAA;MACAf,KAAA;MACAqB,GAAA,EAAKP,CAAA;MACLE;IACF;IAEAlB,KAAA,IAASL,kBAAA,CAAmB;MAC1BC,UAAA,EAAYqB,aAAA;MACZpB,MAAA,EAAQsB,SAAA;MACRrB,OAAA;MACAC,OAAA,EAASmB;IACX;IAEAF,CAAA;EACF;EACA,OAAOhB,KAAA;AACT","ignoreList":[]}
1
+ {"version":3,"file":"countChangedFields.js","names":["fieldShouldBeLocalized","fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","config","fields","locales","parentIsLocalized","version","count","forEach","field","name","fieldType","type","locale","comparisonRows","versionRows","countChangedFieldsInRows","localized","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldShouldBeLocalized } from 'payload/shared'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n parentIsLocalized: boolean\n version: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({\n comparison,\n config,\n fields,\n locales,\n parentIsLocalized,\n version,\n}: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n const comparisonRows = comparison?.[field.name]?.[locale] ?? []\n const versionRows = version?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n versionRows,\n })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({\n comparisonRows,\n config,\n field,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n versionRows,\n })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(version?.[field.name], comparison?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n comparison,\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (locales && fieldShouldBeLocalized({ field, parentIsLocalized })) {\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[field.name]?.[locale],\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: version?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n comparison: comparison?.[field.name],\n config,\n fields: field.fields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: version?.[field.name],\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[tab.name]?.[locale],\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version: version?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n comparison: comparison?.[tab.name],\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n config,\n fields: tab.fields,\n locales,\n parentIsLocalized: parentIsLocalized || tab.localized,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n parentIsLocalized: boolean\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n config,\n field,\n locales,\n parentIsLocalized,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n config,\n fields: rowFields,\n locales,\n parentIsLocalized: parentIsLocalized || field.localized,\n version: versionRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,14 @@
1
- import type { ArrayFieldClient, BaseVersionField, BlocksFieldClient, ClientField, VersionField } from 'payload';
1
+ import type { ArrayFieldClient, BaseVersionField, BlocksFieldClient, ClientConfig, ClientField, VersionField } from 'payload';
2
2
  /**
3
3
  * Get the fields for a row in an iterable field for comparison.
4
4
  * - Array fields: the fields of the array field, because the fields are the same for each row.
5
5
  * - Blocks fields: the union of fields from the comparison and version row,
6
6
  * because the fields from the version and comparison rows may differ.
7
7
  */
8
- export declare function getFieldsForRowComparison({ baseVersionField, comparisonRow, field, row, versionRow, }: {
8
+ export declare function getFieldsForRowComparison({ baseVersionField, comparisonRow, config, field, row, versionRow, }: {
9
9
  baseVersionField: BaseVersionField;
10
10
  comparisonRow: any;
11
+ config: ClientConfig;
11
12
  field: ArrayFieldClient | BlocksFieldClient;
12
13
  row: number;
13
14
  versionRow: any;
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForRowComparison.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAIhB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,GAAG,EACH,UAAU,GACX,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,GAAG,CAAA;IAClB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,GAAG,CAAA;CAChB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CA2C3D"}
1
+ {"version":3,"file":"getFieldsForRowComparison.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAIhB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,GACX,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,GAAG,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,GAAG,CAAA;CAChB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAwD3D"}
@@ -8,6 +8,7 @@ import { getUniqueListBy } from 'payload/shared';
8
8
  export function getFieldsForRowComparison({
9
9
  baseVersionField,
10
10
  comparisonRow,
11
+ config,
11
12
  field,
12
13
  row,
13
14
  versionRow
@@ -19,18 +20,18 @@ export function getFieldsForRowComparison({
19
20
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
20
21
  } else if (field.type === 'blocks') {
21
22
  if (versionRow?.blockType === comparisonRow?.blockType) {
22
- const matchedBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
23
+ const matchedBlock = config?.blocksMap?.[versionRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === versionRow?.blockType) || {
23
24
  fields: []
24
- };
25
+ });
25
26
  fields = matchedBlock.fields;
26
27
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
27
28
  } else {
28
- const matchedVersionBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
29
+ const matchedVersionBlock = config?.blocksMap?.[versionRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === versionRow?.blockType) || {
29
30
  fields: []
30
- };
31
- const matchedComparisonBlock = 'blocks' in field && field.blocks?.find(block => block.slug === comparisonRow?.blockType) || {
31
+ });
32
+ const matchedComparisonBlock = config?.blocksMap?.[comparisonRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === comparisonRow?.blockType) || {
32
33
  fields: []
33
- };
34
+ });
34
35
  fields = getUniqueListBy([...matchedVersionBlock.fields, ...matchedComparisonBlock.fields], 'name');
35
36
  // buildVersionFields already merged the fields of the version and comparison rows together
36
37
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForRowComparison.js","names":["getUniqueListBy","getFieldsForRowComparison","baseVersionField","comparisonRow","field","row","versionRow","fields","versionFields","type","rows","length","blockType","matchedBlock","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type {\n ArrayFieldClient,\n BaseVersionField,\n BlocksFieldClient,\n ClientField,\n VersionField,\n} from 'payload'\n\nimport { getUniqueListBy } from 'payload/shared'\n\n/**\n * Get the fields for a row in an iterable field for comparison.\n * - Array fields: the fields of the array field, because the fields are the same for each row.\n * - Blocks fields: the union of fields from the comparison and version row,\n * because the fields from the version and comparison rows may differ.\n */\nexport function getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n field,\n row,\n versionRow,\n}: {\n baseVersionField: BaseVersionField\n comparisonRow: any\n field: ArrayFieldClient | BlocksFieldClient\n row: number\n versionRow: any\n}): { fields: ClientField[]; versionFields: VersionField[] } {\n let fields: ClientField[] = []\n let versionFields: VersionField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else if (field.type === 'blocks') {\n if (versionRow?.blockType === comparisonRow?.blockType) {\n const matchedBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === versionRow?.blockType)) || {\n fields: [],\n }\n\n fields = matchedBlock.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else {\n const matchedVersionBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === versionRow?.blockType)) || {\n fields: [],\n }\n const matchedComparisonBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === comparisonRow?.blockType)) || {\n fields: [],\n }\n\n fields = getUniqueListBy<ClientField>(\n [...matchedVersionBlock.fields, ...matchedComparisonBlock.fields],\n 'name',\n )\n\n // buildVersionFields already merged the fields of the version and comparison rows together\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n }\n }\n\n return { fields, versionFields }\n}\n"],"mappings":"AAQA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,gBAAgB;EAChBC,aAAa;EACbC,KAAK;EACLC,GAAG;EACHC;AAAU,CAOX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAC9B,IAAIC,aAAA,GAAgC,EAAE;EAEtC,IAAIJ,KAAA,CAAMK,IAAI,KAAK,WAAW,YAAYL,KAAA,EAAO;IAC/CG,MAAA,GAASH,KAAA,CAAMG,MAAM;IACrBC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;EAC7B,OAAO,IAAIH,KAAA,CAAMK,IAAI,KAAK,UAAU;IAClC,IAAIH,UAAA,EAAYM,SAAA,KAAcT,aAAA,EAAeS,SAAA,EAAW;MACtD,MAAMC,YAAA,GAAe,QAAC,IAAYT,KAAA,IAChCA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKX,UAAA,EAAYM,SAAA,KAAe;QACxEL,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASM,YAAA,CAAaN,MAAM;MAC5BC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;IAC7B,OAAO;MACL,MAAMW,mBAAA,GAAsB,QAAC,IAAYd,KAAA,IACvCA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKX,UAAA,EAAYM,SAAA,KAAe;QACxEL,MAAA,EAAQ;MACV;MACA,MAAMY,sBAAA,GAAyB,QAAC,IAAYf,KAAA,IAC1CA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKd,aAAA,EAAeS,SAAA,KAAe;QAC3EL,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASP,eAAA,CACP,C,GAAIkB,mBAAA,CAAoBX,MAAM,E,GAAKY,sBAAA,CAAuBZ,MAAM,CAAC,EACjE;MAGF;MACAC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;IAC7B;EACF;EAEA,OAAO;IAAEA,MAAA;IAAQC;EAAc;AACjC","ignoreList":[]}
1
+ {"version":3,"file":"getFieldsForRowComparison.js","names":["getUniqueListBy","getFieldsForRowComparison","baseVersionField","comparisonRow","config","field","row","versionRow","fields","versionFields","type","rows","length","blockType","matchedBlock","blocksMap","blockReferences","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type {\n ArrayFieldClient,\n BaseVersionField,\n BlocksFieldClient,\n ClientBlock,\n ClientConfig,\n ClientField,\n VersionField,\n} from 'payload'\n\nimport { getUniqueListBy } from 'payload/shared'\n\n/**\n * Get the fields for a row in an iterable field for comparison.\n * - Array fields: the fields of the array field, because the fields are the same for each row.\n * - Blocks fields: the union of fields from the comparison and version row,\n * because the fields from the version and comparison rows may differ.\n */\nexport function getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n config,\n field,\n row,\n versionRow,\n}: {\n baseVersionField: BaseVersionField\n comparisonRow: any\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n row: number\n versionRow: any\n}): { fields: ClientField[]; versionFields: VersionField[] } {\n let fields: ClientField[] = []\n let versionFields: VersionField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else if (field.type === 'blocks') {\n if (versionRow?.blockType === comparisonRow?.blockType) {\n const matchedBlock: ClientBlock =\n config?.blocksMap?.[versionRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === versionRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = matchedBlock.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else {\n const matchedVersionBlock =\n config?.blocksMap?.[versionRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === versionRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n const matchedComparisonBlock =\n config?.blocksMap?.[comparisonRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === comparisonRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = getUniqueListBy<ClientField>(\n [...matchedVersionBlock.fields, ...matchedComparisonBlock.fields],\n 'name',\n )\n\n // buildVersionFields already merged the fields of the version and comparison rows together\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n }\n }\n\n return { fields, versionFields }\n}\n"],"mappings":"AAUA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,gBAAgB;EAChBC,aAAa;EACbC,MAAM;EACNC,KAAK;EACLC,GAAG;EACHC;AAAU,CAQX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAC9B,IAAIC,aAAA,GAAgC,EAAE;EAEtC,IAAIJ,KAAA,CAAMK,IAAI,KAAK,WAAW,YAAYL,KAAA,EAAO;IAC/CG,MAAA,GAASH,KAAA,CAAMG,MAAM;IACrBC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;EAC7B,OAAO,IAAIH,KAAA,CAAMK,IAAI,KAAK,UAAU;IAClC,IAAIH,UAAA,EAAYM,SAAA,KAAcV,aAAA,EAAeU,SAAA,EAAW;MACtD,MAAMC,YAAA,GACJV,MAAA,EAAQW,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASM,YAAA,CAAaN,MAAM;MAC5BC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;IAC7B,OAAO;MACL,MAAMa,mBAAA,GACJjB,MAAA,EAAQW,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEF,MAAMc,sBAAA,GACJlB,MAAA,EAAQW,SAAA,GAAYZ,aAAA,EAAeU,SAAA,CAAU,KAC3C,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKjB,aAAA,EAAeU,SAAA,KAClE;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASR,eAAA,CACP,C,GAAIqB,mBAAA,CAAoBb,MAAM,E,GAAKc,sBAAA,CAAuBd,MAAM,CAAC,EACjE;MAGF;MACAC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;IAC7B;EACF;EAEA,OAAO;IAAEA,MAAA;IAAQC;EAAc;AACjC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Restore/index.tsx"],"names":[],"mappings":"AAeA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmH5B,CAAA;AAED,eAAe,OAAO,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Restore/index.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAA0C,MAAM,OAAO,CAAA;AAG9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,OAAO,cAAc,CAAA;AAKrB,QAAA,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqH5B,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { getTranslation } from '@payloadcms/translations';
5
- import { Button, Modal, PopupList, useConfig, useModal, useTranslation } from '@payloadcms/ui';
5
+ import { Button, Modal, PopupList, useConfig, useModal, useRouteTransition, useTranslation } from '@payloadcms/ui';
6
6
  import { formatAdminURL, requests } from '@payloadcms/ui/shared';
7
7
  import { useRouter } from 'next/navigation.js';
8
8
  import React, { Fragment, useCallback, useState } from 'react';
@@ -42,6 +42,9 @@ const Restore = ({
42
42
  t
43
43
  } = useTranslation();
44
44
  const [draft, setDraft] = useState(false);
45
+ const {
46
+ startRouteTransition
47
+ } = useRouteTransition();
45
48
  const restoreMessage = t('version:aboutToRestoreGlobal', {
46
49
  label: getTranslation(label, i18n),
47
50
  versionDate
@@ -73,11 +76,11 @@ const Restore = ({
73
76
  if (res.status === 200) {
74
77
  const json = await res.json();
75
78
  toast.success(json.message);
76
- router.push(redirectURL);
79
+ startRouteTransition(() => router.push(redirectURL));
77
80
  } else {
78
81
  toast.error(t('version:problemRestoringVersion'));
79
82
  }
80
- }, [fetchURL, redirectURL, t, i18n, router]);
83
+ }, [fetchURL, redirectURL, t, i18n, router, startRouteTransition]);
81
84
  return /*#__PURE__*/_jsxs(Fragment, {
82
85
  children: [/*#__PURE__*/_jsx("div", {
83
86
  className: [baseClass, className].filter(Boolean).join(' '),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getTranslation","Button","Modal","PopupList","useConfig","useModal","useTranslation","formatAdminURL","requests","useRouter","React","Fragment","useCallback","useState","toast","baseClass","modalSlug","Restore","className","collectionSlug","globalSlug","label","originalDocID","status","versionDate","versionID","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","toggleModal","processing","setProcessing","router","i18n","t","draft","setDraft","restoreMessage","fetchURL","redirectURL","canRestoreAsDraft","versions","drafts","path","handleRestore","res","post","headers","language","json","success","message","push","error","_jsxs","_jsx","filter","Boolean","join","buttonStyle","onClick","size","SubMenuPopupContent","ButtonGroup","slug","undefined","type"],"sources":["../../../../src/views/Version/Restore/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n ChevronIcon,\n Modal,\n Pill,\n Popup,\n PopupList,\n useConfig,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL, requests } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport './index.scss'\n\nconst baseClass = 'restore-version'\nconst modalSlug = 'restore-version'\n\nconst Restore: React.FC<Props> = ({\n className,\n collectionSlug,\n globalSlug,\n label,\n originalDocID,\n status,\n versionDate,\n versionID,\n}) => {\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { toggleModal } = useModal()\n const [processing, setProcessing] = useState(false)\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const [draft, setDraft] = useState(false)\n\n const restoreMessage = t('version:aboutToRestoreGlobal', {\n label: getTranslation(label, i18n),\n versionDate,\n })\n\n let fetchURL = `${serverURL}${apiRoute}`\n let redirectURL: string\n\n const canRestoreAsDraft = status !== 'draft' && collectionConfig?.versions?.drafts\n\n if (collectionSlug) {\n fetchURL = `${fetchURL}/${collectionSlug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${originalDocID}`,\n })\n }\n\n if (globalSlug) {\n fetchURL = `${fetchURL}/globals/${globalSlug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}`,\n })\n }\n\n const handleRestore = useCallback(async () => {\n setProcessing(true)\n\n const res = await requests.post(fetchURL, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (res.status === 200) {\n const json = await res.json()\n toast.success(json.message)\n router.push(redirectURL)\n } else {\n toast.error(t('version:problemRestoringVersion'))\n }\n }, [fetchURL, redirectURL, t, i18n, router])\n return (\n <Fragment>\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <Button\n buttonStyle=\"pill\"\n className={[canRestoreAsDraft && `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => toggleModal(modalSlug)}\n size=\"small\"\n SubMenuPopupContent={\n canRestoreAsDraft\n ? () => (\n <PopupList.ButtonGroup>\n <PopupList.Button onClick={() => [setDraft(true), toggleModal(modalSlug)]}>\n {t('version:restoreAsDraft')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n : null\n }\n >\n {t('version:restoreThisVersion')}\n </Button>\n </div>\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('version:confirmVersionRestoration')}</h1>\n <p>{restoreMessage}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={processing ? undefined : () => void handleRestore()}>\n {processing ? t('version:restoring') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </Fragment>\n )\n}\n\nexport default Restore\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","Button","Modal","PopupList","useConfig","useModal","useRouteTransition","useTranslation","formatAdminURL","requests","useRouter","React","Fragment","useCallback","useState","toast","baseClass","modalSlug","Restore","className","collectionSlug","globalSlug","label","originalDocID","status","versionDate","versionID","config","routes","admin","adminRoute","api","apiRoute","serverURL","getEntityConfig","collectionConfig","toggleModal","processing","setProcessing","router","i18n","t","draft","setDraft","startRouteTransition","restoreMessage","fetchURL","redirectURL","canRestoreAsDraft","versions","drafts","path","handleRestore","res","post","headers","language","json","success","message","push","error","_jsxs","_jsx","filter","Boolean","join","buttonStyle","onClick","size","SubMenuPopupContent","ButtonGroup","slug","undefined","type"],"sources":["../../../../src/views/Version/Restore/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n ChevronIcon,\n Modal,\n Pill,\n Popup,\n PopupList,\n useConfig,\n useModal,\n useRouteTransition,\n useTranslation,\n} from '@payloadcms/ui'\nimport { formatAdminURL, requests } from '@payloadcms/ui/shared'\nimport { useRouter } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport type { Props } from './types.js'\n\nimport './index.scss'\n\nconst baseClass = 'restore-version'\nconst modalSlug = 'restore-version'\n\nconst Restore: React.FC<Props> = ({\n className,\n collectionSlug,\n globalSlug,\n label,\n originalDocID,\n status,\n versionDate,\n versionID,\n}) => {\n const {\n config: {\n routes: { admin: adminRoute, api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const { toggleModal } = useModal()\n const [processing, setProcessing] = useState(false)\n const router = useRouter()\n const { i18n, t } = useTranslation()\n const [draft, setDraft] = useState(false)\n const { startRouteTransition } = useRouteTransition()\n\n const restoreMessage = t('version:aboutToRestoreGlobal', {\n label: getTranslation(label, i18n),\n versionDate,\n })\n\n let fetchURL = `${serverURL}${apiRoute}`\n let redirectURL: string\n\n const canRestoreAsDraft = status !== 'draft' && collectionConfig?.versions?.drafts\n\n if (collectionSlug) {\n fetchURL = `${fetchURL}/${collectionSlug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${originalDocID}`,\n })\n }\n\n if (globalSlug) {\n fetchURL = `${fetchURL}/globals/${globalSlug}/versions/${versionID}?draft=${draft}`\n redirectURL = formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}`,\n })\n }\n\n const handleRestore = useCallback(async () => {\n setProcessing(true)\n\n const res = await requests.post(fetchURL, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (res.status === 200) {\n const json = await res.json()\n toast.success(json.message)\n startRouteTransition(() => router.push(redirectURL))\n } else {\n toast.error(t('version:problemRestoringVersion'))\n }\n }, [fetchURL, redirectURL, t, i18n, router, startRouteTransition])\n\n return (\n <Fragment>\n <div className={[baseClass, className].filter(Boolean).join(' ')}>\n <Button\n buttonStyle=\"pill\"\n className={[canRestoreAsDraft && `${baseClass}__button`].filter(Boolean).join(' ')}\n onClick={() => toggleModal(modalSlug)}\n size=\"small\"\n SubMenuPopupContent={\n canRestoreAsDraft\n ? () => (\n <PopupList.ButtonGroup>\n <PopupList.Button onClick={() => [setDraft(true), toggleModal(modalSlug)]}>\n {t('version:restoreAsDraft')}\n </PopupList.Button>\n </PopupList.ButtonGroup>\n )\n : null\n }\n >\n {t('version:restoreThisVersion')}\n </Button>\n </div>\n <Modal className={`${baseClass}__modal`} slug={modalSlug}>\n <div className={`${baseClass}__wrapper`}>\n <div className={`${baseClass}__content`}>\n <h1>{t('version:confirmVersionRestoration')}</h1>\n <p>{restoreMessage}</p>\n </div>\n <div className={`${baseClass}__controls`}>\n <Button\n buttonStyle=\"secondary\"\n onClick={processing ? undefined : () => toggleModal(modalSlug)}\n size=\"large\"\n type=\"button\"\n >\n {t('general:cancel')}\n </Button>\n <Button onClick={processing ? undefined : () => void handleRestore()}>\n {processing ? t('version:restoring') : t('general:confirm')}\n </Button>\n </div>\n </div>\n </Modal>\n </Fragment>\n )\n}\n\nexport default Restore\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Version/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,2BAA2B,EAG5B,MAAM,SAAS,CAAA;AAYhB,eAAO,MAAM,WAAW,EAAE,2BAA2B,CAAC,iBAAiB,CA6OtE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/views/Version/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,2BAA2B,EAG5B,MAAM,SAAS,CAAA;AAYhB,eAAO,MAAM,WAAW,EAAE,2BAA2B,CAAC,iBAAiB,CA8OtE,CAAA"}
@@ -211,6 +211,7 @@ export const VersionView = async props => {
211
211
  i18n,
212
212
  modifiedOnly,
213
213
  parentIndexPath: '',
214
+ parentIsLocalized: false,
214
215
  parentPath: '',
215
216
  parentSchemaPath: '',
216
217
  req,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["getClientConfig","getClientSchemaMap","getSchemaMap","notFound","React","getLatestVersion","DefaultVersionView","RenderDiff","VersionView","props","i18n","initPageResult","routeSegments","searchParams","collectionConfig","docID","id","globalConfig","permissions","req","payload","config","user","versionID","length","collectionSlug","slug","globalSlug","localeCodesFromParams","localeCodes","JSON","parse","comparisonVersionIDFromParams","compareValue","modifiedOnly","localization","docPermissions","doc","latestPublishedVersion","latestDraftVersion","collections","findVersionByID","collection","depth","locale","overrideAccess","versions","drafts","type","parentID","status","error","globals","findGlobalVersionByID","publishedNewerThanDraft","updatedAt","selectedLocales","code","locales","find","push","label","value","latestVersion","comparisonDoc","schemaMap","clientSchemaMap","importMap","RenderedDiff","comparisonSiblingData","version","customDiffComponents","entitySlug","fieldPermissions","fields","parentIndexPath","parentPath","parentSchemaPath","map","versionSiblingData","createdAt","_jsx","canUpdate","update"],"sources":["../../../src/views/Version/index.tsx"],"sourcesContent":["import type {\n Document,\n EditViewComponent,\n OptionObject,\n PayloadServerReactComponent,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { getClientSchemaMap } from '@payloadcms/ui/utilities/getClientSchemaMap'\nimport { getSchemaMap } from '@payloadcms/ui/utilities/getSchemaMap'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { getLatestVersion } from '../Versions/getLatestVersion.js'\nimport { DefaultVersionView } from './Default/index.js'\nimport { RenderDiff } from './RenderFieldsToDiff/index.js'\n\nexport const VersionView: PayloadServerReactComponent<EditViewComponent> = async (props) => {\n const { i18n, initPageResult, routeSegments, searchParams } = props\n\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n permissions,\n req,\n req: { payload, payload: { config } = {}, user } = {},\n } = initPageResult\n\n const versionID = routeSegments[routeSegments.length - 1]\n\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const localeCodesFromParams = searchParams.localeCodes\n ? JSON.parse(searchParams.localeCodes as string)\n : null\n const comparisonVersionIDFromParams: string = searchParams.compareValue as string\n\n const modifiedOnly: boolean = searchParams.modifiedOnly === 'true'\n\n const { localization } = config\n\n let docPermissions: SanitizedCollectionPermission | SanitizedGlobalPermission\n let slug: string\n\n let doc: Document\n let latestPublishedVersion = null\n let latestDraftVersion = null\n\n if (collectionSlug) {\n // /collections/:slug/:id/versions/:versionID\n slug = collectionSlug\n docPermissions = permissions.collections[collectionSlug]\n\n try {\n doc = await payload.findVersionByID({\n id: versionID,\n collection: slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (collectionConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n if (globalSlug) {\n // /globals/:slug/versions/:versionID\n slug = globalSlug\n docPermissions = permissions.globals[globalSlug]\n\n try {\n doc = await payload.findGlobalVersionByID({\n id: versionID,\n slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (globalConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n const publishedNewerThanDraft = latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n\n if (publishedNewerThanDraft) {\n latestDraftVersion = {\n id: '',\n updatedAt: '',\n }\n }\n\n const selectedLocales: OptionObject[] = []\n if (localization) {\n if (localeCodesFromParams) {\n for (const code of localeCodesFromParams) {\n const locale = localization.locales.find((locale) => locale.code === code)\n if (locale) {\n selectedLocales.push({\n label: locale.label,\n value: locale.code,\n })\n }\n }\n } else {\n for (const { code, label } of localization.locales) {\n selectedLocales.push({\n label,\n value: code,\n })\n }\n }\n }\n\n const latestVersion =\n latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n ? latestPublishedVersion\n : latestDraftVersion\n\n if (!doc) {\n return notFound()\n }\n\n /**\n * The doc to compare this version to is either the latest version, or a specific version if specified in the URL.\n * This specific version is added to the URL when a user selects a version to compare to.\n */\n let comparisonDoc = null\n if (comparisonVersionIDFromParams) {\n if (collectionSlug) {\n comparisonDoc = await payload.findVersionByID({\n id: comparisonVersionIDFromParams,\n collection: collectionSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n } else {\n comparisonDoc = await payload.findGlobalVersionByID({\n id: comparisonVersionIDFromParams,\n slug: globalSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n }\n } else {\n comparisonDoc = latestVersion\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config: payload.config, i18n, importMap: payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const RenderedDiff = RenderDiff({\n clientSchemaMap,\n comparisonSiblingData: comparisonDoc?.version,\n customDiffComponents: {},\n entitySlug: collectionSlug || globalSlug,\n fieldPermissions: docPermissions?.fields,\n fields: (collectionConfig || globalConfig)?.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: '',\n parentPath: '',\n parentSchemaPath: '',\n req,\n selectedLocales: selectedLocales && selectedLocales.map((locale) => locale.value),\n versionSiblingData: globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version,\n })\n\n return (\n <DefaultVersionView\n canUpdate={docPermissions?.update}\n doc={doc}\n latestDraftVersion={latestDraftVersion?.id}\n latestPublishedVersion={latestPublishedVersion?.id}\n modifiedOnly={modifiedOnly}\n RenderedDiff={RenderedDiff}\n selectedLocales={selectedLocales}\n versionID={versionID}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getClientConfig","getClientSchemaMap","getSchemaMap","notFound","React","getLatestVersion","DefaultVersionView","RenderDiff","VersionView","props","i18n","initPageResult","routeSegments","searchParams","collectionConfig","docID","id","globalConfig","permissions","req","payload","config","user","versionID","length","collectionSlug","slug","globalSlug","localeCodesFromParams","localeCodes","JSON","parse","comparisonVersionIDFromParams","compareValue","modifiedOnly","localization","docPermissions","doc","latestPublishedVersion","latestDraftVersion","collections","findVersionByID","collection","depth","locale","overrideAccess","versions","drafts","type","parentID","status","error","globals","findGlobalVersionByID","publishedNewerThanDraft","updatedAt","selectedLocales","code","locales","find","push","label","value","latestVersion","comparisonDoc","schemaMap","clientSchemaMap","importMap","RenderedDiff","comparisonSiblingData","version","customDiffComponents","entitySlug","fieldPermissions","fields","parentIndexPath","parentIsLocalized","parentPath","parentSchemaPath","map","versionSiblingData","createdAt","_jsx","canUpdate","update"],"sources":["../../../src/views/Version/index.tsx"],"sourcesContent":["import type {\n Document,\n EditViewComponent,\n OptionObject,\n PayloadServerReactComponent,\n SanitizedCollectionPermission,\n SanitizedGlobalPermission,\n} from 'payload'\n\nimport { getClientConfig } from '@payloadcms/ui/utilities/getClientConfig'\nimport { getClientSchemaMap } from '@payloadcms/ui/utilities/getClientSchemaMap'\nimport { getSchemaMap } from '@payloadcms/ui/utilities/getSchemaMap'\nimport { notFound } from 'next/navigation.js'\nimport React from 'react'\n\nimport { getLatestVersion } from '../Versions/getLatestVersion.js'\nimport { DefaultVersionView } from './Default/index.js'\nimport { RenderDiff } from './RenderFieldsToDiff/index.js'\n\nexport const VersionView: PayloadServerReactComponent<EditViewComponent> = async (props) => {\n const { i18n, initPageResult, routeSegments, searchParams } = props\n\n const {\n collectionConfig,\n docID: id,\n globalConfig,\n permissions,\n req,\n req: { payload, payload: { config } = {}, user } = {},\n } = initPageResult\n\n const versionID = routeSegments[routeSegments.length - 1]\n\n const collectionSlug = collectionConfig?.slug\n const globalSlug = globalConfig?.slug\n\n const localeCodesFromParams = searchParams.localeCodes\n ? JSON.parse(searchParams.localeCodes as string)\n : null\n const comparisonVersionIDFromParams: string = searchParams.compareValue as string\n\n const modifiedOnly: boolean = searchParams.modifiedOnly === 'true'\n\n const { localization } = config\n\n let docPermissions: SanitizedCollectionPermission | SanitizedGlobalPermission\n let slug: string\n\n let doc: Document\n let latestPublishedVersion = null\n let latestDraftVersion = null\n\n if (collectionSlug) {\n // /collections/:slug/:id/versions/:versionID\n slug = collectionSlug\n docPermissions = permissions.collections[collectionSlug]\n\n try {\n doc = await payload.findVersionByID({\n id: versionID,\n collection: slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (collectionConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'collection',\n locale: 'all',\n overrideAccess: false,\n parentID: id,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n if (globalSlug) {\n // /globals/:slug/versions/:versionID\n slug = globalSlug\n docPermissions = permissions.globals[globalSlug]\n\n try {\n doc = await payload.findGlobalVersionByID({\n id: versionID,\n slug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n user,\n })\n\n if (globalConfig?.versions?.drafts) {\n latestDraftVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'draft',\n })\n latestPublishedVersion = await getLatestVersion({\n slug,\n type: 'global',\n locale: 'all',\n overrideAccess: false,\n payload,\n req,\n status: 'published',\n })\n }\n } catch (error) {\n return notFound()\n }\n }\n\n const publishedNewerThanDraft = latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n\n if (publishedNewerThanDraft) {\n latestDraftVersion = {\n id: '',\n updatedAt: '',\n }\n }\n\n const selectedLocales: OptionObject[] = []\n if (localization) {\n if (localeCodesFromParams) {\n for (const code of localeCodesFromParams) {\n const locale = localization.locales.find((locale) => locale.code === code)\n if (locale) {\n selectedLocales.push({\n label: locale.label,\n value: locale.code,\n })\n }\n }\n } else {\n for (const { code, label } of localization.locales) {\n selectedLocales.push({\n label,\n value: code,\n })\n }\n }\n }\n\n const latestVersion =\n latestPublishedVersion?.updatedAt > latestDraftVersion?.updatedAt\n ? latestPublishedVersion\n : latestDraftVersion\n\n if (!doc) {\n return notFound()\n }\n\n /**\n * The doc to compare this version to is either the latest version, or a specific version if specified in the URL.\n * This specific version is added to the URL when a user selects a version to compare to.\n */\n let comparisonDoc = null\n if (comparisonVersionIDFromParams) {\n if (collectionSlug) {\n comparisonDoc = await payload.findVersionByID({\n id: comparisonVersionIDFromParams,\n collection: collectionSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n } else {\n comparisonDoc = await payload.findGlobalVersionByID({\n id: comparisonVersionIDFromParams,\n slug: globalSlug,\n depth: 0,\n locale: 'all',\n overrideAccess: false,\n req,\n })\n }\n } else {\n comparisonDoc = latestVersion\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({ config: payload.config, i18n, importMap: payload.importMap }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const RenderedDiff = RenderDiff({\n clientSchemaMap,\n comparisonSiblingData: comparisonDoc?.version,\n customDiffComponents: {},\n entitySlug: collectionSlug || globalSlug,\n fieldPermissions: docPermissions?.fields,\n fields: (collectionConfig || globalConfig)?.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: '',\n parentIsLocalized: false,\n parentPath: '',\n parentSchemaPath: '',\n req,\n selectedLocales: selectedLocales && selectedLocales.map((locale) => locale.value),\n versionSiblingData: globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version,\n })\n\n return (\n <DefaultVersionView\n canUpdate={docPermissions?.update}\n doc={doc}\n latestDraftVersion={latestDraftVersion?.id}\n latestPublishedVersion={latestPublishedVersion?.id}\n modifiedOnly={modifiedOnly}\n RenderedDiff={RenderedDiff}\n selectedLocales={selectedLocales}\n versionID={versionID}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Versions/cells/CreatedAt/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,KAAK,kBAAkB,GAAG;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;KAClC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoCtD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Versions/cells/CreatedAt/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,KAAK,kBAAkB,GAAG;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;QACnB,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;KAClC,CAAA;CACF,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAoCtD,CAAA"}
@@ -2,11 +2,9 @@
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
- import { useConfig, useTranslation } from '@payloadcms/ui';
5
+ import { Link, useConfig, useTranslation } from '@payloadcms/ui';
6
6
  import { formatAdminURL, formatDate } from '@payloadcms/ui/shared';
7
- import LinkImport from 'next/link.js';
8
7
  import React from 'react';
9
- const Link = LinkImport.default || LinkImport;
10
8
  export const CreatedAtCell = t0 => {
11
9
  const $ = _c(11);
12
10
  const {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useConfig","useTranslation","formatAdminURL","formatDate","LinkImport","React","Link","default","CreatedAtCell","t0","$","collectionSlug","docID","globalSlug","rowData","t1","t2","undefined","id","updatedAt","config","t3","admin","t4","routes","t5","dateFormat","adminRoute","i18n","t6","to","_jsx","href","prefetch","children","date","pattern"],"sources":["../../../../../src/views/Versions/cells/CreatedAt/index.tsx"],"sourcesContent":["'use client'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL, formatDate } from '@payloadcms/ui/shared'\nimport LinkImport from 'next/link.js'\nimport React from 'react'\n\nconst Link = (LinkImport.default || LinkImport) as unknown as typeof LinkImport.default\n\ntype CreatedAtCellProps = {\n collectionSlug?: string\n docID?: number | string\n globalSlug?: string\n rowData?: {\n id: number | string\n updatedAt: Date | number | string\n }\n}\n\nexport const CreatedAtCell: React.FC<CreatedAtCellProps> = ({\n collectionSlug,\n docID,\n globalSlug,\n rowData: { id, updatedAt } = {},\n}) => {\n const {\n config: {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n\n let to: string\n\n if (collectionSlug) {\n to = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${docID}/versions/${id}`,\n })\n }\n\n if (globalSlug) {\n to = formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}/versions/${id}`,\n })\n }\n\n return (\n <Link href={to} prefetch={false}>\n {formatDate({ date: updatedAt, i18n, pattern: dateFormat })}\n </Link>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,SAAS,EAAEC,cAAc,QAAQ;AAC1C,SAASC,cAAc,EAAEC,UAAU,QAAQ;AAC3C,OAAOC,UAAA,MAAgB;AACvB,OAAOC,KAAA,MAAW;AAElB,MAAMC,IAAA,GAAQF,UAAA,CAAWG,OAAO,IAAIH,UAAA;AAYpC,OAAO,MAAMI,aAAA,GAA8CC,EAAA;EAAA,MAAAC,CAAA,GAAAX,EAAA;EAAC;IAAAY,cAAA;IAAAC,KAAA;IAAAC,UAAA;IAAAC,OAAA,EAAAC;EAAA,IAAAN,EAK3D;EAAA,IAAAO,EAAA;EAAA,IAAAN,CAAA,QAAAK,EAAA;IADUC,EAAA,GAAAD,EAAsB,KAAAE,SAAA,QAAtBF,EAAsB;IAAAL,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAtB;IAAAQ,EAAA;IAAAC;EAAA,IAAAH,EAAsB;EAE/B;IAAAI,MAAA,EAAAC;EAAA,IAKIrB,SAAA;EAJM;IAAAsB,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAJ,EAGP;EAFQ;IAAAK;EAAA,IAAAH,EAAc;EACb;IAAAD,KAAA,EAAAK;EAAA,IAAAF,EAAqB;EAIjC;IAAAG;EAAA,IAAiB3B,cAAA;EAAA,IAAA4B,EAAA;EAAA,IAAAnB,CAAA,QAAAiB,UAAA,IAAAjB,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAgB,UAAA,IAAAhB,CAAA,QAAAE,KAAA,IAAAF,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAkB,IAAA,IAAAlB,CAAA,QAAAQ,EAAA,IAAAR,CAAA,QAAAS,SAAA;IAEbW,GAAA,CAAAA,EAAA;IAAA,IAEAnB,cAAA;MACFmB,EAAA,CAAAA,CAAA,CAAKA;QAAAA;QAAAA,KAAA,CAEGA,gBAAgBnB,cAAA,IAAkBC,KAAA,aAAkBM,EAAA;MAAI,CAChE;IAHA;IAAA,IAMEL,UAAA;MACFiB,EAAA,CAAAA,CAAA,CAAKA;QAAAA;QAAAA,KAAA,CAEGA,YAAYjB,UAAA,aAAuBK,EAAA;MAAI,CAC/C;IAHA;IAOAW,EAAA,GAAAE,IAAA,CAAAzB,IAAA;MAAA0B,IAAA,EAAYF,EAAA;MAAAG,QAAA;MAAAC,QAAA,EACT/B,UAAA;QAAAgC,IAAA,EAAmBhB,SAAA;QAAAS,IAAA;QAAAQ,OAAA,EAA0BV;MAAA,CAAW;IAAA,C;;;;;;;;;;;;;SAD3DG,E;CAIJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","Link","useConfig","useTranslation","formatAdminURL","formatDate","React","CreatedAtCell","t0","$","collectionSlug","docID","globalSlug","rowData","t1","t2","undefined","id","updatedAt","config","t3","admin","t4","routes","t5","dateFormat","adminRoute","i18n","t6","to","_jsx","href","prefetch","children","date","pattern"],"sources":["../../../../../src/views/Versions/cells/CreatedAt/index.tsx"],"sourcesContent":["'use client'\nimport { Link, useConfig, useTranslation } from '@payloadcms/ui'\nimport { formatAdminURL, formatDate } from '@payloadcms/ui/shared'\nimport React from 'react'\n\ntype CreatedAtCellProps = {\n collectionSlug?: string\n docID?: number | string\n globalSlug?: string\n rowData?: {\n id: number | string\n updatedAt: Date | number | string\n }\n}\n\nexport const CreatedAtCell: React.FC<CreatedAtCellProps> = ({\n collectionSlug,\n docID,\n globalSlug,\n rowData: { id, updatedAt } = {},\n}) => {\n const {\n config: {\n admin: { dateFormat },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n\n let to: string\n\n if (collectionSlug) {\n to = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${docID}/versions/${id}`,\n })\n }\n\n if (globalSlug) {\n to = formatAdminURL({\n adminRoute,\n path: `/globals/${globalSlug}/versions/${id}`,\n })\n }\n\n return (\n <Link href={to} prefetch={false}>\n {formatDate({ date: updatedAt, i18n, pattern: dateFormat })}\n </Link>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,IAAI,EAAEC,SAAS,EAAEC,cAAc,QAAQ;AAChD,SAASC,cAAc,EAAEC,UAAU,QAAQ;AAC3C,OAAOC,KAAA,MAAW;AAYlB,OAAO,MAAMC,aAAA,GAA8CC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU,cAAA;IAAAC,KAAA;IAAAC,UAAA;IAAAC,OAAA,EAAAC;EAAA,IAAAN,EAK3D;EAAA,IAAAO,EAAA;EAAA,IAAAN,CAAA,QAAAK,EAAA;IADUC,EAAA,GAAAD,EAAsB,KAAAE,SAAA,QAAtBF,EAAsB;IAAAL,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAAtB;IAAAQ,EAAA;IAAAC;EAAA,IAAAH,EAAsB;EAE/B;IAAAI,MAAA,EAAAC;EAAA,IAKIlB,SAAA;EAJM;IAAAmB,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAJ,EAGP;EAFQ;IAAAK;EAAA,IAAAH,EAAc;EACb;IAAAD,KAAA,EAAAK;EAAA,IAAAF,EAAqB;EAIjC;IAAAG;EAAA,IAAiBxB,cAAA;EAAA,IAAAyB,EAAA;EAAA,IAAAnB,CAAA,QAAAiB,UAAA,IAAAjB,CAAA,QAAAC,cAAA,IAAAD,CAAA,QAAAgB,UAAA,IAAAhB,CAAA,QAAAE,KAAA,IAAAF,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAkB,IAAA,IAAAlB,CAAA,QAAAQ,EAAA,IAAAR,CAAA,QAAAS,SAAA;IAEbW,GAAA,CAAAA,EAAA;IAAA,IAEAnB,cAAA;MACFmB,EAAA,CAAAA,CAAA,CAAKA;QAAAA;QAAAA,KAAA,CAEGA,gBAAgBnB,cAAA,IAAkBC,KAAA,aAAkBM,EAAA;MAAI,CAChE;IAHA;IAAA,IAMEL,UAAA;MACFiB,EAAA,CAAAA,CAAA,CAAKA;QAAAA;QAAAA,KAAA,CAEGA,YAAYjB,UAAA,aAAuBK,EAAA;MAAI,CAC/C;IAHA;IAOAW,EAAA,GAAAE,IAAA,CAAA7B,IAAA;MAAA8B,IAAA,EAAYF,EAAA;MAAAG,QAAA;MAAAC,QAAA,EACT5B,UAAA;QAAA6B,IAAA,EAAmBhB,SAAA;QAAAS,IAAA;QAAAQ,OAAA,EAA0BV;MAAA,CAAW;IAAA,C;;;;;;;;;;;;;SAD3DG,E;CAIJ","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.24.0-canary.72057b1",
3
+ "version": "3.24.0-canary.7d9fbaf",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -80,9 +80,9 @@
80
80
  "sass": "1.77.4",
81
81
  "sonner": "^1.7.0",
82
82
  "uuid": "10.0.0",
83
- "@payloadcms/graphql": "3.24.0-canary.72057b1",
84
- "@payloadcms/translations": "3.24.0-canary.72057b1",
85
- "@payloadcms/ui": "3.24.0-canary.72057b1"
83
+ "@payloadcms/graphql": "3.24.0-canary.7d9fbaf",
84
+ "@payloadcms/translations": "3.24.0-canary.7d9fbaf",
85
+ "@payloadcms/ui": "3.24.0-canary.7d9fbaf"
86
86
  },
87
87
  "devDependencies": {
88
88
  "@babel/cli": "7.26.4",
@@ -101,12 +101,12 @@
101
101
  "eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
102
102
  "swc-plugin-transform-remove-imports": "3.1.0",
103
103
  "@payloadcms/eslint-config": "3.9.0",
104
- "payload": "3.24.0-canary.72057b1"
104
+ "payload": "3.24.0-canary.7d9fbaf"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "graphql": "^16.8.1",
108
108
  "next": "^15.0.0",
109
- "payload": "3.24.0-canary.72057b1"
109
+ "payload": "3.24.0-canary.7d9fbaf"
110
110
  },
111
111
  "engines": {
112
112
  "node": "^18.20.2 || >=20.9.0"