@payloadcms/next 3.20.0-canary.0e01b65 → 3.20.0-canary.260f830

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 (90) hide show
  1. package/dist/prod/styles.css +1 -1
  2. package/dist/views/Version/Default/index.d.ts.map +1 -1
  3. package/dist/views/Version/Default/index.js +159 -89
  4. package/dist/views/Version/Default/index.js.map +1 -1
  5. package/dist/views/Version/Default/types.d.ts +4 -4
  6. package/dist/views/Version/Default/types.d.ts.map +1 -1
  7. package/dist/views/Version/Default/types.js.map +1 -1
  8. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts +2 -2
  9. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -1
  10. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +31 -54
  11. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  12. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts +3 -3
  13. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -1
  14. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +35 -59
  15. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  16. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +2 -2
  17. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  18. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +65 -97
  19. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  20. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +2 -1
  21. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  22. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +15 -17
  23. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  24. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts +2 -2
  25. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts.map +1 -1
  26. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +24 -7
  27. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  28. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +2 -1
  29. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  30. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +27 -56
  31. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  32. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +2 -1
  33. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  34. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +80 -137
  35. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  36. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +2 -1
  37. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  38. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +36 -71
  39. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  40. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +22 -2
  41. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  42. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +0 -2
  43. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  44. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +21 -0
  45. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -0
  46. package/dist/views/Version/RenderFieldsToDiff/fields/types.js +2 -0
  47. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -0
  48. package/dist/views/Version/RenderFieldsToDiff/index.d.ts +4 -2
  49. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  50. package/dist/views/Version/RenderFieldsToDiff/index.js +111 -8
  51. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  52. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +20 -2
  53. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +1 -1
  54. package/dist/views/Version/RenderFieldsToDiff/types.js.map +1 -1
  55. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  56. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +1 -7
  57. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  58. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +3 -8
  59. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
  60. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +3 -12
  61. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  62. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +9 -27
  63. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -1
  64. package/dist/views/Version/SelectComparison/index.d.ts.map +1 -1
  65. package/dist/views/Version/SelectComparison/index.js +3 -7
  66. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  67. package/dist/views/Version/index.d.ts.map +1 -1
  68. package/dist/views/Version/index.js +15 -117
  69. package/dist/views/Version/index.js.map +1 -1
  70. package/dist/views/Versions/getLatestVersion.d.ts +1 -4
  71. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -1
  72. package/dist/views/Versions/getLatestVersion.js +0 -6
  73. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  74. package/package.json +8 -8
  75. package/dist/views/Version/Default/SelectedLocalesContext.d.ts +0 -8
  76. package/dist/views/Version/Default/SelectedLocalesContext.d.ts.map +0 -1
  77. package/dist/views/Version/Default/SelectedLocalesContext.js +0 -10
  78. package/dist/views/Version/Default/SelectedLocalesContext.js.map +0 -1
  79. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts +0 -6
  80. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +0 -1
  81. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +0 -36
  82. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +0 -1
  83. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts +0 -30
  84. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +0 -1
  85. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -300
  86. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +0 -1
  87. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.d.ts +0 -27
  88. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.d.ts.map +0 -1
  89. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js +0 -30
  90. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAW7D,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAuB3E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/index.tsx"],"names":[],"mappings":"AASA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;CAqB1B,CAAA"}
