{"version":3,"file":"ngx-formly-core.mjs","sources":["../../../../src/core/src/lib/utils.ts","../../../../src/core/src/lib/extensions/field-expression-legacy/utils.ts","../../../../src/core/src/lib/extensions/field-form/utils.ts","../../../../src/core/src/lib/extensions/field-expression-legacy/field-expression.ts","../../../../src/core/src/lib/extensions/field-expression/utils.ts","../../../../src/core/src/lib/extensions/field-expression/field-expression.ts","../../../../src/core/src/lib/extensions/core/core.ts","../../../../src/core/src/lib/extensions/field-form/field-form.ts","../../../../src/core/src/lib/extensions/field-validation/field-validation.ts","../../../../src/core/src/lib/templates/field.type.ts","../../../../src/core/src/lib/templates/field-template.type.ts","../../../../src/core/src/lib/services/formly.config.ts","../../../../src/core/src/lib/components/formly.template.ts","../../../../src/core/src/lib/components/formly.field.ts","../../../../src/core/src/lib/templates/formly.group.ts","../../../../src/core/src/lib/core.config.ts","../../../../src/core/src/lib/services/formly.builder.ts","../../../../src/core/src/lib/components/formly.form.ts","../../../../src/core/src/lib/templates/formly.attributes.ts","../../../../src/core/src/lib/templates/formly.validation-message.ts","../../../../src/core/src/lib/templates/field-array.type.ts","../../../../src/core/src/lib/templates/field.wrapper.ts","../../../../src/core/src/lib/core.module.ts","../../../../src/core/src/public_api.ts","../../../../src/core/src/ngx-formly-core.ts"],"sourcesContent":["import { FormlyFieldConfig } from './models';\nimport { isObservable } from 'rxjs';\nimport { AbstractControl } from '@angular/forms';\nimport { FormlyFieldConfigCache } from './models';\nimport { ChangeDetectorRef, ComponentRef, NgZone, TemplateRef, Type, VERSION, ɵNoopNgZone } from '@angular/core';\n\nexport function disableTreeValidityCall(form: any, callback: () => void) {\n  const _updateTreeValidity = form._updateTreeValidity.bind(form);\n  form._updateTreeValidity = () => {};\n  callback();\n  form._updateTreeValidity = _updateTreeValidity;\n}\n\nexport function getFieldId(formId: string, field: FormlyFieldConfig, index: string | number) {\n  if (field.id) {\n    return field.id;\n  }\n  let type = field.type;\n  if (!type && field.template) {\n    type = 'template';\n  }\n\n  if (type instanceof Type) {\n    type = type.prototype.constructor.name;\n  }\n\n  return [formId, type, field.key, index].join('_');\n}\n\nexport function hasKey(field: FormlyFieldConfig) {\n  return !isNil(field.key) && field.key !== '' && (!Array.isArray(field.key) || field.key.length > 0);\n}\n\nexport function getKeyPath(field: FormlyFieldConfigCache): string[] {\n  if (!hasKey(field)) {\n    return [];\n  }\n\n  /* We store the keyPath in the field for performance reasons. This function will be called frequently. */\n  if (field._keyPath?.key !== field.key) {\n    let path: (string | number)[] = [];\n    if (typeof field.key === 'string') {\n      const key = field.key.indexOf('[') === -1 ? field.key : field.key.replace(/\\[(\\w+)\\]/g, '.$1');\n      path = key.indexOf('.') !== -1 ? key.split('.') : [key];\n    } else if (Array.isArray(field.key)) {\n      path = field.key.slice(0);\n    } else {\n      path = [`${field.key}`];\n    }\n\n    defineHiddenProp(field, '_keyPath', { key: field.key, path });\n  }\n\n  return field._keyPath.path.slice(0);\n}\n\nexport const FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\n\nexport function assignFieldValue(field: FormlyFieldConfigCache, value: any) {\n  let paths = getKeyPath(field);\n  if (paths.length === 0) {\n    return;\n  }\n\n  let root = field;\n  while (root.parent) {\n    root = root.parent;\n    paths = [...getKeyPath(root), ...paths];\n  }\n\n  if (value === undefined && field.resetOnHide) {\n    const k = paths.pop();\n    const m = paths.reduce((model, path) => model[path] || {}, root.model);\n    delete m[k];\n    return;\n  }\n\n  assignModelValue(root.model, paths, value);\n}\n\nexport function assignModelValue(model: any, paths: string[], value: any) {\n  for (let i = 0; i < paths.length - 1; i++) {\n    const path = paths[i];\n    if (!model[path] || !isObject(model[path])) {\n      model[path] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n    }\n\n    model = model[path];\n  }\n\n  model[paths[paths.length - 1]] = clone(value);\n}\n\nexport function getFieldValue(field: FormlyFieldConfig): any {\n  let model = field.parent ? field.parent.model : field.model;\n  for (const path of getKeyPath(field)) {\n    if (!model) {\n      return model;\n    }\n    model = model[path];\n  }\n\n  return model;\n}\n\nexport function reverseDeepMerge(dest: any, ...args: any[]) {\n  args.forEach((src) => {\n    for (const srcArg in src) {\n      if (isNil(dest[srcArg]) || isBlankString(dest[srcArg])) {\n        dest[srcArg] = clone(src[srcArg]);\n      } else if (objAndSameType(dest[srcArg], src[srcArg])) {\n        reverseDeepMerge(dest[srcArg], src[srcArg]);\n      }\n    }\n  });\n  return dest;\n}\n\n// check a value is null or undefined\nexport function isNil(value: any) {\n  return value == null;\n}\n\nexport function isUndefined(value: any) {\n  return value === undefined;\n}\n\nexport function isBlankString(value: any) {\n  return value === '';\n}\n\nexport function isFunction(value: any) {\n  return typeof value === 'function';\n}\n\nexport function objAndSameType(obj1: any, obj2: any) {\n  return (\n    isObject(obj1) &&\n    isObject(obj2) &&\n    Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2) &&\n    !(Array.isArray(obj1) || Array.isArray(obj2))\n  );\n}\n\nexport function isObject(x: any) {\n  return x != null && typeof x === 'object';\n}\n\nexport function isPromise(obj: any): obj is Promise<any> {\n  return !!obj && typeof obj.then === 'function';\n}\n\nexport function clone(value: any): any {\n  if (\n    !isObject(value) ||\n    isObservable(value) ||\n    isPromise(value) ||\n    value instanceof TemplateRef ||\n    /* instanceof SafeHtmlImpl */ value.changingThisBreaksApplicationSecurity ||\n    ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor?.name) !== -1\n  ) {\n    return value;\n  }\n\n  if (value instanceof Set) {\n    return new Set(value);\n  }\n\n  if (value instanceof Map) {\n    return new Map(value);\n  }\n\n  if (value instanceof Uint8Array) {\n    return new Uint8Array(value);\n  }\n\n  if (value instanceof Uint16Array) {\n    return new Uint16Array(value);\n  }\n\n  if (value instanceof Uint32Array) {\n    return new Uint32Array(value);\n  }\n\n  // https://github.com/moment/moment/blob/master/moment.js#L252\n  if (value._isAMomentObject && isFunction(value.clone)) {\n    return value.clone();\n  }\n\n  if (value instanceof AbstractControl) {\n    return null;\n  }\n\n  if (value instanceof Date) {\n    return new Date(value.getTime());\n  }\n\n  if (Array.isArray(value)) {\n    return value.slice(0).map((v) => clone(v));\n  }\n\n  // best way to clone a js object maybe\n  // https://stackoverflow.com/questions/41474986/how-to-clone-a-javascript-es6-class-instance\n  const proto = Object.getPrototypeOf(value);\n  let c = Object.create(proto);\n  c = Object.setPrototypeOf(c, proto);\n  // need to make a deep copy so we dont use Object.assign\n  // also Object.assign wont copy property descriptor exactly\n  return Object.keys(value).reduce((newVal, prop) => {\n    const propDesc = Object.getOwnPropertyDescriptor(value, prop);\n    if (propDesc.get) {\n      Object.defineProperty(newVal, prop, propDesc);\n    } else {\n      newVal[prop] = clone(value[prop]);\n    }\n\n    return newVal;\n  }, c);\n}\n\nexport function defineHiddenProp(field: any, prop: string, defaultValue: any) {\n  Object.defineProperty(field, prop, { enumerable: false, writable: true, configurable: true });\n  field[prop] = defaultValue;\n}\n\ntype IObserveFn<T> = (change: { currentValue: T; previousValue?: T; firstChange: boolean }) => void;\nexport interface IObserver<T> {\n  setValue: (value: T, emitEvent?: boolean) => void;\n  unsubscribe: () => void;\n}\ninterface IObserveTarget<T> {\n  [prop: string]: any;\n  _observers?: {\n    [prop: string]: {\n      value: T;\n      onChange: IObserveFn<T>[];\n    };\n  };\n}\n\nexport function observeDeep<T = any>(source: IObserveTarget<T>, paths: string[], setFn: () => void): () => void {\n  let observers: (() => void)[] = [];\n\n  const unsubscribe = () => {\n    observers.forEach((observer) => observer());\n    observers = [];\n  };\n  const observer = observe(source, paths, ({ firstChange, currentValue }) => {\n    !firstChange && setFn();\n\n    unsubscribe();\n    if (isObject(currentValue) && currentValue.constructor.name === 'Object') {\n      Object.keys(currentValue).forEach((prop) => {\n        observers.push(observeDeep(source, [...paths, prop], setFn));\n      });\n    }\n  });\n\n  return () => {\n    observer.unsubscribe();\n    unsubscribe();\n  };\n}\n\nexport function observe<T = any>(o: IObserveTarget<T>, paths: string[], setFn?: IObserveFn<T>): IObserver<T> {\n  if (!o._observers) {\n    defineHiddenProp(o, '_observers', {});\n  }\n\n  let target = o;\n  for (let i = 0; i < paths.length - 1; i++) {\n    if (!target[paths[i]] || !isObject(target[paths[i]])) {\n      target[paths[i]] = /^\\d+$/.test(paths[i + 1]) ? [] : {};\n    }\n    target = target[paths[i]];\n  }\n\n  const key = paths[paths.length - 1];\n  const prop = paths.join('.');\n  if (!o._observers[prop]) {\n    o._observers[prop] = { value: target[key], onChange: [] };\n  }\n\n  const state = o._observers[prop];\n  if (target[key] !== state.value) {\n    state.value = target[key];\n  }\n\n  if (setFn && state.onChange.indexOf(setFn) === -1) {\n    state.onChange.push(setFn);\n    setFn({ currentValue: state.value, firstChange: true });\n    if (state.onChange.length >= 1 && isObject(target)) {\n      const { enumerable } = Object.getOwnPropertyDescriptor(target, key) || { enumerable: true };\n      Object.defineProperty(target, key, {\n        enumerable,\n        configurable: true,\n        get: () => state.value,\n        set: (currentValue) => {\n          if (currentValue !== state.value) {\n            const previousValue = state.value;\n            state.value = currentValue;\n            state.onChange.forEach((changeFn) => changeFn({ previousValue, currentValue, firstChange: false }));\n          }\n        },\n      });\n    }\n  }\n\n  return {\n    setValue(currentValue: T, emitEvent = true) {\n      if (currentValue === state.value) {\n        return;\n      }\n\n      const previousValue = state.value;\n      state.value = currentValue;\n      state.onChange.forEach((changeFn) => {\n        if (changeFn !== setFn && emitEvent) {\n          changeFn({ previousValue, currentValue, firstChange: false });\n        }\n      });\n    },\n    unsubscribe() {\n      state.onChange = state.onChange.filter((changeFn) => changeFn !== setFn);\n      if (state.onChange.length === 0) {\n        delete o._observers[prop];\n      }\n    },\n  };\n}\n\nexport function getField(f: FormlyFieldConfig, key: FormlyFieldConfig['key']): FormlyFieldConfig {\n  key = (Array.isArray(key) ? key.join('.') : key) as string;\n  if (!f.fieldGroup) {\n    return undefined;\n  }\n\n  for (let i = 0, len = f.fieldGroup.length; i < len; i++) {\n    const c = f.fieldGroup[i];\n    const k = (Array.isArray(c.key) ? c.key.join('.') : c.key) as string;\n    if (k === key) {\n      return c;\n    }\n\n    if (c.fieldGroup && (isNil(k) || key.indexOf(`${k}.`) === 0)) {\n      const field = getField(c, isNil(k) ? key : key.slice(k.length + 1));\n      if (field) {\n        return field;\n      }\n    }\n  }\n\n  return undefined;\n}\n\nexport function markFieldForCheck(field: FormlyFieldConfigCache) {\n  field._componentRefs?.forEach((ref) => {\n    // NOTE: we cannot use ref.changeDetectorRef, see https://github.com/ngx-formly/ngx-formly/issues/2191\n    if (ref instanceof ComponentRef) {\n      const changeDetectorRef = ref.injector.get(ChangeDetectorRef);\n      changeDetectorRef.markForCheck();\n    } else {\n      ref.markForCheck();\n    }\n  });\n}\n\nexport function isNoopNgZone(ngZone: NgZone) {\n  return ngZone instanceof ɵNoopNgZone;\n}\n\nexport function isHiddenField(field: FormlyFieldConfig) {\n  const isHidden = (f: FormlyFieldConfig) => f.hide || f.expressions?.hide || f.hideExpression;\n  let setDefaultValue = !field.resetOnHide || !isHidden(field);\n  if (!isHidden(field) && field.resetOnHide) {\n    let parent = field.parent;\n    while (parent && !isHidden(parent)) {\n      parent = parent.parent;\n    }\n    setDefaultValue = !parent || !isHidden(parent);\n  }\n\n  return !setDefaultValue;\n}\n\nexport function isSignalRequired() {\n  return +VERSION.major > 18 || (+VERSION.major >= 18 && +VERSION.minor >= 1);\n}\n","/**\n * Legacy implementation\n */\nexport function evalStringExpressionLegacy(expression: string, argNames: string[]): any {\n  try {\n    return Function(...argNames, `return ${expression};`) as any;\n  } catch (error) {\n    console.error(error);\n  }\n}\n\nexport function evalExpression(\n  expression: string | ((...value: any[]) => any) | boolean,\n  thisArg: any,\n  argVal: any[],\n): any {\n  if (typeof expression === 'function') {\n    return expression.apply(thisArg, argVal);\n  } else {\n    return expression ? true : false;\n  }\n}\n","import { EventEmitter } from '@angular/core';\nimport { UntypedFormArray, UntypedFormGroup, AbstractControl, FormControl } from '@angular/forms';\nimport { getKeyPath, getFieldValue, isNil, defineHiddenProp, observe, hasKey } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../models';\n\nexport function unregisterControl(field: FormlyFieldConfigCache, emitEvent = false) {\n  const control = field.formControl;\n  const fieldIndex = control._fields ? control._fields.indexOf(field) : -1;\n  if (fieldIndex !== -1) {\n    control._fields.splice(fieldIndex, 1);\n  }\n\n  const form = control.parent as UntypedFormArray | UntypedFormGroup;\n  if (!form) {\n    return;\n  }\n\n  const opts = { emitEvent };\n  if (form instanceof UntypedFormArray) {\n    const key = form.controls.findIndex((c) => c === control);\n    if (key !== -1) {\n      form.removeAt(key, opts);\n    }\n  } else if (form instanceof UntypedFormGroup) {\n    const paths = getKeyPath(field);\n    const key = paths[paths.length - 1];\n    if (form.get([key]) === control) {\n      form.removeControl(key, opts);\n    }\n  }\n\n  control.setParent(null);\n}\n\nexport function findControl(field: FormlyFieldConfigCache): AbstractControl {\n  if (field.formControl) {\n    return field.formControl;\n  }\n\n  if (field.shareFormControl === false) {\n    return null;\n  }\n\n  return field.form?.get(getKeyPath(field));\n}\n\nexport function registerControl(\n  field: FormlyFieldConfigCache,\n  control?: FormlyFieldConfigCache['formControl'],\n  emitEvent = false,\n) {\n  control = control || field.formControl;\n\n  if (!control._fields) {\n    defineHiddenProp(control, '_fields', []);\n  }\n  if (control._fields.indexOf(field) === -1) {\n    control._fields.push(field);\n  }\n\n  if (!field.formControl && control) {\n    defineHiddenProp(field, 'formControl', control);\n    control.setValidators(null);\n    control.setAsyncValidators(null);\n\n    field.props.disabled = !!field.props.disabled;\n    const disabledObserver = observe(field, ['props', 'disabled'], ({ firstChange, currentValue }) => {\n      if (!firstChange) {\n        currentValue ? field.formControl.disable() : field.formControl.enable();\n      }\n    });\n    if (control instanceof FormControl) {\n      control.registerOnDisabledChange(disabledObserver.setValue);\n    }\n  }\n\n  if (!field.form || !hasKey(field)) {\n    return;\n  }\n\n  let form = field.form;\n  const paths = getKeyPath(field);\n  const value = getFieldValue(field);\n  if (!(isNil(control.value) && isNil(value)) && control.value !== value && control instanceof FormControl) {\n    control.patchValue(value);\n  }\n\n  for (let i = 0; i < paths.length - 1; i++) {\n    const path = paths[i];\n    if (!form.get([path])) {\n      (form as UntypedFormGroup).setControl(path, new UntypedFormGroup({}), { emitEvent });\n    }\n\n    form = <UntypedFormGroup>form.get([path]);\n  }\n\n  const key = paths[paths.length - 1];\n  if (!field._hide && form.get([key]) !== control) {\n    (form as UntypedFormGroup).setControl(key, control, { emitEvent });\n  }\n}\n\nexport function updateValidity(c: AbstractControl, onlySelf = false) {\n  const status = c.status;\n  const value = c.value;\n  c.updateValueAndValidity({ emitEvent: false, onlySelf });\n  if (status !== c.status) {\n    (c.statusChanges as EventEmitter<string>).emit(c.status);\n  }\n\n  if (value !== c.value) {\n    (c.valueChanges as EventEmitter<any>).emit(c.value);\n  }\n}\n\nexport function clearControl(form: FormlyFieldConfigCache['formControl']) {\n  delete form?._fields;\n  form.setValidators(null);\n  form.setAsyncValidators(null);\n  if (form instanceof UntypedFormGroup || form instanceof UntypedFormArray) {\n    Object.values(form.controls).forEach((c) => clearControl(c));\n  }\n}\n","import { FormlyValueChangeEvent, FormlyFieldConfigCache } from '../../models';\nimport {\n  isObject,\n  isNil,\n  isUndefined,\n  isFunction,\n  defineHiddenProp,\n  observe,\n  getFieldValue,\n  assignFieldValue,\n  hasKey,\n} from '../../utils';\nimport { evalExpression, evalStringExpressionLegacy } from './utils';\nimport { isObservable, Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FormlyExtension } from '../../models';\nimport { unregisterControl, registerControl, updateValidity } from '../field-form/utils';\nimport { UntypedFormArray } from '@angular/forms';\n\nexport class FieldExpressionExtension implements FormlyExtension {\n  onPopulate(field: FormlyFieldConfigCache) {\n    if (field._expressions) {\n      return;\n    }\n\n    // cache built expression\n    defineHiddenProp(field, '_expressions', {});\n\n    observe(field, ['hide'], ({ currentValue, firstChange }) => {\n      defineHiddenProp(field, '_hide', !!currentValue);\n      if (!firstChange || (firstChange && currentValue === true)) {\n        field.props.hidden = currentValue;\n        field.options._hiddenFieldsForCheck.push({ field });\n      }\n    });\n\n    if (field.hideExpression) {\n      observe(field, ['hideExpression'], ({ currentValue: expr }) => {\n        field._expressions.hide = this.parseExpressions(field, 'hide', typeof expr === 'boolean' ? () => expr : expr);\n      });\n    }\n\n    const evalExpr = (key: string, expr: any) => {\n      if (typeof expr === 'string' || isFunction(expr)) {\n        field._expressions[key] = this.parseExpressions(field, key, expr);\n      } else if (expr instanceof Observable) {\n        field._expressions[key] = {\n          value$: (expr as Observable<any>).pipe(\n            tap((v) => {\n              this.evalExpr(field, key, v);\n              field.options._detectChanges(field);\n            }),\n          ),\n        };\n      }\n    };\n\n    field.expressions = field.expressions || {};\n    for (const key of Object.keys(field.expressions)) {\n      observe(field, ['expressions', key], ({ currentValue: expr }) => {\n        evalExpr(key, isFunction(expr) ? (...args: any) => expr(field, args[3]) : expr);\n      });\n    }\n\n    field.expressionProperties = field.expressionProperties || {};\n    for (const key of Object.keys(field.expressionProperties)) {\n      observe(field, ['expressionProperties', key], ({ currentValue }) => evalExpr(key, currentValue));\n    }\n  }\n\n  postPopulate(field: FormlyFieldConfigCache) {\n    if (field.parent) {\n      return;\n    }\n\n    if (!field.options.checkExpressions) {\n      let checkLocked = false;\n      field.options.checkExpressions = (f, ignoreCache) => {\n        if (checkLocked) {\n          return;\n        }\n\n        checkLocked = true;\n        const fieldChanged = this.checkExpressions(f, ignoreCache);\n        const options = field.options;\n        options._hiddenFieldsForCheck\n          .sort((f) => (f.field.hide ? -1 : 1))\n          .forEach((f) => this.changeHideState(f.field, f.field.hide ?? f.default, !ignoreCache));\n        options._hiddenFieldsForCheck = [];\n        if (fieldChanged) {\n          this.checkExpressions(field);\n        }\n        checkLocked = false;\n      };\n    }\n  }\n\n  protected parseExpressions(field: FormlyFieldConfigCache, path: string, expr: any) {\n    let parentExpression: any;\n    if (field.parent && ['hide', 'props.disabled'].includes(path)) {\n      const rootValue = (f: FormlyFieldConfigCache) => {\n        return path === 'hide' ? f.hide : f.props.disabled;\n      };\n\n      parentExpression = () => {\n        let root = field.parent;\n        while (root.parent && !rootValue(root)) {\n          root = root.parent;\n        }\n\n        return rootValue(root);\n      };\n    }\n\n    expr = expr || (() => false);\n    if (typeof expr === 'string') {\n      expr = this._evalStringExpression(expr, ['model', 'formState', 'field']);\n    }\n\n    let currentValue: any;\n\n    return {\n      callback: (ignoreCache?: boolean) => {\n        try {\n          const exprValue = evalExpression(\n            parentExpression ? (...args: any) => parentExpression(field) || expr(...args) : expr,\n            { field },\n            [field.model, field.options.formState, field, ignoreCache],\n          );\n\n          if (\n            ignoreCache ||\n            (currentValue !== exprValue &&\n              (!isObject(exprValue) ||\n                isObservable(exprValue) ||\n                JSON.stringify(exprValue) !== JSON.stringify(currentValue)))\n          ) {\n            currentValue = exprValue;\n            this.evalExpr(field, path, exprValue);\n\n            return true;\n          }\n\n          return false;\n        } catch (error: any) {\n          error.message = `[Formly Error] [Expression \"${path}\"] ${error.message}`;\n          throw error;\n        }\n      },\n    };\n  }\n\n  protected _evalStringExpression(expression: string, argNames: string[]) {\n    return evalStringExpressionLegacy(expression, argNames);\n  }\n\n  private checkExpressions(field: FormlyFieldConfigCache, ignoreCache = false) {\n    if (!field) {\n      return false;\n    }\n\n    let fieldChanged = false;\n    if (field._expressions) {\n      for (const key of Object.keys(field._expressions)) {\n        field._expressions[key].callback?.(ignoreCache) && (fieldChanged = true);\n      }\n    }\n    field.fieldGroup?.forEach((f) => this.checkExpressions(f, ignoreCache) && (fieldChanged = true));\n\n    return fieldChanged;\n  }\n\n  private changeDisabledState(field: FormlyFieldConfigCache, value: boolean) {\n    if (field.fieldGroup) {\n      field.fieldGroup\n        .filter((f: FormlyFieldConfigCache) => !f._expressions.hasOwnProperty('props.disabled'))\n        .forEach((f) => this.changeDisabledState(f, value));\n    }\n\n    if (hasKey(field) && field.props.disabled !== value) {\n      field.props.disabled = value;\n    }\n  }\n\n  private changeHideState(field: FormlyFieldConfigCache, hide: boolean, resetOnHide: boolean) {\n    if (field.fieldGroup) {\n      field.fieldGroup\n        .filter((f: FormlyFieldConfigCache) => f && !f._expressions.hide)\n        .forEach((f) => this.changeHideState(f, hide, resetOnHide));\n    }\n\n    if (field.formControl && hasKey(field)) {\n      defineHiddenProp(field, '_hide', !!(hide || field.hide));\n      const c = field.formControl;\n      if (c._fields?.length > 1) {\n        updateValidity(c);\n      }\n\n      if (hide === true && (!c._fields || c._fields.every((f) => !!f._hide))) {\n        unregisterControl(field, true);\n        if (resetOnHide && field.resetOnHide) {\n          assignFieldValue(field, undefined);\n          field.formControl.reset({ value: undefined, disabled: field.formControl.disabled });\n          field.options.fieldChanges.next({ value: undefined, field, type: 'valueChanges' });\n          if (field.fieldGroup && field.formControl instanceof UntypedFormArray) {\n            field.fieldGroup.length = 0;\n          }\n        }\n      } else if (hide === false) {\n        if (field.resetOnHide && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n          assignFieldValue(field, field.defaultValue);\n        }\n        registerControl(field, undefined, true);\n        if (field.resetOnHide && field.fieldArray && field.fieldGroup?.length !== field.model?.length) {\n          field.options.build(field);\n        }\n      }\n    }\n\n    if (field.options.fieldChanges) {\n      field.options.fieldChanges.next(<FormlyValueChangeEvent>{ field, type: 'hidden', value: hide });\n    }\n  }\n\n  private evalExpr(field: FormlyFieldConfigCache, prop: string, value: any) {\n    if (prop.indexOf('model.') === 0) {\n      const key = prop.replace(/^model\\./, ''),\n        parent = field.fieldGroup ? field : field.parent;\n\n      let control = field?.key === key ? field.formControl : field.form.get(key);\n      if (!control && field.get(key)) {\n        control = field.get(key).formControl;\n      }\n      assignFieldValue({ key, parent, model: field.model }, value);\n      if (control && !(isNil(control.value) && isNil(value)) && control.value !== value) {\n        control.patchValue(value);\n      }\n    } else {\n      try {\n        let target: any = field;\n        const paths = this._evalExpressionPath(field, prop);\n        const lastIndex = paths.length - 1;\n        for (let i = 0; i < lastIndex; i++) {\n          target = target[paths[i]];\n        }\n\n        target[paths[lastIndex]] = value;\n      } catch (error: any) {\n        error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n        throw error;\n      }\n\n      if (['templateOptions.disabled', 'props.disabled'].includes(prop) && hasKey(field)) {\n        this.changeDisabledState(field, value);\n      }\n    }\n\n    this.emitExpressionChanges(field, prop, value);\n  }\n\n  private emitExpressionChanges(field: FormlyFieldConfigCache, property: string, value: any) {\n    if (!field.options.fieldChanges) {\n      return;\n    }\n\n    field.options.fieldChanges.next({\n      field,\n      type: 'expressionChanges',\n      property,\n      value,\n    });\n  }\n\n  private _evalExpressionPath(field: FormlyFieldConfigCache, prop: string) {\n    if (field._expressions[prop] && field._expressions[prop].paths) {\n      return field._expressions[prop].paths;\n    }\n\n    let paths: string[] = [];\n    if (prop.indexOf('[') === -1) {\n      paths = prop.split('.');\n    } else {\n      prop\n        .split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n        .filter((p) => p)\n        .forEach((path) => {\n          const arrayPath = path.match(/['|\"](.*?)['|\"]/);\n          if (arrayPath) {\n            paths.push(arrayPath[1]);\n          } else {\n            paths.push(...path.split('.').filter((p) => p));\n          }\n        });\n    }\n\n    if (field._expressions[prop]) {\n      field._expressions[prop].paths = paths;\n    }\n\n    return paths;\n  }\n}\n","// CSP-compliant expression parser for Formly expressions\n// Supports: model.path, formState.path, field.path, comparisons, logical operators, and negation\n\ntype ExpressionContext = {\n  model: any;\n  formState: any;\n  field: any;\n};\n\n// Tokenizer\nenum TokenType {\n  IDENTIFIER = 'IDENTIFIER',\n  DOT = 'DOT',\n  BRACKET_OPEN = 'BRACKET_OPEN',\n  BRACKET_CLOSE = 'BRACKET_CLOSE',\n  STRING = 'STRING',\n  NUMBER = 'NUMBER',\n  BOOLEAN = 'BOOLEAN',\n  NULL = 'NULL',\n  UNDEFINED = 'UNDEFINED',\n  OPERATOR = 'OPERATOR',\n  LOGICAL = 'LOGICAL',\n  NOT = 'NOT',\n  ARITHMETIC = 'ARITHMETIC',\n  PAREN_OPEN = 'PAREN_OPEN',\n  PAREN_CLOSE = 'PAREN_CLOSE',\n  TERNARY_QUESTION = 'TERNARY_QUESTION',\n  TERNARY_COLON = 'TERNARY_COLON',\n  EOF = 'EOF',\n}\n\ninterface Token {\n  type: TokenType;\n  value: any;\n}\n\nclass Tokenizer {\n  private pos = 0;\n  private input: string;\n\n  constructor(input: string) {\n    this.input = input.trim();\n  }\n\n  tokenize(): Token[] {\n    const tokens: Token[] = [];\n\n    while (this.pos < this.input.length) {\n      this.skipWhitespace();\n\n      if (this.pos >= this.input.length) break;\n\n      const char = this.input[this.pos];\n\n      // String literals\n      if (char === '\"' || char === \"'\") {\n        tokens.push(this.readString());\n      }\n      // Numbers\n      else if (/\\d/.test(char)) {\n        tokens.push(this.readNumber());\n      }\n      // Identifiers and keywords\n      else if (/[a-zA-Z_$]/.test(char)) {\n        tokens.push(this.readIdentifier());\n      }\n      // Operators and symbols\n      else if (char === '.') {\n        tokens.push({ type: TokenType.DOT, value: '.' });\n        this.pos++;\n      } else if (char === '[') {\n        tokens.push({ type: TokenType.BRACKET_OPEN, value: '[' });\n        this.pos++;\n      } else if (char === ']') {\n        tokens.push({ type: TokenType.BRACKET_CLOSE, value: ']' });\n        this.pos++;\n      } else if (char === '(') {\n        tokens.push({ type: TokenType.PAREN_OPEN, value: '(' });\n        this.pos++;\n      } else if (char === ')') {\n        tokens.push({ type: TokenType.PAREN_CLOSE, value: ')' });\n        this.pos++;\n      } else if (char === '?') {\n        tokens.push({ type: TokenType.TERNARY_QUESTION, value: '?' });\n        this.pos++;\n      } else if (char === ':') {\n        tokens.push({ type: TokenType.TERNARY_COLON, value: ':' });\n        this.pos++;\n      } else if (char === '!') {\n        if (this.peek() === '=') {\n          if (this.input[this.pos + 2] === '=') {\n            tokens.push({ type: TokenType.OPERATOR, value: '!==' });\n            this.pos += 3;\n          } else {\n            tokens.push({ type: TokenType.OPERATOR, value: '!=' });\n            this.pos += 2;\n          }\n        } else {\n          tokens.push({ type: TokenType.NOT, value: '!' });\n          this.pos++;\n        }\n      } else if (char === '=' || char === '<' || char === '>') {\n        tokens.push(this.readOperator());\n      } else if (char === '+' || char === '*' || char === '/' || char === '%') {\n        tokens.push({ type: TokenType.ARITHMETIC, value: char });\n        this.pos++;\n      } else if (char === '-') {\n        // Check if this is a negative number or subtraction\n        // It's a negative number if preceded by an operator, opening paren, or at the start\n        const lastToken = tokens[tokens.length - 1];\n        const isNegativeNumber =\n          tokens.length === 0 ||\n          lastToken?.type === TokenType.OPERATOR ||\n          lastToken?.type === TokenType.LOGICAL ||\n          lastToken?.type === TokenType.ARITHMETIC ||\n          lastToken?.type === TokenType.PAREN_OPEN ||\n          lastToken?.type === TokenType.TERNARY_QUESTION ||\n          lastToken?.type === TokenType.TERNARY_COLON;\n\n        if (isNegativeNumber && this.peek() && /\\d/.test(this.peek())) {\n          tokens.push(this.readNumber());\n        } else {\n          tokens.push({ type: TokenType.ARITHMETIC, value: '-' });\n          this.pos++;\n        }\n      } else if (char === '&' && this.peek() === '&') {\n        tokens.push({ type: TokenType.LOGICAL, value: '&&' });\n        this.pos += 2;\n      } else if (char === '|' && this.peek() === '|') {\n        tokens.push({ type: TokenType.LOGICAL, value: '||' });\n        this.pos += 2;\n      } else {\n        throw new Error(`Unexpected character: ${char} at position ${this.pos}`);\n      }\n    }\n\n    tokens.push({ type: TokenType.EOF, value: null });\n    return tokens;\n  }\n\n  private skipWhitespace(): void {\n    while (this.pos < this.input.length && /\\s/.test(this.input[this.pos])) {\n      this.pos++;\n    }\n  }\n\n  private peek(offset = 1): string {\n    return this.input[this.pos + offset] || '';\n  }\n\n  private readString(): Token {\n    const quote = this.input[this.pos];\n    this.pos++;\n    let value = '';\n\n    while (this.pos < this.input.length && this.input[this.pos] !== quote) {\n      if (this.input[this.pos] === '\\\\') {\n        this.pos++;\n        if (this.pos < this.input.length) {\n          const escaped = this.input[this.pos];\n          switch (escaped) {\n            case 'n':\n              value += '\\n';\n              break;\n            case 't':\n              value += '\\t';\n              break;\n            case 'r':\n              value += '\\r';\n              break;\n            default:\n              value += escaped;\n          }\n        }\n      } else {\n        value += this.input[this.pos];\n      }\n      this.pos++;\n    }\n\n    this.pos++; // skip closing quote\n    return { type: TokenType.STRING, value };\n  }\n\n  private readNumber(): Token {\n    let value = '';\n\n    // Handle negatives\n    if (this.input[this.pos] === '-') {\n      value += '-';\n      this.pos++;\n    }\n\n    let hasDecimal = false;\n    while (this.pos < this.input.length && /[\\d.]/.test(this.input[this.pos])) {\n      if (this.input[this.pos] === '.') {\n        if (hasDecimal) {\n          throw new Error(`Invalid number format: multiple decimal points at position ${this.pos}`);\n        }\n        hasDecimal = true;\n      }\n      value += this.input[this.pos];\n      this.pos++;\n    }\n\n    const parsed = parseFloat(value);\n    if (isNaN(parsed)) {\n      throw new Error(`Invalid number format: ${value}`);\n    }\n\n    return { type: TokenType.NUMBER, value: parsed };\n  }\n\n  private readIdentifier(): Token {\n    let value = '';\n\n    while (this.pos < this.input.length && /[a-zA-Z0-9_$]/.test(this.input[this.pos])) {\n      value += this.input[this.pos];\n      this.pos++;\n    }\n\n    // Check for keywords\n    if (value === 'true' || value === 'false') {\n      return { type: TokenType.BOOLEAN, value: value === 'true' };\n    }\n    if (value === 'null') {\n      return { type: TokenType.NULL, value: null };\n    }\n    if (value === 'undefined') {\n      return { type: TokenType.UNDEFINED, value: undefined };\n    }\n\n    return { type: TokenType.IDENTIFIER, value };\n  }\n\n  private readOperator(): Token {\n    let op = this.input[this.pos];\n    this.pos++;\n\n    if (this.pos < this.input.length) {\n      const next = this.input[this.pos];\n      if (\n        (op === '=' && next === '=') ||\n        (op === '!' && next === '=') ||\n        (op === '<' && next === '=') ||\n        (op === '>' && next === '=')\n      ) {\n        op += next;\n        this.pos++;\n\n        // Check for === or !==\n        if (this.pos < this.input.length && this.input[this.pos] === '=') {\n          op += '=';\n          this.pos++;\n        }\n      }\n    }\n\n    return { type: TokenType.OPERATOR, value: op };\n  }\n}\n\n// Parser and Evaluator\nclass ExpressionParser {\n  private tokens: Token[];\n  private pos = 0;\n\n  constructor(tokens: Token[]) {\n    this.tokens = tokens;\n  }\n\n  parse(): (context: ExpressionContext) => any {\n    const expr = this.parseTernary();\n    return (context: ExpressionContext) => expr(context);\n  }\n\n  private parseTernary(): (context: ExpressionContext) => any {\n    const expr = this.parseLogicalOr();\n\n    if (this.current().type === TokenType.TERNARY_QUESTION) {\n      this.consume(TokenType.TERNARY_QUESTION);\n      const trueExpr = this.parseLogicalOr();\n      this.consume(TokenType.TERNARY_COLON);\n      const falseExpr = this.parseTernary();\n\n      return (context: ExpressionContext) => {\n        return expr(context) ? trueExpr(context) : falseExpr(context);\n      };\n    }\n\n    return expr;\n  }\n\n  private parseLogicalOr(): (context: ExpressionContext) => any {\n    let left = this.parseLogicalAnd();\n\n    while (this.current().type === TokenType.LOGICAL && this.current().value === '||') {\n      this.consume(TokenType.LOGICAL);\n      const right = this.parseLogicalAnd();\n      const prevLeft = left;\n      left = (context: ExpressionContext) => prevLeft(context) || right(context);\n    }\n\n    return left;\n  }\n\n  private parseLogicalAnd(): (context: ExpressionContext) => any {\n    let left = this.parseComparison();\n\n    while (this.current().type === TokenType.LOGICAL && this.current().value === '&&') {\n      this.consume(TokenType.LOGICAL);\n      const right = this.parseComparison();\n      const prevLeft = left;\n      left = (context: ExpressionContext) => prevLeft(context) && right(context);\n    }\n\n    return left;\n  }\n\n  private parseComparison(): (context: ExpressionContext) => any {\n    const left = this.parseAdditive();\n\n    if (this.current().type === TokenType.OPERATOR) {\n      const op = this.consume(TokenType.OPERATOR).value;\n      const right = this.parseAdditive();\n\n      return (context: ExpressionContext) => {\n        const leftVal = left(context);\n        const rightVal = right(context);\n\n        switch (op) {\n          case '===':\n            return leftVal === rightVal;\n          case '!==':\n            return leftVal !== rightVal;\n          case '==':\n            return leftVal == rightVal;\n          case '!=':\n            return leftVal != rightVal;\n          case '<':\n            return leftVal < rightVal;\n          case '<=':\n            return leftVal <= rightVal;\n          case '>':\n            return leftVal > rightVal;\n          case '>=':\n            return leftVal >= rightVal;\n          default:\n            throw new Error(`Unknown operator: ${op}`);\n        }\n      };\n    }\n\n    return left;\n  }\n\n  private parseAdditive(): (context: ExpressionContext) => any {\n    let left = this.parseMultiplicative();\n\n    while (\n      this.current().type === TokenType.ARITHMETIC &&\n      (this.current().value === '+' || this.current().value === '-')\n    ) {\n      const op = this.consume(TokenType.ARITHMETIC).value;\n      const right = this.parseMultiplicative();\n      const prevLeft = left;\n\n      if (op === '+') {\n        left = (context: ExpressionContext) => prevLeft(context) + right(context);\n      } else {\n        left = (context: ExpressionContext) => prevLeft(context) - right(context);\n      }\n    }\n\n    return left;\n  }\n\n  private parseMultiplicative(): (context: ExpressionContext) => any {\n    let left = this.parseUnary();\n\n    while (\n      this.current().type === TokenType.ARITHMETIC &&\n      (this.current().value === '*' || this.current().value === '/' || this.current().value === '%')\n    ) {\n      const op = this.consume(TokenType.ARITHMETIC).value;\n      const right = this.parseUnary();\n      const prevLeft = left;\n\n      if (op === '*') {\n        left = (context: ExpressionContext) => prevLeft(context) * right(context);\n      } else if (op === '/') {\n        left = (context: ExpressionContext) => prevLeft(context) / right(context);\n      } else {\n        left = (context: ExpressionContext) => prevLeft(context) % right(context);\n      }\n    }\n\n    return left;\n  }\n\n  private parseUnary(): (context: ExpressionContext) => any {\n    if (this.current().type === TokenType.NOT) {\n      this.consume(TokenType.NOT);\n      const expr = this.parseUnary();\n      return (context: ExpressionContext) => !expr(context);\n    }\n\n    return this.parsePrimary();\n  }\n\n  private parsePrimary(): (context: ExpressionContext) => any {\n    const token = this.current();\n\n    // Parentheses\n    if (token.type === TokenType.PAREN_OPEN) {\n      this.consume(TokenType.PAREN_OPEN);\n      const expr = this.parseTernary();\n      this.consume(TokenType.PAREN_CLOSE);\n      return expr;\n    }\n\n    // Literals\n    if (\n      token.type === TokenType.STRING ||\n      token.type === TokenType.NUMBER ||\n      token.type === TokenType.BOOLEAN ||\n      token.type === TokenType.NULL ||\n      token.type === TokenType.UNDEFINED\n    ) {\n      const value = token.value;\n      this.pos++;\n      return () => value;\n    }\n\n    // Property access (model.field, formState.prop, etc)\n    if (token.type === TokenType.IDENTIFIER) {\n      return this.parsePropertyAccess();\n    }\n\n    throw new Error(`Unexpected token: ${JSON.stringify(token)}`);\n  }\n\n  private parsePropertyAccess(): (context: ExpressionContext) => any {\n    const path: Array<string | ((context: ExpressionContext) => any)> = [];\n\n    // Read first identifier\n    path.push(this.consume(TokenType.IDENTIFIER).value);\n\n    // Read rest of path (dots and brackets)\n    while (this.current().type === TokenType.DOT || this.current().type === TokenType.BRACKET_OPEN) {\n      if (this.current().type === TokenType.DOT) {\n        this.consume(TokenType.DOT);\n        path.push(this.consume(TokenType.IDENTIFIER).value);\n      } else {\n        this.consume(TokenType.BRACKET_OPEN);\n\n        // bracket notation can contain expressions\n        if (this.current().type === TokenType.STRING) {\n          path.push(this.consume(TokenType.STRING).value);\n        } else if (this.current().type === TokenType.NUMBER) {\n          path.push(String(this.consume(TokenType.NUMBER).value));\n        } else {\n          // dynamic property access\n          const expr = this.parseTernary();\n          path.push(expr);\n        }\n\n        this.consume(TokenType.BRACKET_CLOSE);\n      }\n    }\n\n    return (context: ExpressionContext) => {\n      let value: any = context;\n\n      for (const segment of path) {\n        if (value === null || value === undefined) {\n          return undefined;\n        }\n\n        if (typeof segment === 'function') {\n          value = value[segment(context)];\n        } else {\n          value = value[segment];\n        }\n      }\n\n      return value;\n    };\n  }\n\n  private current(): Token {\n    return this.tokens[this.pos];\n  }\n\n  private consume(expectedType: TokenType): Token {\n    const token = this.current();\n\n    if (token.type !== expectedType) {\n      throw new Error(`Expected ${expectedType}, got ${token.type}`);\n    }\n\n    this.pos++;\n    return token;\n  }\n}\n\n/**\n * Uses CSP-safe implementation\n */\nexport function parseExpression(expression: string, argNames: string[]): any {\n  try {\n    const tokenizer = new Tokenizer(expression);\n    const tokens = tokenizer.tokenize();\n    const parser = new ExpressionParser(tokens);\n    const evaluator = parser.parse();\n\n    // Return a function that maps the args to the context\n    return (...args: any[]) => {\n      const context: any = {};\n      argNames.forEach((name, i) => {\n        context[name] = args[i];\n      });\n      return evaluator(context);\n    };\n  } catch (error) {\n    console.error('Expression parse error:', error);\n    return undefined;\n  }\n}\n","import { FieldExpressionExtension as FieldExpressionLegacyExtension } from '../field-expression-legacy/field-expression';\nimport { parseExpression } from './utils';\n\nexport class FieldExpressionExtension extends FieldExpressionLegacyExtension {\n  protected override _evalStringExpression(expression: string, argNames: string[]) {\n    return parseExpression(expression, argNames);\n  }\n}\n","import { ComponentRef } from '@angular/core';\nimport { FormlyConfig } from '../../services/formly.config';\nimport { FormlyFieldConfigCache, FormlyValueChangeEvent, FormlyExtension, FormlyFieldConfig } from '../../models';\nimport {\n  getFieldId,\n  assignFieldValue,\n  isUndefined,\n  getFieldValue,\n  reverseDeepMerge,\n  defineHiddenProp,\n  clone,\n  getField,\n  markFieldForCheck,\n  hasKey,\n  observe,\n  isHiddenField,\n  isSignalRequired,\n} from '../../utils';\nimport { Subject } from 'rxjs';\n\nexport class CoreExtension implements FormlyExtension {\n  private formId = 0;\n  constructor(private config: FormlyConfig) {}\n\n  prePopulate(field: FormlyFieldConfigCache) {\n    const root = field.parent;\n    this.initRootOptions(field);\n    this.initFieldProps(field);\n    if (root) {\n      Object.defineProperty(field, 'options', { get: () => root.options, configurable: true });\n      Object.defineProperty(field, 'model', {\n        get: () => (hasKey(field) && field.fieldGroup ? getFieldValue(field) : root.model),\n        configurable: true,\n      });\n    }\n\n    Object.defineProperty(field, 'get', {\n      value: (key: FormlyFieldConfig['key']) => getField(field, key),\n      configurable: true,\n    });\n\n    this.getFieldComponentInstance(field).prePopulate?.(field);\n  }\n\n  onPopulate(field: FormlyFieldConfigCache) {\n    this.initFieldOptions(field);\n    this.getFieldComponentInstance(field).onPopulate?.(field);\n    if (field.fieldGroup) {\n      field.fieldGroup.forEach((f, index) => {\n        if (f) {\n          Object.defineProperty(f, 'parent', { get: () => field, configurable: true });\n          Object.defineProperty(f, 'index', { get: () => index, configurable: true });\n        }\n        this.formId++;\n      });\n    }\n  }\n\n  postPopulate(field: FormlyFieldConfigCache) {\n    this.getFieldComponentInstance(field).postPopulate?.(field);\n  }\n\n  private initFieldProps(field: FormlyFieldConfigCache) {\n    field.props ??= field.templateOptions;\n    Object.defineProperty(field, 'templateOptions', {\n      get: () => field.props,\n      set: (props) => (field.props = props),\n      configurable: true,\n    });\n  }\n\n  private initRootOptions(field: FormlyFieldConfigCache) {\n    if (field.parent) {\n      return;\n    }\n\n    const options = field.options;\n    field.options.formState = field.options.formState || {};\n    if (!options.showError) {\n      options.showError = this.config.extras.showError;\n    }\n\n    if (!options.fieldChanges) {\n      defineHiddenProp(options, 'fieldChanges', new Subject<FormlyValueChangeEvent>());\n    }\n\n    if (!options._hiddenFieldsForCheck) {\n      options._hiddenFieldsForCheck = [];\n    }\n\n    options._detectChanges = (f: FormlyFieldConfigCache) => {\n      if (f._componentRefs) {\n        markFieldForCheck(f);\n      }\n\n      f.fieldGroup?.forEach((f) => f && options._detectChanges(f));\n    };\n\n    options.detectChanges = (f: FormlyFieldConfigCache) => {\n      f.options.checkExpressions?.(f);\n      options._detectChanges(f);\n    };\n\n    options.resetModel = (model?: any) => {\n      model = clone(model ?? options._initialModel);\n      if (field.model) {\n        Object.keys(field.model).forEach((k) => delete field.model[k]);\n        Object.assign(field.model, model || {});\n      }\n\n      if (!isSignalRequired()) {\n        observe(options, ['parentForm', 'submitted']).setValue(false, false);\n      }\n      options.build(field);\n      field.form.reset(field.model);\n    };\n\n    options.updateInitialValue = (model?: any) => (options._initialModel = clone(model ?? field.model));\n    field.options.updateInitialValue();\n  }\n\n  private initFieldOptions(field: FormlyFieldConfigCache) {\n    reverseDeepMerge(field, {\n      id: getFieldId(`formly_${this.formId}`, field, field.index),\n      hooks: {},\n      modelOptions: {},\n      validation: { messages: {} },\n      props:\n        !field.type || !hasKey(field)\n          ? {}\n          : {\n              label: '',\n              placeholder: '',\n              disabled: false,\n            },\n    });\n\n    if (this.config.extras.resetFieldOnHide && field.resetOnHide !== false) {\n      field.resetOnHide = true;\n    }\n\n    if (\n      field.type !== 'formly-template' &&\n      (field.template || field.expressions?.template || field.expressionProperties?.template)\n    ) {\n      field.type = 'formly-template';\n    }\n\n    if (!field.type && field.fieldGroup) {\n      field.type = 'formly-group';\n    }\n\n    if (field.type) {\n      this.config.getMergedField(field);\n    }\n\n    if (\n      hasKey(field) &&\n      !isUndefined(field.defaultValue) &&\n      isUndefined(getFieldValue(field)) &&\n      !isHiddenField(field)\n    ) {\n      assignFieldValue(field, field.defaultValue);\n    }\n\n    field.wrappers = field.wrappers || [];\n  }\n\n  private getFieldComponentInstance(field: FormlyFieldConfigCache) {\n    const componentRefInstance = () => {\n      let componentRef = this.config.resolveFieldTypeRef(field);\n\n      const fieldComponentRef = field._componentRefs?.slice(-1)[0];\n      if (\n        fieldComponentRef instanceof ComponentRef &&\n        fieldComponentRef?.componentType === componentRef?.componentType\n      ) {\n        componentRef = fieldComponentRef as any;\n      }\n\n      return componentRef?.instance as any;\n    };\n\n    if (!field._proxyInstance) {\n      defineHiddenProp(\n        field,\n        '_proxyInstance',\n        new Proxy({} as FormlyExtension, {\n          get: (_, prop) => componentRefInstance()?.[prop],\n          set: (_, prop, value) => (componentRefInstance()[prop] = value),\n        }),\n      );\n    }\n\n    return field._proxyInstance;\n  }\n}\n","import { FormlyExtension, FormlyFieldConfigCache } from '../../models';\nimport {\n  UntypedFormGroup,\n  UntypedFormControl,\n  AbstractControlOptions,\n  Validators,\n  ValidatorFn,\n  AsyncValidatorFn,\n  FormControl,\n} from '@angular/forms';\nimport { getFieldValue, defineHiddenProp, hasKey, getKeyPath } from '../../utils';\nimport { registerControl, findControl, updateValidity } from './utils';\nimport { of } from 'rxjs';\n\nexport class FieldFormExtension implements FormlyExtension {\n  private root: FormlyFieldConfigCache;\n  prePopulate(field: FormlyFieldConfigCache) {\n    if (!this.root) {\n      this.root = field;\n    }\n\n    if (field.parent) {\n      Object.defineProperty(field, 'form', {\n        get: () => field.parent!.formControl,\n        configurable: true,\n      });\n    }\n  }\n\n  onPopulate(field: FormlyFieldConfigCache) {\n    if (field.hasOwnProperty('fieldGroup') && !hasKey(field)) {\n      defineHiddenProp(field, 'formControl', field.form);\n    } else {\n      this.addFormControl(field);\n    }\n  }\n\n  postPopulate(field: FormlyFieldConfigCache) {\n    if (this.root !== field) {\n      return;\n    }\n\n    this.root = null;\n    const markForCheck = this.setValidators(field);\n    if (markForCheck && field.parent) {\n      let parent = field.parent;\n      while (parent) {\n        if (hasKey(parent) || !parent.parent) {\n          updateValidity(parent.formControl, true);\n        }\n        parent = parent.parent;\n      }\n    }\n  }\n\n  private addFormControl(field: FormlyFieldConfigCache) {\n    let control = findControl(field);\n    if (field.fieldArray) {\n      return;\n    }\n\n    if (!control) {\n      const controlOptions: AbstractControlOptions = { updateOn: field.modelOptions.updateOn };\n\n      if (field.fieldGroup) {\n        control = new UntypedFormGroup({}, controlOptions);\n      } else {\n        const value = hasKey(field) ? getFieldValue(field) : field.defaultValue;\n        control = new UntypedFormControl(\n          { value, disabled: !!field.props.disabled },\n          { ...controlOptions, initialValueIsDefault: true },\n        );\n      }\n    } else {\n      if (control instanceof FormControl) {\n        const value = hasKey(field) ? getFieldValue(field) : field.defaultValue;\n        (control as any).defaultValue = value;\n      }\n    }\n\n    registerControl(field, control);\n  }\n\n  private setValidators(field: FormlyFieldConfigCache, disabled = false) {\n    if (disabled === false && hasKey(field) && field.props?.disabled) {\n      disabled = true;\n    }\n\n    let markForCheck = false;\n    field.fieldGroup?.forEach((f) => f && this.setValidators(f, disabled) && (markForCheck = true));\n    if (hasKey(field) || !field.parent || (!hasKey(field) && !field.fieldGroup)) {\n      const { formControl: c } = field;\n      if (c) {\n        if (hasKey(field) && c instanceof FormControl) {\n          if (disabled && c.enabled) {\n            c.disable({ emitEvent: false, onlySelf: true });\n            markForCheck = true;\n          }\n\n          if (!disabled && c.disabled) {\n            c.enable({ emitEvent: false, onlySelf: true });\n            markForCheck = true;\n          }\n        }\n\n        if (null === c.validator && this.hasValidators(field, '_validators')) {\n          c.setValidators(() => {\n            const v = Validators.compose(this.mergeValidators<ValidatorFn>(field, '_validators'));\n\n            return v ? v(c) : null;\n          });\n          markForCheck = true;\n        }\n\n        if (null === c.asyncValidator && this.hasValidators(field, '_asyncValidators')) {\n          c.setAsyncValidators(() => {\n            const v = Validators.composeAsync(this.mergeValidators<AsyncValidatorFn>(field, '_asyncValidators'));\n            return v ? v(c) : of(null);\n          });\n          markForCheck = true;\n        }\n\n        if (markForCheck) {\n          updateValidity(c, true);\n\n          // update validity of `FormGroup` instance created by field with nested key.\n          let parent = c.parent;\n          for (let i = 1; i < getKeyPath(field).length; i++) {\n            if (parent) {\n              updateValidity(parent, true);\n              parent = parent.parent;\n            }\n          }\n        }\n      }\n    }\n\n    return markForCheck;\n  }\n\n  private hasValidators(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): boolean {\n    const c = field.formControl;\n    if (c?._fields?.length > 1 && c._fields.some((f) => f[type].length > 0)) {\n      return true;\n    } else if (field[type].length > 0) {\n      return true;\n    }\n\n    return field.fieldGroup?.some((f) => f?.fieldGroup && !hasKey(f) && this.hasValidators(f, type));\n  }\n\n  private mergeValidators<T>(field: FormlyFieldConfigCache, type: '_validators' | '_asyncValidators'): T[] {\n    const validators: any = [];\n    const c = field.formControl;\n    if (c?._fields?.length > 1) {\n      c._fields\n        .filter((f: FormlyFieldConfigCache) => !f._hide)\n        .forEach((f: FormlyFieldConfigCache) => validators.push(...f[type]));\n    } else if (field[type]) {\n      validators.push(...field[type]);\n    }\n\n    if (field.fieldGroup) {\n      field.fieldGroup\n        .filter((f) => f?.fieldGroup && !hasKey(f))\n        .forEach((f) => validators.push(...this.mergeValidators(f, type)));\n    }\n\n    return validators;\n  }\n}\n","import { FormlyConfig } from '../../services/formly.config';\nimport { FormlyExtension, ValidatorOption, FormlyFieldConfigCache } from '../../models';\nimport { AbstractControl, Validators, ValidatorFn } from '@angular/forms';\nimport { FORMLY_VALIDATORS, defineHiddenProp, isPromise, observe, clone, isObject, hasKey } from '../../utils';\nimport { updateValidity } from '../field-form/utils';\nimport { isObservable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport class FieldValidationExtension implements FormlyExtension {\n  constructor(private config: FormlyConfig) {}\n\n  onPopulate(field: FormlyFieldConfigCache) {\n    this.initFieldValidation(field, 'validators');\n    this.initFieldValidation(field, 'asyncValidators');\n  }\n\n  private initFieldValidation(field: FormlyFieldConfigCache, type: 'validators' | 'asyncValidators') {\n    const validators: ValidatorFn[] = [];\n    if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !hasKey(field))) {\n      validators.push(this.getPredefinedFieldValidation(field));\n    }\n\n    if (field[type]) {\n      for (const validatorName of Object.keys(field[type])) {\n        validatorName === 'validation'\n          ? validators.push(...field[type].validation.map((v: any) => this.wrapNgValidatorFn(field, v)))\n          : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName));\n      }\n    }\n\n    defineHiddenProp(field, '_' + type, validators);\n  }\n\n  private getPredefinedFieldValidation(field: FormlyFieldConfigCache): ValidatorFn {\n    let VALIDATORS: string[] = [];\n    FORMLY_VALIDATORS.forEach((opt) =>\n      observe(field, ['props', opt], ({ currentValue, firstChange }) => {\n        VALIDATORS = VALIDATORS.filter((o) => o !== opt);\n        if (opt === 'required' && currentValue != null && typeof currentValue !== 'boolean') {\n          console.warn(\n            `Formly: Invalid prop 'required' of type '${typeof currentValue}', expected 'boolean' (Field:${\n              field.key\n            }).`,\n          );\n        }\n\n        if (currentValue != null && currentValue !== false) {\n          VALIDATORS.push(opt);\n        }\n        if (!firstChange && field.formControl) {\n          updateValidity(field.formControl);\n        }\n      }),\n    );\n\n    return (control: AbstractControl) => {\n      if (VALIDATORS.length === 0) {\n        return null;\n      }\n\n      return Validators.compose(\n        VALIDATORS.map((opt) => () => {\n          const value = field.props[opt];\n          switch (opt) {\n            case 'required':\n              return Validators.required(control);\n            case 'pattern':\n              return Validators.pattern(value)(control);\n            case 'minLength':\n              const minLengthResult = Validators.minLength(value)(control);\n              const minLengthKey =\n                this.config.getValidatorMessage('minlength') || field.validation?.messages?.minlength\n                  ? 'minlength'\n                  : 'minLength';\n\n              return minLengthResult ? { [minLengthKey]: minLengthResult.minlength } : null;\n            case 'maxLength':\n              const maxLengthResult = Validators.maxLength(value)(control);\n              const maxLengthKey =\n                this.config.getValidatorMessage('maxlength') || field.validation?.messages?.maxlength\n                  ? 'maxlength'\n                  : 'maxLength';\n\n              return maxLengthResult ? { [maxLengthKey]: maxLengthResult.maxlength } : null;\n            case 'min':\n              return Validators.min(value)(control);\n            case 'max':\n              return Validators.max(value)(control);\n            default:\n              return null;\n          }\n        }),\n      )!(control);\n    };\n  }\n\n  private wrapNgValidatorFn(field: FormlyFieldConfigCache, validator: any, validatorName?: string) {\n    let validatorOption: ValidatorOption;\n    if (typeof validator === 'string') {\n      validatorOption = clone(this.config.getValidator(validator));\n    }\n\n    if (typeof validator === 'object' && validator.name) {\n      validatorOption = clone(this.config.getValidator(validator.name));\n      if (validator.options) {\n        validatorOption.options = validator.options;\n      }\n    }\n\n    if (typeof validator === 'object' && validator.expression) {\n      const { expression, ...options } = validator;\n      validatorOption = {\n        name: validatorName,\n        validation: expression,\n        options: Object.keys(options).length > 0 ? options : null,\n      };\n    }\n\n    if (typeof validator === 'function') {\n      validatorOption = {\n        name: validatorName,\n        validation: validator,\n      };\n    }\n\n    return (control: AbstractControl) => {\n      const errors: any = validatorOption.validation(control, field, validatorOption.options);\n      if (isPromise(errors)) {\n        return errors.then((v) => this.handleResult(field, validatorName ? !!v : v, validatorOption));\n      }\n\n      if (isObservable(errors)) {\n        return errors.pipe(map((v) => this.handleResult(field, validatorName ? !!v : v, validatorOption)));\n      }\n\n      return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n    };\n  }\n\n  private handleResult(field: FormlyFieldConfigCache, errors: any, { name, options }: ValidatorOption) {\n    if (typeof errors === 'boolean') {\n      errors = errors ? null : { [name]: options ? options : true };\n    }\n\n    const ctrl = field.formControl;\n    ctrl?._childrenErrors?.[name]?.();\n\n    if (isObject(errors)) {\n      Object.keys(errors).forEach((name) => {\n        const errorPath = errors[name].errorPath ? errors[name].errorPath : options?.errorPath;\n\n        const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n        if (childCtrl) {\n          const { errorPath: _errorPath, ...opts } = errors[name];\n          childCtrl.setErrors({ ...(childCtrl.errors || {}), [name]: opts });\n\n          !ctrl._childrenErrors && defineHiddenProp(ctrl, '_childrenErrors', {});\n          ctrl._childrenErrors[name] = () => {\n            const { [name]: _toDelete, ...childErrors } = childCtrl.errors || {};\n            childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n          };\n        }\n      });\n    }\n\n    return errors;\n  }\n}\n","import { Input, Directive, QueryList, ViewChildren } from '@angular/core';\nimport { UntypedFormControl, NgControl, UntypedFormGroup } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../models';\n\nexport interface FieldTypeConfig<T = FormlyFieldConfig['props']> extends FormlyFieldConfig<T> {\n  formControl: UntypedFormControl;\n  props: NonNullable<T>;\n}\n\nexport interface FieldGroupTypeConfig<T = FormlyFieldConfig['props']> extends FormlyFieldConfig<T> {\n  formControl: UntypedFormGroup;\n  props: NonNullable<T>;\n}\n\n@Directive()\nexport abstract class FieldType<F extends FormlyFieldConfig = FormlyFieldConfig> {\n  @ViewChildren(NgControl) set _formlyControls(controls: QueryList<NgControl>) {\n    const f = this.field as FormlyFieldConfigCache;\n    f._localFields = controls\n      .map((c) => (c.control as FormlyFieldConfigCache['formControl'])._fields || [])\n      .flat()\n      .filter((f: FormlyFieldConfig) => f.formControl !== this.field.formControl);\n  }\n\n  @Input() field: F = {} as F;\n  defaultOptions?: Partial<F>;\n\n  get model() {\n    return this.field.model;\n  }\n\n  get form() {\n    return this.field.form;\n  }\n\n  get options() {\n    return this.field.options;\n  }\n\n  get key() {\n    return this.field.key;\n  }\n\n  get formControl() {\n    return this.field.formControl as NonNullable<F['formControl']>;\n  }\n\n  get props() {\n    return (this.field.props || {}) as NonNullable<F['props']>;\n  }\n\n  /** @deprecated Use `props` instead. */\n  get to() {\n    return this.props;\n  }\n\n  get showError(): boolean {\n    return this.options.showError(this);\n  }\n\n  get id(): string {\n    return this.field.id;\n  }\n\n  get formState() {\n    return this.options?.formState || {};\n  }\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { FieldType } from './field.type';\n\n/** @ignore */\n@Component({\n  selector: 'formly-template',\n  template: `<div [innerHtml]=\"template\"></div>`,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyTemplateType extends FieldType {\n  get template() {\n    if (this.field && this.field.template !== this.innerHtml.template) {\n      this.innerHtml = {\n        template: this.field.template,\n        content: this.props.safeHtml\n          ? this.sanitizer.bypassSecurityTrustHtml(this.field.template)\n          : this.field.template,\n      };\n    }\n\n    return this.innerHtml.content;\n  }\n\n  private innerHtml: { content?: SafeHtml; template?: string } = {};\n  constructor(private sanitizer: DomSanitizer) {\n    super();\n  }\n}\n","import { Injectable, ComponentRef, Type } from '@angular/core';\nimport { FieldType } from './../templates/field.type';\nimport { reverseDeepMerge } from './../utils';\nimport {\n  FormlyFieldConfig,\n  FormlyFieldConfigCache,\n  ConfigOption,\n  TypeOption,\n  ValidatorOption,\n  WrapperOption,\n  FormlyExtension,\n  ValidationMessageOption,\n  ExtensionOption,\n  FormlyFieldConfigPresetProvider,\n} from '../models';\nimport { FieldWrapper } from '../templates/field.wrapper';\n\ndeclare const ngDevMode: any;\n\n/**\n * Maintains list of formly config options. This can be used to register new field type.\n */\n@Injectable({ providedIn: 'root' })\nexport class FormlyConfig {\n  types: { [name: string]: TypeOption } = {};\n  validators: { [name: string]: ValidatorOption } = {};\n  wrappers: { [name: string]: WrapperOption } = {};\n  messages: { [name: string]: ValidationMessageOption['message'] } = {};\n\n  extras: NonNullable<ConfigOption['extras']> = {\n    checkExpressionOn: 'modelChange',\n    lazyRender: true,\n    resetFieldOnHide: true,\n    renderFormlyFieldElement: true,\n    showError(field: FieldType) {\n      return (\n        field.formControl?.invalid &&\n        (field.formControl?.touched || field.options.parentForm?.submitted || !!field.field.validation?.show)\n      );\n    },\n  };\n  extensions: { [name: string]: FormlyExtension } = {};\n  presets: { [name: string]: FormlyFieldConfig | FormlyFieldConfigPresetProvider } = {};\n  private extensionsByPriority: Record<number, { [name: string]: FormlyExtension }> = {};\n  private componentRefs: Record<string, ComponentRef<FieldType>> = {};\n\n  addConfig(config: ConfigOption | ConfigOption[]) {\n    if (Array.isArray(config)) {\n      config.forEach((c) => this.addConfig(c));\n      return;\n    }\n\n    if (config.types) {\n      config.types.forEach((type) => this.setType(type));\n    }\n    if (config.validators) {\n      config.validators.forEach((validator) => this.setValidator(validator));\n    }\n    if (config.wrappers) {\n      config.wrappers.forEach((wrapper) => this.setWrapper(wrapper));\n    }\n    if (config.validationMessages) {\n      config.validationMessages.forEach((validation) => this.addValidatorMessage(validation.name, validation.message));\n    }\n    if (config.extensions) {\n      this.setSortedExtensions(config.extensions);\n    }\n    if (config.extras) {\n      this.extras = { ...this.extras, ...config.extras };\n    }\n    if (config.presets) {\n      this.presets = {\n        ...this.presets,\n        ...config.presets.reduce((acc, curr) => ({ ...acc, [curr.name]: curr.config }), {}),\n      };\n    }\n  }\n\n  /**\n   * Allows you to specify a custom type which you can use in your field configuration.\n   * You can pass an object of options, or an array of objects of options.\n   */\n  setType(options: TypeOption | TypeOption[]) {\n    if (Array.isArray(options)) {\n      options.forEach((option) => this.setType(option));\n    } else {\n      if (!this.types[options.name]) {\n        this.types[options.name] = <TypeOption>{ name: options.name };\n      }\n\n      (['component', 'extends', 'defaultOptions', 'wrappers'] as (keyof TypeOption)[]).forEach((prop) => {\n        if (options.hasOwnProperty(prop)) {\n          this.types[options.name][prop] = options[prop] as any;\n        }\n      });\n    }\n  }\n\n  getType(name: FormlyFieldConfig['type'], throwIfNotFound = false): TypeOption {\n    if (name instanceof Type) {\n      return { component: name, name: name.prototype.constructor.name };\n    }\n\n    if (!this.types[name]) {\n      if (throwIfNotFound) {\n        throw new Error(\n          `[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`,\n        );\n      }\n\n      return null;\n    }\n\n    this.mergeExtendedType(name);\n\n    return this.types[name];\n  }\n\n  /** @ignore */\n  getMergedField(field: FormlyFieldConfig = {}): any {\n    const type = this.getType(field.type);\n    if (!type) {\n      return;\n    }\n\n    if (type.defaultOptions) {\n      reverseDeepMerge(field, type.defaultOptions);\n    }\n\n    const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n    if (extendDefaults) {\n      reverseDeepMerge(field, extendDefaults);\n    }\n\n    if (field?.optionsTypes) {\n      field.optionsTypes.forEach((option) => {\n        const defaultOptions = this.getType(option).defaultOptions;\n        if (defaultOptions) {\n          reverseDeepMerge(field, defaultOptions);\n        }\n      });\n    }\n\n    const componentRef = this.resolveFieldTypeRef(field);\n    if (componentRef?.instance?.defaultOptions) {\n      reverseDeepMerge(field, componentRef.instance.defaultOptions);\n    }\n\n    if (!field.wrappers && type.wrappers) {\n      field.wrappers = [...type.wrappers];\n    }\n  }\n\n  /** @ignore @internal */\n  resolveFieldTypeRef(field: FormlyFieldConfigCache = {}): ComponentRef<FieldType> {\n    const type: TypeOption = this.getType(field.type);\n    if (!type) {\n      return null;\n    }\n\n    if (!type.component) {\n      return null;\n    }\n\n    if (!this.componentRefs[type.name]) {\n      const { _viewContainerRef, _injector } = field.options;\n      if (!_viewContainerRef || !_injector) {\n        return null;\n      }\n\n      const componentRef = _viewContainerRef.createComponent<FieldType>(type.component, { injector: _injector });\n      this.componentRefs[type.name] = componentRef;\n      try {\n        componentRef.destroy();\n      } catch (e) {\n        console.error(`An error occurred while destroying the Formly component type \"${field.type}\"`, e);\n      }\n    }\n\n    return this.componentRefs[type.name];\n  }\n  /** @ignore @internal */\n  clearRefs() {\n    this.componentRefs = {};\n  }\n\n  setWrapper(options: WrapperOption) {\n    this.wrappers[options.name] = options;\n    if (options.types) {\n      options.types.forEach((type) => {\n        this.setTypeWrapper(type, options.name);\n      });\n    }\n  }\n\n  getWrapper(name: string | Type<FieldWrapper>): WrapperOption {\n    if (name instanceof Type) {\n      return { component: name, name: name.prototype.constructor.name };\n    }\n\n    if (!this.wrappers[name]) {\n      throw new Error(\n        `[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`,\n      );\n    }\n\n    return this.wrappers[name];\n  }\n\n  /** @ignore */\n  setTypeWrapper(type: string, name: string) {\n    if (!this.types[type]) {\n      this.types[type] = <TypeOption>{};\n    }\n    if (!this.types[type].wrappers) {\n      this.types[type].wrappers = [];\n    }\n    if (this.types[type].wrappers.indexOf(name) === -1) {\n      this.types[type].wrappers.push(name);\n    }\n  }\n\n  setValidator(options: ValidatorOption) {\n    this.validators[options.name] = options;\n  }\n\n  getValidator(name: string): ValidatorOption {\n    if (!this.validators[name]) {\n      throw new Error(\n        `[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`,\n      );\n    }\n\n    return this.validators[name];\n  }\n\n  addValidatorMessage(name: string, message: ValidationMessageOption['message']) {\n    this.messages[name] = message;\n    if (typeof ngDevMode === 'undefined' || ngDevMode) {\n      const deprecated = { minlength: 'minLength', maxlength: 'maxLength' } as any;\n      if (deprecated[name]) {\n        console.warn(\n          `Formly deprecation: passing validation messages key '${name}' is deprecated since v6.0, use '${deprecated[name]}' instead.`,\n        );\n        this.messages[deprecated[name]] = message;\n      }\n    }\n  }\n\n  getValidatorMessage(name: string) {\n    return this.messages[name];\n  }\n\n  private setSortedExtensions(extensionOptions: ExtensionOption[]) {\n    // insert new extensions, grouped by priority\n    extensionOptions.forEach((extensionOption) => {\n      const priority = extensionOption.priority ?? 1;\n      this.extensionsByPriority[priority] = {\n        ...this.extensionsByPriority[priority],\n        [extensionOption.name]: extensionOption.extension,\n      };\n    });\n    // flatten extensions object with sorted keys\n    this.extensions = Object.keys(this.extensionsByPriority)\n      .map(Number)\n      .sort((a, b) => a - b)\n      .reduce(\n        (acc, prio) => ({\n          ...acc,\n          ...this.extensionsByPriority[prio],\n        }),\n        {},\n      );\n  }\n\n  private mergeExtendedType(name: string) {\n    if (!this.types[name].extends) {\n      return;\n    }\n\n    const extendedType = this.getType(this.types[name].extends);\n    if (!this.types[name].component) {\n      this.types[name].component = extendedType.component;\n    }\n\n    if (!this.types[name].wrappers) {\n      this.types[name].wrappers = extendedType.wrappers;\n    }\n  }\n}\n","import { Directive, Injectable, Input, OnChanges, QueryList, TemplateRef } from '@angular/core';\n\n@Directive({ selector: '[formlyTemplate]', standalone: true })\nexport class FormlyTemplate implements OnChanges {\n  @Input('formlyTemplate') name: string;\n\n  constructor(public ref: TemplateRef<any>) {}\n\n  ngOnChanges() {\n    this.name = this.name || 'formly-group';\n  }\n}\n\n@Directive({ selector: '[formlyTemplate]', standalone: false })\nexport class LegacyFormlyTemplate extends FormlyTemplate {}\n\n// workarround for https://github.com/angular/angular/issues/43227#issuecomment-904173738\n@Injectable()\nexport class FormlyFieldTemplates {\n  templates!: QueryList<FormlyTemplate>;\n}\n","import {\n  Component,\n  Input,\n  ViewContainerRef,\n  ViewChild,\n  ComponentRef,\n  SimpleChanges,\n  DoCheck,\n  OnInit,\n  OnChanges,\n  OnDestroy,\n  AfterContentInit,\n  AfterViewInit,\n  Renderer2,\n  ElementRef,\n  EmbeddedViewRef,\n  Optional,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig, FormlyFieldConfigCache, FormlyHookConfig } from '../models';\nimport {\n  defineHiddenProp,\n  observe,\n  observeDeep,\n  getFieldValue,\n  assignFieldValue,\n  isObject,\n  markFieldForCheck,\n  hasKey,\n  IObserver,\n  isSignalRequired,\n} from '../utils';\nimport { FieldWrapper } from '../templates/field.wrapper';\nimport { FieldType } from '../templates/field.type';\nimport { Observable, Subscription, isObservable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith } from 'rxjs/operators';\nimport { FormlyFieldTemplates } from './formly.template';\n\n/**\n * The `<formly-field>` component is used to render the UI widget (layout + type) of a given `field`.\n */\n@Component({\n  selector: 'formly-field',\n  template: '<ng-template #container></ng-template>',\n  styleUrls: ['./formly.field.scss'],\n  standalone: true,\n})\nexport class FormlyField implements DoCheck, OnInit, OnChanges, AfterContentInit, AfterViewInit, OnDestroy {\n  /** The field config. */\n  @Input() field: FormlyFieldConfig;\n  @ViewChild('container', { read: ViewContainerRef, static: true }) viewContainerRef!: ViewContainerRef;\n\n  private hostObservers: (IObserver<any> | Subscription)[] = [];\n  private componentRefs: (ComponentRef<FieldType> | EmbeddedViewRef<FieldType>)[] = [];\n  private hooksObservers: (() => void)[] = [];\n  private detectFieldBuild = false;\n\n  private get containerRef() {\n    return this.config.extras.renderFormlyFieldElement ? this.viewContainerRef : this.hostContainerRef;\n  }\n\n  private get elementRef() {\n    if (this.config.extras.renderFormlyFieldElement) {\n      return this._elementRef;\n    }\n    if (this.componentRefs?.[0] instanceof ComponentRef) {\n      return this.componentRefs[0].location;\n    }\n\n    return null;\n  }\n\n  valueChangesUnsubscribe = () => {};\n\n  constructor(\n    private config: FormlyConfig,\n    private renderer: Renderer2,\n    private _elementRef: ElementRef,\n    private hostContainerRef: ViewContainerRef,\n    @Optional() private form: FormlyFieldTemplates,\n  ) {}\n\n  ngAfterContentInit() {\n    this.triggerHook('afterContentInit');\n  }\n\n  ngAfterViewInit() {\n    this.triggerHook('afterViewInit');\n  }\n\n  ngDoCheck() {\n    if (this.detectFieldBuild && this.field && this.field.options) {\n      this.render();\n    }\n  }\n\n  ngOnInit() {\n    this.triggerHook('onInit');\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.triggerHook('onChanges', changes);\n  }\n\n  ngOnDestroy() {\n    this.resetRefs(this.field);\n    this.hostObservers.forEach((hostObserver) => hostObserver.unsubscribe());\n    this.hooksObservers.forEach((unsubscribe) => unsubscribe());\n    this.valueChangesUnsubscribe();\n    this.triggerHook('onDestroy');\n  }\n\n  private renderField(\n    containerRef: ViewContainerRef,\n    f: FormlyFieldConfigCache,\n    wrappers: FormlyFieldConfig['wrappers'] = [],\n  ) {\n    if (this.containerRef === containerRef) {\n      this.resetRefs(this.field);\n      this.containerRef.clear();\n      wrappers = this.field?.wrappers;\n    }\n\n    if (wrappers?.length > 0) {\n      const [wrapper, ...wps] = wrappers;\n      const { component } = this.config.getWrapper(wrapper);\n\n      const ref = containerRef.createComponent<FieldWrapper>(component);\n      this.attachComponentRef(ref, f);\n      observe<ViewContainerRef & { _lContainer: any }>(\n        ref.instance,\n        ['fieldComponent'],\n        ({ currentValue, previousValue, firstChange }) => {\n          if (currentValue) {\n            if (previousValue && previousValue._lContainer === currentValue._lContainer) {\n              return;\n            }\n\n            const viewRef = previousValue ? previousValue.detach() : null;\n            if (viewRef && !viewRef.destroyed) {\n              currentValue.insert(viewRef);\n            } else {\n              this.renderField(currentValue, f, wps);\n            }\n\n            !firstChange && ref.changeDetectorRef.detectChanges();\n          }\n        },\n      );\n    } else if (f?.type) {\n      const inlineType = this.form?.templates?.find((ref) => ref.name === f.type);\n      let ref: ComponentRef<any> | EmbeddedViewRef<any>;\n      if (inlineType) {\n        ref = containerRef.createEmbeddedView(inlineType.ref, { $implicit: f });\n      } else {\n        const { component } = this.config.getType(f.type, true);\n        ref = containerRef.createComponent<FieldWrapper>(component as any);\n      }\n      this.attachComponentRef(ref, f);\n    }\n  }\n\n  private triggerHook(name: keyof FormlyHookConfig, changes?: SimpleChanges) {\n    if (name === 'onInit' || (name === 'onChanges' && changes.field && !changes.field.firstChange)) {\n      this.valueChangesUnsubscribe();\n      this.valueChangesUnsubscribe = this.fieldChanges(this.field);\n    }\n\n    if (this.field?.hooks?.[name]) {\n      if (!changes || changes.field) {\n        const r = this.field.hooks[name](this.field);\n        if (isObservable(r) && ['onInit', 'afterContentInit', 'afterViewInit'].indexOf(name) !== -1) {\n          const sub = r.subscribe();\n          this.hooksObservers.push(() => sub.unsubscribe());\n        }\n      }\n    }\n\n    if (name === 'onChanges' && changes.field) {\n      this.resetRefs(changes.field.previousValue);\n      this.render();\n    }\n  }\n\n  private attachComponentRef<T extends FieldType>(\n    ref: ComponentRef<T> | EmbeddedViewRef<T>,\n    field: FormlyFieldConfigCache,\n  ) {\n    this.componentRefs.push(ref);\n    field._componentRefs.push(ref);\n    if (ref instanceof ComponentRef) {\n      Object.assign(ref.instance, { field });\n    }\n  }\n\n  private render() {\n    if (!this.field) {\n      return;\n    }\n\n    // require Formly build\n    if (!this.field.options) {\n      this.detectFieldBuild = true;\n\n      return;\n    }\n\n    this.detectFieldBuild = false;\n    this.hostObservers.forEach((hostObserver) => hostObserver.unsubscribe());\n    this.hostObservers = [\n      observe<boolean>(this.field, ['hide'], ({ firstChange, currentValue }) => {\n        const containerRef = this.containerRef;\n        if (this.config.extras.lazyRender === false) {\n          firstChange && this.renderField(containerRef, this.field);\n          if (!firstChange || (firstChange && currentValue)) {\n            this.elementRef &&\n              this.renderer.setStyle(this.elementRef.nativeElement, 'display', currentValue ? 'none' : '');\n          }\n        } else {\n          if (currentValue) {\n            containerRef.clear();\n            if (this.field.className) {\n              this.renderer.removeAttribute(this.elementRef.nativeElement, 'class');\n            }\n          } else {\n            this.renderField(containerRef, this.field);\n            if (this.field.className) {\n              this.renderer.setAttribute(this.elementRef.nativeElement, 'class', this.field.className);\n            }\n          }\n        }\n\n        !firstChange && this.field.options.detectChanges(this.field);\n      }),\n      observe<string>(this.field, ['className'], ({ firstChange, currentValue }) => {\n        if (\n          (!firstChange || (firstChange && currentValue)) &&\n          (!this.config.extras.lazyRender || this.field.hide !== true)\n        ) {\n          this.elementRef && this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n        }\n      }),\n    ];\n\n    if (!isSignalRequired()) {\n      ['touched', 'pristine', 'status'].forEach((prop) =>\n        this.hostObservers.push(\n          observe<string>(\n            this.field,\n            ['formControl', prop],\n            ({ firstChange }) => !firstChange && markFieldForCheck(this.field),\n          ),\n        ),\n      );\n    } else if (this.field.formControl) {\n      const events = ((this.field.formControl as any).events as Observable<any>).subscribe(() =>\n        markFieldForCheck(this.field),\n      );\n      this.hostObservers.push(events);\n    }\n  }\n\n  private resetRefs(field: FormlyFieldConfigCache) {\n    if (field) {\n      if (field._localFields) {\n        field._localFields = [];\n      } else {\n        defineHiddenProp(this.field, '_localFields', []);\n      }\n\n      if (field._componentRefs) {\n        field._componentRefs = field._componentRefs.filter((ref) => this.componentRefs.indexOf(ref) === -1);\n      } else {\n        defineHiddenProp(this.field, '_componentRefs', []);\n      }\n    }\n\n    this.componentRefs = [];\n  }\n\n  private fieldChanges(field: FormlyFieldConfigCache | undefined) {\n    if (!field) {\n      return () => {};\n    }\n\n    const propsObserver = observeDeep(field, ['props'], () => field.options.detectChanges(field));\n    const subscribes = [\n      () => {\n        propsObserver();\n      },\n    ];\n\n    for (const key of Object.keys(field._expressions || {})) {\n      const expressionObserver = observe<FormlyFieldConfigCache['_expressions']['key']>(\n        field,\n        ['_expressions', key],\n        ({ currentValue, previousValue }) => {\n          if (previousValue?.subscription) {\n            previousValue.subscription.unsubscribe();\n            previousValue.subscription = null;\n          }\n          if (isObservable(currentValue.value$)) {\n            currentValue.subscription = currentValue.value$.subscribe();\n          }\n        },\n      );\n      subscribes.push(() => {\n        if (field._expressions[key]?.subscription) {\n          field._expressions[key].subscription.unsubscribe();\n        }\n        expressionObserver.unsubscribe();\n      });\n    }\n\n    for (const path of [['focus'], ['template'], ['fieldGroupClassName'], ['validation', 'show']]) {\n      const fieldObserver = observe(\n        field,\n        path,\n        ({ firstChange }) => !firstChange && field.options.detectChanges(field),\n      );\n      subscribes.push(() => fieldObserver.unsubscribe());\n    }\n\n    if (field.formControl && !field.fieldGroup) {\n      const control = field.formControl;\n      let valueChanges = control.valueChanges.pipe(\n        map((value) => {\n          field.parsers?.map((parserFn) => (value = (parserFn as any)(value, field)));\n          if (!Object.is(value, field.formControl.value)) {\n            field.formControl.setValue(value);\n          }\n\n          return value;\n        }),\n        distinctUntilChanged((x, y) => {\n          if (x !== y || Array.isArray(x) || isObject(x)) {\n            return false;\n          }\n\n          return true;\n        }),\n      );\n\n      if (control.value !== getFieldValue(field)) {\n        valueChanges = valueChanges.pipe(startWith(control.value));\n      }\n\n      const { updateOn, debounce } = field.modelOptions;\n      if ((!updateOn || updateOn === 'change') && debounce?.default > 0) {\n        valueChanges = valueChanges.pipe(debounceTime(debounce.default));\n      }\n\n      const sub = valueChanges.subscribe((value) => {\n        // workaround for https://github.com/angular/angular/issues/13792\n        if (control._fields?.length > 1 && control instanceof FormControl) {\n          control.patchValue(value, { emitEvent: false, onlySelf: true });\n        }\n\n        if (hasKey(field)) {\n          assignFieldValue(field, value);\n        }\n        field.options.fieldChanges.next({ value, field, type: 'valueChanges' });\n      });\n\n      subscribes.push(() => sub.unsubscribe());\n    }\n\n    let templateFieldsSubs: (() => void)[] = [];\n    observe(field, ['_localFields'], ({ currentValue }) => {\n      templateFieldsSubs.forEach((unsubscribe) => unsubscribe());\n      templateFieldsSubs = (currentValue || []).map((f: FormlyFieldConfigCache) => this.fieldChanges(f));\n    });\n\n    return () => {\n      subscribes.forEach((unsubscribe) => unsubscribe());\n      templateFieldsSubs.forEach((unsubscribe) => unsubscribe());\n    };\n  }\n}\n\n@Component({\n  selector: 'formly-field',\n  template: '<ng-template #container></ng-template>',\n  styleUrls: ['./formly.field.scss'],\n  standalone: false,\n})\nexport class LegacyFormlyField extends FormlyField {}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { FieldType, FieldGroupTypeConfig } from './field.type';\n\n/** @ignore */\n@Component({\n  selector: 'formly-group',\n  template: `\n    @for (f of field.fieldGroup; track $index) {\n      <formly-field [field]=\"f\"></formly-field>\n    }\n    <ng-content></ng-content>\n  `,\n  host: {\n    '[class]': 'field.fieldGroupClassName || \"\"',\n  },\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class FormlyGroup extends FieldType<FieldGroupTypeConfig> {}\n","import { inject, InjectionToken, Provider } from '@angular/core';\nimport { FieldExpressionExtension } from './extensions/field-expression/field-expression';\nimport { FieldExpressionExtension as FieldExpressionLegacyExtension } from './extensions/field-expression-legacy/field-expression';\nimport { CoreExtension } from './extensions/core/core';\nimport { FieldFormExtension } from './extensions/field-form/field-form';\nimport { FieldValidationExtension } from './extensions/field-validation/field-validation';\nimport { FormlyTemplateType } from './templates/field-template.type';\nimport { FormlyGroup } from './templates/formly.group';\nimport { ConfigOption } from './models';\nimport { FormlyConfig } from './services/formly.config';\n\n/**\n * An InjectionToken for registering additional formly config options (types, wrappers ...).\n */\nexport const FORMLY_CONFIG = new InjectionToken<ConfigOption[]>('FORMLY_CONFIG');\n\nexport function withDefaultConfig(config: FormlyConfig): ConfigOption {\n  return {\n    types: [\n      { name: 'formly-group', component: FormlyGroup },\n      { name: 'formly-template', component: FormlyTemplateType },\n    ],\n    extensions: [\n      { name: 'core', extension: new CoreExtension(config), priority: -250 },\n      { name: 'field-validation', extension: new FieldValidationExtension(config), priority: -200 },\n      { name: 'field-form', extension: new FieldFormExtension(), priority: -150 },\n      {\n        name: 'field-expression',\n        extension: new FieldExpressionLegacyExtension(),\n        priority: -100,\n      },\n    ],\n  };\n}\n\nexport function withFormlyFieldExpression(): ConfigOption {\n  return {\n    extensions: [\n      {\n        name: 'field-expression',\n        extension: new FieldExpressionExtension(),\n        priority: -100,\n      },\n    ],\n  };\n}\n\nexport const provideFormlyCore = (configs: ConfigOption | ConfigOption[] = []): Provider => {\n  return [\n    { provide: FORMLY_CONFIG, multi: true, useFactory: withDefaultConfig, deps: [FormlyConfig] },\n    provideFormlyConfig(configs),\n  ];\n};\n\nexport const provideFormlyConfig = (configs: ConfigOption | ConfigOption[] = []): Provider => {\n  return {\n    provide: FORMLY_CONFIG,\n    multi: true,\n    useFactory: () => {\n      const currentConfig: Array<ConfigOption | ConfigOption[]> = inject(FORMLY_CONFIG, {\n        skipSelf: true,\n        optional: true,\n      });\n      if (currentConfig) {\n        currentConfig.push(configs);\n        return currentConfig;\n      }\n\n      return configs;\n    },\n  };\n};\n","import { Inject, Injectable, Injector, Optional, ViewContainerRef } from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray, FormGroupDirective } from '@angular/forms';\nimport { FormlyConfig } from './formly.config';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, ConfigOption } from '../models';\nimport { defineHiddenProp, observe, disableTreeValidityCall, isHiddenField, isSignalRequired } from '../utils';\nimport { FORMLY_CONFIG } from '../core.config';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n  constructor(\n    private config: FormlyConfig,\n    private injector: Injector,\n    @Optional() private viewContainerRef: ViewContainerRef,\n    @Optional() private parentForm: FormGroupDirective,\n    @Optional() @Inject(FORMLY_CONFIG) configs: ConfigOption[] = [],\n  ) {\n    if (configs) {\n      configs.forEach((c) => config.addConfig(c));\n    }\n  }\n\n  buildForm(\n    form: UntypedFormGroup | UntypedFormArray,\n    fieldGroup: FormlyFieldConfig[] = [],\n    model: any,\n    options: FormlyFormOptions,\n  ) {\n    this.build({ fieldGroup, model, form, options });\n  }\n\n  build(field: FormlyFieldConfig) {\n    if (!this.config.extensions.core) {\n      throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n    }\n\n    if (!field.parent) {\n      this._setOptions(field);\n    }\n\n    disableTreeValidityCall(field.form, () => {\n      this._build(field);\n      // TODO: add test for https://github.com/ngx-formly/ngx-formly/issues/3910\n      if (!field.parent || (field as FormlyFieldConfigCache).fieldArray) {\n        // detect changes early to avoid reset value by hidden fields\n        const options = (field as FormlyFieldConfigCache).options;\n\n        if (field.parent && isHiddenField(field)) {\n          // when hide is used in expression set defaul value will not be set until detect hide changes\n          // which causes default value not set on new item is added\n          options._hiddenFieldsForCheck?.push({ field, default: false });\n        }\n\n        options.checkExpressions?.(field, true);\n        options._detectChanges?.(field);\n      }\n    });\n  }\n\n  private _build(field: FormlyFieldConfigCache) {\n    if (!field) {\n      return;\n    }\n\n    const extensions = Object.values(this.config.extensions);\n    extensions.forEach((extension) => extension.prePopulate?.(field));\n    extensions.forEach((extension) => extension.onPopulate?.(field));\n    field.fieldGroup?.forEach((f) => this._build(f));\n    extensions.forEach((extension) => extension.postPopulate?.(field));\n  }\n\n  private _setOptions(field: FormlyFieldConfigCache) {\n    field.form = field.form || new UntypedFormGroup({});\n    field.model = field.model || {};\n    field.options = field.options || {};\n    const options = field.options;\n\n    if (!options._viewContainerRef) {\n      defineHiddenProp(options, '_viewContainerRef', this.viewContainerRef);\n    }\n\n    if (!options._injector) {\n      defineHiddenProp(options, '_injector', this.injector);\n    }\n\n    if (!options.build) {\n      options.build = (f: FormlyFieldConfig = field) => {\n        this.build(f);\n\n        return f;\n      };\n    }\n\n    if (!options.parentForm && this.parentForm) {\n      defineHiddenProp(options, 'parentForm', this.parentForm);\n\n      if (!isSignalRequired()) {\n        observe(options, ['parentForm', 'submitted'], ({ firstChange }) => {\n          if (!firstChange) {\n            options.detectChanges(field);\n          }\n        });\n      }\n    }\n  }\n}\n","import {\n  Component,\n  ChangeDetectionStrategy,\n  DoCheck,\n  OnChanges,\n  Input,\n  SimpleChanges,\n  EventEmitter,\n  Output,\n  OnDestroy,\n  NgZone,\n  ContentChildren,\n  QueryList,\n} from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache } from '../models';\nimport { FormlyFormBuilder } from '../services/formly.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { clone, hasKey, isNoopNgZone, isSignalRequired, observeDeep } from '../utils';\nimport { switchMap, filter, take } from 'rxjs/operators';\nimport { clearControl } from '../extensions/field-form/utils';\nimport { FormlyFieldTemplates, FormlyTemplate, LegacyFormlyTemplate } from './formly.template';\nimport { of, Subscription } from 'rxjs';\nimport { FormlyField } from './formly.field';\n\n/**\n * The `<form-form>` component is the main container of the form,\n * which takes care of managing the form state\n * and delegates the rendering of each field to `<formly-field>` component.\n */\n@Component({\n  selector: 'formly-form',\n  template: '<formly-field [field]=\"field\"></formly-field>',\n  providers: [FormlyFormBuilder, FormlyFieldTemplates],\n  imports: [FormlyField],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n})\nexport class FormlyForm implements DoCheck, OnChanges, OnDestroy {\n  /** The form instance which allow to track model value and validation status. */\n  @Input()\n  set form(form: UntypedFormGroup | UntypedFormArray) {\n    this.field.form = form;\n  }\n  get form(): UntypedFormGroup | UntypedFormArray {\n    return this.field.form;\n  }\n\n  /** The model to be represented by the form. */\n  @Input()\n  set model(model: any) {\n    if (this.config.extras.immutable && this._modelChangeValue === model) {\n      return;\n    }\n\n    this.setField({ model });\n  }\n  get model(): any {\n    return this.field.model;\n  }\n\n  /** The field configurations for building the form. */\n  @Input()\n  set fields(fieldGroup: FormlyFieldConfig[]) {\n    this.setField({ fieldGroup });\n  }\n  get fields(): FormlyFieldConfig[] {\n    return this.field.fieldGroup;\n  }\n\n  /** Options for the form. */\n  @Input()\n  set options(options: FormlyFormOptions) {\n    this.setField({ options });\n  }\n  get options(): FormlyFormOptions {\n    return this.field.options;\n  }\n\n  /** Event that is emitted when the model value is changed */\n  @Output() modelChange = new EventEmitter<any>();\n  @ContentChildren(FormlyTemplate) set templates(templates: QueryList<FormlyTemplate>) {\n    this.fieldTemplates.templates = templates;\n  }\n\n  field: FormlyFieldConfigCache = { type: 'formly-group' };\n  private _modelChangeValue: any = {};\n  private valueChangesUnsubscribe = () => {};\n\n  constructor(\n    private builder: FormlyFormBuilder,\n    private config: FormlyConfig,\n    private ngZone: NgZone,\n    protected fieldTemplates: FormlyFieldTemplates,\n  ) {}\n\n  ngDoCheck() {\n    if (this.config.extras.checkExpressionOn === 'changeDetectionCheck') {\n      this.checkExpressionChange();\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.fields && this.form) {\n      clearControl(this.form);\n    }\n\n    if (changes.fields || changes.form || (changes.model && this._modelChangeValue !== changes.model.currentValue)) {\n      this.valueChangesUnsubscribe();\n      this.builder.build(this.field);\n      this.valueChangesUnsubscribe = this.valueChanges();\n    }\n  }\n\n  ngOnDestroy() {\n    this.valueChangesUnsubscribe();\n    this.config.clearRefs();\n  }\n\n  private checkExpressionChange() {\n    this.field.options.checkExpressions?.(this.field);\n  }\n\n  private valueChanges() {\n    this.valueChangesUnsubscribe();\n\n    let formEvents: Subscription | null = null;\n    if (isSignalRequired()) {\n      let submitted = this.options?.parentForm?.submitted;\n      formEvents = (this.form as any).events.subscribe(() => {\n        if (submitted !== this.options?.parentForm?.submitted) {\n          this.options.detectChanges(this.field);\n          submitted = this.options?.parentForm?.submitted;\n        }\n      });\n    }\n\n    const fieldChangesDetection: any[] = [\n      observeDeep(this.field.options, ['formState'], () => this.field.options.detectChanges(this.field)),\n    ];\n    const valueChanges = this.field.options.fieldChanges\n      .pipe(\n        filter(({ field, type }) => hasKey(field) && type === 'valueChanges'),\n        switchMap(() => (isNoopNgZone(this.ngZone) ? of(null) : this.ngZone.onStable.asObservable().pipe(take(1)))),\n      )\n      .subscribe(() =>\n        this.ngZone.runGuarded(() => {\n          // runGuarded is used to keep in sync the expression changes\n          // https://github.com/ngx-formly/ngx-formly/issues/2095\n          this.checkExpressionChange();\n          this.modelChange.emit((this._modelChangeValue = clone(this.model)));\n        }),\n      );\n\n    return () => {\n      fieldChangesDetection.forEach((fnc) => fnc());\n      formEvents?.unsubscribe();\n      valueChanges.unsubscribe();\n    };\n  }\n\n  private setField(field: FormlyFieldConfigCache) {\n    if (this.config.extras.immutable) {\n      this.field = { ...this.field, ...clone(field) };\n    } else {\n      Object.keys(field).forEach((p) => ((this.field as any)[p] = (field as any)[p]));\n    }\n  }\n}\n\n@Component({\n  selector: 'formly-form',\n  template: '<formly-field [field]=\"field\"></formly-field>',\n  providers: [FormlyFormBuilder, FormlyFieldTemplates],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: false,\n})\nexport class LegacyFormlyForm extends FormlyForm {\n  @ContentChildren(LegacyFormlyTemplate) override set templates(templates: QueryList<FormlyTemplate>) {\n    this.fieldTemplates.templates = templates;\n  }\n}\n","import {\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  SimpleChanges,\n  Renderer2,\n  DoCheck,\n  Inject,\n  OnDestroy,\n} from '@angular/core';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../models';\nimport { defineHiddenProp, FORMLY_VALIDATORS, observe, IObserver } from '../utils';\nimport { DOCUMENT } from '@angular/common';\n\n/**\n * Allow to link the `field` HTML attributes (`id`, `name` ...) and Event attributes (`focus`, `blur` ...) to an element in the DOM.\n */\n@Directive({\n  selector: '[formlyAttributes]',\n  standalone: true,\n  host: {\n    '(change)': 'onHostChange($event)',\n  },\n})\nexport class FormlyAttributes implements OnChanges, DoCheck, OnDestroy {\n  /** The field config. */\n  @Input('formlyAttributes') field: FormlyFieldConfig;\n  @Input() id: string;\n\n  private document: Document;\n  private uiAttributesCache: any = {};\n  private uiAttributes: string[];\n  private focusObserver: IObserver<boolean>;\n\n  /**\n   * HostBinding doesn't register listeners conditionally which may produce some perf issues.\n   *\n   * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1991\n   */\n  private uiEvents = {\n    listeners: [] as (() => void)[],\n    events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change', 'wheel'],\n    callback: (eventName: string, $event: any) => {\n      switch (eventName) {\n        case 'focus':\n          return this.onFocus($event);\n        case 'blur':\n          return this.onBlur($event);\n        case 'change':\n          return this.onChange($event);\n        default:\n          return this.props[eventName](this.field, $event);\n      }\n    },\n  };\n\n  private get props() {\n    return this.field.props || ({} as FormlyFieldConfigCache['props']);\n  }\n\n  private get fieldAttrElements(): ElementRef[] {\n    return (this.field as FormlyFieldConfigCache)?.['_elementRefs'] || [];\n  }\n\n  constructor(\n    private renderer: Renderer2,\n    private elementRef: ElementRef,\n    @Inject(DOCUMENT) _document: any,\n  ) {\n    this.document = _document;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.field) {\n      this.field.name && this.setAttribute('name', this.field.name);\n      this.uiEvents.listeners.forEach((listener) => listener());\n      this.uiEvents.events.forEach((eventName) => {\n        if (this.props?.[eventName] || ['focus', 'blur', 'change'].indexOf(eventName) !== -1) {\n          this.uiEvents.listeners.push(\n            this.renderer.listen(this.elementRef.nativeElement, eventName, (e) => this.uiEvents.callback(eventName, e)),\n          );\n        }\n      });\n\n      if (this.props?.attributes) {\n        observe(this.field, ['props', 'attributes'], ({ currentValue, previousValue }) => {\n          if (previousValue) {\n            Object.keys(previousValue).forEach((attr) => this.removeAttribute(attr));\n          }\n\n          if (currentValue) {\n            Object.keys(currentValue).forEach((attr) => {\n              if (currentValue[attr] != null) {\n                this.setAttribute(attr, currentValue[attr]);\n              }\n            });\n          }\n        });\n      }\n\n      this.detachElementRef(changes.field.previousValue);\n      this.attachElementRef(changes.field.currentValue);\n      if (this.fieldAttrElements.length === 1) {\n        !this.id && this.field.id && this.setAttribute('id', this.field.id);\n        this.focusObserver = observe<boolean>(this.field, ['focus'], ({ currentValue }) => {\n          this.toggleFocus(currentValue);\n        });\n      }\n    }\n\n    if (changes.id) {\n      this.setAttribute('id', this.id);\n    }\n  }\n\n  /**\n   * We need to re-evaluate all the attributes on every change detection cycle, because\n   * by using a HostBinding we run into certain edge cases. This means that whatever logic\n   * is in here has to be super lean or we risk seriously damaging or destroying the performance.\n   *\n   * Formly issue: https://github.com/ngx-formly/ngx-formly/issues/1317\n   * Material issue: https://github.com/angular/components/issues/14024\n   */\n  ngDoCheck() {\n    if (!this.uiAttributes) {\n      const element = this.elementRef.nativeElement as HTMLElement;\n      this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter(\n        (attr) => !element.hasAttribute || !element.hasAttribute(attr),\n      );\n    }\n\n    for (let i = 0; i < this.uiAttributes.length; i++) {\n      const attr = this.uiAttributes[i];\n      const value = this.props[attr];\n      if (\n        this.uiAttributesCache[attr] !== value &&\n        (!this.props.attributes || !this.props.attributes.hasOwnProperty(attr.toLowerCase()))\n      ) {\n        this.uiAttributesCache[attr] = value;\n        if (value || value === 0) {\n          this.setAttribute(attr, value === true ? attr : `${value}`);\n        } else {\n          this.removeAttribute(attr);\n        }\n      }\n    }\n  }\n\n  ngOnDestroy() {\n    this.uiEvents.listeners.forEach((listener) => listener());\n    this.detachElementRef(this.field);\n    this.focusObserver?.unsubscribe();\n  }\n\n  toggleFocus(value: boolean) {\n    const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n    if (!element || !element.nativeElement.focus) {\n      return;\n    }\n\n    const isFocused =\n      !!this.document.activeElement &&\n      this.fieldAttrElements.some(\n        ({ nativeElement }) =>\n          this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement),\n      );\n\n    if (value && !isFocused) {\n      Promise.resolve().then(() => element.nativeElement.focus());\n    } else if (!value && isFocused) {\n      Promise.resolve().then(() => element.nativeElement.blur());\n    }\n  }\n\n  onFocus($event: any) {\n    this.focusObserver?.setValue(true);\n    this.props.focus?.(this.field, $event);\n  }\n\n  onBlur($event: any) {\n    this.focusObserver?.setValue(false);\n    this.props.blur?.(this.field, $event);\n  }\n\n  // handle custom `change` event, for regular ones rely on DOM listener\n  onHostChange($event: any) {\n    if ($event instanceof Event) {\n      return;\n    }\n\n    this.onChange($event);\n  }\n\n  onChange($event: any) {\n    this.props.change?.(this.field, $event);\n    this.field.formControl?.markAsDirty();\n  }\n\n  private attachElementRef(f: FormlyFieldConfigCache) {\n    if (!f) {\n      return;\n    }\n\n    if (f['_elementRefs']?.indexOf(this.elementRef) === -1) {\n      f['_elementRefs'].push(this.elementRef);\n    } else {\n      defineHiddenProp(f, '_elementRefs', [this.elementRef]);\n    }\n  }\n\n  private detachElementRef(f: FormlyFieldConfigCache) {\n    const index = f?.['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n    if (index !== -1) {\n      f['_elementRefs'].splice(index, 1);\n    }\n  }\n\n  private setAttribute(attr: string, value: string) {\n    this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n  }\n\n  private removeAttribute(attr: string) {\n    this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n  }\n}\n\n@Directive({\n  selector: '[formlyAttributes]',\n  host: {\n    '(change)': 'onHostChange($event)',\n  },\n})\nexport class LegacyFormlyAttributes extends FormlyAttributes {}\n","import { Component, Input, ChangeDetectionStrategy, OnChanges } from '@angular/core';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FormlyFieldConfig } from '../models';\nimport { FORMLY_VALIDATORS, isObject } from '../utils';\nimport { Observable, isObservable, of } from 'rxjs';\nimport { merge } from 'rxjs';\nimport { startWith, switchMap, filter } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\n\n/**\n * The `<formly-validation-message>` component renders the error message of a given `field`.\n */\n@Component({\n  selector: 'formly-validation-message',\n  template: '{{ errorMessage$ | async }}',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  standalone: true,\n  imports: [AsyncPipe],\n})\nexport class FormlyValidationMessage implements OnChanges {\n  /** The field config. */\n  @Input() field: FormlyFieldConfig;\n  errorMessage$: Observable<string>;\n\n  constructor(private config: FormlyConfig) {}\n\n  ngOnChanges() {\n    const EXPR_VALIDATORS = FORMLY_VALIDATORS.map((v) => `templateOptions.${v}`);\n    this.errorMessage$ = merge(\n      this.field.formControl.statusChanges,\n      !this.field.options\n        ? of(null)\n        : this.field.options.fieldChanges.pipe(\n            filter(({ field, type, property }) => {\n              return (\n                field === this.field &&\n                type === 'expressionChanges' &&\n                (property.indexOf('validation') !== -1 || EXPR_VALIDATORS.indexOf(property) !== -1)\n              );\n            }),\n          ),\n    ).pipe(\n      startWith(null),\n      switchMap(() => (isObservable(this.errorMessage) ? this.errorMessage : of(this.errorMessage))),\n    );\n  }\n\n  get errorMessage() {\n    const fieldForm = this.field.formControl;\n    for (const error in fieldForm.errors) {\n      if (fieldForm.errors.hasOwnProperty(error)) {\n        let message = this.config.getValidatorMessage(error);\n\n        if (isObject(fieldForm.errors[error])) {\n          if (fieldForm.errors[error].errorPath) {\n            return undefined;\n          }\n\n          if (fieldForm.errors[error].message) {\n            message = fieldForm.errors[error].message;\n          }\n        }\n\n        if (this.field.validation?.messages?.[error]) {\n          message = this.field.validation.messages[error];\n        }\n\n        if (this.field.validators?.[error]?.message) {\n          message = this.field.validators[error].message;\n        }\n\n        if (this.field.asyncValidators?.[error]?.message) {\n          message = this.field.asyncValidators[error].message;\n        }\n\n        if (typeof message === 'function') {\n          return message(fieldForm.errors[error], this.field);\n        }\n\n        return message;\n      }\n    }\n\n    return undefined;\n  }\n}\n\n@Component({\n  selector: 'formly-validation-message',\n  template: '{{ errorMessage$ | async }}',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegacyFormlyValidationMessage extends FormlyValidationMessage {}\n","import { Directive } from '@angular/core';\nimport { UntypedFormArray } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, assignFieldValue, getFieldValue, hasKey } from '../utils';\nimport { FormlyFieldConfig, FormlyExtension, FormlyFieldConfigCache } from '../models';\nimport { registerControl, unregisterControl, findControl } from '../extensions/field-form/utils';\n\nexport interface FieldArrayTypeConfig<T = FormlyFieldConfig['props']> extends FormlyFieldConfig<T> {\n  formControl: UntypedFormArray;\n  props: NonNullable<T>;\n}\n\n@Directive()\nexport abstract class FieldArrayType<F extends FormlyFieldConfig = FieldArrayTypeConfig>\n  extends FieldType<F>\n  implements FormlyExtension<F>\n{\n  onPopulate(field: F) {\n    if (hasKey(field)) {\n      const control = findControl(field);\n      registerControl(field, control ? control : new UntypedFormArray([], { updateOn: field.modelOptions.updateOn }));\n    }\n\n    field.fieldGroup = field.fieldGroup || [];\n\n    const length = Array.isArray(field.model) ? field.model.length : 0;\n    if (field.fieldGroup.length > length) {\n      for (let i = field.fieldGroup.length - 1; i >= length; --i) {\n        unregisterControl(field.fieldGroup[i], true);\n        field.fieldGroup.splice(i, 1);\n      }\n    }\n\n    for (let i = field.fieldGroup.length; i < length; i++) {\n      const f = { ...clone(typeof field.fieldArray === 'function' ? field.fieldArray(field) : field.fieldArray) };\n      if (f.key !== null) {\n        f.key = `${i}`;\n      }\n\n      field.fieldGroup.push(f);\n    }\n  }\n\n  add(i?: number, initialModel?: any, { markAsDirty } = { markAsDirty: true }) {\n    markAsDirty && this.formControl.markAsDirty();\n    i = i == null ? this.field.fieldGroup.length : i;\n    if (!this.model) {\n      assignFieldValue(this.field, []);\n    }\n\n    this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n    this.markFieldForCheck(this.field.fieldGroup[i]);\n    this._build();\n  }\n\n  remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n    markAsDirty && this.formControl.markAsDirty();\n    this.model.splice(i, 1);\n\n    const field = this.field.fieldGroup[i];\n    this.field.fieldGroup.splice(i, 1);\n    this.field.fieldGroup.forEach((f, key) => this.updateArrayElementKey(f, `${key}`));\n    unregisterControl(field, true);\n    this._build();\n  }\n\n  private _build() {\n    const fields = (this.field as FormlyFieldConfigCache).formControl._fields ?? [this.field];\n    fields.forEach((f) => (this.options as any).build(f));\n    this.options.fieldChanges.next({\n      field: this.field,\n      value: getFieldValue(this.field),\n      type: 'valueChanges',\n    });\n  }\n\n  private updateArrayElementKey(f: FormlyFieldConfig, newKey: string) {\n    if (hasKey(f)) {\n      f.key = newKey;\n      return;\n    }\n\n    if (!f.fieldGroup?.length) {\n      return;\n    }\n\n    for (let i = 0; i < f.fieldGroup.length; i++) {\n      this.updateArrayElementKey(f.fieldGroup[i], newKey);\n    }\n  }\n\n  private markFieldForCheck(f: FormlyFieldConfig) {\n    if (!f) {\n      return;\n    }\n\n    f.fieldGroup?.forEach((c: any) => this.markFieldForCheck(c));\n    if (f.hide === false) {\n      (this.options as FormlyFieldConfigCache['options'])._hiddenFieldsForCheck.push({ field: f });\n    }\n  }\n}\n","import { ViewContainerRef, ViewChild, Directive, QueryList } from '@angular/core';\nimport { FieldType } from './field.type';\nimport { FormlyFieldConfig } from '../models';\nimport { NgControl } from '@angular/forms';\n\n@Directive()\nexport abstract class FieldWrapper<F extends FormlyFieldConfig = FormlyFieldConfig> extends FieldType<F> {\n  override set _formlyControls(_: QueryList<NgControl>) {}\n  @ViewChild('fieldComponent', { read: ViewContainerRef }) fieldComponent!: ViewContainerRef;\n  @ViewChild('fieldComponent', { read: ViewContainerRef, static: true }) set _staticContent(content: ViewContainerRef) {\n    this.fieldComponent = content;\n  }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LegacyFormlyForm } from './components/formly.form';\nimport { LegacyFormlyField } from './components/formly.field';\nimport { LegacyFormlyAttributes } from './templates/formly.attributes';\nimport { FormlyConfig } from './services/formly.config';\nimport { FormlyFormBuilder } from './services/formly.builder';\nimport { FormlyGroup } from './templates/formly.group';\nimport { LegacyFormlyValidationMessage } from './templates/formly.validation-message';\nimport { FormlyTemplateType } from './templates/field-template.type';\nimport { ConfigOption } from './models';\nimport { LegacyFormlyTemplate } from './components/formly.template';\nimport { FORMLY_CONFIG, provideFormlyConfig, withDefaultConfig } from './core.config';\n\n@NgModule({\n  declarations: [\n    LegacyFormlyTemplate,\n    LegacyFormlyForm,\n    LegacyFormlyField,\n    LegacyFormlyAttributes,\n    LegacyFormlyValidationMessage,\n    FormlyGroup,\n    FormlyTemplateType,\n  ],\n  exports: [\n    LegacyFormlyTemplate,\n    LegacyFormlyForm,\n    LegacyFormlyField,\n    LegacyFormlyAttributes,\n    LegacyFormlyValidationMessage,\n    FormlyGroup,\n  ],\n  imports: [CommonModule],\n})\nexport class FormlyModule {\n  static forRoot(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n    return {\n      ngModule: FormlyModule,\n      providers: [\n        { provide: FORMLY_CONFIG, multi: true, useFactory: withDefaultConfig, deps: [FormlyConfig] },\n        provideFormlyConfig(config),\n        FormlyConfig,\n        FormlyFormBuilder,\n      ],\n    };\n  }\n\n  static forChild(config: ConfigOption = {}): ModuleWithProviders<FormlyModule> {\n    return {\n      ngModule: FormlyModule,\n      providers: [\n        { provide: FORMLY_CONFIG, multi: true, useFactory: withDefaultConfig, deps: [FormlyConfig] },\n        provideFormlyConfig(config),\n        FormlyFormBuilder,\n      ],\n    };\n  }\n}\n","/*\n * Public API Surface of core\n */\n\nexport * from './lib/core';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ɵNoopNgZone","FieldExpressionLegacyExtension","i1.FormlyConfig","i2.FormlyFieldTemplates","i1.LegacyFormlyField","i1.FormlyFormBuilder","i2.FormlyConfig","i3.FormlyFieldTemplates","i4.LegacyFormlyField","i2"],"mappings":"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"}