@payloadcms/next 3.20.0-canary.a7d4b94 → 3.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) 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 +20 -2
  4. package/dist/views/Version/Default/index.js.map +1 -1
  5. package/dist/views/Version/Default/index.scss +5 -0
  6. package/dist/views/Version/Default/types.d.ts +1 -0
  7. package/dist/views/Version/Default/types.d.ts.map +1 -1
  8. package/dist/views/Version/Default/types.js.map +1 -1
  9. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts +1 -0
  10. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  11. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js +70 -30
  12. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  13. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts +4 -3
  14. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  15. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +35 -4
  16. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  17. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts +2 -3
  18. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -1
  19. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +3 -0
  20. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  21. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts +2 -3
  22. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -1
  23. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  24. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +2 -2
  25. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  26. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  27. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +2 -3
  28. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  29. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +1 -2
  30. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  31. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts +2 -3
  32. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts.map +1 -1
  33. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -1
  34. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.d.ts.map +1 -1
  35. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js +1 -2
  36. package/dist/views/Version/RenderFieldsToDiff/fields/Select/DiffViewer/index.js.map +1 -1
  37. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +2 -3
  38. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  39. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  40. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +2 -3
  41. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  42. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +10 -4
  43. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  44. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.d.ts.map +1 -1
  45. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js +1 -2
  46. package/dist/views/Version/RenderFieldsToDiff/fields/Text/DiffViewer/index.js.map +1 -1
  47. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +2 -3
  48. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  49. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  50. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts +2 -2
  51. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  52. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  53. package/dist/views/Version/RenderFieldsToDiff/fields/styles.d.ts +3 -0
  54. package/dist/views/Version/RenderFieldsToDiff/fields/styles.d.ts.map +1 -1
  55. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js +3 -0
  56. package/dist/views/Version/RenderFieldsToDiff/fields/styles.js.map +1 -1
  57. package/dist/views/Version/RenderFieldsToDiff/index.js +3 -2
  58. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  59. package/dist/views/Version/RenderFieldsToDiff/index.scss +4 -0
  60. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +4 -1
  61. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  62. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.d.ts.map +1 -1
  63. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js +6 -2
  64. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldPathsModified.js.map +1 -1
  65. package/dist/views/Version/SelectComparison/types.d.ts.map +1 -1
  66. package/dist/views/Version/SelectComparison/types.js.map +1 -1
  67. package/dist/views/Version/index.d.ts.map +1 -1
  68. package/dist/views/Version/index.js +19 -4
  69. package/dist/views/Version/index.js.map +1 -1
  70. package/dist/views/Versions/getLatestVersion.d.ts +3 -1
  71. package/dist/views/Versions/getLatestVersion.d.ts.map +1 -1
  72. package/dist/views/Versions/getLatestVersion.js +4 -0
  73. package/dist/views/Versions/getLatestVersion.js.map +1 -1
  74. package/package.json +9 -8
  75. package/dist/views/Version/RenderFieldsToDiff/types.d.ts +0 -3
  76. package/dist/views/Version/RenderFieldsToDiff/types.d.ts.map +0 -1
  77. package/dist/views/Version/RenderFieldsToDiff/types.js +0 -2
  78. package/dist/views/Version/RenderFieldsToDiff/types.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Default/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAE3D,OAAO,KAAK,EAAiB,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAIzE,OAAO,cAAc,CAAA;AAOrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuIjE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Default/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAE3D,OAAO,KAAK,EAAiB,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAIzE,OAAO,cAAc,CAAA;AAOrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA0JjE,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
- import { Gutter, useConfig, useDocumentInfo, useTranslation } from '@payloadcms/ui';
4
+ import { CheckboxInput, Gutter, useConfig, useDocumentInfo, useTranslation } from '@payloadcms/ui';
5
5
  import { formatDate } from '@payloadcms/ui/shared';
6
6
  import { usePathname, useRouter, useSearchParams } from 'next/navigation.js';
7
7
  import React, { useEffect, useMemo, useState } from 'react';
