@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.
- package/dist/prod/styles.css +1 -1
- package/dist/routes/rest/index.d.ts.map +1 -1
- package/dist/routes/rest/index.js +1 -1
- package/dist/routes/rest/index.js.map +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +6 -0
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/List/resolveAllFilterOptions.d.ts +6 -0
- package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -0
- package/dist/views/List/resolveAllFilterOptions.js +27 -0
- package/dist/views/List/resolveAllFilterOptions.js.map +1 -0
- package/dist/views/LivePreview/Context/index.d.ts.map +1 -1
- package/dist/views/LivePreview/Context/index.js +5 -1
- package/dist/views/LivePreview/Context/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +122 -59
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +4 -2
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +16 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +5 -3
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +12 -0
- package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +3 -2
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +7 -6
- package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -1
- 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,
|
|
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(
|
|
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] !==
|
|
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] =
|
|
103
|
-
$[7] =
|
|
104
|
-
$[8] =
|
|
105
|
-
$[9] =
|
|
106
|
-
$[10] =
|
|
107
|
-
$[11] =
|
|
108
|
-
$[12] =
|
|
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 = $[
|
|
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":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;
|
|
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;
|
|
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,
|
|
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
|
|
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.
|
|
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.
|
|
84
|
-
"@payloadcms/ui": "3.
|
|
85
|
-
"@payloadcms/translations": "3.
|
|
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
|
-
"
|
|
104
|
-
"
|
|
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.
|
|
109
|
+
"payload": "3.24.0-canary.10637cd"
|
|
110
110
|
},
|
|
111
111
|
"engines": {
|
|
112
112
|
"node": "^18.20.2 || >=20.9.0"
|