@payloadcms/next 3.23.0 → 3.24.0-canary.10637cd

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 (32) hide show
  1. package/dist/prod/styles.css +1 -1
  2. package/dist/routes/rest/index.d.ts.map +1 -1
  3. package/dist/routes/rest/index.js +1 -1
  4. package/dist/routes/rest/index.js.map +1 -1
  5. package/dist/views/List/index.d.ts.map +1 -1
  6. package/dist/views/List/index.js +6 -0
  7. package/dist/views/List/index.js.map +1 -1
  8. package/dist/views/List/resolveAllFilterOptions.d.ts +6 -0
  9. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -0
  10. package/dist/views/List/resolveAllFilterOptions.js +27 -0
  11. package/dist/views/List/resolveAllFilterOptions.js.map +1 -0
  12. package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
  13. package/dist/views/LivePreview/Context/index.js +5 -1
  14. package/dist/views/LivePreview/Context/index.js.map +1 -1
  15. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
  16. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +122 -59
  17. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  18. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  19. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +4 -2
  20. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  21. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  22. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +16 -11
  23. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  24. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +5 -3
  25. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
  26. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +12 -0
  27. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
  28. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +3 -2
  29. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
  30. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +7 -6
  31. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
  32. package/package.json +7 -7
@@ -1 +1 @@
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","localizedVersionField","buildVersionField","baseVersionField","push","diffMethod","type","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","tabs","tabIndex","tab","isNamedTab","tabIndexPath","tabPath","tabSchemaPath","label","arrayValue","isArray","rows","i","length","comparisonRow","versionRow","blocksValue","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 const localizedVersionField = 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 (localizedVersionField) {\n versionField.fieldByLocale[locale] = localizedVersionField\n }\n }\n } else {\n const baseVersionField = 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 (baseVersionField) {\n versionField.field = baseVersionField\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' && versionValue) {\n const arrayValue = Array.isArray(versionValue) ? versionValue : []\n baseVersionField.rows = []\n\n for (let i = 0; i < arrayValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = arrayValue?.[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 const blocksValue = Array.isArray(versionValue) ? versionValue : []\n\n for (let i = 0; i < blocksValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = blocksValue[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
+ {"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","localizedVersionField","buildVersionField","baseVersionField","push","diffMethod","type","hasPermission","read","subFieldPermissions","CustomComponent","admin","components","Diff","DefaultComponent","tabs","tabIndex","tab","isNamedTab","tabIndexPath","tabPath","tabSchemaPath","label","arrayValue","isArray","rows","i","length","comparisonRow","versionRow","blocksValue","blockSlugToMatch","blockType","versionBlock","blocks","blockReferences","find","block","slug","comparisonBlockSlugToMatch","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 FlattenedBlock,\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 const localizedVersionField = 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 (localizedVersionField) {\n versionField.fieldByLocale[locale] = localizedVersionField\n }\n }\n } else {\n const baseVersionField = 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 (baseVersionField) {\n versionField.field = baseVersionField\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' && versionValue) {\n const arrayValue = Array.isArray(versionValue) ? versionValue : []\n baseVersionField.rows = []\n\n for (let i = 0; i < arrayValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = arrayValue?.[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 const blocksValue = Array.isArray(versionValue) ? versionValue : []\n\n for (let i = 0; i < blocksValue.length; i++) {\n const comparisonRow = comparisonValue?.[i] || {}\n const versionRow = blocksValue[i] || {}\n\n const blockSlugToMatch: string = versionRow.blockType\n const versionBlock =\n req.payload.blocks[blockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\n let fields = []\n\n if (versionRow.blockType === comparisonRow.blockType) {\n fields = versionBlock.fields\n } else {\n const comparisonBlockSlugToMatch: string = versionRow.blockType\n\n const comparisonBlock =\n req.payload.blocks[comparisonBlockSlugToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === comparisonBlockSlugToMatch,\n ) as FlattenedBlock | undefined)\n\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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKnD,OAAO,cAAc,CAAA;AAGrB,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmFnD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKnD,OAAO,cAAc,CAAA;AAGrB,OAAO,KAAK,MAAM,OAAO,CAAA;AASzB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAqFnD,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { getTranslation } from '@payloadcms/translations';
6
- import { useTranslation } from '@payloadcms/ui';
6
+ import { useConfig, useTranslation } from '@payloadcms/ui';
7
7
  import { fieldIsArrayType, fieldIsBlockType } from 'payload/shared';
8
8
  import React from 'react';
9
9
  import { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js';
@@ -12,7 +12,7 @@ import { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js';
12
12
  import { getFieldsForRowComparison } from '../../utilities/getFieldsForRowComparison.js';
13
13
  const baseClass = 'iterable-diff';
14
14
  export const Iterable = t0 => {
15
- const $ = _c(13);
15
+ const $ = _c(14);
16
16
  const {
17
17
  baseVersionField,
18
18
  comparisonValue,
@@ -26,6 +26,9 @@ export const Iterable = t0 => {
26
26
  const {
27
27
  selectedLocales
28
28
  } = useSelectedLocales();
29
+ const {
30
+ config
31
+ } = useConfig();
29
32
  const versionRowCount = Array.isArray(versionValue) ? versionValue.length : 0;
30
33
  const comparisonRowCount = Array.isArray(comparisonValue) ? comparisonValue.length : 0;
31
34
  const maxRows = Math.max(versionRowCount, comparisonRowCount);
@@ -48,7 +51,7 @@ export const Iterable = t0 => {
48
51
  t1 = $[3];
49
52
  }
50
53
  let t2;
51
- if ($[4] !== baseVersionField || $[5] !== comparisonValue || $[6] !== field || $[7] !== i18n || $[8] !== maxRows || $[9] !== selectedLocales || $[10] !== t1 || $[11] !== versionValue) {
54
+ if ($[4] !== baseVersionField || $[5] !== comparisonValue || $[6] !== config || $[7] !== field || $[8] !== i18n || $[9] !== maxRows || $[10] !== selectedLocales || $[11] !== t1 || $[12] !== versionValue) {
52
55
  t2 = _jsx("div", {
53
56
  className: baseClass,
54
57
  children: _jsxs(DiffCollapser, {
@@ -69,6 +72,7 @@ export const Iterable = t0 => {
69
72
  } = getFieldsForRowComparison({
70
73
  baseVersionField,
71
74
  comparisonRow,
75
+ config,
72
76
  field,
73
77
  row: i,
74
78
  versionRow
@@ -99,15 +103,16 @@ export const Iterable = t0 => {
99
103
  });
100
104
  $[4] = baseVersionField;
101
105
  $[5] = comparisonValue;
102
- $[6] = field;
103
- $[7] = i18n;
104
- $[8] = maxRows;
105
- $[9] = selectedLocales;
106
- $[10] = t1;
107
- $[11] = versionValue;
108
- $[12] = t2;
106
+ $[6] = config;
107
+ $[7] = field;
108
+ $[8] = i18n;
109
+ $[9] = maxRows;
110
+ $[10] = selectedLocales;
111
+ $[11] = t1;
112
+ $[12] = versionValue;
113
+ $[13] = t2;
109
114
  } else {
110
- t2 = $[12];
115
+ t2 = $[13];
111
116
  }
112
117
  return t2;
113
118
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","getFieldsForRowComparison","baseClass","Iterable","t0","$","baseVersionField","comparisonValue","field","locale","versionValue","i18n","selectedLocales","versionRowCount","Array","isArray","length","comparisonRowCount","maxRows","Math","max","Error","type","t1","label","_jsxs","children","_jsx","className","t2","comparison","isIterable","version","from","keys","map","row","i","versionRow","comparisonRow","fields","versionFields","rowNumber","String","padStart","rowLabel","locales","t","labels","plural"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldDiffClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useTranslation } from '@payloadcms/ui'\n\nimport './index.scss'\n\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\nimport { getFieldsForRowComparison } from '../../utilities/getFieldsForRowComparison.js'\n\nconst baseClass = 'iterable-diff'\n\nexport const Iterable: React.FC<FieldDiffClientProps> = ({\n baseVersionField,\n comparisonValue,\n field,\n locale,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n\n const versionRowCount = Array.isArray(versionValue) ? versionValue.length : 0\n const comparisonRowCount = Array.isArray(comparisonValue) ? comparisonValue.length : 0\n const maxRows = Math.max(versionRowCount, comparisonRowCount)\n\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(`Expected field to be an array or blocks type but got: ${field.type}`)\n }\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n field={field}\n isIterable\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(field.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n version={versionValue}\n >\n {maxRows > 0 && (\n <div className={`${baseClass}__rows`}>\n {Array.from(Array(maxRows).keys()).map((row, i) => {\n const versionRow = versionValue?.[i] || {}\n const comparisonRow = comparisonValue?.[i] || {}\n\n const { fields, versionFields } = getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n field,\n row: i,\n versionRow,\n })\n\n const rowNumber = String(i + 1).padStart(2, '0')\n const rowLabel = fieldIsArrayType(field) ? `Item ${rowNumber}` : `Block ${rowNumber}`\n\n return (\n <div className={`${baseClass}__row`} key={i}>\n <DiffCollapser\n comparison={comparisonRow}\n fields={fields}\n label={rowLabel}\n locales={selectedLocales}\n version={versionRow}\n >\n <RenderVersionFieldsToDiff versionFields={versionFields} />\n </DiffCollapser>\n </div>\n )\n })}\n </div>\n )}\n {maxRows === 0 && (\n <div className={`${baseClass}__no-rows`}>\n {i18n.t('version:noRowsFound', {\n label:\n 'labels' in field && field.labels?.plural\n ? getTranslation(field.labels.plural, i18n)\n : i18n.t('general:rows'),\n })}\n </div>\n )}\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","getTranslation","useConfig","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useSelectedLocales","DiffCollapser","RenderVersionFieldsToDiff","getFieldsForRowComparison","baseClass","Iterable","t0","$","baseVersionField","comparisonValue","field","locale","versionValue","i18n","selectedLocales","config","versionRowCount","Array","isArray","length","comparisonRowCount","maxRows","Math","max","Error","type","t1","label","_jsxs","children","_jsx","className","t2","comparison","isIterable","version","from","keys","map","row","i","versionRow","comparisonRow","fields","versionFields","rowNumber","String","padStart","rowLabel","locales","t","labels","plural"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldDiffClientProps } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useConfig, useTranslation } from '@payloadcms/ui'\n\nimport './index.scss'\n\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React from 'react'\n\nimport { useSelectedLocales } from '../../../Default/SelectedLocalesContext.js'\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderVersionFieldsToDiff } from '../../RenderVersionFieldsToDiff.js'\nimport { getFieldsForRowComparison } from '../../utilities/getFieldsForRowComparison.js'\n\nconst baseClass = 'iterable-diff'\n\nexport const Iterable: React.FC<FieldDiffClientProps> = ({\n baseVersionField,\n comparisonValue,\n field,\n locale,\n versionValue,\n}) => {\n const { i18n } = useTranslation()\n const { selectedLocales } = useSelectedLocales()\n const { config } = useConfig()\n\n const versionRowCount = Array.isArray(versionValue) ? versionValue.length : 0\n const comparisonRowCount = Array.isArray(comparisonValue) ? comparisonValue.length : 0\n const maxRows = Math.max(versionRowCount, comparisonRowCount)\n\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(`Expected field to be an array or blocks type but got: ${field.type}`)\n }\n\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparisonValue}\n field={field}\n isIterable\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(field.label, i18n)}\n </span>\n )\n }\n locales={selectedLocales}\n version={versionValue}\n >\n {maxRows > 0 && (\n <div className={`${baseClass}__rows`}>\n {Array.from(Array(maxRows).keys()).map((row, i) => {\n const versionRow = versionValue?.[i] || {}\n const comparisonRow = comparisonValue?.[i] || {}\n\n const { fields, versionFields } = getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n const rowNumber = String(i + 1).padStart(2, '0')\n const rowLabel = fieldIsArrayType(field) ? `Item ${rowNumber}` : `Block ${rowNumber}`\n\n return (\n <div className={`${baseClass}__row`} key={i}>\n <DiffCollapser\n comparison={comparisonRow}\n fields={fields}\n label={rowLabel}\n locales={selectedLocales}\n version={versionRow}\n >\n <RenderVersionFieldsToDiff versionFields={versionFields} />\n </DiffCollapser>\n </div>\n )\n })}\n </div>\n )}\n {maxRows === 0 && (\n <div className={`${baseClass}__no-rows`}>\n {i18n.t('version:noRowsFound', {\n label:\n 'labels' in field && field.labels?.plural\n ? getTranslation(field.labels.plural, i18n)\n : i18n.t('general:rows'),\n })}\n </div>\n )}\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
- import type { ArrayFieldClient, BlocksFieldClient, ClientField } from 'payload';
1
+ import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload';
2
2
  type Args = {
3
3
  comparison: unknown;
4
+ config: ClientConfig;
4
5
  fields: ClientField[];
5
6
  locales: string[] | undefined;
6
7
  version: unknown;
@@ -9,13 +10,14 @@ type Args = {
9
10
  * Recursively counts the number of changed fields between comparison and
10
11
  * version data for a given set of fields.
11
12
  */
12
- export declare function countChangedFields({ comparison, fields, locales, version }: Args): number;
13
+ export declare function countChangedFields({ comparison, config, fields, locales, version }: Args): number;
13
14
  type countChangedFieldsInRowsArgs = {
14
15
  comparisonRows: unknown[];
16
+ config: ClientConfig;
15
17
  field: ArrayFieldClient | BlocksFieldClient;
16
18
  locales: string[] | undefined;
17
19
  versionRows: unknown[];
18
20
  };
19
- export declare function countChangedFieldsInRows({ comparisonRows, field, locales, versionRows, }: countChangedFieldsInRowsArgs): number;
21
+ export declare function countChangedFieldsInRows({ comparisonRows, config, field, locales, versionRows, }: countChangedFieldsInRowsArgs): number;
20
22
  export {};
21
23
  //# sourceMappingURL=countChangedFields.d.ts.map
@@ -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,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAK7F,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,YAAY,CAAA;IACpB,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,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,UA0JxF;AAED,KAAK,4BAA4B,GAAG;IAClC,cAAc,EAAE,OAAO,EAAE,CAAA;IACzB,MAAM,EAAE,YAAY,CAAA;IACpB,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,MAAM,EACN,KAAK,EACL,OAAO,EACP,WAAgB,GACjB,EAAE,4BAA4B,UA4B9B"}
@@ -6,6 +6,7 @@ import { getFieldsForRowComparison } from './getFieldsForRowComparison.js';
6
6
  */
7
7
  export function countChangedFields({
8
8
  comparison,
9
+ config,
9
10
  fields,
10
11
  locales,
11
12
  version
@@ -29,6 +30,7 @@ export function countChangedFields({
29
30
  const versionRows = version?.[field.name]?.[locale] ?? [];
30
31
  count += countChangedFieldsInRows({
31
32
  comparisonRows,
33
+ config,
32
34
  field,
33
35
  locales,
34
36
  versionRows
@@ -39,6 +41,7 @@ export function countChangedFields({
39
41
  const versionRows = version?.[field.name] ?? [];
40
42
  count += countChangedFieldsInRows({
41
43
  comparisonRows,
44
+ config,
42
45
  field,
43
46
  locales,
44
47
  versionRows
@@ -81,6 +84,7 @@ export function countChangedFields({
81
84
  {
82
85
  count += countChangedFields({
83
86
  comparison,
87
+ config,
84
88
  fields: field.fields,
85
89
  locales,
86
90
  version
@@ -94,6 +98,7 @@ export function countChangedFields({
94
98
  locales.forEach(locale => {
95
99
  count += countChangedFields({
96
100
  comparison: comparison?.[field.name]?.[locale],
101
+ config,
97
102
  fields: field.fields,
98
103
  locales,
99
104
  version: version?.[field.name]?.[locale]
@@ -102,6 +107,7 @@ export function countChangedFields({
102
107
  } else {
103
108
  count += countChangedFields({
104
109
  comparison: comparison?.[field.name],
110
+ config,
105
111
  fields: field.fields,
106
112
  locales,
107
113
  version: version?.[field.name]
@@ -119,6 +125,7 @@ export function countChangedFields({
119
125
  locales.forEach(locale => {
120
126
  count += countChangedFields({
121
127
  comparison: comparison?.[tab.name]?.[locale],
128
+ config,
122
129
  fields: tab.fields,
123
130
  locales,
124
131
  version: version?.[tab.name]?.[locale]
@@ -128,6 +135,7 @@ export function countChangedFields({
128
135
  // Named tab
129
136
  count += countChangedFields({
130
137
  comparison: comparison?.[tab.name],
138
+ config,
131
139
  fields: tab.fields,
132
140
  locales,
133
141
  version: version?.[tab.name]
@@ -136,6 +144,7 @@ export function countChangedFields({
136
144
  // Unnamed tab
137
145
  count += countChangedFields({
138
146
  comparison,
147
+ config,
139
148
  fields: tab.fields,
140
149
  locales,
141
150
  version
@@ -161,6 +170,7 @@ export function countChangedFields({
161
170
  }
162
171
  export function countChangedFieldsInRows({
163
172
  comparisonRows = [],
173
+ config,
164
174
  field,
165
175
  locales,
166
176
  versionRows = []
@@ -180,12 +190,14 @@ export function countChangedFieldsInRows({
180
190
  schemaPath: ''
181
191
  },
182
192
  comparisonRow,
193
+ config,
183
194
  field,
184
195
  row: i,
185
196
  versionRow
186
197
  });
187
198
  count += countChangedFields({
188
199
  comparison: comparisonRow,
200
+ config,
189
201
  fields: rowFields,
190
202
  locales,
191
203
  version: versionRow
@@ -1 +1 @@
1
- {"version":3,"file":"countChangedFields.js","names":["fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","fields","locales","version","count","forEach","field","name","fieldType","type","localized","locale","comparisonRows","versionRows","countChangedFieldsInRows","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientField } from 'payload'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n fields: ClientField[]\n locales: string[] | undefined\n version: unknown\n}\n\n/**\n * Recursively counts the number of changed fields between comparison and\n * version data for a given set of fields.\n */\nexport function countChangedFields({ comparison, fields, locales, version }: Args) {\n let count = 0\n\n fields.forEach((field) => {\n // Don't count the id field since it is not displayed in the UI\n if ('name' in field && field.name === 'id') {\n return\n }\n const fieldType = field.type\n switch (fieldType) {\n // Iterable fields are arrays and blocks fields. We iterate over each row and\n // count the number of changed fields in each.\n case 'array':\n case 'blocks': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n const comparisonRows = comparison?.[field.name]?.[locale] ?? []\n const versionRows = version?.[field.name]?.[locale] ?? []\n count += countChangedFieldsInRows({ comparisonRows, field, locales, versionRows })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({ comparisonRows, field, locales, versionRows })\n }\n break\n }\n\n // Regular fields without nested fields.\n case 'checkbox':\n case 'code':\n case 'date':\n case 'email':\n case 'join':\n case 'json':\n case 'number':\n case 'point':\n case 'radio':\n case 'relationship':\n case 'richText':\n case 'select':\n case 'text':\n case 'textarea':\n case 'upload': {\n // Fields that have a name and contain data. We can just check if the data has changed.\n if (locales && field.localized) {\n locales.forEach((locale) => {\n if (\n fieldHasChanges(version?.[field.name]?.[locale], comparison?.[field.name]?.[locale])\n ) {\n count++\n }\n })\n } else if (fieldHasChanges(version?.[field.name], comparison?.[field.name])) {\n count++\n }\n break\n }\n // Fields that have nested fields, but don't nest their fields' data.\n case 'collapsible':\n case 'row': {\n count += countChangedFields({\n comparison,\n fields: field.fields,\n locales,\n version,\n })\n\n break\n }\n\n // Fields that have nested fields and nest their fields' data.\n case 'group': {\n if (locales && field.localized) {\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[field.name]?.[locale],\n fields: field.fields,\n locales,\n version: version?.[field.name]?.[locale],\n })\n })\n } else {\n count += countChangedFields({\n comparison: comparison?.[field.name],\n fields: field.fields,\n locales,\n version: version?.[field.name],\n })\n }\n break\n }\n\n // Each tab in a tabs field has nested fields. The fields data may be\n // nested or not depending on the existence of a name property.\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if ('name' in tab && locales && tab.localized) {\n // Named localized tab\n locales.forEach((locale) => {\n count += countChangedFields({\n comparison: comparison?.[tab.name]?.[locale],\n fields: tab.fields,\n locales,\n version: version?.[tab.name]?.[locale],\n })\n })\n } else if ('name' in tab) {\n // Named tab\n count += countChangedFields({\n comparison: comparison?.[tab.name],\n fields: tab.fields,\n locales,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n fields: tab.fields,\n locales,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n field,\n locales,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n fields: rowFields,\n locales,\n version: versionRow,\n })\n\n i++\n }\n return count\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"countChangedFields.js","names":["fieldHasChanges","getFieldsForRowComparison","countChangedFields","comparison","config","fields","locales","version","count","forEach","field","name","fieldType","type","localized","locale","comparisonRows","versionRows","countChangedFieldsInRows","tabs","tab","_exhaustiveCheck","Error","String","i","comparisonRow","versionRow","rowFields","baseVersionField","path","schemaPath","row"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/countChangedFields.ts"],"sourcesContent":["import type { ArrayFieldClient, BlocksFieldClient, ClientConfig, ClientField } from 'payload'\n\nimport { fieldHasChanges } from './fieldHasChanges.js'\nimport { getFieldsForRowComparison } from './getFieldsForRowComparison.js'\n\ntype Args = {\n comparison: unknown\n config: ClientConfig\n fields: ClientField[]\n locales: string[] | undefined\n 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, config, 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({\n comparisonRows,\n config,\n field,\n locales,\n versionRows,\n })\n })\n } else {\n const comparisonRows = comparison?.[field.name] ?? []\n const versionRows = version?.[field.name] ?? []\n count += countChangedFieldsInRows({ comparisonRows, config, 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 config,\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 config,\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 config,\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 config,\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 config,\n fields: tab.fields,\n locales,\n version: version?.[tab.name],\n })\n } else {\n // Unnamed tab\n count += countChangedFields({\n comparison,\n config,\n fields: tab.fields,\n locales,\n version,\n })\n }\n })\n break\n }\n\n // UI fields don't have data and are not displayed in the version view\n // so we can ignore them.\n case 'ui': {\n break\n }\n\n default: {\n const _exhaustiveCheck: never = fieldType\n throw new Error(`Unexpected field.type in countChangedFields : ${String(fieldType)}`)\n }\n }\n })\n\n return count\n}\n\ntype countChangedFieldsInRowsArgs = {\n comparisonRows: unknown[]\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n locales: string[] | undefined\n versionRows: unknown[]\n}\n\nexport function countChangedFieldsInRows({\n comparisonRows = [],\n config,\n field,\n locales,\n versionRows = [],\n}: countChangedFieldsInRowsArgs) {\n let count = 0\n let i = 0\n\n while (comparisonRows[i] || versionRows[i]) {\n const comparisonRow = comparisonRows?.[i] || {}\n const versionRow = versionRows?.[i] || {}\n\n const { fields: rowFields } = getFieldsForRowComparison({\n baseVersionField: { type: 'text', fields: [], path: '', schemaPath: '' }, // Doesn't matter, as we don't need the versionFields output here\n comparisonRow,\n config,\n field,\n row: i,\n versionRow,\n })\n\n count += countChangedFields({\n comparison: comparisonRow,\n config,\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,13 +1,14 @@
1
- import type { ArrayFieldClient, BaseVersionField, BlocksFieldClient, ClientField, VersionField } from 'payload';
1
+ import type { ArrayFieldClient, BaseVersionField, BlocksFieldClient, ClientConfig, ClientField, VersionField } from 'payload';
2
2
  /**
3
3
  * Get the fields for a row in an iterable field for comparison.
4
4
  * - Array fields: the fields of the array field, because the fields are the same for each row.
5
5
  * - Blocks fields: the union of fields from the comparison and version row,
6
6
  * because the fields from the version and comparison rows may differ.
7
7
  */
8
- export declare function getFieldsForRowComparison({ baseVersionField, comparisonRow, field, row, versionRow, }: {
8
+ export declare function getFieldsForRowComparison({ baseVersionField, comparisonRow, config, field, row, versionRow, }: {
9
9
  baseVersionField: BaseVersionField;
10
10
  comparisonRow: any;
11
+ config: ClientConfig;
11
12
  field: ArrayFieldClient | BlocksFieldClient;
12
13
  row: number;
13
14
  versionRow: any;
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForRowComparison.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAIhB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,gBAAgB,EAChB,aAAa,EACb,KAAK,EACL,GAAG,EACH,UAAU,GACX,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,GAAG,CAAA;IAClB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,GAAG,CAAA;CAChB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CA2C3D"}
1
+ {"version":3,"file":"getFieldsForRowComparison.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAEjB,YAAY,EACZ,WAAW,EACX,YAAY,EACb,MAAM,SAAS,CAAA;AAIhB;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,gBAAgB,EAChB,aAAa,EACb,MAAM,EACN,KAAK,EACL,GAAG,EACH,UAAU,GACX,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,aAAa,EAAE,GAAG,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CAAA;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,EAAE,GAAG,CAAA;CAChB,GAAG;IAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,aAAa,EAAE,YAAY,EAAE,CAAA;CAAE,CAwD3D"}
@@ -8,6 +8,7 @@ import { getUniqueListBy } from 'payload/shared';
8
8
  export function getFieldsForRowComparison({
9
9
  baseVersionField,
10
10
  comparisonRow,
11
+ config,
11
12
  field,
12
13
  row,
13
14
  versionRow
@@ -19,18 +20,18 @@ export function getFieldsForRowComparison({
19
20
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
20
21
  } else if (field.type === 'blocks') {
21
22
  if (versionRow?.blockType === comparisonRow?.blockType) {
22
- const matchedBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
23
+ const matchedBlock = config?.blocksMap?.[versionRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === versionRow?.blockType) || {
23
24
  fields: []
24
- };
25
+ });
25
26
  fields = matchedBlock.fields;
26
27
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
27
28
  } else {
28
- const matchedVersionBlock = 'blocks' in field && field.blocks?.find(block => block.slug === versionRow?.blockType) || {
29
+ const matchedVersionBlock = config?.blocksMap?.[versionRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === versionRow?.blockType) || {
29
30
  fields: []
30
- };
31
- const matchedComparisonBlock = 'blocks' in field && field.blocks?.find(block => block.slug === comparisonRow?.blockType) || {
31
+ });
32
+ const matchedComparisonBlock = config?.blocksMap?.[comparisonRow?.blockType] ?? (('blocks' in field || 'blockReferences' in field) && (field.blockReferences ?? field.blocks)?.find(block => typeof block !== 'string' && block.slug === comparisonRow?.blockType) || {
32
33
  fields: []
33
- };
34
+ });
34
35
  fields = getUniqueListBy([...matchedVersionBlock.fields, ...matchedComparisonBlock.fields], 'name');
35
36
  // buildVersionFields already merged the fields of the version and comparison rows together
36
37
  versionFields = baseVersionField.rows?.length ? baseVersionField.rows[row] : baseVersionField.fields;
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldsForRowComparison.js","names":["getUniqueListBy","getFieldsForRowComparison","baseVersionField","comparisonRow","field","row","versionRow","fields","versionFields","type","rows","length","blockType","matchedBlock","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type {\n ArrayFieldClient,\n BaseVersionField,\n BlocksFieldClient,\n ClientField,\n VersionField,\n} from 'payload'\n\nimport { getUniqueListBy } from 'payload/shared'\n\n/**\n * Get the fields for a row in an iterable field for comparison.\n * - Array fields: the fields of the array field, because the fields are the same for each row.\n * - Blocks fields: the union of fields from the comparison and version row,\n * because the fields from the version and comparison rows may differ.\n */\nexport function getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n field,\n row,\n versionRow,\n}: {\n baseVersionField: BaseVersionField\n comparisonRow: any\n field: ArrayFieldClient | BlocksFieldClient\n row: number\n versionRow: any\n}): { fields: ClientField[]; versionFields: VersionField[] } {\n let fields: ClientField[] = []\n let versionFields: VersionField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else if (field.type === 'blocks') {\n if (versionRow?.blockType === comparisonRow?.blockType) {\n const matchedBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === versionRow?.blockType)) || {\n fields: [],\n }\n\n fields = matchedBlock.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else {\n const matchedVersionBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === versionRow?.blockType)) || {\n fields: [],\n }\n const matchedComparisonBlock = ('blocks' in field &&\n field.blocks?.find((block) => block.slug === comparisonRow?.blockType)) || {\n fields: [],\n }\n\n fields = getUniqueListBy<ClientField>(\n [...matchedVersionBlock.fields, ...matchedComparisonBlock.fields],\n 'name',\n )\n\n // buildVersionFields already merged the fields of the version and comparison rows together\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n }\n }\n\n return { fields, versionFields }\n}\n"],"mappings":"AAQA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,gBAAgB;EAChBC,aAAa;EACbC,KAAK;EACLC,GAAG;EACHC;AAAU,CAOX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAC9B,IAAIC,aAAA,GAAgC,EAAE;EAEtC,IAAIJ,KAAA,CAAMK,IAAI,KAAK,WAAW,YAAYL,KAAA,EAAO;IAC/CG,MAAA,GAASH,KAAA,CAAMG,MAAM;IACrBC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;EAC7B,OAAO,IAAIH,KAAA,CAAMK,IAAI,KAAK,UAAU;IAClC,IAAIH,UAAA,EAAYM,SAAA,KAAcT,aAAA,EAAeS,SAAA,EAAW;MACtD,MAAMC,YAAA,GAAe,QAAC,IAAYT,KAAA,IAChCA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKX,UAAA,EAAYM,SAAA,KAAe;QACxEL,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASM,YAAA,CAAaN,MAAM;MAC5BC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;IAC7B,OAAO;MACL,MAAMW,mBAAA,GAAsB,QAAC,IAAYd,KAAA,IACvCA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKX,UAAA,EAAYM,SAAA,KAAe;QACxEL,MAAA,EAAQ;MACV;MACA,MAAMY,sBAAA,GAAyB,QAAC,IAAYf,KAAA,IAC1CA,KAAA,CAAMU,MAAM,EAAEC,IAAA,CAAMC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAKd,aAAA,EAAeS,SAAA,KAAe;QAC3EL,MAAA,EAAQ;MACV;MAEAA,MAAA,GAASP,eAAA,CACP,C,GAAIkB,mBAAA,CAAoBX,MAAM,E,GAAKY,sBAAA,CAAuBZ,MAAM,CAAC,EACjE;MAGF;MACAC,aAAA,GAAgBN,gBAAA,CAAiBQ,IAAI,EAAEC,MAAA,GACnCT,gBAAA,CAAiBQ,IAAI,CAACL,GAAA,CAAI,GAC1BH,gBAAA,CAAiBK,MAAM;IAC7B;EACF;EAEA,OAAO;IAAEA,MAAA;IAAQC;EAAc;AACjC","ignoreList":[]}
1
+ {"version":3,"file":"getFieldsForRowComparison.js","names":["getUniqueListBy","getFieldsForRowComparison","baseVersionField","comparisonRow","config","field","row","versionRow","fields","versionFields","type","rows","length","blockType","matchedBlock","blocksMap","blockReferences","blocks","find","block","slug","matchedVersionBlock","matchedComparisonBlock"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.ts"],"sourcesContent":["import type {\n ArrayFieldClient,\n BaseVersionField,\n BlocksFieldClient,\n ClientBlock,\n ClientConfig,\n ClientField,\n VersionField,\n} from 'payload'\n\nimport { getUniqueListBy } from 'payload/shared'\n\n/**\n * Get the fields for a row in an iterable field for comparison.\n * - Array fields: the fields of the array field, because the fields are the same for each row.\n * - Blocks fields: the union of fields from the comparison and version row,\n * because the fields from the version and comparison rows may differ.\n */\nexport function getFieldsForRowComparison({\n baseVersionField,\n comparisonRow,\n config,\n field,\n row,\n versionRow,\n}: {\n baseVersionField: BaseVersionField\n comparisonRow: any\n config: ClientConfig\n field: ArrayFieldClient | BlocksFieldClient\n row: number\n versionRow: any\n}): { fields: ClientField[]; versionFields: VersionField[] } {\n let fields: ClientField[] = []\n let versionFields: VersionField[] = []\n\n if (field.type === 'array' && 'fields' in field) {\n fields = field.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else if (field.type === 'blocks') {\n if (versionRow?.blockType === comparisonRow?.blockType) {\n const matchedBlock: ClientBlock =\n config?.blocksMap?.[versionRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === versionRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = matchedBlock.fields\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n } else {\n const matchedVersionBlock =\n config?.blocksMap?.[versionRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === versionRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n const matchedComparisonBlock =\n config?.blocksMap?.[comparisonRow?.blockType] ??\n (((('blocks' in field || 'blockReferences' in field) &&\n (field.blockReferences ?? field.blocks)?.find(\n (block) => typeof block !== 'string' && block.slug === comparisonRow?.blockType,\n )) || {\n fields: [],\n }) as ClientBlock)\n\n fields = getUniqueListBy<ClientField>(\n [...matchedVersionBlock.fields, ...matchedComparisonBlock.fields],\n 'name',\n )\n\n // buildVersionFields already merged the fields of the version and comparison rows together\n versionFields = baseVersionField.rows?.length\n ? baseVersionField.rows[row]\n : baseVersionField.fields\n }\n }\n\n return { fields, versionFields }\n}\n"],"mappings":"AAUA,SAASA,eAAe,QAAQ;AAEhC;;;;;;AAMA,OAAO,SAASC,0BAA0B;EACxCC,gBAAgB;EAChBC,aAAa;EACbC,MAAM;EACNC,KAAK;EACLC,GAAG;EACHC;AAAU,CAQX;EACC,IAAIC,MAAA,GAAwB,EAAE;EAC9B,IAAIC,aAAA,GAAgC,EAAE;EAEtC,IAAIJ,KAAA,CAAMK,IAAI,KAAK,WAAW,YAAYL,KAAA,EAAO;IAC/CG,MAAA,GAASH,KAAA,CAAMG,MAAM;IACrBC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;EAC7B,OAAO,IAAIH,KAAA,CAAMK,IAAI,KAAK,UAAU;IAClC,IAAIH,UAAA,EAAYM,SAAA,KAAcV,aAAA,EAAeU,SAAA,EAAW;MACtD,MAAMC,YAAA,GACJV,MAAA,EAAQW,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASM,YAAA,CAAaN,MAAM;MAC5BC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;IAC7B,OAAO;MACL,MAAMa,mBAAA,GACJjB,MAAA,EAAQW,SAAA,GAAYR,UAAA,EAAYM,SAAA,CAAU,KACxC,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKb,UAAA,EAAYM,SAAA,KAC/D;QACNL,MAAA,EAAQ;MACV;MAEF,MAAMc,sBAAA,GACJlB,MAAA,EAAQW,SAAA,GAAYZ,aAAA,EAAeU,SAAA,CAAU,KAC3C,CAAE,YAAYR,KAAA,IAAS,qBAAqBA,KAAI,KAC/C,CAAAA,KAAA,CAAMW,eAAe,IAAIX,KAAA,CAAMY,MAAM,GAAGC,IAAA,CACtCC,KAAA,IAAU,OAAOA,KAAA,KAAU,YAAYA,KAAA,CAAMC,IAAI,KAAKjB,aAAA,EAAeU,SAAA,KAClE;QACNL,MAAA,EAAQ;MACV;MAEFA,MAAA,GAASR,eAAA,CACP,C,GAAIqB,mBAAA,CAAoBb,MAAM,E,GAAKc,sBAAA,CAAuBd,MAAM,CAAC,EACjE;MAGF;MACAC,aAAA,GAAgBP,gBAAA,CAAiBS,IAAI,EAAEC,MAAA,GACnCV,gBAAA,CAAiBS,IAAI,CAACL,GAAA,CAAI,GAC1BJ,gBAAA,CAAiBM,MAAM;IAC7B;EACF;EAEA,OAAO;IAAEA,MAAA;IAAQC;EAAc;AACjC","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.23.0",
3
+ "version": "3.24.0-canary.10637cd",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -80,9 +80,9 @@
80
80
  "sass": "1.77.4",
81
81
  "sonner": "^1.7.0",
82
82
  "uuid": "10.0.0",
83
- "@payloadcms/graphql": "3.23.0",
84
- "@payloadcms/ui": "3.23.0",
85
- "@payloadcms/translations": "3.23.0"
83
+ "@payloadcms/graphql": "3.24.0-canary.10637cd",
84
+ "@payloadcms/ui": "3.24.0-canary.10637cd",
85
+ "@payloadcms/translations": "3.24.0-canary.10637cd"
86
86
  },
87
87
  "devDependencies": {
88
88
  "@babel/cli": "7.26.4",
@@ -100,13 +100,13 @@
100
100
  "esbuild-sass-plugin": "3.3.1",
101
101
  "eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
102
102
  "swc-plugin-transform-remove-imports": "3.1.0",
103
- "payload": "3.23.0",
104
- "@payloadcms/eslint-config": "3.9.0"
103
+ "@payloadcms/eslint-config": "3.9.0",
104
+ "payload": "3.24.0-canary.10637cd"
105
105
  },
106
106
  "peerDependencies": {
107
107
  "graphql": "^16.8.1",
108
108
  "next": "^15.0.0",
109
- "payload": "3.23.0"
109
+ "payload": "3.24.0-canary.10637cd"
110
110
  },
111
111
  "engines": {
112
112
  "node": "^18.20.2 || >=20.9.0"