@@ -16,6 +16,7 @@ export const DefaultVersionView = ({
16
16
  doc,
17
17
  latestDraftVersion,
18
18
  latestPublishedVersion,
19
+ modifiedOnly: modifiedOnlyProp,
19
20
  RenderedDiff,
20
21
  selectedLocales: selectedLocalesProp,
21
22
  versionID
@@ -47,6 +48,10 @@ export const DefaultVersionView = ({
47
48
  const router = useRouter();
48
49
  const pathname = usePathname();
49
50
  const searchParams = useSearchParams();
51
+ const [modifiedOnly, setModifiedOnly] = useState(modifiedOnlyProp);
52
+ function onToggleModifiedOnly() {
53
+ setModifiedOnly(!modifiedOnly);
54
+ }
50
55
  useEffect(() => {
51
56
  // If the selected comparison doc or locales change, update URL params so that version page RSC
52
57
  // can update the version comparison state
@@ -61,10 +66,15 @@ export const DefaultVersionView = ({
61
66
  } else {
62
67
  current.set('localeCodes', JSON.stringify(selectedLocales.map(locale_0 => locale_0.value)));
63
68
  }
69
+ if (!modifiedOnly) {
70
+ current.delete('modifiedOnly');
71
+ } else {
72
+ current.set('modifiedOnly', 'true');
73
+ }
64
74
  const search = current.toString();
65
75
  const query = search ? `?${search}` : '';
66
76
  router.push(`${pathname}${query}`);
67
- }, [compareValue, pathname, router, searchParams, selectedLocales]);
77
+ }, [compareValue, pathname, router, searchParams, selectedLocales, modifiedOnly]);
68
78
  const {
69
79
  admin: {
70
80
  dateFormat
@@ -114,6 +124,14 @@ export const DefaultVersionView = ({
114
124
  status: doc?.version?._status,
115
125
  versionDate: versionCreatedAt,
116
126
  versionID: versionID
127
+ }), /*#__PURE__*/_jsx("span", {
128
+ className: `${baseClass}__modifiedCheckBox`,
129
+ children: /*#__PURE__*/_jsx(CheckboxInput, {
130
+ checked: modifiedOnly,
131
+ id: 'modifiedOnly',
132
+ label: i18n.t('version:modifiedOnly'),
133
+ onToggle: onToggleModifiedOnly
134
+ })
117
135
  })]
118
136
  })]
119
137
  }), /*#__PURE__*/_jsxs("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["Gutter","useConfig","useDocumentInfo","useTranslation","formatDate","usePathname","useRouter","useSearchParams","React","useEffect","useMemo","useState","Restore","SelectComparison","SelectLocales","SelectedLocalesContext","SetStepNav","baseClass","DefaultVersionView","canUpdate","doc","latestDraftVersion","latestPublishedVersion","RenderedDiff","selectedLocales","selectedLocalesProp","versionID","config","getEntityConfig","availableLocales","localization","locales","map","locale","label","value","code","i18n","id","collectionSlug","globalSlug","collectionConfig","globalConfig","setSelectedLocales","compareValue","setCompareValue","router","pathname","searchParams","current","URLSearchParams","Array","from","entries","delete","set","JSON","stringify","search","toString","query","push","admin","dateFormat","routes","api","apiRoute","serverURL","versionCreatedAt","updatedAt","date","pattern","compareBaseURL","draftsEnabled","Boolean","versions","drafts","_jsxs","className","_jsx","fields","t","version","autosave","labels","singular","originalDocID","status","_status","versionDate","baseURL","onChange","parentID","options","Provider"],"sources":["../../../../src/views/Version/Default/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload'\n\nimport { Gutter, useConfig, useDocumentInfo, useTranslation } from '@payloadcms/ui'\nimport { formatDate } from '@payloadcms/ui/shared'\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { CompareOption, DefaultVersionsViewProps } from './types.js'\n\nimport Restore from '../Restore/index.js'\nimport { SelectComparison } from '../SelectComparison/index.js'\nimport './index.scss'\nimport { SelectLocales } from '../SelectLocales/index.js'\nimport { SelectedLocalesContext } from './SelectedLocalesContext.js'\nimport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'view-version'\n\nexport const DefaultVersionView: React.FC<DefaultVersionsViewProps> = ({\n canUpdate,\n doc,\n latestDraftVersion,\n latestPublishedVersion,\n RenderedDiff,\n selectedLocales: selectedLocalesProp,\n versionID,\n}) => {\n const { config, getEntityConfig } = useConfig()\n\n const availableLocales = useMemo(\n () =>\n config.localization\n ? config.localization.locales.map((locale) => ({\n label: locale.label,\n value: locale.code,\n }))\n : [],\n [config.localization],\n )\n\n const { i18n } = useTranslation()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const [globalConfig] = useState(() => getEntityConfig({ globalSlug }))\n\n const [selectedLocales, setSelectedLocales] = useState<OptionObject[]>(selectedLocalesProp)\n\n const [compareValue, setCompareValue] = useState<CompareOption>()\n const router = useRouter()\n const pathname = usePathname()\n const searchParams = useSearchParams()\n\n useEffect(() => {\n // If the selected comparison doc or locales change, update URL params so that version page RSC\n // can update the version comparison state\n const current = new URLSearchParams(Array.from(searchParams.entries()))\n\n if (!compareValue) {\n current.delete('compareValue')\n } else {\n current.set('compareValue', compareValue?.value)\n }\n if (!selectedLocales) {\n current.delete('localeCodes')\n } else {\n current.set('localeCodes', JSON.stringify(selectedLocales.map((locale) => locale.value)))\n }\n\n const search = current.toString()\n const query = search ? `?${search}` : ''\n router.push(`${pathname}${query}`)\n }, [compareValue, pathname, router, searchParams, selectedLocales])\n\n const {\n admin: { dateFormat },\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const versionCreatedAt = doc?.updatedAt\n ? formatDate({ date: doc.updatedAt, i18n, pattern: dateFormat })\n : ''\n\n const compareBaseURL = `${serverURL}${apiRoute}/${globalSlug ? 'globals/' : ''}${\n collectionSlug || globalSlug\n }/versions`\n\n const draftsEnabled = Boolean((collectionConfig || globalConfig)?.versions.drafts)\n\n return (\n <main className={baseClass}>\n <SetStepNav\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n doc={doc}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n globalSlug={globalSlug}\n id={id}\n />\n <Gutter className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__header-wrap`}>\n <p className={`${baseClass}__created-at`}>\n {i18n.t('version:versionCreatedOn', {\n version: i18n.t(doc?.autosave ? 'version:autosavedVersion' : 'version:version'),\n })}\n </p>\n <header className={`${baseClass}__header`}>\n <h2>{versionCreatedAt}</h2>\n {canUpdate && (\n <Restore\n className={`${baseClass}__restore`}\n collectionSlug={collectionSlug}\n globalSlug={globalSlug}\n label={collectionConfig?.labels.singular || globalConfig?.label}\n originalDocID={id}\n status={doc?.version?._status}\n versionDate={versionCreatedAt}\n versionID={versionID}\n />\n )}\n </header>\n </div>\n <div className={`${baseClass}__controls`}>\n <SelectComparison\n baseURL={compareBaseURL}\n draftsEnabled={draftsEnabled}\n latestDraftVersion={latestDraftVersion}\n latestPublishedVersion={latestPublishedVersion}\n onChange={setCompareValue}\n parentID={id}\n value={compareValue}\n versionID={versionID}\n />\n {localization && (\n <SelectLocales\n onChange={setSelectedLocales}\n options={availableLocales}\n value={selectedLocales}\n />\n )}\n </div>\n <SelectedLocalesContext.Provider\n value={{ selectedLocales: selectedLocales.map((locale) => locale.value) }}\n >\n {doc?.version && RenderedDiff}\n </SelectedLocalesContext.Provider>\n </Gutter>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["CheckboxInput","Gutter","useConfig","useDocumentInfo","useTranslation","formatDate","usePathname","useRouter","useSearchParams","React","useEffect","useMemo","useState","Restore","SelectComparison","SelectLocales","SelectedLocalesContext","SetStepNav","baseClass","DefaultVersionView","canUpdate","doc","latestDraftVersion","latestPublishedVersion","modifiedOnly","modifiedOnlyProp","RenderedDiff","selectedLocales","selectedLocalesProp","versionID","config","getEntityConfig","availableLocales","localization","locales","map","locale","label","value","code","i18n","id","collectionSlug","globalSlug","collectionConfig","globalConfig","setSelectedLocales","compareValue","setCompareValue","router","pathname","searchParams","setModifiedOnly","onToggleModifiedOnly","current","URLSearchParams","Array","from","entries","delete","set","JSON","stringify","search","toString","query","push","admin","dateFormat","routes","api","apiRoute","serverURL","versionCreatedAt","updatedAt","date","pattern","compareBaseURL","draftsEnabled","Boolean","versions","drafts","_jsxs","className","_jsx","fields","t","version","autosave","labels","singular","originalDocID","status","_status","versionDate","checked","onToggle","baseURL","onChange","parentID","options","Provider"],"sources":["../../../../src/views/Version/Default/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload'\n\nimport { CheckboxInput, Gutter, useConfig, useDocumentInfo, useTranslation } from '@payloadcms/ui'\nimport { formatDate } from '@payloadcms/ui/shared'\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { CompareOption, DefaultVersionsViewProps } from './types.js'\n\nimport Restore from '../Restore/index.js'\nimport { SelectComparison } from '../SelectComparison/index.js'\nimport './index.scss'\nimport { SelectLocales } from '../SelectLocales/index.js'\nimport { SelectedLocalesContext } from './SelectedLocalesContext.js'\nimport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'view-version'\n\nexport const DefaultVersionView: React.FC<DefaultVersionsViewProps> = ({\n canUpdate,\n doc,\n latestDraftVersion,\n latestPublishedVersion,\n modifiedOnly: modifiedOnlyProp,\n RenderedDiff,\n selectedLocales: selectedLocalesProp,\n versionID,\n}) => {\n const { config, getEntityConfig } = useConfig()\n\n const availableLocales = useMemo(\n () =>\n config.localization\n ? config.localization.locales.map((locale) => ({\n label: locale.label,\n value: locale.code,\n }))\n : [],\n [config.localization],\n )\n\n const { i18n } = useTranslation()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const [globalConfig] = useState(() => getEntityConfig({ globalSlug }))\n\n const [selectedLocales, setSelectedLocales] = useState<OptionObject[]>(selectedLocalesProp)\n\n const [compareValue, setCompareValue] = useState<CompareOption>()\n const router = useRouter()\n const pathname = usePathname()\n const searchParams = useSearchParams()\n const [modifiedOnly, setModifiedOnly] = useState(modifiedOnlyProp)\n function onToggleModifiedOnly() {\n setModifiedOnly(!modifiedOnly)\n }\n\n useEffect(() => {\n // If the selected comparison doc or locales change, update URL params so that version page RSC\n // can update the version comparison state\n const current = new URLSearchParams(Array.from(searchParams.entries()))\n\n if (!compareValue) {\n current.delete('compareValue')\n } else {\n current.set('compareValue', compareValue?.value)\n }\n if (!selectedLocales) {\n current.delete('localeCodes')\n } else {\n current.set('localeCodes', JSON.stringify(selectedLocales.map((locale) => locale.value)))\n }\n\n if (!modifiedOnly) {\n current.delete('modifiedOnly')\n } else {\n current.set('modifiedOnly', 'true')\n }\n\n const search = current.toString()\n const query = search ? `?${search}` : ''\n router.push(`${pathname}${query}`)\n }, [compareValue, pathname, router, searchParams, selectedLocales, modifiedOnly])\n\n const {\n admin: { dateFormat },\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const versionCreatedAt = doc?.updatedAt\n ? formatDate({ date: doc.updatedAt, i18n, pattern: dateFormat })\n : ''\n\n const compareBaseURL = `${serverURL}${apiRoute}/${globalSlug ? 'globals/' : ''}${\n collectionSlug || globalSlug\n }/versions`\n\n const draftsEnabled = Boolean((collectionConfig || globalConfig)?.versions.drafts)\n\n return (\n <main className={baseClass}>\n <SetStepNav\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n doc={doc}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n globalSlug={globalSlug}\n id={id}\n />\n <Gutter className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__header-wrap`}>\n <p className={`${baseClass}__created-at`}>\n {i18n.t('version:versionCreatedOn', {\n version: i18n.t(doc?.autosave ? 'version:autosavedVersion' : 'version:version'),\n })}\n </p>\n <header className={`${baseClass}__header`}>\n <h2>{versionCreatedAt}</h2>\n {canUpdate && (\n <Restore\n className={`${baseClass}__restore`}\n collectionSlug={collectionSlug}\n globalSlug={globalSlug}\n label={collectionConfig?.labels.singular || globalConfig?.label}\n originalDocID={id}\n status={doc?.version?._status}\n versionDate={versionCreatedAt}\n versionID={versionID}\n />\n )}\n <span className={`${baseClass}__modifiedCheckBox`}>\n <CheckboxInput\n checked={modifiedOnly}\n id={'modifiedOnly'}\n label={i18n.t('version:modifiedOnly')}\n onToggle={onToggleModifiedOnly}\n />\n </span>\n </header>\n </div>\n <div className={`${baseClass}__controls`}>\n <SelectComparison\n baseURL={compareBaseURL}\n draftsEnabled={draftsEnabled}\n latestDraftVersion={latestDraftVersion}\n latestPublishedVersion={latestPublishedVersion}\n onChange={setCompareValue}\n parentID={id}\n value={compareValue}\n versionID={versionID}\n />\n {localization && (\n <SelectLocales\n onChange={setSelectedLocales}\n options={availableLocales}\n value={selectedLocales}\n />\n )}\n </div>\n <SelectedLocalesContext.Provider\n value={{ selectedLocales: selectedLocales.map((locale) => locale.value) }}\n >\n {doc?.version && RenderedDiff}\n </SelectedLocalesContext.Provider>\n </Gutter>\n </main>\n )\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,aAAa,EAAEC,MAAM,EAAEC,SAAS,EAAEC,eAAe,EAAEC,cAAc,QAAQ;AAClF,SAASC,UAAU,QAAQ;AAC3B,SAASC,WAAW,EAAEC,SAAS,EAAEC,eAAe,QAAQ;AACxD,OAAOC,KAAA,IAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AAIpD,OAAOC,OAAA,MAAa;AACpB,SAASC,gBAAgB,QAAQ;AAEjC,SAASC,aAAa,QAAQ;AAC9B,SAASC,sBAAsB,QAAQ;AACvC,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,kBAAA,GAAyDA,CAAC;EACrEC,SAAS;EACTC,GAAG;EACHC,kBAAkB;EAClBC,sBAAsB;EACtBC,YAAA,EAAcC,gBAAgB;EAC9BC,YAAY;EACZC,eAAA,EAAiBC,mBAAmB;EACpCC;AAAS,CACV;EACC,MAAM;IAAEC,MAAM;IAAEC;EAAe,CAAE,GAAG7B,SAAA;EAEpC,MAAM8B,gBAAA,GAAmBrB,OAAA,CACvB,MACEmB,MAAA,CAAOG,YAAY,GACfH,MAAA,CAAOG,YAAY,CAACC,OAAO,CAACC,GAAG,CAAEC,MAAA,KAAY;IAC3CC,KAAA,EAAOD,MAAA,CAAOC,KAAK;IACnBC,KAAA,EAAOF,MAAA,CAAOG;EAChB,MACA,EAAE,EACR,CAACT,MAAA,CAAOG,YAAY,CAAC;EAGvB,MAAM;IAAEO;EAAI,CAAE,GAAGpC,cAAA;EACjB,MAAM;IAAEqC,EAAE;IAAEC,cAAc;IAAEC;EAAU,CAAE,GAAGxC,eAAA;EAE3C,MAAM,CAACyC,gBAAA,CAAiB,GAAGhC,QAAA,CAAS,MAAMmB,eAAA,CAAgB;IAAEW;EAAe;EAE3E,MAAM,CAACG,YAAA,CAAa,GAAGjC,QAAA,CAAS,MAAMmB,eAAA,CAAgB;IAAEY;EAAW;EAEnE,MAAM,CAAChB,eAAA,EAAiBmB,kBAAA,CAAmB,GAAGlC,QAAA,CAAyBgB,mBAAA;EAEvE,MAAM,CAACmB,YAAA,EAAcC,eAAA,CAAgB,GAAGpC,QAAA;EACxC,MAAMqC,MAAA,GAAS1C,SAAA;EACf,MAAM2C,QAAA,GAAW5C,WAAA;EACjB,MAAM6C,YAAA,GAAe3C,eAAA;EACrB,MAAM,CAACgB,YAAA,EAAc4B,eAAA,CAAgB,GAAGxC,QAAA,CAASa,gBAAA;EACjD,SAAS4B,qBAAA;IACPD,eAAA,CAAgB,CAAC5B,YAAA;EACnB;EAEAd,SAAA,CAAU;IACR;IACA;IACA,MAAM4C,OAAA,GAAU,IAAIC,eAAA,CAAgBC,KAAA,CAAMC,IAAI,CAACN,YAAA,CAAaO,OAAO;IAEnE,IAAI,CAACX,YAAA,EAAc;MACjBO,OAAA,CAAQK,MAAM,CAAC;IACjB,OAAO;MACLL,OAAA,CAAQM,GAAG,CAAC,gBAAgBb,YAAA,EAAcT,KAAA;IAC5C;IACA,IAAI,CAACX,eAAA,EAAiB;MACpB2B,OAAA,CAAQK,MAAM,CAAC;IACjB,OAAO;MACLL,OAAA,CAAQM,GAAG,CAAC,eAAeC,IAAA,CAAKC,SAAS,CAACnC,eAAA,CAAgBQ,GAAG,CAAEC,QAAA,IAAWA,QAAA,CAAOE,KAAK;IACxF;IAEA,IAAI,CAACd,YAAA,EAAc;MACjB8B,OAAA,CAAQK,MAAM,CAAC;IACjB,OAAO;MACLL,OAAA,CAAQM,GAAG,CAAC,gBAAgB;IAC9B;IAEA,MAAMG,MAAA,GAAST,OAAA,CAAQU,QAAQ;IAC/B,MAAMC,KAAA,GAAQF,MAAA,GAAS,IAAIA,MAAA,EAAQ,GAAG;IACtCd,MAAA,CAAOiB,IAAI,CAAC,GAAGhB,QAAA,GAAWe,KAAA,EAAO;EACnC,GAAG,CAAClB,YAAA,EAAcG,QAAA,EAAUD,MAAA,EAAQE,YAAA,EAAcxB,eAAA,EAAiBH,YAAA,CAAa;EAEhF,MAAM;IACJ2C,KAAA,EAAO;MAAEC;IAAU,CAAE;IACrBnC,YAAY;IACZoC,MAAA,EAAQ;MAAEC,GAAA,EAAKC;IAAQ,CAAE;IACzBC;EAAS,CACV,GAAG1C,MAAA;EAEJ,MAAM2C,gBAAA,GAAmBpD,GAAA,EAAKqD,SAAA,GAC1BrE,UAAA,CAAW;IAAEsE,IAAA,EAAMtD,GAAA,CAAIqD,SAAS;IAAElC,IAAA;IAAMoC,OAAA,EAASR;EAAW,KAC5D;EAEJ,MAAMS,cAAA,GAAiB,GAAGL,SAAA,GAAYD,QAAA,IAAY5B,UAAA,GAAa,aAAa,KAC1ED,cAAA,IAAkBC,UAAA,WACT;EAEX,MAAMmC,aAAA,GAAgBC,OAAA,CAAS,CAAAnC,gBAAA,IAAoBC,YAAW,GAAImC,QAAA,CAASC,MAAA;EAE3E,oBACEC,KAAA,CAAC;IAAKC,SAAA,EAAWjE,SAAA;4BACfkE,IAAA,CAACnE,UAAA;MACC2B,gBAAA,EAAkBA,gBAAA;MAClBF,cAAA,EAAgBA,cAAA;MAChBrB,GAAA,EAAKA,GAAA;MACLgE,MAAA,EAAS,CAAAzC,gBAAA,IAAoBC,YAAW,GAAIwC,MAAA;MAC5CxC,YAAA,EAAcA,YAAA;MACdF,UAAA,EAAYA,UAAA;MACZF,EAAA,EAAIA;qBAENyC,KAAA,CAACjF,MAAA;MAAOkF,SAAA,EAAW,GAAGjE,SAAA,QAAiB;8BACrCgE,KAAA,CAAC;QAAIC,SAAA,EAAW,GAAGjE,SAAA,eAAwB;gCACzCkE,IAAA,CAAC;UAAED,SAAA,EAAW,GAAGjE,SAAA,cAAuB;oBACrCsB,IAAA,CAAK8C,CAAC,CAAC,4BAA4B;YAClCC,OAAA,EAAS/C,IAAA,CAAK8C,CAAC,CAACjE,GAAA,EAAKmE,QAAA,GAAW,6BAA6B;UAC/D;yBAEFN,KAAA,CAAC;UAAOC,SAAA,EAAW,GAAGjE,SAAA,UAAmB;kCACvCkE,IAAA,CAAC;sBAAIX;cACJrD,SAAA,iBACCgE,IAAA,CAACvE,OAAA;YACCsE,SAAA,EAAW,GAAGjE,SAAA,WAAoB;YAClCwB,cAAA,EAAgBA,cAAA;YAChBC,UAAA,EAAYA,UAAA;YACZN,KAAA,EAAOO,gBAAA,EAAkB6C,MAAA,CAAOC,QAAA,IAAY7C,YAAA,EAAcR,KAAA;YAC1DsD,aAAA,EAAelD,EAAA;YACfmD,MAAA,EAAQvE,GAAA,EAAKkE,OAAA,EAASM,OAAA;YACtBC,WAAA,EAAarB,gBAAA;YACb5C,SAAA,EAAWA;2BAGfuD,IAAA,CAAC;YAAKD,SAAA,EAAW,GAAGjE,SAAA,oBAA6B;sBAC/C,aAAAkE,IAAA,CAACpF,aAAA;cACC+F,OAAA,EAASvE,YAAA;cACTiB,EAAA,EAAI;cACJJ,KAAA,EAAOG,IAAA,CAAK8C,CAAC,CAAC;cACdU,QAAA,EAAU3C;;;;uBAKlB6B,KAAA,CAAC;QAAIC,SAAA,EAAW,GAAGjE,SAAA,YAAqB;gCACtCkE,IAAA,CAACtE,gBAAA;UACCmF,OAAA,EAASpB,cAAA;UACTC,aAAA,EAAeA,aAAA;UACfxD,kBAAA,EAAoBA,kBAAA;UACpBC,sBAAA,EAAwBA,sBAAA;UACxB2E,QAAA,EAAUlD,eAAA;UACVmD,QAAA,EAAU1D,EAAA;UACVH,KAAA,EAAOS,YAAA;UACPlB,SAAA,EAAWA;YAEZI,YAAA,iBACCmD,IAAA,CAACrE,aAAA;UACCmF,QAAA,EAAUpD,kBAAA;UACVsD,OAAA,EAASpE,gBAAA;UACTM,KAAA,EAAOX;;uBAIbyD,IAAA,CAACpE,sBAAA,CAAuBqF,QAAQ;QAC9B/D,KAAA,EAAO;UAAEX,eAAA,EAAiBA,eAAA,CAAgBQ,GAAG,CAAEC,QAAA,IAAWA,QAAA,CAAOE,KAAK;QAAE;kBAEvEjB,GAAA,EAAKkE,OAAA,IAAW7D;;;;AAK3B","ignoreList":[]}
@@ -46,6 +46,10 @@
46
46
  margin: 0 0 0 var(--base);
47
47
  }
48
48
 
49
+ &__modifiedCheckBox {
50
+ margin: 0 0 0 var(--base);
51
+ }
52
+
49
53
  @include mid-break {
50
54
  &__intro,
51
55
  &__header {
@@ -57,6 +61,7 @@
57
61
  gap: calc(var(--base) / 4);
58
62
  }
59
63
 
64
+
60
65
  &__restore {
61
66
  margin: calc(var(--base) * 0.5) 0 0 0;
62
67
  }
@@ -10,6 +10,7 @@ export type DefaultVersionsViewProps = {
10
10
  readonly doc: Document;
11
11
  readonly latestDraftVersion?: string;
12
12
  readonly latestPublishedVersion?: string;
13
+ modifiedOnly: boolean;
13
14
  readonly RenderedDiff: React.ReactNode;
14
15
  readonly selectedLocales: OptionObject[];
15
16
  readonly versionID?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Default/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/Default/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAErD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAA;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAA;IACtB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAA;IACtC,QAAQ,CAAC,eAAe,EAAE,YAAY,EAAE,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Version/Default/types.ts"],"sourcesContent":["import type { Document, OptionObject } from 'payload'\n\nexport type CompareOption = {\n label: React.ReactNode | string\n options?: CompareOption[]\n relationTo?: string\n value: string\n}\n\nexport type DefaultVersionsViewProps = {\n readonly canUpdate: boolean\n readonly doc: Document\n readonly latestDraftVersion?: string\n readonly latestPublishedVersion?: string\n readonly RenderedDiff: React.ReactNode\n readonly selectedLocales: OptionObject[]\n readonly versionID?: string\n}\n"],"mappings":"AASA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../../src/views/Version/Default/types.ts"],"sourcesContent":["import type { Document, OptionObject } from 'payload'\n\nexport type CompareOption = {\n label: React.ReactNode | string\n options?: CompareOption[]\n relationTo?: string\n value: string\n}\n\nexport type DefaultVersionsViewProps = {\n readonly canUpdate: boolean\n readonly doc: Document\n readonly latestDraftVersion?: string\n readonly latestPublishedVersion?: string\n modifiedOnly: boolean\n readonly RenderedDiff: React.ReactNode\n readonly selectedLocales: OptionObject[]\n readonly versionID?: string\n}\n"],"mappings":"AASA","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import type { VersionField } from 'payload';
2
2
  import './index.scss';
3
+ import React from 'react';
3
4
  export declare const RenderVersionFieldsToDiff: ({ versionFields, }: {
4
5
  versionFields: VersionField[];
5
6
  }) => React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"RenderVersionFieldsToDiff.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,cAAc,CAAA;AAErB,eAAO,MAAM,yBAAyB,uBAEnC;IACD,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B,KAAG,KAAK,CAAC,SA8BT,CAAA"}
1
+ {"version":3,"file":"RenderVersionFieldsToDiff.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,cAAc,CAAA;AAGrB,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,eAAO,MAAM,yBAAyB,uBAEnC;IACD,aAAa,EAAE,YAAY,EAAE,CAAA;CAC9B,KAAG,KAAK,CAAC,SAgDT,CAAA"}
@@ -1,34 +1,74 @@
1
+ 'use client';
2
+
3
+ import { c as _c } from "react/compiler-runtime";
1
4
  import { jsx as _jsx } from "react/jsx-runtime";
2
5
  const baseClass = 'render-field-diffs';
3
- export const RenderVersionFieldsToDiff = ({
4
- versionFields
5
- }) => {
6
- return /*#__PURE__*/_jsx("div", {
7
- className: baseClass,
8
- children: versionFields?.map((field, fieldIndex) => {
9
- if (field.fieldByLocale) {
10
- const LocaleComponents = [];
11
- for (const [locale, baseField] of Object.entries(field.fieldByLocale)) {
12
- LocaleComponents.push(/*#__PURE__*/_jsx("div", {
13
- className: `${baseClass}__locale`,
14
- children: /*#__PURE__*/_jsx("div", {
15
- className: `${baseClass}__locale-value`,
16
- children: baseField.CustomComponent
17
- })
18
- }, [locale, fieldIndex].join('-')));
19
- }
20
- return /*#__PURE__*/_jsx("div", {
21
- className: `${baseClass}__field`,
22
- children: LocaleComponents
23
- }, fieldIndex);
24
- } else if (field.field) {
25
- return /*#__PURE__*/_jsx("div", {
26
- className: `${baseClass}__field field__${field.type}`,
27
- children: field.field.CustomComponent
28
- }, fieldIndex);
29
- }
30
- return null;
31
- })
32
- });
6
+ import { ShimmerEffect } from '@payloadcms/ui';
7
+ import React, { Fragment, useEffect } from 'react';
8
+ export const RenderVersionFieldsToDiff = t0 => {
9
+ const $ = _c(5);
10
+ const {
11
+ versionFields
12
+ } = t0;
13
+ const [hasMounted, setHasMounted] = React.useState(false);
14
+ let t1;
15
+ let t2;
16
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
17
+ t1 = () => {
18
+ setHasMounted(true);
19
+ };
20
+ t2 = [];
21
+ $[0] = t1;
22
+ $[1] = t2;
23
+ } else {
24
+ t1 = $[0];
25
+ t2 = $[1];
26
+ }
27
+ useEffect(t1, t2);
28
+ let t3;
29
+ if ($[2] !== hasMounted || $[3] !== versionFields) {
30
+ t3 = _jsx("div", {
31
+ className: baseClass,
32
+ children: !hasMounted ? _jsx(Fragment, {
33
+ children: _jsx(ShimmerEffect, {
34
+ height: "8rem",
35
+ width: "100%"
36
+ })
37
+ }) : versionFields?.map(_temp)
38
+ });
39
+ $[2] = hasMounted;
40
+ $[3] = versionFields;
41
+ $[4] = t3;
42
+ } else {
43
+ t3 = $[4];
44
+ }
45
+ return t3;
33
46
  };
47
+ function _temp(field, fieldIndex) {
48
+ if (field.fieldByLocale) {
49
+ const LocaleComponents = [];
50
+ for (const [locale, baseField] of Object.entries(field.fieldByLocale)) {
51
+ LocaleComponents.push(_jsx("div", {
52
+ className: `${baseClass}__locale`,
53
+ children: _jsx("div", {
54
+ className: `${baseClass}__locale-value`,
55
+ children: baseField.CustomComponent
56
+ })
57
+ }, [locale, fieldIndex].join("-")));
58
+ }
59
+ return _jsx("div", {
60
+ className: `${baseClass}__field`,
61
+ children: LocaleComponents
62
+ }, fieldIndex);
63
+ } else {
64
+ if (field.field) {
65
+ return _jsx("div", {
66
+ className: `${baseClass}__field field__${field.field.type}`,
67
+ "data-field-path": field.field.path,
68
+ children: field.field.CustomComponent
69
+ }, fieldIndex);
70
+ }
71
+ }
72
+ return null;
73
+ }
34
74
  //# sourceMappingURL=RenderVersionFieldsToDiff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RenderVersionFieldsToDiff.js","names":["baseClass","RenderVersionFieldsToDiff","versionFields","_jsx","className","map","field","fieldIndex","fieldByLocale","LocaleComponents","locale","baseField","Object","entries","push","CustomComponent","join","type"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.tsx"],"sourcesContent":["const baseClass = 'render-field-diffs'\nimport type { VersionField } from 'payload'\n\nimport './index.scss'\n\nexport const RenderVersionFieldsToDiff = ({\n versionFields,\n}: {\n versionFields: VersionField[]\n}): React.ReactNode => {\n return (\n <div className={baseClass}>\n {versionFields?.map((field, fieldIndex) => {\n if (field.fieldByLocale) {\n const LocaleComponents: React.ReactNode[] = []\n for (const [locale, baseField] of Object.entries(field.fieldByLocale)) {\n LocaleComponents.push(\n <div className={`${baseClass}__locale`} key={[locale, fieldIndex].join('-')}>\n <div className={`${baseClass}__locale-value`}>{baseField.CustomComponent}</div>\n </div>,\n )\n }\n return (\n <div className={`${baseClass}__field`} key={fieldIndex}>\n {LocaleComponents}\n </div>\n )\n } else if (field.field) {\n return (\n <div className={`${baseClass}__field field__${field.type}`} key={fieldIndex}>\n {field.field.CustomComponent}\n </div>\n )\n }\n\n return null\n })}\n </div>\n )\n}\n"],"mappings":";AAAA,MAAMA,SAAA,GAAY;AAKlB,OAAO,MAAMC,yBAAA,GAA4BA,CAAC;EACxCC;AAAa,CAGd;EACC,oBACEC,IAAA,CAAC;IAAIC,SAAA,EAAWJ,SAAA;cACbE,aAAA,EAAeG,GAAA,CAAI,CAACC,KAAA,EAAOC,UAAA;MAC1B,IAAID,KAAA,CAAME,aAAa,EAAE;QACvB,MAAMC,gBAAA,GAAsC,EAAE;QAC9C,KAAK,MAAM,CAACC,MAAA,EAAQC,SAAA,CAAU,IAAIC,MAAA,CAAOC,OAAO,CAACP,KAAA,CAAME,aAAa,GAAG;UACrEC,gBAAA,CAAiBK,IAAI,cACnBX,IAAA,CAAC;YAAIC,SAAA,EAAW,GAAGJ,SAAA,UAAmB;sBACpC,aAAAG,IAAA,CAAC;cAAIC,SAAA,EAAW,GAAGJ,SAAA,gBAAyB;wBAAGW,SAAA,CAAUI;;aADd,CAACL,MAAA,EAAQH,UAAA,CAAW,CAACS,IAAI,CAAC;QAI3E;QACA,oBACEb,IAAA,CAAC;UAAIC,SAAA,EAAW,GAAGJ,SAAA,SAAkB;oBAClCS;WADyCF,UAAA;MAIhD,OAAO,IAAID,KAAA,CAAMA,KAAK,EAAE;QACtB,oBACEH,IAAA,CAAC;UAAIC,SAAA,EAAW,GAAGJ,SAAA,kBAA2BM,KAAA,CAAMW,IAAI,EAAE;oBACvDX,KAAA,CAAMA,KAAK,CAACS;WADkDR,UAAA;MAIrE;MAEA,OAAO;IACT;;AAGN","ignoreList":[]}
1
+ {"version":3,"file":"RenderVersionFieldsToDiff.js","names":["c","_c","baseClass","ShimmerEffect","React","Fragment","useEffect","RenderVersionFieldsToDiff","t0","$","versionFields","hasMounted","setHasMounted","useState","t1","t2","Symbol","for","t3","_jsx","className","children","height","width","map","_temp","field","fieldIndex","fieldByLocale","LocaleComponents","locale","baseField","Object","entries","push","CustomComponent","join","type","path"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.tsx"],"sourcesContent":["'use client'\nconst baseClass = 'render-field-diffs'\nimport type { VersionField } from 'payload'\n\nimport './index.scss'\n\nimport { ShimmerEffect } from '@payloadcms/ui'\nimport React, { Fragment, useEffect } from 'react'\n\nexport const RenderVersionFieldsToDiff = ({\n versionFields,\n}: {\n versionFields: VersionField[]\n}): React.ReactNode => {\n const [hasMounted, setHasMounted] = React.useState(false)\n\n // defer rendering until after the first mount as the CSS is loaded with Emotion\n // this will ensure that the CSS is loaded before rendering the diffs and prevent CLS\n useEffect(() => {\n setHasMounted(true)\n }, [])\n\n return (\n <div className={baseClass}>\n {!hasMounted ? (\n <Fragment>\n <ShimmerEffect height=\"8rem\" width=\"100%\" />\n </Fragment>\n ) : (\n versionFields?.map((field, fieldIndex) => {\n if (field.fieldByLocale) {\n const LocaleComponents: React.ReactNode[] = []\n for (const [locale, baseField] of Object.entries(field.fieldByLocale)) {\n LocaleComponents.push(\n <div className={`${baseClass}__locale`} key={[locale, fieldIndex].join('-')}>\n <div className={`${baseClass}__locale-value`}>{baseField.CustomComponent}</div>\n </div>,\n )\n }\n return (\n <div className={`${baseClass}__field`} key={fieldIndex}>\n {LocaleComponents}\n </div>\n )\n } else if (field.field) {\n return (\n <div\n className={`${baseClass}__field field__${field.field.type}`}\n data-field-path={field.field.path}\n key={fieldIndex}\n >\n {field.field.CustomComponent}\n </div>\n )\n }\n\n return null\n })\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,MAAMC,SAAA,GAAY;AAKlB,SAASC,aAAa,QAAQ;AAC9B,OAAOC,KAAA,IAASC,QAAQ,EAAEC,SAAS,QAAQ;AAE3C,OAAO,MAAMC,yBAAA,GAA4BC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAC;IAAAS;EAAA,IAAAF,EAIzC;EACC,OAAAG,UAAA,EAAAC,aAAA,IAAoCR,KAAA,CAAAS,QAAA,MAAe;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAN,CAAA,QAAAO,MAAA,CAAAC,GAAA;IAIzCH,EAAA,GAAAA,CAAA;MACRF,aAAA,KAAc;IAAA;IACbG,EAAA;IAAEN,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAM,EAAA;EAAA;IAAAD,EAAA,GAAAL,CAAA;IAAAM,EAAA,GAAAN,CAAA;EAAA;EAFLH,SAAA,CAAUQ,EAEV,EAAGC,EAAE;EAAA,IAAAG,EAAA;EAAA,IAAAT,CAAA,QAAAE,UAAA,IAAAF,CAAA,QAAAC,aAAA;IAGHQ,EAAA,GAAAC,IAAA,CAAC;MAAAC,SAAA,EAAAlB,SAAA;MAAAmB,QAAA,EACE,CAACV,UAAA,GACAQ,IAAA,CAAAd,QAAA;QAAAgB,QAAA,EACEF,IAAA,CAAAhB,aAAA;UAAAmB,MAAA,EAAsB;UAAAC,KAAA,EAAa;QAAA,C;WAGrCb,aAAA,EAAAc,GAAA,CAAAC,KAAA;IA4BA,C;;;;;;;SAlCJP,E;CAsCJ;AApDyC,SAAAO,MAAAC,KAAA,EAAAC,UAAA;EAAA,IAqB3BD,KAAA,CAAAE,aAAA;IACF,MAAAC,gBAAA;IAA8C,KACzC,OAAAC,MAAA,EAAAC,SAAA,CAAyB,IAAIC,MAAA,CAAAC,OAAA,CAAeP,KAAA,CAAAE,aAAmB;MAClEC,gBAAA,CAAAK,IAAA,CACEf,IAAA,CAAC;QAAAC,SAAA,EAAe,GAAAlB,SAAA,UAAsB;QAAAmB,QAAA,EACpCF,IAAA,CAAC;UAAAC,SAAA,EAAe,GAAAlB,SAAA,gBAA4B;UAAAmB,QAAA,EAAGU,SAAA,CAAAI;QAAA,C;SADJ,CAACL,MAAA,EAAQH,UAAA,EAAAS,IAAA,CAAiB;IAAA;IAAA,OAMzEjB,IAAA,CAAC;MAAAC,SAAA,EAAe,GAAAlB,SAAA,SAAqB;MAAAmB,QAAA,EAClCQ;IAAA,GADyCF,UAAA;EAAA;IAAA,IAIrCD,KAAA,CAAAA,KAAA;MAAA,OAEPP,IAAA,CAAC;QAAAC,SAAA,EACY,GAAAlB,SAAA,kBAA8BwB,KAAA,CAAAA,KAAA,CAAAW,IAAA,EAAkB;QAAA,mBAC1CX,KAAA,CAAAA,KAAA,CAAAY,IAAA;QAAAjB,QAAA,EAGhBK,KAAA,CAAAA,KAAA,CAAAS;MAAA,GAFIR,UAAA;IAAA;EAAA;EAAA;AAAA","ignoreList":[]}
@@ -1,15 +1,16 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
- import type { ClientFieldSchemaMap, DiffComponentProps, DiffComponentServerProps, Field, FieldTypes, PayloadComponent, PayloadRequest, SanitizedFieldPermissions, VersionField } from 'payload';
2
+ import type { ClientFieldSchemaMap, Field, FieldDiffClientProps, FieldDiffServerProps, FieldTypes, PayloadComponent, PayloadRequest, SanitizedFieldPermissions, VersionField } from 'payload';
3
3
  export type BuildVersionFieldsArgs = {
4
4
  clientSchemaMap: ClientFieldSchemaMap;
5
5
  comparisonSiblingData: object;
6
- customDiffComponents: Partial<Record<FieldTypes, PayloadComponent<DiffComponentServerProps, DiffComponentProps>>>;
6
+ customDiffComponents: Partial<Record<FieldTypes, PayloadComponent<FieldDiffServerProps, FieldDiffClientProps>>>;
7
7
  entitySlug: string;
8
8
  fieldPermissions: {
9
9
  [key: string]: SanitizedFieldPermissions;
10
10
  } | true;
11
11
  fields: Field[];
12
12
  i18n: I18nClient;
13
+ modifiedOnly: boolean;
13
14
  parentIndexPath: string;
14
15
  parentPath: string;
15
16
  parentSchemaPath: string;
@@ -24,7 +25,7 @@ export type BuildVersionFieldsArgs = {
24
25
  * Here, the server is responsible for traversing through the document data and building up this
25
26
  * version state object.
26
27
  */
27
- export declare const buildVersionFields: ({ clientSchemaMap, comparisonSiblingData, customDiffComponents, entitySlug, fieldPermissions, fields, i18n, parentIndexPath, parentPath, parentSchemaPath, req, selectedLocales, versionSiblingData, }: BuildVersionFieldsArgs) => {
28
+ export declare const buildVersionFields: ({ clientSchemaMap, comparisonSiblingData, customDiffComponents, entitySlug, fieldPermissions, fields, i18n, modifiedOnly, parentIndexPath, parentPath, parentSchemaPath, req, selectedLocales, versionSiblingData, }: BuildVersionFieldsArgs) => {
28
29
  versionFields: VersionField[];
29
30
  };
30
31
  //# sourceMappingURL=buildVersionFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,KAAK,EACL,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACb,MAAM,SAAS,CAAA;AAUhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,oBAAoB,CAAA;IACrC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAC3B,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAC,CACnF,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EACZ;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,2MAc5B,sBAAsB,KAAG;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAA;CAiF9B,CAAA"}
1
+ {"version":3,"file":"buildVersionFields.d.ts","sourceRoot":"","sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAGV,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,YAAY,EACb,MAAM,SAAS,CAAA;AAWhB,MAAM,MAAM,sBAAsB,GAAG;IACnC,eAAe,EAAE,oBAAoB,CAAA;IACrC,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,OAAO,CAC3B,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CACjF,CAAA;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EACZ;QACE,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAAA;KACzC,GACD,IAAI,CAAA;IACR,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,MAAM,CAAA;IAClB,gBAAgB,EAAE,MAAM,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,yNAe5B,sBAAsB,KAAG;IAC1B,aAAa,EAAE,YAAY,EAAE,CAAA;CAqG9B,CAAA"}
@@ -1,4 +1,5 @@
1
1
  import { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent';
2
+ import { dequal } from 'dequal/lite';
2
3
  import { fieldIsID, getUniqueListBy, tabHasName } from 'payload/shared';
3
4
  import { diffMethods } from './fields/diffMethods.js';
4
5
  import { diffComponents } from './fields/index.js';
@@ -18,6 +19,7 @@ export const buildVersionFields = ({
18
19
  fieldPermissions,
19
20
  fields,
20
21
  i18n,
22
+ modifiedOnly,
21
23
  parentIndexPath,
22
24
  parentPath,
23
25
  parentSchemaPath,
@@ -44,9 +46,19 @@ export const buildVersionFields = ({
44
46
  parentSchemaPath
45
47
  });
46
48
  const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath);
47
- const versionField = {
48
- type: field.type
49
- };
49
+ if (!clientField) {
50
+ req.payload.logger.error({
51
+ clientFieldKey: entitySlug + '.' + schemaPath,
52
+ clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),
53
+ msg: 'No client field found for ' + entitySlug + '.' + schemaPath,
54
+ parentPath,
55
+ parentSchemaPath,
56
+ path,
57
+ schemaPath
58
+ });
59
+ throw new Error('No client field found for ' + entitySlug + '.' + schemaPath);
60
+ }
61
+ const versionField = {};
50
62
  const isLocalized = 'localized' in field && field.localized;
51
63
  const fieldName = 'name' in field ? field.name : null;
52
64
  const versionValue = fieldName ? versionSiblingData?.[fieldName] : versionSiblingData;
@@ -65,6 +77,7 @@ export const buildVersionFields = ({
65
77
  i18n,
66
78
  indexPath,
67
79
  locale,
80
+ modifiedOnly,
68
81
  parentPath,
69
82
  parentSchemaPath,
70
83
  path,
@@ -73,6 +86,9 @@ export const buildVersionFields = ({
73
86
  selectedLocales,
74
87
  versionValue: versionValue?.[locale]
75
88
  });
89
+ if (!versionField.fieldByLocale[locale]) {
90
+ continue;
91
+ }
76
92
  }
77
93
  } else {
78
94
  versionField.field = buildVersionField({
@@ -85,6 +101,7 @@ export const buildVersionFields = ({
85
101
  fieldPermissions,
86
102
  i18n,
87
103
  indexPath,
104
+ modifiedOnly,
88
105
  parentPath,
89
106
  parentSchemaPath,
90
107
  path,
@@ -93,6 +110,9 @@ export const buildVersionFields = ({
93
110
  selectedLocales,
94
111
  versionValue
95
112
  });
113
+ if (!versionField.field) {
114
+ continue;
115
+ }
96
116
  }
97
117
  versionFields.push(versionField);
98
118
  }
@@ -111,6 +131,7 @@ const buildVersionField = ({
111
131
  i18n,
112
132
  indexPath,
113
133
  locale,
134
+ modifiedOnly,
114
135
  parentPath,
115
136
  parentSchemaPath,
116
137
  path,
@@ -126,10 +147,16 @@ const buildVersionField = ({
126
147
  if (!hasPermission) {
127
148
  return null;
128
149
  }
150
+ if (modifiedOnly && dequal(versionValue, comparisonValue)) {
151
+ return null;
152
+ }
129
153
  const CustomComponent = field?.admin?.components?.Diff ?? customDiffComponents?.[field.type];
130
154
  const DefaultComponent = diffComponents?.[field.type];
131
155
  const baseVersionField = {
132
- fields: []
156
+ type: field.type,
157
+ fields: [],
158
+ path,
159
+ schemaPath
133
160
  };
134
161
  if (field.type === 'tabs' && 'tabs' in field) {
135
162
  baseVersionField.tabs = [];
@@ -161,6 +188,7 @@ const buildVersionField = ({
161
188
  fieldPermissions,
162
189
  fields: tab.fields,
163
190
  i18n,
191
+ modifiedOnly,
164
192
  parentIndexPath: isNamedTab ? '' : tabIndexPath,
165
193
  parentPath: tabPath,
166
194
  parentSchemaPath: tabSchemaPath,
@@ -188,6 +216,7 @@ const buildVersionField = ({
188
216
  fieldPermissions,
189
217
  fields: field.fields,
190
218
  i18n,
219
+ modifiedOnly,
191
220
  parentIndexPath: 'name' in field ? '' : indexPath,
192
221
  parentPath: path + '.' + i,
193
222
  parentSchemaPath: schemaPath,
@@ -205,6 +234,7 @@ const buildVersionField = ({
205
234
  fieldPermissions,
206
235
  fields: field.fields,
207
236
  i18n,
237
+ modifiedOnly,
208
238
  parentIndexPath: 'name' in field ? '' : indexPath,
209
239
  parentPath: path,
210
240
  parentSchemaPath: schemaPath,
@@ -241,6 +271,7 @@ const buildVersionField = ({
241
271
  fieldPermissions,
242
272
  fields,
243
273
  i18n,
274
+ modifiedOnly,
244
275
  parentIndexPath: 'name' in field ? '' : indexPath,
245
276
  parentPath: path + '.' + i,
246
277
  parentSchemaPath: schemaPath + '.' + versionBlock.slug,
@@ -1 +1 @@
1
- {"version":3,"file":"buildVersionFields.js","names":["RenderServerComponent","fieldIsID","getUniqueListBy","tabHasName","diffMethods","diffComponents","getFieldPathsModified","buildVersionFields","clientSchemaMap","comparisonSiblingData","customDiffComponents","entitySlug","fieldPermissions","fields","i18n","parentIndexPath","parentPath","parentSchemaPath","req","selectedLocales","versionSiblingData","versionFields","fieldIndex","field","indexPath","path","schemaPath","index","clientField","get","versionField","type","isLocalized","localized","fieldName","name","versionValue","comparisonValue","fieldByLocale","locale","buildVersionField","push","diffMethod","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","baseVersionField","tabs","tabIndex","tab","isNamedTab","tabIndexPath","tabPath","tabSchemaPath","label","Array","isArray","Error","rows","i","length","comparisonRow","versionRow","versionBlock","blocks","find","block","slug","blockType","comparisonBlock","clientCellProps","undefined","serverCellProps","clientProps","Component","Fallback","importMap","payload","key","serverProps"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BaseVersionField,\n ClientField,\n ClientFieldSchemaMap,\n DiffComponentProps,\n DiffComponentServerProps,\n Field,\n FieldTypes,\n PayloadComponent,\n PayloadRequest,\n SanitizedFieldPermissions,\n VersionField,\n} from 'payload'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { fieldIsID, getUniqueListBy, tabHasName } from 'payload/shared'\n\nimport { diffMethods } from './fields/diffMethods.js'\nimport { diffComponents } from './fields/index.js'\nimport { getFieldPathsModified } from './utilities/getFieldPathsModified.js'\n\nexport type BuildVersionFieldsArgs = {\n clientSchemaMap: ClientFieldSchemaMap\n comparisonSiblingData: object\n customDiffComponents: Partial<\n Record<FieldTypes, PayloadComponent<DiffComponentServerProps, DiffComponentProps>>\n >\n entitySlug: string\n fieldPermissions:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n fields: Field[]\n i18n: I18nClient\n parentIndexPath: string\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n selectedLocales: string[]\n versionSiblingData: object\n}\n\n/**\n * Build up an object that contains rendered diff components for each field.\n * This is then sent to the client to be rendered.\n *\n * Here, the server is responsible for traversing through the document data and building up this\n * version state object.\n */\nexport const buildVersionFields = ({\n clientSchemaMap,\n comparisonSiblingData,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData,\n}: BuildVersionFieldsArgs): {\n versionFields: VersionField[]\n} => {\n const versionFields: VersionField[] = []\n let fieldIndex = -1\n for (const field of fields) {\n fieldIndex++\n if (fieldIsID(field)) {\n continue\n }\n\n const { indexPath, path, schemaPath } = getFieldPathsModified({\n field,\n index: fieldIndex,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath)\n\n const versionField: VersionField = {\n type: field.type,\n }\n const isLocalized = 'localized' in field && field.localized\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const versionValue = fieldName ? versionSiblingData?.[fieldName] : versionSiblingData\n\n const comparisonValue = fieldName ? comparisonSiblingData?.[fieldName] : comparisonSiblingData\n\n if (isLocalized) {\n versionField.fieldByLocale = {}\n\n for (const locale of selectedLocales) {\n versionField.fieldByLocale[locale] = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue: comparisonValue?.[locale],\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue: versionValue?.[locale],\n })\n }\n } else {\n versionField.field = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n })\n }\n\n versionFields.push(versionField)\n }\n\n return {\n versionFields,\n }\n}\n\nconst buildVersionField = ({\n clientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n}: {\n clientField: ClientField\n comparisonValue: unknown\n field: Field\n indexPath: string\n locale?: string\n path: string\n schemaPath: string\n versionValue: unknown\n} & Omit<\n BuildVersionFieldsArgs,\n 'comparisonSiblingData' | 'fields' | 'parentIndexPath' | 'versionSiblingData'\n>): BaseVersionField | null => {\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const diffMethod: DiffMethod = diffMethods[field.type] || 'CHARS'\n\n const hasPermission =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.read\n\n const subFieldPermissions =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.fields\n\n if (!hasPermission) {\n return null\n }\n\n const CustomComponent = field?.admin?.components?.Diff ?? customDiffComponents?.[field.type]\n const DefaultComponent = diffComponents?.[field.type]\n\n const baseVersionField: BaseVersionField = {\n fields: [],\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n baseVersionField.tabs = []\n let tabIndex = -1\n for (const tab of field.tabs) {\n tabIndex++\n const isNamedTab = tabHasName(tab)\n\n const {\n indexPath: tabIndexPath,\n path: tabPath,\n schemaPath: tabSchemaPath,\n } = getFieldPathsModified({\n field: {\n ...tab,\n type: 'tab',\n },\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath,\n parentSchemaPath,\n })\n baseVersionField.tabs.push({\n name: 'name' in tab ? tab.name : null,\n fields: buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: 'name' in tab ? comparisonValue?.[tab.name] : comparisonValue,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: tab.fields,\n i18n,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentPath: tabPath,\n parentSchemaPath: tabSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: 'name' in tab ? versionValue?.[tab.name] : versionValue,\n }).versionFields,\n label: tab.label,\n })\n }\n } // At this point, we are dealing with a `row`, etc\n else if ('fields' in field) {\n if (field.type === 'array') {\n if (!Array.isArray(versionValue)) {\n throw new Error('Expected versionValue to be an array')\n }\n baseVersionField.rows = []\n\n for (let i = 0; i < versionValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = versionValue?.[i] || {}\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n } else {\n baseVersionField.fields = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonValue as object,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionValue as object,\n }).versionFields\n }\n } else if (field.type === 'blocks') {\n baseVersionField.rows = []\n\n if (!Array.isArray(versionValue)) {\n throw new Error('Expected versionValue to be an array')\n }\n\n for (let i = 0; i < versionValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = versionValue[i] || {}\n const versionBlock = field.blocks.find((block) => block.slug === versionRow.blockType)\n\n let fields = []\n\n if (versionRow.blockType === comparisonRow.blockType) {\n fields = versionBlock.fields\n } else {\n const comparisonBlock = field.blocks.find((block) => block.slug === comparisonRow.blockType)\n if (comparisonBlock) {\n fields = getUniqueListBy<Field>(\n [...versionBlock.fields, ...comparisonBlock.fields],\n 'name',\n )\n } else {\n fields = versionBlock.fields\n }\n }\n\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath + '.' + versionBlock.slug,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n }\n\n const clientCellProps: DiffComponentProps = {\n baseVersionField: {\n ...baseVersionField,\n CustomComponent: undefined,\n },\n comparisonValue,\n diffMethod,\n field: clientField,\n fieldPermissions: subFieldPermissions,\n versionValue,\n }\n\n const serverCellProps: DiffComponentServerProps = {\n ...clientCellProps,\n clientField,\n field,\n i18n,\n req,\n selectedLocales,\n }\n\n baseVersionField.CustomComponent = RenderServerComponent({\n clientProps: locale\n ? ({\n ...clientCellProps,\n locale,\n } as DiffComponentProps)\n : clientCellProps,\n Component: CustomComponent,\n Fallback: DefaultComponent,\n importMap: req.payload.importMap,\n key: 'diff component',\n serverProps: locale\n ? ({\n ...serverCellProps,\n locale,\n } as DiffComponentServerProps)\n : serverCellProps,\n })\n\n return baseVersionField\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildVersionFields.js","names":["RenderServerComponent","dequal","fieldIsID","getUniqueListBy","tabHasName","diffMethods","diffComponents","getFieldPathsModified","buildVersionFields","clientSchemaMap","comparisonSiblingData","customDiffComponents","entitySlug","fieldPermissions","fields","i18n","modifiedOnly","parentIndexPath","parentPath","parentSchemaPath","req","selectedLocales","versionSiblingData","versionFields","fieldIndex","field","indexPath","path","schemaPath","index","clientField","get","payload","logger","error","clientFieldKey","clientSchemaMapKeys","Array","from","keys","msg","Error","versionField","isLocalized","localized","fieldName","name","versionValue","comparisonValue","fieldByLocale","locale","buildVersionField","push","diffMethod","type","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","baseVersionField","tabs","tabIndex","tab","isNamedTab","tabIndexPath","tabPath","tabSchemaPath","label","isArray","rows","i","length","comparisonRow","versionRow","versionBlock","blocks","find","block","slug","blockType","comparisonBlock","clientCellProps","undefined","serverCellProps","clientProps","Component","Fallback","importMap","key","serverProps"],"sources":["../../../../src/views/Version/RenderFieldsToDiff/buildVersionFields.tsx"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n BaseVersionField,\n ClientField,\n ClientFieldSchemaMap,\n Field,\n FieldDiffClientProps,\n FieldDiffServerProps,\n FieldTypes,\n PayloadComponent,\n PayloadRequest,\n SanitizedFieldPermissions,\n VersionField,\n} from 'payload'\nimport type { DiffMethod } from 'react-diff-viewer-continued'\n\nimport { RenderServerComponent } from '@payloadcms/ui/elements/RenderServerComponent'\nimport { dequal } from 'dequal/lite'\nimport { fieldIsID, getUniqueListBy, tabHasName } from 'payload/shared'\n\nimport { diffMethods } from './fields/diffMethods.js'\nimport { diffComponents } from './fields/index.js'\nimport { getFieldPathsModified } from './utilities/getFieldPathsModified.js'\n\nexport type BuildVersionFieldsArgs = {\n clientSchemaMap: ClientFieldSchemaMap\n comparisonSiblingData: object\n customDiffComponents: Partial<\n Record<FieldTypes, PayloadComponent<FieldDiffServerProps, FieldDiffClientProps>>\n >\n entitySlug: string\n fieldPermissions:\n | {\n [key: string]: SanitizedFieldPermissions\n }\n | true\n fields: Field[]\n i18n: I18nClient\n modifiedOnly: boolean\n parentIndexPath: string\n parentPath: string\n parentSchemaPath: string\n req: PayloadRequest\n selectedLocales: string[]\n versionSiblingData: object\n}\n\n/**\n * Build up an object that contains rendered diff components for each field.\n * This is then sent to the client to be rendered.\n *\n * Here, the server is responsible for traversing through the document data and building up this\n * version state object.\n */\nexport const buildVersionFields = ({\n clientSchemaMap,\n comparisonSiblingData,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath,\n parentPath,\n parentSchemaPath,\n req,\n selectedLocales,\n versionSiblingData,\n}: BuildVersionFieldsArgs): {\n versionFields: VersionField[]\n} => {\n const versionFields: VersionField[] = []\n let fieldIndex = -1\n for (const field of fields) {\n fieldIndex++\n if (fieldIsID(field)) {\n continue\n }\n\n const { indexPath, path, schemaPath } = getFieldPathsModified({\n field,\n index: fieldIndex,\n parentIndexPath: 'name' in field ? '' : parentIndexPath,\n parentPath,\n parentSchemaPath,\n })\n\n const clientField = clientSchemaMap.get(entitySlug + '.' + schemaPath)\n\n if (!clientField) {\n req.payload.logger.error({\n clientFieldKey: entitySlug + '.' + schemaPath,\n clientSchemaMapKeys: Array.from(clientSchemaMap.keys()),\n msg: 'No client field found for ' + entitySlug + '.' + schemaPath,\n parentPath,\n parentSchemaPath,\n path,\n schemaPath,\n })\n throw new Error('No client field found for ' + entitySlug + '.' + schemaPath)\n }\n\n const versionField: VersionField = {}\n const isLocalized = 'localized' in field && field.localized\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const versionValue = fieldName ? versionSiblingData?.[fieldName] : versionSiblingData\n\n const comparisonValue = fieldName ? comparisonSiblingData?.[fieldName] : comparisonSiblingData\n\n if (isLocalized) {\n versionField.fieldByLocale = {}\n\n for (const locale of selectedLocales) {\n versionField.fieldByLocale[locale] = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue: comparisonValue?.[locale],\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue: versionValue?.[locale],\n })\n if (!versionField.fieldByLocale[locale]) {\n continue\n }\n }\n } else {\n versionField.field = buildVersionField({\n clientField: clientField as ClientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n modifiedOnly,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n })\n\n if (!versionField.field) {\n continue\n }\n }\n\n versionFields.push(versionField)\n }\n\n return {\n versionFields,\n }\n}\n\nconst buildVersionField = ({\n clientField,\n clientSchemaMap,\n comparisonValue,\n customDiffComponents,\n entitySlug,\n field,\n fieldPermissions,\n i18n,\n indexPath,\n locale,\n modifiedOnly,\n parentPath,\n parentSchemaPath,\n path,\n req,\n schemaPath,\n selectedLocales,\n versionValue,\n}: {\n clientField: ClientField\n comparisonValue: unknown\n field: Field\n indexPath: string\n locale?: string\n modifiedOnly?: boolean\n path: string\n schemaPath: string\n versionValue: unknown\n} & Omit<\n BuildVersionFieldsArgs,\n 'comparisonSiblingData' | 'fields' | 'parentIndexPath' | 'versionSiblingData'\n>): BaseVersionField | null => {\n const fieldName: null | string = 'name' in field ? field.name : null\n\n const diffMethod: DiffMethod = diffMethods[field.type] || 'CHARS'\n\n const hasPermission =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.read\n\n const subFieldPermissions =\n fieldPermissions === true ||\n !fieldName ||\n fieldPermissions?.[fieldName] === true ||\n fieldPermissions?.[fieldName]?.fields\n\n if (!hasPermission) {\n return null\n }\n\n if (modifiedOnly && dequal(versionValue, comparisonValue)) {\n return null\n }\n\n const CustomComponent = field?.admin?.components?.Diff ?? customDiffComponents?.[field.type]\n const DefaultComponent = diffComponents?.[field.type]\n\n const baseVersionField: BaseVersionField = {\n type: field.type,\n fields: [],\n path,\n schemaPath,\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n baseVersionField.tabs = []\n let tabIndex = -1\n for (const tab of field.tabs) {\n tabIndex++\n const isNamedTab = tabHasName(tab)\n\n const {\n indexPath: tabIndexPath,\n path: tabPath,\n schemaPath: tabSchemaPath,\n } = getFieldPathsModified({\n field: {\n ...tab,\n type: 'tab',\n },\n index: tabIndex,\n parentIndexPath: indexPath,\n parentPath,\n parentSchemaPath,\n })\n baseVersionField.tabs.push({\n name: 'name' in tab ? tab.name : null,\n fields: buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: 'name' in tab ? comparisonValue?.[tab.name] : comparisonValue,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: tab.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: isNamedTab ? '' : tabIndexPath,\n parentPath: tabPath,\n parentSchemaPath: tabSchemaPath,\n req,\n selectedLocales,\n versionSiblingData: 'name' in tab ? versionValue?.[tab.name] : versionValue,\n }).versionFields,\n label: tab.label,\n })\n }\n } // At this point, we are dealing with a `row`, etc\n else if ('fields' in field) {\n if (field.type === 'array') {\n if (!Array.isArray(versionValue)) {\n throw new Error('Expected versionValue to be an array')\n }\n baseVersionField.rows = []\n\n for (let i = 0; i < versionValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = versionValue?.[i] || {}\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n } else {\n baseVersionField.fields = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonValue as object,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields: field.fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path,\n parentSchemaPath: schemaPath,\n req,\n selectedLocales,\n versionSiblingData: versionValue as object,\n }).versionFields\n }\n } else if (field.type === 'blocks') {\n baseVersionField.rows = []\n\n if (!Array.isArray(versionValue)) {\n throw new Error('Expected versionValue to be an array')\n }\n\n for (let i = 0; i < versionValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = versionValue[i] || {}\n const versionBlock = field.blocks.find((block) => block.slug === versionRow.blockType)\n\n let fields = []\n\n if (versionRow.blockType === comparisonRow.blockType) {\n fields = versionBlock.fields\n } else {\n const comparisonBlock = field.blocks.find((block) => block.slug === comparisonRow.blockType)\n if (comparisonBlock) {\n fields = getUniqueListBy<Field>(\n [...versionBlock.fields, ...comparisonBlock.fields],\n 'name',\n )\n } else {\n fields = versionBlock.fields\n }\n }\n\n baseVersionField.rows[i] = buildVersionFields({\n clientSchemaMap,\n comparisonSiblingData: comparisonRow,\n customDiffComponents,\n entitySlug,\n fieldPermissions,\n fields,\n i18n,\n modifiedOnly,\n parentIndexPath: 'name' in field ? '' : indexPath,\n parentPath: path + '.' + i,\n parentSchemaPath: schemaPath + '.' + versionBlock.slug,\n req,\n selectedLocales,\n versionSiblingData: versionRow,\n }).versionFields\n }\n }\n\n const clientCellProps: FieldDiffClientProps = {\n baseVersionField: {\n ...baseVersionField,\n CustomComponent: undefined,\n },\n comparisonValue,\n diffMethod,\n field: clientField,\n fieldPermissions: subFieldPermissions,\n versionValue,\n }\n\n const serverCellProps: FieldDiffServerProps = {\n ...clientCellProps,\n clientField,\n field,\n i18n,\n req,\n selectedLocales,\n }\n\n baseVersionField.CustomComponent = RenderServerComponent({\n clientProps: locale\n ? ({\n ...clientCellProps,\n locale,\n } as FieldDiffClientProps)\n : clientCellProps,\n Component: CustomComponent,\n Fallback: DefaultComponent,\n importMap: req.payload.importMap,\n key: 'diff component',\n serverProps: locale\n ? ({\n ...serverCellProps,\n locale,\n } as FieldDiffServerProps)\n : serverCellProps,\n })\n\n return baseVersionField\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,3 @@
1
- import type { CollapsibleFieldClient, DiffComponentProps } from 'payload';
2
- import React from 'react';
3
- export declare const Collapsible: React.FC<DiffComponentProps<CollapsibleFieldClient>>;
1
+ import type { CollapsibleFieldDiffClientComponent } from 'payload';
2
+ export declare const Collapsible: CollapsibleFieldDiffClientComponent;
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAIzE,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAAC,sBAAsB,CAAC,CA0B5E,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,SAAS,CAAA;AAYlE,eAAO,MAAM,WAAW,EAAE,mCA8BzB,CAAA"}
@@ -23,6 +23,9 @@ export const Collapsible = t0 => {
23
23
  const {
24
24
  selectedLocales
25
25
  } = useSelectedLocales();
26
+ if (!baseVersionField.fields?.length) {
27
+ return null;
28
+ }
26
29
  let t1;
27
30
  if ($[0] !== field || $[1] !== i18n) {
28
31
  t1 = "label" in field && field.label && typeof field.label !== "function" && _jsx("span", {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","useTranslation","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","baseClass","Collapsible","t0","$","baseVersionField","comparisonValue","field","versionValue","i18n","selectedLocales","t1","label","_jsx","children","t2","className","comparison","fields","version","versionFields"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"sourcesContent":["'use client'\nimport type { CollapsibleFieldClient, DiffComponentProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useTranslation } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\n\nconst baseClass = 'collapsible-diff'\n\nexport const Collapsible: React.FC<DiffComponentProps<CollapsibleFieldClient>> = ({\n baseVersionField,\n comparisonValue,\n field,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n fields={field.fields}\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && <span>{getTranslation(field.label, i18n)}</span>\n }\n locales={selectedLocales}\n version={versionValue}\n >\n <RenderVersionFieldsToDiff versionFields={baseVersionField.fields} />\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,QAAQ;AAC9B,SAASC,yBAAyB,QAAQ;AAE1C,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,WAAA,GAAoEC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,gBAAA;IAAAC,eAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAL,EAKjF;EACC;IAAAM;EAAA,IAAiBb,cAAA;EACjB;IAAAc;EAAA,IAA4BZ,kBAAA;EAAA,IAAAa,EAAA;EAAA,IAAAP,CAAA,QAAAG,KAAA,IAAAH,CAAA,QAAAK,IAAA;IAQpBE,EAAA,cAAWJ,KAAA,IACXA,KAAA,CAAAK,KAAW,IACX,OAAOL,KAAA,CAAAK,KAAA,KAAgB,cAAcC,IAAA,CAAC;MAAAC,QAAA,EAAMnB,cAAA,CAAeY,KAAA,CAAAK,KAAA,EAAaH,IAAA;IAAA,C;;;;;;;;;IAP9EM,EAAA,GAAAF,IAAA,CAAC;MAAAG,SAAA,EAAAf,SAAA;MAAAa,QAAA,EACCD,IAAA,CAAAd,aAAA;QAAAkB,UAAA,EACcX,eAAA;QAAAY,MAAA,EACJX,KAAA,CAAAW,MAAA;QAAAN,KAAA,EAEND,E;iBAIOD,eAAA;QAAAS,OAAA,EACAX,YAAA;QAAAM,QAAA,EAETD,IAAA,CAAAb,yBAAA;UAAAoB,aAAA,EAA0Cf,gBAAA,CAAAa;QAAA,C;;;;;;;;;;;;;SAZ9CH,E;CAgBJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useTranslation","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","baseClass","Collapsible","t0","$","baseVersionField","comparisonValue","field","versionValue","i18n","selectedLocales","fields","length","t1","label","_jsx","children","t2","className","comparison","version","versionFields"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"sourcesContent":["'use client'\nimport type { CollapsibleFieldDiffClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useTranslation } from '@payloadcms/ui'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\n\nconst baseClass = 'collapsible-diff'\n\nexport const Collapsible: CollapsibleFieldDiffClientComponent = ({\n baseVersionField,\n comparisonValue,\n field,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n\n if (!baseVersionField.fields?.length) {\n return null\n }\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n fields={field.fields}\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && <span>{getTranslation(field.label, i18n)}</span>\n }\n locales={selectedLocales}\n version={versionValue}\n >\n <RenderVersionFieldsToDiff versionFields={baseVersionField.fields} />\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,QAAQ;AACnC,SAASC,aAAa,QAAQ;AAC9B,SAASC,yBAAyB,QAAQ;AAE1C,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,WAAA,GAAmDC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,gBAAA;IAAAC,eAAA;IAAAC,KAAA;IAAAC;EAAA,IAAAL,EAKhE;EACC;IAAAM;EAAA,IAAiBb,cAAA;EACjB;IAAAc;EAAA,IAA4BZ,kBAAA;EAAA,KAEvBO,gBAAA,CAAAM,MAAA,EAAAC,MAAA;IAAA;EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAT,CAAA,QAAAG,KAAA,IAAAH,CAAA,QAAAK,IAAA;IAUGI,EAAA,cAAWN,KAAA,IACXA,KAAA,CAAAO,KAAW,IACX,OAAOP,KAAA,CAAAO,KAAA,KAAgB,cAAcC,IAAA,CAAC;MAAAC,QAAA,EAAMrB,cAAA,CAAeY,KAAA,CAAAO,KAAA,EAAaL,IAAA;IAAA,C;;;;;;;;;IAP9EQ,EAAA,GAAAF,IAAA,CAAC;MAAAG,SAAA,EAAAjB,SAAA;MAAAe,QAAA,EACCD,IAAA,CAAAhB,aAAA;QAAAoB,UAAA,EACcb,eAAA;QAAAK,MAAA,EACJJ,KAAA,CAAAI,MAAA;QAAAG,KAAA,EAEND,E;iBAIOH,eAAA;QAAAU,OAAA,EACAZ,YAAA;QAAAQ,QAAA,EAETD,IAAA,CAAAf,yBAAA;UAAAqB,aAAA,EAA0ChB,gBAAA,CAAAM;QAAA,C;;;;;;;;;;;;;SAZ9CM,E;CAgBJ","ignoreList":[]}