@payloadcms/ui 3.40.0-canary.5 → 3.40.0-internal.9e8d70e

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.
@@ -1,3 +1,7 @@
1
+ export declare const arrayOperators: {
2
+ label: string;
3
+ value: string;
4
+ }[];
1
5
  declare const fieldTypeConditions: {
2
6
  [key: string]: {
3
7
  component: string;
@@ -1 +1 @@
1
- {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"names":[],"mappings":"AAqFA,QAAA,MAAM,mBAAmB,EAAE;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,CAAA;CA0DF,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"field-types.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,cAAc;;;GAa1B,CAAA;AA6DD,QAAA,MAAM,mBAAmB,EAAE;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,SAAS,EAAE,MAAM,CAAA;QACjB,SAAS,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAC9C,CAAA;CA0DF,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
 
3
- const boolean = [{
3
+ const equalsOperators = [{
4
4
  label: 'equals',
5
5
  value: 'equals'
6
6
  }, {
7
7
  label: 'isNotEqualTo',
8
8
  value: 'not_equals'
9
9
  }];
10
- const base = [...boolean, {
10
+ export const arrayOperators = [{
11
11
  label: 'isIn',
12
12
  value: 'in'
13
13
  }, {
@@ -17,6 +17,7 @@ const base = [...boolean, {
17
17
  label: 'exists',
18
18
  value: 'exists'
19
19
  }];
20
+ const base = [...equalsOperators, ...arrayOperators];
20
21
  const numeric = [...base, {
21
22
  label: 'isGreaterThan',
22
23
  value: 'greater_than'
@@ -30,7 +31,7 @@ const numeric = [...base, {
30
31
  label: 'isGreaterThanOrEqualTo',
31
32
  value: 'greater_than_equal'
32
33
  }];
33
- const geo = [...boolean, {
34
+ const geo = [...equalsOperators, {
34
35
  label: 'exists',
35
36
  value: 'exists'
36
37
  }, {
@@ -60,7 +61,7 @@ const contains = {
60
61
  const fieldTypeConditions = {
61
62
  checkbox: {
62
63
  component: 'Text',
63
- operators: boolean
64
+ operators: equalsOperators
64
65
  },
65
66
  code: {
66
67
  component: 'Text',
@@ -1 +1 @@
1
- {"version":3,"file":"field-types.js","names":["boolean","label","value","base","numeric","geo","within","intersects","like","notLike","contains","fieldTypeConditions","checkbox","component","operators","code","date","email","json","number","point","radio","relationship","richText","select","text","textarea","upload"],"sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"sourcesContent":["'use client'\nconst boolean = [\n {\n label: 'equals',\n value: 'equals',\n },\n {\n label: 'isNotEqualTo',\n value: 'not_equals',\n },\n]\n\nconst base = [\n ...boolean,\n {\n label: 'isIn',\n value: 'in',\n },\n {\n label: 'isNotIn',\n value: 'not_in',\n },\n {\n label: 'exists',\n value: 'exists',\n },\n]\n\nconst numeric = [\n ...base,\n {\n label: 'isGreaterThan',\n value: 'greater_than',\n },\n {\n label: 'isLessThan',\n value: 'less_than',\n },\n {\n label: 'isLessThanOrEqualTo',\n value: 'less_than_equal',\n },\n {\n label: 'isGreaterThanOrEqualTo',\n value: 'greater_than_equal',\n },\n]\n\nconst geo = [\n ...boolean,\n {\n label: 'exists',\n value: 'exists',\n },\n {\n label: 'near',\n value: 'near',\n },\n]\n\nconst within = {\n label: 'within',\n value: 'within',\n}\n\nconst intersects = {\n label: 'intersects',\n value: 'intersects',\n}\n\nconst like = {\n label: 'isLike',\n value: 'like',\n}\n\nconst notLike = {\n label: 'isNotLike',\n value: 'not_like',\n}\n\nconst contains = {\n label: 'contains',\n value: 'contains',\n}\n\nconst fieldTypeConditions: {\n [key: string]: {\n component: string\n operators: { label: string; value: string }[]\n }\n} = {\n checkbox: {\n component: 'Text',\n operators: boolean,\n },\n code: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n date: {\n component: 'Date',\n operators: [...base, ...numeric],\n },\n email: {\n component: 'Text',\n operators: [...base, contains],\n },\n json: {\n component: 'Text',\n operators: [...base, like, contains, notLike, within, intersects],\n },\n number: {\n component: 'Number',\n operators: [...base, ...numeric],\n },\n point: {\n component: 'Point',\n operators: [...geo, within, intersects],\n },\n radio: {\n component: 'Select',\n operators: [...base],\n },\n relationship: {\n component: 'Relationship',\n operators: [...base],\n },\n richText: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n select: {\n component: 'Select',\n operators: [...base],\n },\n text: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n textarea: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n upload: {\n component: 'Text',\n operators: [...base],\n },\n}\n\nexport default fieldTypeConditions\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"field-types.js","names":["equalsOperators","label","value","arrayOperators","base","numeric","geo","within","intersects","like","notLike","contains","fieldTypeConditions","checkbox","component","operators","code","date","email","json","number","point","radio","relationship","richText","select","text","textarea","upload"],"sources":["../../../src/elements/WhereBuilder/field-types.tsx"],"sourcesContent":["'use client'\nconst equalsOperators = [\n {\n label: 'equals',\n value: 'equals',\n },\n {\n label: 'isNotEqualTo',\n value: 'not_equals',\n },\n]\n\nexport const arrayOperators = [\n {\n label: 'isIn',\n value: 'in',\n },\n {\n label: 'isNotIn',\n value: 'not_in',\n },\n {\n label: 'exists',\n value: 'exists',\n },\n]\n\nconst base = [...equalsOperators, ...arrayOperators]\n\nconst numeric = [\n ...base,\n {\n label: 'isGreaterThan',\n value: 'greater_than',\n },\n {\n label: 'isLessThan',\n value: 'less_than',\n },\n {\n label: 'isLessThanOrEqualTo',\n value: 'less_than_equal',\n },\n {\n label: 'isGreaterThanOrEqualTo',\n value: 'greater_than_equal',\n },\n]\n\nconst geo = [\n ...equalsOperators,\n {\n label: 'exists',\n value: 'exists',\n },\n {\n label: 'near',\n value: 'near',\n },\n]\n\nconst within = {\n label: 'within',\n value: 'within',\n}\n\nconst intersects = {\n label: 'intersects',\n value: 'intersects',\n}\n\nconst like = {\n label: 'isLike',\n value: 'like',\n}\n\nconst notLike = {\n label: 'isNotLike',\n value: 'not_like',\n}\n\nconst contains = {\n label: 'contains',\n value: 'contains',\n}\n\nconst fieldTypeConditions: {\n [key: string]: {\n component: string\n operators: { label: string; value: string }[]\n }\n} = {\n checkbox: {\n component: 'Text',\n operators: equalsOperators,\n },\n code: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n date: {\n component: 'Date',\n operators: [...base, ...numeric],\n },\n email: {\n component: 'Text',\n operators: [...base, contains],\n },\n json: {\n component: 'Text',\n operators: [...base, like, contains, notLike, within, intersects],\n },\n number: {\n component: 'Number',\n operators: [...base, ...numeric],\n },\n point: {\n component: 'Point',\n operators: [...geo, within, intersects],\n },\n radio: {\n component: 'Select',\n operators: [...base],\n },\n relationship: {\n component: 'Relationship',\n operators: [...base],\n },\n richText: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n select: {\n component: 'Select',\n operators: [...base],\n },\n text: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n textarea: {\n component: 'Text',\n operators: [...base, like, notLike, contains],\n },\n upload: {\n component: 'Text',\n operators: [...base],\n },\n}\n\nexport default fieldTypeConditions\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFields.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/reduceFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,+CAKtB,sBAAsB,KAAG,YAAY,EAwLvC,CAAA"}
1
+ {"version":3,"file":"reduceFields.d.ts","sourceRoot":"","sources":["../../../src/elements/WhereBuilder/reduceFields.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,UAAU,EAAE,MAAM,0BAA0B,CAAA;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAM1C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAM9C,KAAK,sBAAsB,GAAG;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,IAAI,EAAE,UAAU,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,+CAKtB,sBAAsB,KAAG,YAAY,EA2LvC,CAAA"}
@@ -5,7 +5,7 @@ import { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from
5
5
  import { renderToStaticMarkup } from 'react-dom/server';
6
6
  import { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js';
7
7
  import { combineFieldLabel } from '../../utilities/combineFieldLabel.js';
8
- import fieldTypes from './field-types.js';
8
+ import fieldTypes, { arrayOperators } from './field-types.js';
9
9
  /**
10
10
  * Reduces a field map to a flat array of fields with labels and values.
11
11
  * Used in the WhereBuilder component to render the fields in the dropdown.
@@ -99,7 +99,8 @@ export const reduceFields = ({
99
99
  }
100
100
  if (typeof fieldTypes[field.type] === 'object') {
101
101
  const operatorKeys = new Set();
102
- const operators = fieldTypes[field.type].operators.reduce((acc, operator) => {
102
+ const fieldOperators = 'hasMany' in field && field.hasMany ? arrayOperators : fieldTypes[field.type].operators;
103
+ const operators = fieldOperators.reduce((acc, operator) => {
103
104
  if (!operatorKeys.has(operator.value)) {
104
105
  operatorKeys.add(operator.value);
105
106
  const operatorKey = `operators:${operator.label}`;
@@ -1 +1 @@
1
- {"version":3,"file":"reduceFields.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","renderToStaticMarkup","createNestedClientFieldPath","combineFieldLabel","fieldTypes","reduceFields","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","operatorKeys","Set","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","textFromLabel","extractTextFromReactNode","fieldPath","formattedField","plainTextLabel","reactNode","html","document","div","createElement","innerHTML","textContent","replace"],"sources":["../../../src/elements/WhereBuilder/reduceFields.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nimport type { ReducedField } from './types.js'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\nimport fieldTypes from './field-types.js'\n\ntype ReduceFieldOptionsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceFields = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return reduced\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFields({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n\n const operators = fieldTypes[field.type].operators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n // React elements in filter options are not searchable in React Select\n // Extract plain text to make them filterable in dropdowns\n const textFromLabel = extractTextFromReactNode(formattedLabel)\n\n const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: textFromLabel,\n value: fieldPath,\n ...fieldTypes[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n return reduced\n }, [])\n}\n\n/**\n * Extracts plain text content from a React node by removing HTML tags.\n * Used to make React elements searchable in filter dropdowns.\n */\nconst extractTextFromReactNode = (reactNode: React.ReactNode): string => {\n if (!reactNode) {\n return ''\n }\n if (typeof reactNode === 'string') {\n return reactNode\n }\n\n const html = renderToStaticMarkup(reactNode)\n\n // Handle different environments (server vs browser)\n if (typeof document !== 'undefined') {\n // Browser environment - use actual DOM\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || ''\n } else {\n // Server environment - use regex to strip HTML tags\n return html.replace(/<[^>]*>/g, '')\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"reduceFields.js","names":["getTranslation","fieldAffectsData","fieldIsHiddenOrDisabled","fieldIsID","tabHasName","renderToStaticMarkup","createNestedClientFieldPath","combineFieldLabel","fieldTypes","arrayOperators","reduceFields","fields","i18n","labelPrefix","pathPrefix","reduce","reduced","field","type","tabs","forEach","tab","label","localizedTabLabel","labelWithPrefix","tabPathPrefix","name","push","translatedLabel","pathWithPrefix","operatorKeys","Set","fieldOperators","hasMany","operators","acc","operator","has","value","add","operatorKey","t","localizedLabel","formattedLabel","prefix","textFromLabel","extractTextFromReactNode","fieldPath","formattedField","plainTextLabel","reactNode","html","document","div","createElement","innerHTML","textContent","replace"],"sources":["../../../src/elements/WhereBuilder/reduceFields.tsx"],"sourcesContent":["'use client'\nimport type { ClientTranslationKeys, I18nClient } from '@payloadcms/translations'\nimport type { ClientField } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { fieldAffectsData, fieldIsHiddenOrDisabled, fieldIsID, tabHasName } from 'payload/shared'\nimport { renderToStaticMarkup } from 'react-dom/server'\n\nimport type { ReducedField } from './types.js'\n\nimport { createNestedClientFieldPath } from '../../forms/Form/createNestedClientFieldPath.js'\nimport { combineFieldLabel } from '../../utilities/combineFieldLabel.js'\nimport fieldTypes, { arrayOperators } from './field-types.js'\n\ntype ReduceFieldOptionsArgs = {\n fields: ClientField[]\n i18n: I18nClient\n labelPrefix?: string\n pathPrefix?: string\n}\n\n/**\n * Reduces a field map to a flat array of fields with labels and values.\n * Used in the WhereBuilder component to render the fields in the dropdown.\n */\nexport const reduceFields = ({\n fields,\n i18n,\n labelPrefix,\n pathPrefix,\n}: ReduceFieldOptionsArgs): ReducedField[] => {\n return fields.reduce((reduced, field) => {\n // Do not filter out `field.admin.disableListFilter` fields here, as these should still render as disabled if they appear in the URL query\n if (fieldIsHiddenOrDisabled(field) && !fieldIsID(field)) {\n return reduced\n }\n\n if (field.type === 'tabs' && 'tabs' in field) {\n const tabs = field.tabs\n\n tabs.forEach((tab) => {\n if (typeof tab.label !== 'boolean') {\n const localizedTabLabel = getTranslation(tab.label, i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n // Make sure we handle nested tabs\n const tabPathPrefix =\n tabHasName(tab) && tab.name\n ? pathPrefix\n ? pathPrefix + '.' + tab.name\n : tab.name\n : pathPrefix\n\n if (typeof localizedTabLabel === 'string') {\n reduced.push(\n ...reduceFields({\n fields: tab.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: tabPathPrefix,\n }),\n )\n }\n }\n })\n return reduced\n }\n\n // Rows cant have labels, so we need to handle them differently\n if (field.type === 'row' && 'fields' in field) {\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'collapsible' && 'fields' in field) {\n const localizedTabLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? labelPrefix + ' > ' + localizedTabLabel\n : localizedTabLabel\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n return reduced\n }\n\n if (field.type === 'group' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n if (fieldAffectsData(field)) {\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n } else {\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix,\n }),\n )\n }\n\n return reduced\n }\n\n if (field.type === 'array' && 'fields' in field) {\n const translatedLabel = getTranslation(field.label || '', i18n)\n\n const labelWithPrefix = labelPrefix\n ? translatedLabel\n ? labelPrefix + ' > ' + translatedLabel\n : labelPrefix\n : translatedLabel\n\n // Make sure we handle deeply nested groups\n const pathWithPrefix = field.name\n ? pathPrefix\n ? pathPrefix + '.' + field.name\n : field.name\n : pathPrefix\n\n reduced.push(\n ...reduceFields({\n fields: field.fields,\n i18n,\n labelPrefix: labelWithPrefix,\n pathPrefix: pathWithPrefix,\n }),\n )\n\n return reduced\n }\n\n if (typeof fieldTypes[field.type] === 'object') {\n const operatorKeys = new Set()\n\n const fieldOperators =\n 'hasMany' in field && field.hasMany ? arrayOperators : fieldTypes[field.type].operators\n\n const operators = fieldOperators.reduce((acc, operator) => {\n if (!operatorKeys.has(operator.value)) {\n operatorKeys.add(operator.value)\n const operatorKey = `operators:${operator.label}` as ClientTranslationKeys\n acc.push({\n ...operator,\n label: i18n.t(operatorKey),\n })\n }\n\n return acc\n }, [])\n\n const localizedLabel = getTranslation(field.label || '', i18n)\n\n const formattedLabel = labelPrefix\n ? combineFieldLabel({\n field,\n prefix: labelPrefix,\n })\n : localizedLabel\n\n // React elements in filter options are not searchable in React Select\n // Extract plain text to make them filterable in dropdowns\n const textFromLabel = extractTextFromReactNode(formattedLabel)\n\n const fieldPath = pathPrefix ? createNestedClientFieldPath(pathPrefix, field) : field.name\n\n const formattedField: ReducedField = {\n label: formattedLabel,\n plainTextLabel: textFromLabel,\n value: fieldPath,\n ...fieldTypes[field.type],\n field,\n operators,\n }\n\n reduced.push(formattedField)\n return reduced\n }\n return reduced\n }, [])\n}\n\n/**\n * Extracts plain text content from a React node by removing HTML tags.\n * Used to make React elements searchable in filter dropdowns.\n */\nconst extractTextFromReactNode = (reactNode: React.ReactNode): string => {\n if (!reactNode) {\n return ''\n }\n if (typeof reactNode === 'string') {\n return reactNode\n }\n\n const html = renderToStaticMarkup(reactNode)\n\n // Handle different environments (server vs browser)\n if (typeof document !== 'undefined') {\n // Browser environment - use actual DOM\n const div = document.createElement('div')\n div.innerHTML = html\n return div.textContent || ''\n } else {\n // Server environment - use regex to strip HTML tags\n return html.replace(/<[^>]*>/g, '')\n }\n}\n"],"mappings":"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","ignoreList":[]}