@@ -15,7 +15,6 @@ export const diffComponents = {
15
15
  date: Text,
16
16
  email: Text,
17
17
  group: Group,
18
- join: null,
19
18
  json: Text,
20
19
  number: Text,
21
20
  point: Text,
@@ -27,7 +26,6 @@ export const diffComponents = {
27
26
  tabs: Tabs,
28
27
  text: Text,
29
28
  textarea: Text,
30
- ui: null,
31
29
  upload: Relationship
32
30
  };
33
31
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Collapsible","Group","Iterable","Relationship","Row","Select","Tabs","Text","diffComponents","array","blocks","checkbox","code","collapsible","date","email","group","join","json","number","point","radio","relationship","richText","row","select","tabs","text","textarea","ui","upload"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/index.tsx"],"sourcesContent":["import type { DiffComponentProps, FieldTypes } from 'payload'\n\nimport { Collapsible } from './Collapsible/index.js'\nimport { Group } from './Group/index.js'\nimport { Iterable } from './Iterable/index.js'\nimport { Relationship } from './Relationship/index.js'\nimport { Row } from './Row/index.js'\nimport { Select } from './Select/index.js'\nimport { Tabs } from './Tabs/index.js'\nimport { Text } from './Text/index.js'\n\nexport const diffComponents: Record<FieldTypes, React.FC<DiffComponentProps>> = {\n array: Iterable,\n blocks: Iterable,\n checkbox: Text,\n code: Text,\n collapsible: Collapsible,\n date: Text,\n email: Text,\n group: Group,\n join: null,\n json: Text,\n number: Text,\n point: Text,\n radio: Select,\n relationship: Relationship,\n richText: Text,\n row: Row,\n select: Select,\n tabs: Tabs,\n text: Text,\n textarea: Text,\n ui: null,\n upload: Relationship,\n}\n"],"mappings":"AAEA,SAASA,WAAW,QAAQ;AAC5B,SAASC,KAAK,QAAQ;AACtB,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,GAAG,QAAQ;AACpB,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AACrB,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,cAAA,GAAmE;EAC9EC,KAAA,EAAOP,QAAA;EACPQ,MAAA,EAAQR,QAAA;EACRS,QAAA,EAAUJ,IAAA;EACVK,IAAA,EAAML,IAAA;EACNM,WAAA,EAAab,WAAA;EACbc,IAAA,EAAMP,IAAA;EACNQ,KAAA,EAAOR,IAAA;EACPS,KAAA,EAAOf,KAAA;EACPgB,IAAA,EAAM;EACNC,IAAA,EAAMX,IAAA;EACNY,MAAA,EAAQZ,IAAA;EACRa,KAAA,EAAOb,IAAA;EACPc,KAAA,EAAOhB,MAAA;EACPiB,YAAA,EAAcnB,YAAA;EACdoB,QAAA,EAAUhB,IAAA;EACViB,GAAA,EAAKpB,GAAA;EACLqB,MAAA,EAAQpB,MAAA;EACRqB,IAAA,EAAMpB,IAAA;EACNqB,IAAA,EAAMpB,IAAA;EACNqB,QAAA,EAAUrB,IAAA;EACVsB,EAAA,EAAI;EACJC,MAAA,EAAQ3B;AACV","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["Collapsible","Group","Iterable","Relationship","Row","Select","Tabs","Text","diffComponents","array","blocks","checkbox","code","collapsible","date","email","group","json","number","point","radio","relationship","richText","row","select","tabs","text","textarea","upload"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/index.tsx"],"sourcesContent":["import { Collapsible } from './Collapsible/index.js'\nimport { Group } from './Group/index.js'\nimport { Iterable } from './Iterable/index.js'\nimport { Relationship } from './Relationship/index.js'\nimport { Row } from './Row/index.js'\nimport { Select } from './Select/index.js'\nimport { Tabs } from './Tabs/index.js'\nimport { Text } from './Text/index.js'\n\nexport const diffComponents = {\n array: Iterable,\n blocks: Iterable,\n checkbox: Text,\n code: Text,\n collapsible: Collapsible,\n date: Text,\n email: Text,\n group: Group,\n json: Text,\n number: Text,\n point: Text,\n radio: Select,\n relationship: Relationship,\n richText: Text,\n row: Row,\n select: Select,\n tabs: Tabs,\n text: Text,\n textarea: Text,\n upload: Relationship,\n}\n"],"mappings":"AAAA,SAASA,WAAW,QAAQ;AAC5B,SAASC,KAAK,QAAQ;AACtB,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,GAAG,QAAQ;AACpB,SAASC,MAAM,QAAQ;AACvB,SAASC,IAAI,QAAQ;AACrB,SAASC,IAAI,QAAQ;AAErB,OAAO,MAAMC,cAAA,GAAiB;EAC5BC,KAAA,EAAOP,QAAA;EACPQ,MAAA,EAAQR,QAAA;EACRS,QAAA,EAAUJ,IAAA;EACVK,IAAA,EAAML,IAAA;EACNM,WAAA,EAAab,WAAA;EACbc,IAAA,EAAMP,IAAA;EACNQ,KAAA,EAAOR,IAAA;EACPS,KAAA,EAAOf,KAAA;EACPgB,IAAA,EAAMV,IAAA;EACNW,MAAA,EAAQX,IAAA;EACRY,KAAA,EAAOZ,IAAA;EACPa,KAAA,EAAOf,MAAA;EACPgB,YAAA,EAAclB,YAAA;EACdmB,QAAA,EAAUf,IAAA;EACVgB,GAAA,EAAKnB,GAAA;EACLoB,MAAA,EAAQnB,MAAA;EACRoB,IAAA,EAAMnB,IAAA;EACNoB,IAAA,EAAMnB,IAAA;EACNoB,QAAA,EAAUpB,IAAA;EACVqB,MAAA,EAAQzB;AACV","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import type { I18nClient } from '@payloadcms/translations';
2
+ import type { ClientField, SanitizedFieldPermissions } from 'payload';
3
+ import type React from 'react';
4
+ import type { DiffMethod } from 'react-diff-viewer-continued';
5
+ export type DiffComponents = Record<string, React.FC<DiffComponentProps>>;
6
+ export type DiffComponentProps<TField extends ClientField = ClientField> = {
7
+ readonly comparison: any;
8
+ readonly diffComponents: DiffComponents;
9
+ readonly diffMethod?: DiffMethod;
10
+ readonly field: TField;
11
+ readonly fieldPermissions?: {
12
+ [key: string]: SanitizedFieldPermissions;
13
+ } | true;
14
+ readonly fields: ClientField[];
15
+ readonly i18n: I18nClient;
16
+ readonly isRichText?: boolean;
17
+ readonly locale?: string;
18
+ readonly locales?: string[];
19
+ readonly version: any;
20
+ };
21
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE7D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA;AAEzE,MAAM,MAAM,kBAAkB,CAAC,MAAM,SAAS,WAAW,GAAG,WAAW,IAAI;IACzE,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAA;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,gBAAgB,CAAC,EACtB;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAC3B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAA;CACtB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/fields/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField, SanitizedFieldPermissions } from 'payload'\nimport type React from 'react'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nexport type DiffComponents = Record<string, React.FC<DiffComponentProps>>\n\nexport type DiffComponentProps<TField extends ClientField = ClientField> = {\n readonly comparison: any\n readonly diffComponents: DiffComponents\n readonly diffMethod?: DiffMethod\n readonly field: TField\n readonly fieldPermissions?:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n readonly fields: ClientField[]\n readonly i18n: I18nClient\n readonly isRichText?: boolean\n readonly locale?: string\n readonly locales?: string[]\n readonly version: any\n}\n"],"mappings":"AAOA","ignoreList":[]}
@@ -1,3 +1,5 @@
1
- import { type BuildVersionFieldsArgs } from './buildVersionFields.js';
2
- export declare const RenderDiff: (args: BuildVersionFieldsArgs) => React.ReactNode;
1
+ import React from 'react';
2
+ import type { Props } from './types.js';
3
+ import './index.scss';
4
+ export declare const RenderFieldsToDiff: React.FC<Props>;
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAGzF,eAAO,MAAM,UAAU,SAAU,sBAAsB,KAAG,KAAK,CAAC,SAI/D,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAkB,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvD,OAAO,cAAc,CAAA;AAIrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0I9C,CAAA"}
@@ -1,12 +1,115 @@
1
+ 'use client';
2
+
1
3
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { buildVersionFields } from './buildVersionFields.js';
3
- import { RenderVersionFieldsToDiff } from './RenderVersionFieldsToDiff.js';
4
- export const RenderDiff = args => {
5
- const {
6
- versionFields
7
- } = buildVersionFields(args);
8
- return /*#__PURE__*/_jsx(RenderVersionFieldsToDiff, {
9
- versionFields: versionFields
4
+ import { fieldAffectsData, fieldIsID } from 'payload/shared';
5
+ import React from 'react';
6
+ import { diffMethods } from './fields/diffMethods.js';
7
+ const baseClass = 'render-field-diffs';
8
+ export const RenderFieldsToDiff = ({
9
+ comparison,
10
+ diffComponents: __diffComponents,
11
+ fieldPermissions,
12
+ fields,
13
+ i18n,
14
+ locales,
15
+ version
16
+ }) => {
17
+ // typing it as `as typeof _diffComponents` here ensures the TField generics of DiffComponentProps are respected.
18
+ // Without it, you could pass a UI field to the Tabs component, without it erroring
19
+ const diffComponents = __diffComponents;
20
+ return /*#__PURE__*/_jsx("div", {
21
+ className: baseClass,
22
+ children: fields?.map((field, i) => {
23
+ if (fieldIsID(field)) {
24
+ return null;
25
+ }
26
+ const Component = diffComponents[field.type];
27
+ const isRichText = field.type === 'richText';
28
+ const diffMethod = diffMethods[field.type] || 'CHARS';
29
+ if (Component) {
30
+ if (fieldAffectsData(field)) {
31
+ const fieldName = field.name;
32
+ const valueIsObject = field.type === 'code' || field.type === 'json';
33
+ const versionValue = valueIsObject ? JSON.stringify(version?.[fieldName]) : version?.[fieldName];
34
+ const comparisonValue = valueIsObject ? JSON.stringify(comparison?.[fieldName]) : comparison?.[fieldName];
35
+ const hasPermission = fieldPermissions === true || fieldPermissions?.[fieldName] === true || fieldPermissions?.[fieldName]?.read;
36
+ const subFieldPermissions = fieldPermissions === true || fieldPermissions?.[fieldName] === true || fieldPermissions?.[fieldName]?.fields;
37
+ if (!hasPermission) {
38
+ return null;
39
+ }
40
+ const baseCellProps = {
41
+ comparison: comparisonValue,
42
+ diffComponents,
43
+ diffMethod,
44
+ field,
45
+ fieldPermissions: subFieldPermissions,
46
+ fields: 'fields' in field ? field?.fields : fields,
47
+ i18n,
48
+ isRichText,
49
+ locales,
50
+ version: versionValue
51
+ };
52
+ if (field.localized) {
53
+ return /*#__PURE__*/_jsx("div", {
54
+ className: `${baseClass}__field`,
55
+ children: locales.map((locale, index) => {
56
+ const versionLocaleValue = versionValue?.[locale];
57
+ const comparisonLocaleValue = comparisonValue?.[locale];
58
+ const cellProps = {
59
+ ...baseCellProps,
60
+ comparison: comparisonLocaleValue,
61
+ version: versionLocaleValue
62
+ };
63
+ return /*#__PURE__*/_jsx("div", {
64
+ className: `${baseClass}__locale`,
65
+ children: /*#__PURE__*/_jsx("div", {
66
+ className: `${baseClass}__locale-value`,
67
+ children: /*#__PURE__*/_jsx(Component, {
68
+ ...cellProps,
69
+ locale: locale
70
+ })
71
+ })
72
+ }, [locale, index].join('-'));
73
+ })
74
+ }, i);
75
+ }
76
+ return /*#__PURE__*/_jsx("div", {
77
+ className: `${baseClass}__field`,
78
+ children: /*#__PURE__*/_jsx(Component, {
79
+ ...baseCellProps
80
+ })
81
+ }, i);
82
+ }
83
+ if (field.type === 'tabs' && 'tabs' in field) {
84
+ const Tabs = diffComponents.tabs;
85
+ return /*#__PURE__*/_jsx(Tabs, {
86
+ comparison: comparison,
87
+ diffComponents: diffComponents,
88
+ field: field,
89
+ fieldPermissions: fieldPermissions,
90
+ fields: [],
91
+ i18n: i18n,
92
+ locales: locales,
93
+ version: version
94
+ }, i);
95
+ }
96
+ // At this point, we are dealing with a field with subfields but no
97
+ // nested data, eg. row, collapsible, etc.
98
+ if ('fields' in field) {
99
+ return /*#__PURE__*/_jsx(Component, {
100
+ comparison: comparison,
101
+ diffComponents: diffComponents,
102
+ field: field,
103
+ fieldPermissions: fieldPermissions,
104
+ fields: field.fields,
105
+ i18n: i18n,
106
+ locales: locales,
107
+ version: version
108
+ }, i);
109
+ }
110
+ }
111
+ return null;
112
+ })
10
113
  });
11
114
  };
12
115
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["buildVersionFields","RenderVersionFieldsToDiff","RenderDiff","args","versionFields","_jsx"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"sourcesContent":["import { buildVersionFields, type BuildVersionFieldsArgs } from './buildVersionFields.js'\nimport { RenderVersionFieldsToDiff } from './RenderVersionFieldsToDiff.js'\n\nexport const RenderDiff = (args: BuildVersionFieldsArgs): React.ReactNode => {\n const { versionFields } = buildVersionFields(args)\n\n return <RenderVersionFieldsToDiff versionFields={versionFields} />\n}\n"],"mappings":";AAAA,SAASA,kBAAkB,QAAqC;AAChE,SAASC,yBAAyB,QAAQ;AAE1C,OAAO,MAAMC,UAAA,GAAcC,IAAA;EACzB,MAAM;IAAEC;EAAa,CAAE,GAAGJ,kBAAA,CAAmBG,IAAA;EAE7C,oBAAOE,IAAA,CAACJ,yBAAA;IAA0BG,aAAA,EAAeA;;AACnD","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["fieldAffectsData","fieldIsID","React","diffMethods","baseClass","RenderFieldsToDiff","comparison","diffComponents","__diffComponents","fieldPermissions","fields","i18n","locales","version","_jsx","className","map","field","i","Component","type","isRichText","diffMethod","fieldName","name","valueIsObject","versionValue","JSON","stringify","comparisonValue","hasPermission","read","subFieldPermissions","baseCellProps","localized","locale","index","versionLocaleValue","comparisonLocaleValue","cellProps","join","Tabs","tabs"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/index.tsx"],"sourcesContent":["'use client'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport { fieldAffectsData, fieldIsID } from 'payload/shared'\nimport React from 'react'\n\nimport type { diffComponents as _diffComponents } from './fields/index.js'\nimport type { FieldDiffProps, Props } from './types.js'\n\nimport { diffMethods } from './fields/diffMethods.js'\nimport './index.scss'\n\nconst baseClass = 'render-field-diffs'\n\nexport const RenderFieldsToDiff: React.FC<Props> = ({\n comparison,\n diffComponents: __diffComponents,\n fieldPermissions,\n fields,\n i18n,\n locales,\n version,\n}) => {\n // typing it as `as typeof _diffComponents` here ensures the TField generics of DiffComponentProps are respected.\n // Without it, you could pass a UI field to the Tabs component, without it erroring\n const diffComponents: typeof _diffComponents = __diffComponents as typeof _diffComponents\n\n return (\n <div className={baseClass}>\n {fields?.map((field, i) => {\n if (fieldIsID(field)) {\n return null\n }\n\n const Component = diffComponents[field.type]\n\n const isRichText = field.type === 'richText'\n const diffMethod: DiffMethod = diffMethods[field.type] || 'CHARS'\n\n if (Component) {\n if (fieldAffectsData(field)) {\n const fieldName = field.name\n const valueIsObject = field.type === 'code' || field.type === 'json'\n\n const versionValue = valueIsObject\n ? JSON.stringify(version?.[fieldName])\n : version?.[fieldName]\n\n const comparisonValue = valueIsObject\n ? JSON.stringify(comparison?.[fieldName])\n : comparison?.[fieldName]\n\n const hasPermission =\n fieldPermissions === true ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.read\n\n const subFieldPermissions =\n fieldPermissions === true ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.fields\n\n if (!hasPermission) {\n return null\n }\n\n const baseCellProps: FieldDiffProps = {\n comparison: comparisonValue,\n diffComponents,\n diffMethod,\n field,\n fieldPermissions: subFieldPermissions,\n fields: 'fields' in field ? field?.fields : fields,\n i18n,\n isRichText,\n locales,\n version: versionValue,\n }\n\n if (field.localized) {\n return (\n <div className={`${baseClass}__field`} key={i}>\n {locales.map((locale, index) => {\n const versionLocaleValue = versionValue?.[locale]\n const comparisonLocaleValue = comparisonValue?.[locale]\n\n const cellProps = {\n ...baseCellProps,\n comparison: comparisonLocaleValue,\n version: versionLocaleValue,\n }\n\n return (\n <div className={`${baseClass}__locale`} key={[locale, index].join('-')}>\n <div className={`${baseClass}__locale-value`}>\n <Component {...cellProps} locale={locale} />\n </div>\n </div>\n )\n })}\n </div>\n )\n }\n\n return (\n <div className={`${baseClass}__field`} key={i}>\n <Component {...baseCellProps} />\n </div>\n )\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const Tabs = diffComponents.tabs\n\n return (\n <Tabs\n comparison={comparison}\n diffComponents={diffComponents}\n field={field}\n fieldPermissions={fieldPermissions}\n fields={[]}\n i18n={i18n}\n key={i}\n locales={locales}\n version={version}\n />\n )\n }\n\n // At this point, we are dealing with a field with subfields but no\n // nested data, eg. row, collapsible, etc.\n if ('fields' in field) {\n return (\n <Component\n comparison={comparison}\n diffComponents={diffComponents}\n field={field}\n fieldPermissions={fieldPermissions}\n fields={field.fields}\n i18n={i18n}\n key={i}\n locales={locales}\n version={version}\n />\n )\n }\n }\n\n return null\n })}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,21 @@
1
- import type { DiffComponentProps } from 'payload';
2
- export type DiffComponents = Record<string, React.FC<DiffComponentProps>>;
1
+ import type { I18nClient } from '@payloadcms/translations';
2
+ import type { ClientField, SanitizedFieldPermissions } from 'payload';
3
+ import type { DiffMethod } from 'react-diff-viewer-continued';
4
+ import type { DiffComponents } from './fields/types.js';
5
+ export type Props = {
6
+ readonly comparison: Record<string, any>;
7
+ readonly diffComponents: DiffComponents;
8
+ readonly fieldPermissions: {
9
+ [key: string]: SanitizedFieldPermissions;
10
+ } | true;
11
+ readonly fields: ClientField[];
12
+ readonly i18n: I18nClient;
13
+ readonly locales: string[];
14
+ readonly version: Record<string, any>;
15
+ };
16
+ export type FieldDiffProps = {
17
+ diffMethod: DiffMethod;
18
+ field: ClientField;
19
+ isRichText: boolean;
20
+ } & Props;
3
21
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAEjD,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACxC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,gBAAgB,EACrB;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,UAAU,CAAA;IACtB,KAAK,EAAE,WAAW,CAAA;IAClB,UAAU,EAAE,OAAO,CAAA;CACpB,GAAG,KAAK,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Version/RenderFieldsToDiff/types.ts"],"sourcesContent":["import type { DiffComponentProps } from 'payload'\n\nexport type DiffComponents = Record<string, React.FC<DiffComponentProps>>\n"],"mappings":"AAEA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Version/RenderFieldsToDiff/types.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type { ClientField, SanitizedFieldPermissions } from 'payload'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport type { DiffComponents } from './fields/types.js'\n\nexport type Props = {\n readonly comparison: Record<string, any>\n readonly diffComponents: DiffComponents\n readonly fieldPermissions:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n readonly fields: ClientField[]\n readonly i18n: I18nClient\n readonly locales: string[]\n readonly version: Record<string, any>\n}\n\nexport type FieldDiffProps = {\n diffMethod: DiffMethod\n field: ClientField\n isRichText: boolean\n} & Props\n"],"mappings":"AAoBA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK/E,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,UA8IhF;AAED,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,cAAmB,EACnB,KAAK,EACL,OAAO,EACP,WAAgB,GACjB,EAAE,4BAA4B,UA0B9B"}
1
+ {"version":3,"file":"countChangedFields.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK/E,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,UA8IhF;AAED,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,wBAAgB,wBAAwB,CAAC,EACvC,cAAmB,EACnB,KAAK,EACL,OAAO,EACP,WAAgB,GACjB,EAAE,4BAA4B,UAwB9B"}
@@ -170,15 +170,9 @@ export function countChangedFieldsInRows({
170
170
  while (comparisonRows[i] || versionRows[i]) {
171
171
  const comparisonRow = comparisonRows?.[i] || {};
172
172
  const versionRow = versionRows?.[i] || {};
173
- const {
174
- fields: rowFields
175
- } = getFieldsForRowComparison({
176
- baseVersionField: {
177
- fields: []
178
- },
173
+ const rowFields = getFieldsForRowComparison({
179
174
  comparisonRow,
180
175
  field,
181
- row: i,
182
176
  versionRow
183
177
  });
184
178
  count += countChangedFields({
@@ -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","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: { fields: [] },\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":"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","ignoreList":[]}
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"],"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 rowFields = getFieldsForRowComparison({\n comparisonRow,\n field,\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,MAAMG,SAAA,GAAYzB,yBAAA,CAA0B;MAC1CuB,aAAA;MACAf,KAAA;MACAgB;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,18 +1,13 @@
1
- import type { ArrayFieldClient, BaseVersionField, BlocksFieldClient, ClientField, VersionField } from 'payload';
1
+ import type { ArrayFieldClient, BlocksFieldClient, ClientField } 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, }: {
9
- baseVersionField: BaseVersionField;
8
+ export declare function getFieldsForRowComparison({ comparisonRow, field, versionRow, }: {
10
9
  comparisonRow: any;
11
10
  field: ArrayFieldClient | BlocksFieldClient;
12
- row: number;
13
11
  versionRow: any;
14
- }): {
15
- fields: ClientField[];
16
- versionFields: VersionField[];
17
- };
12
+ }): ClientField[];
18
13
  //# sourceMappingURL=getFieldsForRowComparison.d.ts.map
@@ -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,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI/E;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,aAAa,EACb,KAAK,EACL,UAAU,GACX,EAAE;IACD,aAAa,EAAE,GAAG,CAAA;IAClB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,UAAU,EAAE,GAAG,CAAA;CAChB,iBAiCA"}
@@ -6,24 +6,20 @@ import { getUniqueListBy } from 'payload/shared';
6
6
  * because the fields from the version and comparison rows may differ.
7
7
  */
8
8
  export function getFieldsForRowComparison({
9
- baseVersionField,
10
9
  comparisonRow,
11
10
  field,
12
- row,
13
11
  versionRow
14
12
  }) {
15
13
  let fields = [];
16
- let versionFields = [];
17
14
  if (field.type === 'array' && 'fields' in field) {
18
15
  fields = field.fields;
19
- versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
20
- } else if (field.type === 'blocks') {
16
+ }
17
+ if (field.type === 'blocks') {
21
18
  if (versionRow?.blockType === comparisonRow?.blockType) {
22
19
  const matchedBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
23
20
  fields: []
24
21
  };
25
22
  fields = matchedBlock.fields;
26
- versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
27
23
  } else {
28
24
  const matchedVersionBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
29
25
  fields: []
@@ -32,13 +28,8 @@ export function getFieldsForRowComparison({
32
28
  fields: []
33
29
  };
34
30
  fields = getUniqueListBy([...matchedVersionBlock.fields, ...matchedComparisonBlock.fields], 'name');
35
- // buildVersionFields already merged the fields of the version and comparison rows together
36
- versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
37
31
  }
38
32
  }
39
- return {
40
- fields,
41
- versionFields
42
- };
33
+ return fields;
43
34
  }
44
35
  //# sourceMappingURL=getFieldsForRowComparison.js.map
@@ -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","comparisonRow","field","versionRow","fields","type","blockType","matchedBlock","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientField } 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 comparisonRow,\n field,\n versionRow,\n}: {\n comparisonRow: any\n field: ArrayFieldClient | BlocksFieldClient\n versionRow: any\n}) {\n let fields: ClientField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n }\n\n 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 } 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 }\n\n return fields\n}\n"],"mappings":"AAEA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,aAAa;EACbC,KAAK;EACLC;AAAU,CAKX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAE9B,IAAIF,KAAA,CAAMG,IAAI,KAAK,WAAW,YAAYH,KAAA,EAAO;IAC/CE,MAAA,GAASF,KAAA,CAAME,MAAM;EACvB;EAEA,IAAIF,KAAA,CAAMG,IAAI,KAAK,UAAU;IAC3B,IAAIF,UAAA,EAAYG,SAAA,KAAcL,aAAA,EAAeK,SAAA,EAAW;MACtD,MAAMC,YAAA,GAAe,QAAC,IAAYL,KAAA,IAChCA,KAAA,CAAMM,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKR,UAAA,EAAYG,SAAA,KAAe;QACxEF,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASG,YAAA,CAAaH,MAAM;IAC9B,OAAO;MACL,MAAMQ,mBAAA,GAAsB,QAAC,IAAYV,KAAA,IACvCA,KAAA,CAAMM,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKR,UAAA,EAAYG,SAAA,KAAe;QACxEF,MAAA,EAAQ;MACV;MACA,MAAMS,sBAAA,GAAyB,QAAC,IAAYX,KAAA,IAC1CA,KAAA,CAAMM,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKV,aAAA,EAAeK,SAAA,KAAe;QAC3EF,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASL,eAAA,CACP,C,GAAIa,mBAAA,CAAoBR,MAAM,E,GAAKS,sBAAA,CAAuBT,MAAM,CAAC,EACjE;IAEJ;EACF;EAEA,OAAOA,MAAA;AACT","ignoreList":[]}
@@ -14,18 +14,12 @@ describe('getFieldsForRowComparison', () => {
14
14
  name: 'items',
15
15
  fields: arrayFields
16
16
  };
17
- const {
18
- fields
19
- } = getFieldsForRowComparison({
17
+ const result = getFieldsForRowComparison({
20
18
  field,
21
19
  versionRow: {},
22
- comparisonRow: {},
23
- row: 0,
24
- baseVersionField: {
25
- fields: []
26
- }
20
+ comparisonRow: {}
27
21
  });
28
- expect(fields).toEqual(arrayFields);
22
+ expect(result).toEqual(arrayFields);
29
23
  });
30
24
  });
31
25
  describe('blocks fields', () => {
@@ -51,18 +45,12 @@ describe('getFieldsForRowComparison', () => {
51
45
  const comparisonRow = {
52
46
  blockType: 'blockA'
53
47
  };
54
- const {
55
- fields
56
- } = getFieldsForRowComparison({
48
+ const result = getFieldsForRowComparison({
57
49
  field,
58
50
  versionRow,
59
- comparisonRow,
60
- row: 0,
61
- baseVersionField: {
62
- fields: []
63
- }
51
+ comparisonRow
64
52
  });
65
- expect(fields).toEqual(blockAFields);
53
+ expect(result).toEqual(blockAFields);
66
54
  });
67
55
  it('should return unique combined fields when block types differ', () => {
68
56
  const field = {
@@ -94,19 +82,13 @@ describe('getFieldsForRowComparison', () => {
94
82
  const comparisonRow = {
95
83
  blockType: 'blockB'
96
84
  };
97
- const {
98
- fields
99
- } = getFieldsForRowComparison({
85
+ const result = getFieldsForRowComparison({
100
86
  field,
101
87
  versionRow,
102
- comparisonRow,
103
- row: 0,
104
- baseVersionField: {
105
- fields: []
106
- }
88
+ comparisonRow
107
89
  });
108
90
  // Should contain all unique fields from both blocks
109
- expect(fields).toEqual([{
91
+ expect(result).toEqual([{
110
92
  name: 'a',
111
93
  type: 'text'
112
94
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForRowComparison.spec.js","names":["getFieldsForRowComparison","describe","it","arrayFields","name","type","field","fields","versionRow","comparisonRow","row","baseVersionField","expect","toEqual","blockAFields","blocks","slug","blockType"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.ts"],"sourcesContent":["import { getFieldsForRowComparison } from './getFieldsForRowComparison'\nimport type { ArrayFieldClient, BlocksFieldClient, ClientField } from 'payload'\n\ndescribe('getFieldsForRowComparison', () => {\n describe('array fields', () => {\n it('should return fields from array field', () => {\n const arrayFields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'textarea' },\n ]\n\n const field: ArrayFieldClient = {\n type: 'array',\n name: 'items',\n fields: arrayFields,\n }\n\n const { fields } = getFieldsForRowComparison({\n field,\n versionRow: {},\n comparisonRow: {},\n row: 0,\n baseVersionField: { fields: [] },\n })\n\n expect(fields).toEqual(arrayFields)\n })\n })\n\n describe('blocks fields', () => {\n it('should return combined fields when block types match', () => {\n const blockAFields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ]\n\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: blockAFields,\n },\n ],\n }\n\n const versionRow = { blockType: 'blockA' }\n const comparisonRow = { blockType: 'blockA' }\n\n const { fields } = getFieldsForRowComparison({\n field,\n versionRow,\n comparisonRow,\n row: 0,\n baseVersionField: { fields: [] },\n })\n\n expect(fields).toEqual(blockAFields)\n })\n\n it('should return unique combined fields when block types differ', () => {\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ],\n },\n {\n slug: 'blockB',\n fields: [\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n }\n\n const versionRow = { blockType: 'blockA' }\n const comparisonRow = { blockType: 'blockB' }\n\n const { fields } = getFieldsForRowComparison({\n field,\n versionRow,\n comparisonRow,\n row: 0,\n baseVersionField: { fields: [] },\n })\n\n // Should contain all unique fields from both blocks\n expect(fields).toEqual([\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ])\n })\n })\n})\n"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ;AAG1CC,QAAA,CAAS,6BAA6B;EACpCA,QAAA,CAAS,gBAAgB;IACvBC,EAAA,CAAG,yCAAyC;MAC1C,MAAMC,WAAA,GAA6B,CACjC;QAAEC,IAAA,EAAM;QAASC,IAAA,EAAM;MAAO,GAC9B;QAAED,IAAA,EAAM;QAAeC,IAAA,EAAM;MAAW,EACzC;MAED,MAAMC,KAAA,GAA0B;QAC9BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNG,MAAA,EAAQJ;MACV;MAEA,MAAM;QAAEI;MAAM,CAAE,GAAGP,yBAAA,CAA0B;QAC3CM,KAAA;QACAE,UAAA,EAAY,CAAC;QACbC,aAAA,EAAe,CAAC;QAChBC,GAAA,EAAK;QACLC,gBAAA,EAAkB;UAAEJ,MAAA,EAAQ;QAAG;MACjC;MAEAK,MAAA,CAAOL,MAAA,EAAQM,OAAO,CAACV,WAAA;IACzB;EACF;EAEAF,QAAA,CAAS,iBAAiB;IACxBC,EAAA,CAAG,wDAAwD;MACzD,MAAMY,YAAA,GAA8B,CAClC;QAAEV,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,EAC3B;MAED,MAAMC,KAAA,GAA2B;QAC/BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNW,MAAA,EAAQ,CACN;UACEC,IAAA,EAAM;UACNT,MAAA,EAAQO;QACV;MAEJ;MAEA,MAAMN,UAAA,GAAa;QAAES,SAAA,EAAW;MAAS;MACzC,MAAMR,aAAA,GAAgB;QAAEQ,SAAA,EAAW;MAAS;MAE5C,MAAM;QAAEV;MAAM,CAAE,GAAGP,yBAAA,CAA0B;QAC3CM,KAAA;QACAE,UAAA;QACAC,aAAA;QACAC,GAAA,EAAK;QACLC,gBAAA,EAAkB;UAAEJ,MAAA,EAAQ;QAAG;MACjC;MAEAK,MAAA,CAAOL,MAAA,EAAQM,OAAO,CAACC,YAAA;IACzB;IAEAZ,EAAA,CAAG,gEAAgE;MACjE,MAAMI,KAAA,GAA2B;QAC/BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNW,MAAA,EAAQ,CACN;UACEC,IAAA,EAAM;UACNT,MAAA,EAAQ,CACN;YAAEH,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO,GAC1B;YAAED,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO;QAE9B,GACA;UACEW,IAAA,EAAM;UACNT,MAAA,EAAQ,CACN;YAAEH,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO,GAC1B;YAAED,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO;QAE9B;MAEJ;MAEA,MAAMG,UAAA,GAAa;QAAES,SAAA,EAAW;MAAS;MACzC,MAAMR,aAAA,GAAgB;QAAEQ,SAAA,EAAW;MAAS;MAE5C,MAAM;QAAEV;MAAM,CAAE,GAAGP,yBAAA,CAA0B;QAC3CM,KAAA;QACAE,UAAA;QACAC,aAAA;QACAC,GAAA,EAAK;QACLC,gBAAA,EAAkB;UAAEJ,MAAA,EAAQ;QAAG;MACjC;MAEA;MACAK,MAAA,CAAOL,MAAA,EAAQM,OAAO,CAAC,CACrB;QAAET,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,EAC3B;IACH;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"getFieldsForRowComparison.spec.js","names":["getFieldsForRowComparison","describe","it","arrayFields","name","type","field","fields","result","versionRow","comparisonRow","expect","toEqual","blockAFields","blocks","slug","blockType"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.ts"],"sourcesContent":["import { getFieldsForRowComparison } from './getFieldsForRowComparison'\nimport type { ArrayFieldClient, BlocksFieldClient, ClientField } from 'payload'\n\ndescribe('getFieldsForRowComparison', () => {\n describe('array fields', () => {\n it('should return fields from array field', () => {\n const arrayFields: ClientField[] = [\n { name: 'title', type: 'text' },\n { name: 'description', type: 'textarea' },\n ]\n\n const field: ArrayFieldClient = {\n type: 'array',\n name: 'items',\n fields: arrayFields,\n }\n\n const result = getFieldsForRowComparison({\n field,\n versionRow: {},\n comparisonRow: {},\n })\n\n expect(result).toEqual(arrayFields)\n })\n })\n\n describe('blocks fields', () => {\n it('should return combined fields when block types match', () => {\n const blockAFields: ClientField[] = [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ]\n\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: blockAFields,\n },\n ],\n }\n\n const versionRow = { blockType: 'blockA' }\n const comparisonRow = { blockType: 'blockA' }\n\n const result = getFieldsForRowComparison({\n field,\n versionRow,\n comparisonRow,\n })\n\n expect(result).toEqual(blockAFields)\n })\n\n it('should return unique combined fields when block types differ', () => {\n const field: BlocksFieldClient = {\n type: 'blocks',\n name: 'myBlocks',\n blocks: [\n {\n slug: 'blockA',\n fields: [\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n ],\n },\n {\n slug: 'blockB',\n fields: [\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ],\n },\n ],\n }\n\n const versionRow = { blockType: 'blockA' }\n const comparisonRow = { blockType: 'blockB' }\n\n const result = getFieldsForRowComparison({\n field,\n versionRow,\n comparisonRow,\n })\n\n // Should contain all unique fields from both blocks\n expect(result).toEqual([\n { name: 'a', type: 'text' },\n { name: 'b', type: 'text' },\n { name: 'c', type: 'text' },\n ])\n })\n })\n})\n"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ;AAG1CC,QAAA,CAAS,6BAA6B;EACpCA,QAAA,CAAS,gBAAgB;IACvBC,EAAA,CAAG,yCAAyC;MAC1C,MAAMC,WAAA,GAA6B,CACjC;QAAEC,IAAA,EAAM;QAASC,IAAA,EAAM;MAAO,GAC9B;QAAED,IAAA,EAAM;QAAeC,IAAA,EAAM;MAAW,EACzC;MAED,MAAMC,KAAA,GAA0B;QAC9BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNG,MAAA,EAAQJ;MACV;MAEA,MAAMK,MAAA,GAASR,yBAAA,CAA0B;QACvCM,KAAA;QACAG,UAAA,EAAY,CAAC;QACbC,aAAA,EAAe,CAAC;MAClB;MAEAC,MAAA,CAAOH,MAAA,EAAQI,OAAO,CAACT,WAAA;IACzB;EACF;EAEAF,QAAA,CAAS,iBAAiB;IACxBC,EAAA,CAAG,wDAAwD;MACzD,MAAMW,YAAA,GAA8B,CAClC;QAAET,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,EAC3B;MAED,MAAMC,KAAA,GAA2B;QAC/BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNU,MAAA,EAAQ,CACN;UACEC,IAAA,EAAM;UACNR,MAAA,EAAQM;QACV;MAEJ;MAEA,MAAMJ,UAAA,GAAa;QAAEO,SAAA,EAAW;MAAS;MACzC,MAAMN,aAAA,GAAgB;QAAEM,SAAA,EAAW;MAAS;MAE5C,MAAMR,MAAA,GAASR,yBAAA,CAA0B;QACvCM,KAAA;QACAG,UAAA;QACAC;MACF;MAEAC,MAAA,CAAOH,MAAA,EAAQI,OAAO,CAACC,YAAA;IACzB;IAEAX,EAAA,CAAG,gEAAgE;MACjE,MAAMI,KAAA,GAA2B;QAC/BD,IAAA,EAAM;QACND,IAAA,EAAM;QACNU,MAAA,EAAQ,CACN;UACEC,IAAA,EAAM;UACNR,MAAA,EAAQ,CACN;YAAEH,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO,GAC1B;YAAED,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO;QAE9B,GACA;UACEU,IAAA,EAAM;UACNR,MAAA,EAAQ,CACN;YAAEH,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO,GAC1B;YAAED,IAAA,EAAM;YAAKC,IAAA,EAAM;UAAO;QAE9B;MAEJ;MAEA,MAAMI,UAAA,GAAa;QAAEO,SAAA,EAAW;MAAS;MACzC,MAAMN,aAAA,GAAgB;QAAEM,SAAA,EAAW;MAAS;MAE5C,MAAMR,MAAA,GAASR,yBAAA,CAA0B;QACvCM,KAAA;QACAG,UAAA;QACAC;MACF;MAEA;MACAC,MAAA,CAAOH,MAAA,EAAQI,OAAO,CAAC,CACrB;QAAER,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,GAC1B;QAAED,IAAA,EAAM;QAAKC,IAAA,EAAM;MAAO,EAC3B;IACH;EACF;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/SelectComparison/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyL5C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/SelectComparison/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAGvC,OAAO,cAAc,CAAA;AAQrB,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAqL5C,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { fieldBaseClass, Pill, ReactSelect, useConfig, useTranslation } from '@payloadcms/ui';
5
5
  import { formatDate } from '@payloadcms/ui/shared';
6
- import { stringify } from 'qs-esm';
6
+ import * as qs from 'qs-esm';
7
7
  import React, { useCallback, useEffect, useState } from 'react';
8
8
  import { renderPill } from '../../Versions/cells/AutosaveCell/index.js';
9
9
  const baseClass = 'compare-version';
@@ -68,7 +68,7 @@ export const SelectComparison = props => {
68
68
  }
69
69
  });
70
70
  }
71
- const search = stringify(query);
71
+ const search = qs.stringify(query);
72
72
  const response = await fetch(`${baseURL}?${search}`, {
73
73
  credentials: 'include',
74
74
  headers: {
@@ -134,14 +134,10 @@ export const SelectComparison = props => {
134
134
  }
135
135
  }, [dateFormat, baseURL, parentID, versionID, t, i18n, latestDraftVersion, latestPublishedVersion]);
136
136
  useEffect(() => {
137
- if (!i18n.dateFNS) {
138
- // If dateFNS is not loaded, we can't format the date in getResults
139
- return;
140
- }
141
137
  void getResults({
142
138
  lastLoadedPage: 1
143
139
  });
144
- }, [getResults, i18n.dateFNS]);
140
+ }, [getResults]);
145
141
  const filteredOptions = options.filter((option, index, self) => self.findIndex(t_0 => t_0.value === option.value) === index);
146
142
  useEffect(() => {
147
143
  if (filteredOptions.length > 0 && !value) {