{"version":3,"file":"index.js","names":["c","_c","getTranslation","FieldDiffContainer","getHTMLDiffComponents","useTranslation","React","baseClass","getOptionsToRender","value","options","hasMany","Array","isArray","map","val","find","option","String","getTranslatedOptions","i18n","translatedLabel","label","join","Select","t0","$","comparisonValue","valueFrom","field","locale","nestingLevel","versionValue","valueTo","renderedValueFrom","JSON","stringify","renderedValueTo","t1","t2","t3","From","To","fromHTML","toHTML","tokenizeByCharacter","_jsx","className"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Select/index.tsx"],"sourcesContent":["'use client'\nimport type { I18nClient } from '@payloadcms/translations'\nimport type { Option, SelectField, SelectFieldDiffClientComponent } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { FieldDiffContainer, getHTMLDiffComponents, useTranslation } from '@payloadcms/ui'\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'select-diff'\n\nconst getOptionsToRender = (\n value: string,\n options: SelectField['options'],\n hasMany: boolean,\n): Option | Option[] => {\n if (hasMany && Array.isArray(value)) {\n return value.map(\n (val) =>\n options.find((option) => (typeof option === 'string' ? option : option.value) === val) ||\n String(val),\n )\n }\n return (\n options.find((option) => (typeof option === 'string' ? option : option.value) === value) ||\n String(value)\n )\n}\n\n/**\n * Translates option labels while ensuring they are strings.\n * If `options.label` is a JSX element, it falls back to `options.value` because `DiffViewer`\n * expects all values to be strings.\n */\nconst getTranslatedOptions = (options: Option | Option[], i18n: I18nClient): string => {\n if (Array.isArray(options)) {\n return options\n .map((option) => {\n if (typeof option === 'string') {\n return option\n }\n const translatedLabel = getTranslation(option.label, i18n)\n\n // Ensure the result is a string, otherwise use option.value\n return typeof translatedLabel === 'string' ? translatedLabel : option.value\n })\n .join(', ')\n }\n\n if (typeof options === 'string') {\n return options\n }\n\n const translatedLabel = getTranslation(options.label, i18n)\n\n return typeof translatedLabel === 'string' ? translatedLabel : options.value\n}\n\nexport const Select: SelectFieldDiffClientComponent = ({\n comparisonValue: valueFrom,\n diffMethod,\n field,\n locale,\n nestingLevel,\n versionValue: valueTo,\n}) => {\n const { i18n } = useTranslation()\n\n const options = 'options' in field && field.options\n\n const renderedValueFrom =\n typeof valueFrom !== 'undefined'\n ? getTranslatedOptions(\n getOptionsToRender(\n typeof valueFrom === 'string' ? valueFrom : JSON.stringify(valueFrom),\n options,\n field.hasMany,\n ),\n i18n,\n )\n : ''\n\n const renderedValueTo =\n typeof valueTo !== 'undefined'\n ? getTranslatedOptions(\n getOptionsToRender(\n typeof valueTo === 'string' ? valueTo : JSON.stringify(valueTo),\n options,\n field.hasMany,\n ),\n i18n,\n )\n : ''\n\n const { From, To } = getHTMLDiffComponents({\n fromHTML: '
' + renderedValueFrom + '
',\n toHTML: '' + renderedValueTo + '
',\n tokenizeByCharacter: true,\n })\n\n return (\n