@ngx-formly/core 10.0.1 → 11.1.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +103 -173
- package/fesm2022/ngx-formly-core-json-schema.mjs +670 -842
- package/fesm2022/ngx-formly-core-json-schema.mjs.map +1 -1
- package/fesm2022/ngx-formly-core-preset.mjs +76 -57
- package/fesm2022/ngx-formly-core-preset.mjs.map +1 -1
- package/fesm2022/ngx-formly-core-select.mjs +192 -134
- package/fesm2022/ngx-formly-core-select.mjs.map +1 -1
- package/fesm2022/ngx-formly-core-testing.mjs +112 -87
- package/fesm2022/ngx-formly-core-testing.mjs.map +1 -1
- package/fesm2022/ngx-formly-core.mjs +3560 -3031
- package/fesm2022/ngx-formly-core.mjs.map +1 -1
- package/package.json +2 -2
- package/types/ngx-formly-core-json-schema.d.ts +39 -41
- package/types/ngx-formly-core-preset.d.ts +8 -12
- package/types/ngx-formly-core-select.d.ts +35 -40
- package/types/ngx-formly-core-testing.d.ts +27 -29
- package/types/ngx-formly-core.d.ts +764 -659
|
@@ -1 +1 @@
|
|
|
1
|
-
{"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 try {\n callback();\n } finally {\n form._updateTreeValidity = _updateTreeValidity;\n }\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 { AbstractControl, 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 if (['props.disabled', 'templateOptions.disabled'].includes(key)) {\n field._expressions[key].callback = this.parseExpressions(field, key, () => v).callback;\n field._expressions[key].callback(true);\n } else {\n this.evalExpr(field, key, v);\n }\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 try {\n // ponytail: initial-tree budget; add an override if valid dynamic forms need more passes.\n const maxPasses = Math.max(100, 2 * this.countFields(field));\n const options = field.options;\n // Rebuilds preserve supplied values, but defaults may need clearing after visibility changes.\n const restoredDefaults = ignoreCache ? new Set<AbstractControl>() : undefined;\n const fieldChanged = this.checkExpressions(f, ignoreCache) || options._hiddenFieldsForCheck.length > 0;\n let passes = 0;\n do {\n if (passes++ === maxPasses) {\n console.warn('[Formly] The form may be inconsistent. Check for circular hide expressions');\n throw new Error(`[Formly Error] Expressions did not settle after ${maxPasses} passes.`);\n }\n\n options._hiddenFieldsForCheck\n .sort((f) => (f.field.hide ? -1 : 1))\n .forEach((f) =>\n this.changeHideState(f.field, f.field.hide ?? f.default, !ignoreCache, f.emitEvent, restoredDefaults),\n );\n options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkExpressions(field);\n }\n } while (options._hiddenFieldsForCheck.length > 0);\n } finally {\n checkLocked = false;\n }\n };\n }\n }\n\n protected parseExpressions(field: FormlyFieldConfigCache, path: string, expr: any) {\n const isDisabledExpression = ['props.disabled', 'templateOptions.disabled'].includes(path);\n let parentExpression: any;\n if (field.parent && (path === 'hide' || isDisabledExpression)) {\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 (isDisabledExpression &&\n (field.props.disabled !== !!exprValue || (exprValue && hasKey(field) && field.formControl?.enabled))) ||\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 countFields(field: FormlyFieldConfigCache): number {\n return field ? 1 + (field.fieldGroup?.reduce((count, f) => count + this.countFields(f), 0) ?? 0) : 0;\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 const hide = field.hide;\n for (const key of Object.keys(field._expressions)) {\n field._expressions[key].callback?.(ignoreCache) && (fieldChanged = true);\n }\n\n if (ignoreCache && field._expressions.hide && hide === false && field.hide === false) {\n let parent = field.parent;\n while (parent && !parent.hide) {\n parent = parent.parent;\n }\n if (!parent) {\n // Restore defaults after rebuilding without reporting a visibility change.\n field.options._hiddenFieldsForCheck.push({ field, emitEvent: false });\n }\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(\n field: FormlyFieldConfigCache,\n hide: boolean,\n resetOnHide: boolean,\n emitEvent = true,\n restoredDefaults?: Set<AbstractControl>,\n ) {\n hide = field.hide || hide;\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((f: FormlyFieldConfigCache) => f && !f._expressions.hide)\n .forEach((f) => this.changeHideState(f, hide, resetOnHide, emitEvent, restoredDefaults));\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 || restoredDefaults?.has(c)) && field.resetOnHide) {\n assignFieldValue(field, undefined);\n restoredDefaults?.delete(c);\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 restoredDefaults?.add(c);\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 (emitEvent && 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 // Angular enables descendants without updating a group's disabled property.\n if (value && field.formControl?.enabled) {\n field.formControl.disable();\n }\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 OPTIONAL_DOT = 'OPTIONAL_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 === '?' && this.peek() === '.') {\n tokens.push({ type: TokenType.OPTIONAL_DOT, value: '?.' });\n this.pos += 2;\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 this.consume(TokenType.EOF);\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 (\n this.current().type === TokenType.DOT ||\n this.current().type === TokenType.OPTIONAL_DOT ||\n this.current().type === TokenType.BRACKET_OPEN\n ) {\n const optional = this.current().type === TokenType.OPTIONAL_DOT;\n if (optional) {\n this.consume(TokenType.OPTIONAL_DOT);\n }\n\n if (this.current().type === TokenType.DOT || (optional && this.current().type !== TokenType.BRACKET_OPEN)) {\n if (!optional) {\n this.consume(TokenType.DOT);\n }\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 standalone: false,\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 Injector,\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, skip, 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 private injector: Injector,\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(\n inlineType.ref,\n { $implicit: f },\n { injector: this.createFieldInjector() },\n );\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 attachLocalField(field?: FormlyFieldConfigCache, previousField?: FormlyFieldConfigCache) {\n const currentField = this.field as FormlyFieldConfigCache;\n if (!currentField) {\n return;\n }\n\n const localFields = (currentField._localFields || []).filter((f) => f !== field && f !== previousField);\n\n if (field && field !== currentField) {\n localFields.push(field);\n }\n\n if (currentField._localFields) {\n currentField._localFields = localFields;\n } else if (localFields.length > 0) {\n defineHiddenProp(currentField, '_localFields', localFields);\n }\n }\n\n private createFieldInjector() {\n return Injector.create({\n providers: [{ provide: FormlyField, useValue: this }],\n parent: this.injector,\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 startWith(control.value),\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 skip(1),\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 standalone: false,\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 FormlyConfig,\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 && inject(FormlyConfig) === inject(FormlyConfig, { skipSelf: true, optional: true })) {\n configs = Array.isArray(configs) ? configs : [configs];\n currentConfig.push(...configs);\n return currentConfig;\n }\n return configs;\n },\n };\n};\n","import { EventEmitter, 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 private readonly initializedForms = new WeakSet<UntypedFormGroup | UntypedFormArray>();\n\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 const firstBuild = !field.parent && !this.initializedForms.has(field.form);\n let lastEmittedStatus: string | undefined;\n const subscription = firstBuild\n ? field.form.statusChanges.subscribe((status) => (lastEmittedStatus = status))\n : undefined;\n if (firstBuild) {\n this.initializedForms.add(field.form);\n }\n\n try {\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 } catch (error) {\n if (firstBuild) {\n this.initializedForms.delete(field.form);\n }\n throw error;\n } finally {\n subscription?.unsubscribe();\n }\n\n if (firstBuild && lastEmittedStatus !== field.form.status) {\n (field.form.statusChanges as EventEmitter<string>).emit(field.form.status);\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 DestroyRef,\n PendingTasks,\n inject,\n} from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent } 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 standalone: true,\n imports: [FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 /** Emits a build event asynchronously when the fields or form input changes. */\n @Output() fieldChange = new EventEmitter<FormlyValueChangeEvent>();\n @ContentChildren(FormlyTemplate) set templates(templates: QueryList<FormlyTemplate>) {\n this.fieldTemplates.templates = templates;\n }\n\n field: FormlyFieldConfigCache = { type: 'formly-group' };\n private readonly destroyRef = inject(DestroyRef);\n private readonly pendingTasks = inject(PendingTasks);\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 if (changes.fields || changes.form) {\n this.pendingTasks.run(async () => {\n await Promise.resolve();\n if (!this.destroyRef.destroyed) {\n this.fieldChange.emit({ field: this.field, type: 'build', value: this.form });\n }\n });\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 Optional,\n DOCUMENT,\n} from '@angular/core';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../models';\nimport { defineHiddenProp, FORMLY_VALIDATORS, observe, IObserver } from '../utils';\nimport { FormlyField } from '../components/formly.field';\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 @Optional() private formlyField?: FormlyField,\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 const previousField = changes.field.previousValue as FormlyFieldConfigCache;\n this.detachElementRef(previousField);\n this.attachElementRef(changes.field.currentValue);\n this.formlyField?.attachLocalField(\n changes.field.currentValue as FormlyFieldConfigCache,\n previousField?._elementRefs?.length ? undefined : previousField,\n );\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, this.getSafeAttributeValue(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 if (!(this.field as FormlyFieldConfigCache)?._elementRefs?.length) {\n this.formlyField?.attachLocalField(undefined, this.field as FormlyFieldConfigCache);\n }\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 elements = f?.['_elementRefs'] || [];\n const index = elements.indexOf(this.elementRef);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n\n private getSafeAttributeValue(attr: string, value: any): string {\n if (attr === 'pattern') {\n let pattern = value instanceof RegExp ? value.source : value;\n\n // 1. Safely escape unescaped hyphens inside character classes for 'v' flag compatibility\n pattern = pattern.replace(/(\\[[^\\]]*?)(?<!\\\\)-(.*?\\])/g, '$1\\\\-$2');\n\n // 2. Cleanly strip leading ^ and trailing $ so HTML5 handles the boundaries natively\n pattern = pattern.replace(/^^\\^/, '').replace(/\\$$/, '');\n\n return pattern;\n }\n return value === true ? attr : `${value}`;\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 standalone: false,\n})\nexport class LegacyFormlyAttributes extends FormlyAttributes {}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { Observable, isObservable, merge, of } from 'rxjs';\nimport { filter, startWith, switchMap } from 'rxjs/operators';\nimport { FormlyFieldConfig } from '../models';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FORMLY_VALIDATORS, isObject } from '../utils';\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 standalone: false,\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/**\n * Registers Formly components and configuration for NgModule-based applications.\n *\n * `forRoot()` provides the shared `FormlyConfig` at the application root, while\n * `forChild()` adds feature configuration using the inherited service. This follows\n * Angular's [root/child module registration convention](https://frontendatlas.com/angular/trivia/angular-forroot-forchild).\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","i1.FormlyField","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-formly-core.mjs","names":[],"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/validation-message.ts","../../../../src/core/src/lib/templates/formly.validation-message.ts","../../../../src/core/src/lib/templates/formly-validation-messages.pipe.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"],"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 try {\n callback();\n } finally {\n form._updateTreeValidity = _updateTreeValidity;\n }\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', 'step'];\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\nfunction isKeptByReference(value: any) {\n return (\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}\n\nexport function clone(value: any): any {\n if (isKeptByReference(value)) {\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 isEqualValue(a: any, b: any): boolean {\n if (Object.is(a, b)) {\n return true;\n }\n\n if (isKeptByReference(a) || isKeptByReference(b) || Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) {\n return false;\n }\n\n if (a instanceof Date) {\n return Object.is(a.getTime(), b.getTime());\n }\n\n if (a instanceof Map) {\n return a.size === b.size && [...a].every(([k, v]) => b.has(k) && isEqualValue(v, b.get(k)));\n }\n\n if (a instanceof Set) {\n return a.size === b.size && [...a].every((v) => b.has(v));\n }\n\n const keys = Object.keys(a);\n\n return (\n keys.length === Object.keys(b).length &&\n keys.every((k) => Object.prototype.hasOwnProperty.call(b, k) && isEqualValue(a[k], b[k]))\n );\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, getField, getFieldValue, isNil, defineHiddenProp, observe, hasKey } from '../../utils';\nimport { FormlyFieldConfigCache } from '../../models';\n\nexport function unregisterControl(field: FormlyFieldConfigCache, emitEvent = false) {\n if (!hasKey(field) && field.fieldGroup) {\n field.fieldGroup.forEach((f) => unregisterControl(f, emitEvent));\n return;\n }\n if (field.shareFormControl === false) {\n field._controlActive = false;\n }\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 FormlyFieldConfigCache['formControl'];\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 // A hidden row may have been attached only to hold a visible fixed-path editor.\n if (\n form instanceof UntypedFormGroup &&\n !Object.keys(form.controls).length &&\n !(form as FormlyFieldConfigCache['formControl'])._fields?.some((f) => !f._hide) &&\n form.parent\n ) {\n const key = Object.keys((form.parent as UntypedFormGroup).controls).find((key) => form.parent.get([key]) === form);\n unregisterControl({ key, formControl: form }, emitEvent);\n }\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 // Hidden fields retain controls even when they are absent from the registered form tree.\n return findArrayControl(field.form, getKeyPath(field)) || field.form?.get(getKeyPath(field));\n}\n\nfunction findArrayControl(form: FormlyFieldConfigCache['formControl'], path: string[]) {\n for (const owner of form?._fields || []) {\n const target = owner.fieldArray && getField(owner, path);\n if (target?.formControl && target.shareFormControl !== false) {\n return target.formControl;\n }\n }\n return null;\n}\n\nfunction setControl(\n form: FormlyFieldConfigCache['formControl'],\n key: string,\n control: FormlyFieldConfigCache['formControl'],\n emitEvent: boolean,\n) {\n const array = form._fields?.find((f) => f.fieldArray);\n if (form instanceof UntypedFormArray && array && control._fields?.every((f) => f.shareFormControl !== false)) {\n // Hidden rows compact the FormArray: insert relative to retained rows, without empty slots.\n const registered = new Set(form.controls);\n if (!registered.has(control)) {\n const index = array.fieldGroup.slice(0, Number(key)).filter((row, index) => {\n return registered.has((hasKey(row) ? row : getField(row, `${index}`))?.formControl);\n }).length;\n form.insert(index, control, { emitEvent });\n }\n } else if (form.get([key]) !== control) {\n (form as UntypedFormGroup).setControl(key, control, { emitEvent });\n }\n}\n\nexport function registerControl(\n field: FormlyFieldConfigCache,\n control?: FormlyFieldConfigCache['formControl'],\n emitEvent = false,\n) {\n control = control || field.formControl;\n\n if (field.shareFormControl === false && hasKey(field)) {\n if (!field.hasOwnProperty('_controlActive')) {\n defineHiddenProp(field, '_controlActive', false);\n } else {\n field._controlActive = false;\n }\n }\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 if (!Object.getOwnPropertyDescriptor(field, 'formControl')?.set) {\n defineHiddenProp(field, 'formControl', undefined);\n field.props.disabled = !!field.props.disabled;\n const disabledObserver = observe(field, ['props', 'disabled'], ({ firstChange, currentValue }) => {\n if (!firstChange && field.formControl) {\n currentValue ? field.formControl.disable() : field.formControl.enable();\n }\n });\n observe<AbstractControl>(field, ['formControl'], ({ previousValue, currentValue }) => {\n if (previousValue instanceof FormControl) {\n (previousValue as any)._unregisterOnDisabledChange(disabledObserver.setValue);\n }\n if (currentValue instanceof FormControl) {\n currentValue.registerOnDisabledChange(disabledObserver.setValue);\n }\n });\n }\n field.formControl = control;\n control.setValidators(null);\n control.setAsyncValidators(null);\n }\n\n if (!field.form || !hasKey(field)) {\n return;\n }\n\n let form: FormlyFieldConfigCache['formControl'] = 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, { emitEvent: field.shareFormControl !== false });\n }\n if (field._hide) {\n return;\n }\n\n for (let i = 0; i < paths.length - 1; i++) {\n const path = paths[i];\n const child = findArrayControl(form, [path]) || form.get([path]) || new UntypedFormGroup({});\n setControl(form, path, child, emitEvent);\n form = child;\n }\n\n const key = paths[paths.length - 1];\n if (!field._hide && form.get([key]) !== control) {\n if (field.shareFormControl === false) {\n const previous = form.get([key]) as FormlyFieldConfigCache['formControl'];\n previous?._fields?.forEach((f) => {\n if (f.shareFormControl === false) {\n f._controlActive = false;\n }\n });\n previous?.setParent(null);\n }\n setControl(form, key, control, emitEvent);\n }\n\n if (field.shareFormControl === false) {\n if (field.options?._formControlsForCheck) {\n field.options._formControlsForCheck.add(field);\n } else {\n field._controlActive = !field._hide && form.get([key]) === control;\n }\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 { AbstractControl, 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 if (['props.disabled', 'templateOptions.disabled'].includes(key)) {\n field._expressions[key].callback = this.parseExpressions(field, key, () => v).callback;\n field._expressions[key].callback(true);\n } else {\n this.evalExpr(field, key, v);\n }\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 try {\n // ponytail: initial-tree budget; add an override if valid dynamic forms need more passes.\n const maxPasses = Math.max(100, 2 * this.countFields(field));\n const options = field.options;\n // Rebuilds preserve supplied values, but defaults may need clearing after visibility changes.\n const restoredDefaults = ignoreCache ? new Set<AbstractControl>() : undefined;\n const fieldChanged = this.checkExpressions(f, ignoreCache) || options._hiddenFieldsForCheck.length > 0;\n let passes = 0;\n do {\n if (passes++ === maxPasses) {\n console.warn('[Formly] The form may be inconsistent. Check for circular hide expressions');\n throw new Error(`[Formly Error] Expressions did not settle after ${maxPasses} passes.`);\n }\n\n options._hiddenFieldsForCheck\n .sort((f) => (f.field.hide ? -1 : 1))\n .forEach((f) =>\n this.changeHideState(f.field, f.field.hide ?? f.default, !ignoreCache, f.emitEvent, restoredDefaults),\n );\n options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkExpressions(field);\n }\n } while (options._hiddenFieldsForCheck.length > 0);\n } finally {\n checkLocked = false;\n }\n };\n }\n }\n\n protected parseExpressions(field: FormlyFieldConfigCache, path: string, expr: any) {\n const isDisabledExpression = ['props.disabled', 'templateOptions.disabled'].includes(path);\n let parentExpression: any;\n if (field.parent && (path === 'hide' || isDisabledExpression)) {\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 (isDisabledExpression &&\n (field.props.disabled !== !!exprValue || (exprValue && hasKey(field) && field.formControl?.enabled))) ||\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 countFields(field: FormlyFieldConfigCache): number {\n return field ? 1 + (field.fieldGroup?.reduce((count, f) => count + this.countFields(f), 0) ?? 0) : 0;\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 const hide = field.hide;\n for (const key of Object.keys(field._expressions)) {\n field._expressions[key].callback?.(ignoreCache) && (fieldChanged = true);\n }\n\n if (ignoreCache && field._expressions.hide && hide === false && field.hide === false) {\n let parent = field.parent;\n while (parent && !parent.hide) {\n parent = parent.parent;\n }\n if (!parent) {\n // Restore defaults after rebuilding without reporting a visibility change.\n field.options._hiddenFieldsForCheck.push({ field, emitEvent: false });\n }\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(\n field: FormlyFieldConfigCache,\n hide: boolean,\n resetOnHide: boolean,\n emitEvent = true,\n restoredDefaults?: Set<AbstractControl>,\n ) {\n hide = field.hide || hide;\n if (field.fieldGroup) {\n field.fieldGroup\n .filter((f: FormlyFieldConfigCache) => f && !f._expressions.hide)\n .forEach((f) => this.changeHideState(f, hide, resetOnHide, emitEvent, restoredDefaults));\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 || restoredDefaults?.has(c)) && field.resetOnHide) {\n assignFieldValue(field, undefined);\n restoredDefaults?.delete(c);\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 restoredDefaults?.add(c);\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 (emitEvent && 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 // Angular enables descendants without updating a group's disabled property.\n if (value && field.formControl?.enabled) {\n field.formControl.disable();\n }\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 OPTIONAL_DOT = 'OPTIONAL_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 === '?' && this.peek() === '.') {\n tokens.push({ type: TokenType.OPTIONAL_DOT, value: '?.' });\n this.pos += 2;\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 this.consume(TokenType.EOF);\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 (\n this.current().type === TokenType.DOT ||\n this.current().type === TokenType.OPTIONAL_DOT ||\n this.current().type === TokenType.BRACKET_OPEN\n ) {\n const optional = this.current().type === TokenType.OPTIONAL_DOT;\n if (optional) {\n this.consume(TokenType.OPTIONAL_DOT);\n }\n\n if (this.current().type === TokenType.DOT || (optional && this.current().type !== TokenType.BRACKET_OPEN)) {\n if (!optional) {\n this.consume(TokenType.DOT);\n }\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._hide && 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 { parseExpression } from '../field-expression/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 case 'step': {\n // JSON Schema multipleOf validates against zero, independently of min.\n if (\n field.validators?.multipleOf ||\n typeof control.value !== 'number' ||\n !Number.isFinite(value) ||\n value <= 0\n ) {\n return null;\n }\n\n const base = Number.isFinite(field.props.min) ? field.props.min : 0;\n const error = { step: { step: value, base, actual: control.value } };\n if (!Number.isFinite(control.value)) {\n return error;\n }\n\n // Scale decimal representations to integers without rounding away extra digits.\n const decimals = [control.value, value, base].map((n) => {\n const [coefficient, exponent = '0'] = n.toString().split('e');\n const [integer, fraction = ''] = coefficient.split('.');\n return { digits: BigInt(integer + fraction), exponent: Number(exponent) - fraction.length };\n });\n const exponent = Math.min(...decimals.map((n) => n.exponent));\n const [actual, step, start] = decimals.map((n) => n.digits * 10n ** BigInt(n.exponent - exponent));\n\n return (actual - start) % step === 0n ? null : error;\n }\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' && 'expression' in validator) {\n const { expression, ...options } = validator;\n let validation = expression;\n if (typeof expression === 'string') {\n const evaluate = parseExpression(expression, ['model', 'formState', 'field', 'control']);\n if (!evaluate) {\n throw new Error(`[Formly Error] Invalid validation expression for \"${validatorName}\": ${expression}`);\n }\n\n validation = (control: AbstractControl, field: FormlyFieldConfigCache) =>\n evaluate(field.model, field.options.formState, field, control);\n }\n\n validatorOption = {\n name: validatorName,\n validation,\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 standalone: false,\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 Injector,\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 { Subscription, isObservable } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, skip, 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 private injector: Injector,\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(\n inlineType.ref,\n { $implicit: f },\n { injector: this.createFieldInjector() },\n );\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 attachLocalField(field?: FormlyFieldConfigCache, previousField?: FormlyFieldConfigCache) {\n const currentField = this.field as FormlyFieldConfigCache;\n if (!currentField) {\n return;\n }\n\n const localFields = (currentField._localFields || []).filter((f) => f !== field && f !== previousField);\n\n if (field && field !== currentField) {\n localFields.push(field);\n }\n\n if (currentField._localFields) {\n currentField._localFields = localFields;\n } else if (localFields.length > 0) {\n defineHiddenProp(currentField, '_localFields', localFields);\n }\n }\n\n private createFieldInjector() {\n return Injector.create({\n providers: [{ provide: FormlyField, useValue: this }],\n parent: this.injector,\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 {\n let events: Subscription;\n this.hostObservers.push(\n observe<FormlyFieldConfig['formControl']>(this.field, ['formControl'], ({ currentValue }) => {\n events?.unsubscribe();\n events = currentValue?.events.subscribe(() => markFieldForCheck(this.field));\n }),\n new Subscription(() => events?.unsubscribe()),\n );\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.fieldGroup) {\n let unsubscribe = () => {};\n const controlObserver = observe<FormlyFieldConfigCache['formControl']>(\n field,\n ['formControl'],\n ({ currentValue: control }) => {\n unsubscribe();\n unsubscribe = () => {};\n if (!control || field.fieldGroup) {\n return;\n }\n const independent = field.shareFormControl === false && hasKey(field);\n const subscribe = () => {\n let valueChanges = control.valueChanges.pipe(\n startWith(control.value),\n filter(() => !independent || !field._hide),\n map((value) => {\n field.parsers?.map((parserFn) => (value = (parserFn as any)(value, field)));\n if (!Object.is(value, control.value)) {\n control.setValue(value, { emitEvent: !independent });\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 skip(independent ? 0 : 1),\n );\n\n if (!independent && 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 if (independent) {\n valueChanges = valueChanges.pipe(\n filter((value) => value !== getFieldValue(field) || Array.isArray(value) || isObject(value)),\n );\n }\n\n return 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\n if (independent) {\n let sub: Subscription;\n const observer = observe<boolean>(field, ['_controlActive'], ({ currentValue }) => {\n sub?.unsubscribe();\n sub = new Subscription();\n if (currentValue) {\n sub.add(subscribe());\n }\n });\n unsubscribe = () => {\n observer.unsubscribe();\n sub?.unsubscribe();\n };\n } else {\n const sub = subscribe();\n unsubscribe = () => sub.unsubscribe();\n }\n },\n );\n subscribes.push(() => {\n controlObserver.unsubscribe();\n unsubscribe();\n });\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 standalone: false,\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 FormlyConfig,\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 && inject(FormlyConfig) === inject(FormlyConfig, { skipSelf: true, optional: true })) {\n configs = Array.isArray(configs) ? configs : [configs];\n currentConfig.push(...configs);\n return currentConfig;\n }\n return configs;\n },\n };\n};\n","import { EventEmitter, 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 {\n defineHiddenProp,\n observe,\n disableTreeValidityCall,\n getKeyPath,\n isHiddenField,\n isSignalRequired,\n} from '../utils';\nimport { FORMLY_CONFIG } from '../core.config';\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyFormBuilder {\n private readonly initializedForms = new WeakSet<UntypedFormGroup | UntypedFormArray>();\n\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 const firstBuild = !field.parent && !this.initializedForms.has(field.form);\n let lastEmittedStatus: string | undefined;\n const subscription = firstBuild\n ? field.form.statusChanges.subscribe((status) => (lastEmittedStatus = status))\n : undefined;\n if (firstBuild) {\n this.initializedForms.add(field.form);\n }\n\n const options = (field as FormlyFieldConfigCache).options;\n const controlsForCheck = options._formControlsForCheck;\n options._formControlsForCheck = controlsForCheck || new Set();\n\n try {\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 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 if (!controlsForCheck) {\n const controls = options._formControlsForCheck;\n delete options._formControlsForCheck;\n // Resume independent editors only after rebuilding and resolving their visibility.\n controls.forEach((f) => (f._controlActive = !f._hide && f.form.get(getKeyPath(f)) === f.formControl));\n }\n } catch (error) {\n if (firstBuild) {\n this.initializedForms.delete(field.form);\n }\n throw error;\n } finally {\n if (controlsForCheck) {\n options._formControlsForCheck = controlsForCheck;\n } else {\n delete options._formControlsForCheck;\n }\n subscription?.unsubscribe();\n }\n\n if (firstBuild && lastEmittedStatus !== field.form.status) {\n (field.form.statusChanges as EventEmitter<string>).emit(field.form.status);\n }\n\n if (!controlsForCheck) {\n options._afterBuild?.forEach((afterBuild) => afterBuild());\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 DestroyRef,\n PendingTasks,\n inject,\n Injector,\n WritableSignal,\n EffectRef,\n untracked,\n effect,\n isWritableSignal,\n} from '@angular/core';\nimport { UntypedFormGroup, UntypedFormArray } from '@angular/forms';\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyFieldConfigCache, FormlyValueChangeEvent } from '../models';\nimport { FormlyFormBuilder } from '../services/formly.builder';\nimport { FormlyConfig } from '../services/formly.config';\nimport { clone, defineHiddenProp, hasKey, isEqualValue, isNoopNgZone, isSignalRequired, observeDeep } from '../utils';\nimport { switchMap, filter, take, tap } 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 standalone: true,\n imports: [FormlyField],\n changeDetection: ChangeDetectionStrategy.OnPush,\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 /**\n * The model to be represented by the form.\n * The form sets a `WritableSignal` to a copy of the model after each change.\n */\n @Input()\n set model(model: any) {\n this.modelSignalEffect?.destroy();\n this.modelSignal = undefined;\n if (isWritableSignal(model)) {\n this.bindModelSignal(model);\n return;\n }\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.field.options?._afterBuild?.delete(this.afterBuild);\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 /** Emits a build event asynchronously when the fields or form input changes. */\n @Output() fieldChange = new EventEmitter<FormlyValueChangeEvent>();\n @ContentChildren(FormlyTemplate) set templates(templates: QueryList<FormlyTemplate>) {\n this.fieldTemplates.templates = templates;\n }\n\n field: FormlyFieldConfigCache = { type: 'formly-group' };\n private readonly destroyRef = inject(DestroyRef);\n private readonly pendingTasks = inject(PendingTasks);\n private readonly injector = inject(Injector);\n private _modelChangeValue: any = {};\n private modelSignal?: WritableSignal<any>;\n private modelSignalValue: any;\n private modelSignalEffect?: EffectRef;\n private valueChangesUnsubscribe = () => {};\n private readonly afterBuild = () => {\n if (this.modelSignal) {\n this.syncModelSignal(this.modelSignal);\n }\n };\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.build();\n }\n\n if (changes.fields || changes.form) {\n this.pendingTasks.run(async () => {\n await Promise.resolve();\n if (!this.destroyRef.destroyed) {\n this.fieldChange.emit({ field: this.field, type: 'build', value: this.form });\n }\n });\n }\n }\n\n ngOnDestroy() {\n this.valueChangesUnsubscribe();\n this.config.clearRefs();\n this.field.options?._afterBuild?.delete(this.afterBuild);\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 // keep the signal current for expressions and host code that run before the zone is stable\n tap(() => {\n if (this.modelSignal) {\n this.syncModelSignal(this.modelSignal);\n }\n }),\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._modelChangeValue = clone(this.model);\n if (this.modelSignal) {\n this.syncModelSignal(this.modelSignal, this._modelChangeValue);\n }\n this.modelChange.emit(this._modelChangeValue);\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 private build() {\n this.valueChangesUnsubscribe();\n if (this.modelSignal) {\n const options = (this.field.options ??= {});\n if (!options._afterBuild) {\n defineHiddenProp(options, '_afterBuild', new Set());\n }\n options._afterBuild.add(this.afterBuild);\n }\n this.builder.build(this.field);\n this.valueChangesUnsubscribe = this.valueChanges();\n }\n\n private bindModelSignal(model: WritableSignal<any>) {\n this.modelSignal = model;\n this.modelSignalValue = model();\n this.useSignalValue(this.modelSignalValue);\n this.modelSignalEffect = effect(\n () => {\n const value = model();\n if (value === this.modelSignalValue) {\n return;\n }\n this.modelSignalValue = value;\n untracked(() => {\n this.useSignalValue(value);\n this.build();\n });\n },\n { injector: this.injector },\n );\n }\n\n private syncModelSignal(modelSignal: WritableSignal<any>, copy?: any) {\n const current = untracked(modelSignal);\n\n if (current !== this.modelSignalValue || isEqualValue(this.model, current ?? {})) {\n return;\n }\n\n modelSignal.set(copy ?? clone(this.model));\n // a signal with a custom `equal` can keep its previous value\n this.modelSignalValue = untracked(modelSignal);\n }\n\n // Formly mutates the root model, so bind a copy and leave the host's object untouched.\n private useSignalValue(model: any) {\n this.setField({ model: this.config.extras.immutable ? model : clone(model) });\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 Optional,\n DOCUMENT,\n} from '@angular/core';\nimport { FormlyFieldConfig, FormlyFieldConfigCache } from '../models';\nimport { defineHiddenProp, FORMLY_VALIDATORS, observe, IObserver } from '../utils';\nimport { FormlyField } from '../components/formly.field';\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 @Optional() private formlyField?: FormlyField,\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 const previousField = changes.field.previousValue as FormlyFieldConfigCache;\n this.detachElementRef(previousField);\n this.attachElementRef(changes.field.currentValue);\n this.formlyField?.attachLocalField(\n changes.field.currentValue as FormlyFieldConfigCache,\n previousField?._elementRefs?.length ? undefined : previousField,\n );\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'].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, this.getSafeAttributeValue(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 if (!(this.field as FormlyFieldConfigCache)?._elementRefs?.length) {\n this.formlyField?.attachLocalField(undefined, this.field as FormlyFieldConfigCache);\n }\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 elements = f?.['_elementRefs'] || [];\n const index = elements.indexOf(this.elementRef);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n\n private getSafeAttributeValue(attr: string, value: any): string {\n if (attr === 'pattern') {\n let pattern = value instanceof RegExp ? value.source : value;\n\n // 1. Safely escape unescaped hyphens inside character classes for 'v' flag compatibility\n pattern = pattern.replace(/(\\[[^\\]]*?)(?<!\\\\)-(.*?\\])/g, '$1\\\\-$2');\n\n // 2. Cleanly strip leading ^ and trailing $ so HTML5 handles the boundaries natively\n pattern = pattern.replace(/^^\\^/, '').replace(/\\$$/, '');\n\n return pattern;\n }\n return value === true ? attr : `${value}`;\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 standalone: false,\n})\nexport class LegacyFormlyAttributes extends FormlyAttributes {}\n","import { FormlyFieldConfig } from '../models';\nimport { FormlyConfig } from '../services/formly.config';\nimport { isObject } from '../utils';\n\nexport function getValidationMessage(field: FormlyFieldConfig, error: string, config: FormlyConfig) {\n const value = field.formControl.errors[error];\n let message = config.getValidatorMessage(error);\n\n if (isObject(value)) {\n if (value.errorPath) {\n return undefined;\n }\n\n if (value.message) {\n message = value.message;\n }\n }\n\n if (field.validation?.messages?.[error]) {\n message = field.validation.messages[error];\n }\n\n if (field.validators?.[error]?.message) {\n message = field.validators[error].message;\n }\n\n if (field.asyncValidators?.[error]?.message) {\n message = field.asyncValidators[error].message;\n }\n\n return typeof message === 'function' ? message(value, field) : message;\n}\n","import { AsyncPipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input, OnChanges } from '@angular/core';\nimport { Observable, combineLatest, isObservable, merge, of } from 'rxjs';\nimport { filter, map, startWith, switchMap } from 'rxjs/operators';\nimport { FormlyFieldConfig } from '../models';\nimport { FormlyConfig } from '../services/formly.config';\nimport { FORMLY_VALIDATORS, observe } from '../utils';\nimport { getValidationMessage } from './validation-message';\n\n/**\n * The `<formly-validation-message>` component renders the error message of a given `field`.\n * @deprecated Use the `validationMessages` pipe to render validation messages.\n */\n@Component({\n selector: 'formly-validation-message',\n template: '{{ errorMessage$ | async }}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [AsyncPipe],\n host: { '[style.white-space]': \"field.validation?.showAllErrors ? 'pre-line' : null\" },\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 const controlChanges = new Observable<FormlyFieldConfig['formControl']>((subscriber) => {\n const observer = observe<FormlyFieldConfig['formControl']>(this.field, ['formControl'], ({ currentValue }) =>\n subscriber.next(currentValue),\n );\n return () => observer.unsubscribe();\n });\n this.errorMessage$ = merge(\n controlChanges.pipe(switchMap((control) => (control ? control.statusChanges.pipe(startWith(null)) : of(null)))),\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 switchMap(() => {\n const message = this.errorMessage;\n return isObservable(message) ? message : of(message);\n }),\n );\n }\n\n get errorMessage() {\n const errors = this.field.formControl?.errors || {};\n const messages: (string | Observable<string>)[] = [];\n for (const error in errors) {\n if (errors.hasOwnProperty(error)) {\n const message = getValidationMessage(this.field, error, this.config);\n if (!this.field.validation?.showAllErrors) {\n return message;\n }\n if (message) {\n messages.push(message);\n }\n }\n }\n\n if (this.field.validation?.showAllErrors) {\n return messages.some(isObservable)\n ? combineLatest(\n messages.map((message) => (isObservable(message) ? message.pipe(startWith('')) : of(message))),\n ).pipe(map((values) => values.filter(Boolean).join('\\n')))\n : messages.join('\\n');\n }\n\n return undefined;\n }\n}\n\n/** @deprecated Use the `validationMessages` pipe to render validation messages. */\n@Component({\n selector: 'formly-validation-message',\n template: '{{ errorMessage$ | async }}',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class LegacyFormlyValidationMessage extends FormlyValidationMessage {}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { isObservable, Observable, of, Subscription } from 'rxjs';\nimport { FormlyFieldConfig, FormlyValueChangeEvent } from '../models';\nimport { FormlyConfig } from '../services/formly.config';\nimport { getValidationMessage } from './validation-message';\n\nexport interface FormlyValidationMessageEntry {\n /** The visible field associated with the error. */\n field: FormlyFieldConfig;\n /** The key in the control's errors object. */\n error: string;\n /** The resolved, nonempty validation message. */\n message: string;\n}\n\n/** Collects configured messages from built fields, independently of touched or submitted state. */\n@Pipe({ name: 'validationMessages', standalone: true })\nexport class FormlyValidationMessagesPipe implements PipeTransform {\n constructor(private config: FormlyConfig) {}\n\n transform(\n fields: FormlyFieldConfig | readonly FormlyFieldConfig[] | null | undefined,\n ): Observable<FormlyValidationMessageEntry[]> {\n const roots: readonly FormlyFieldConfig[] = Array.isArray(fields) ? fields : [fields as FormlyFieldConfig];\n\n return new Observable<FormlyValidationMessageEntry[]>((subscriber) => {\n const subscriptions = new Map<Observable<string | FormlyValueChangeEvent>, Subscription>();\n const messages = new Map<\n FormlyFieldConfig,\n Map<\n string,\n {\n control: AbstractControl;\n message: string | Observable<string>;\n entry: FormlyValidationMessageEntry;\n subscription: Subscription;\n }\n >\n >();\n let currentFields: FormlyFieldConfig[] = [];\n let watchedFields: Set<FormlyFieldConfig>;\n let refreshing = false;\n\n const emit = () => {\n if (refreshing || subscriber.closed) {\n return;\n }\n\n const seen = new Map<AbstractControl, Set<string>>();\n const entries = currentFields.flatMap((field) =>\n Object.keys(field.formControl?.errors || {}).map((error) => messages.get(field)?.get(error)?.entry),\n );\n subscriber.next(\n entries.filter((entry) => {\n if (!entry?.message || seen.get(entry.field.formControl)?.has(entry.error)) {\n return false;\n }\n\n const { field, error } = entry;\n if (!seen.has(field.formControl)) {\n seen.set(field.formControl, new Set());\n }\n seen.get(field.formControl).add(error);\n return true;\n }),\n );\n };\n\n const refresh = () => {\n if (subscriber.closed) {\n return;\n }\n\n refreshing = true;\n currentFields = this.getFields(roots);\n watchedFields = new Set(currentFields);\n messages.forEach((fieldMessages, field) => {\n if (!watchedFields.has(field) || !this.isVisible(field)) {\n fieldMessages.forEach((state) => state.subscription.unsubscribe());\n messages.delete(field);\n }\n });\n currentFields.forEach((field) => {\n for (let parent = field.parent; parent && !watchedFields.has(parent); parent = parent.parent) {\n watchedFields.add(parent);\n }\n });\n\n const sources = new Set<Observable<string | FormlyValueChangeEvent>>();\n watchedFields.forEach((field) => {\n if (field.formControl) {\n sources.add(field.formControl.statusChanges);\n }\n if (field.options?.fieldChanges) {\n sources.add(field.options.fieldChanges);\n }\n });\n\n subscriptions.forEach((subscription, source) => {\n if (!sources.has(source)) {\n subscription.unsubscribe();\n subscriptions.delete(source);\n }\n });\n sources.forEach((source) => {\n if (!subscriber.closed && !subscriptions.has(source)) {\n subscriptions.set(\n source,\n source.subscribe({\n next: (event: string | FormlyValueChangeEvent) => {\n if (\n typeof event === 'string' ||\n event.type === 'valueChanges' ||\n (watchedFields.has(event.field) && ['expressionChanges', 'hidden'].includes(event.type))\n ) {\n refresh();\n }\n },\n error: (error) => subscriber.error(error),\n }),\n );\n }\n });\n\n currentFields.forEach((field) => {\n if (subscriber.closed || !this.isVisible(field)) {\n return;\n }\n\n if (!messages.has(field)) {\n messages.set(field, new Map());\n }\n const fieldMessages = messages.get(field);\n const errors = new Set(Object.keys(field.formControl.errors || {}));\n fieldMessages.forEach((state, error) => {\n if (state.control !== field.formControl || !errors.has(error)) {\n state.subscription.unsubscribe();\n fieldMessages.delete(error);\n }\n });\n errors.forEach((error) => {\n if (subscriber.closed) {\n return;\n }\n\n let message: string | Observable<string>;\n try {\n message = getValidationMessage(field, error, this.config);\n } catch (error) {\n subscriber.error(error);\n return;\n }\n\n const previous = fieldMessages.get(error);\n // Re-evaluate field context, but retain unchanged streams and their latest translations.\n if (previous?.message === message) {\n return;\n }\n previous?.subscription.unsubscribe();\n fieldMessages.delete(error);\n if (!message) {\n return;\n }\n\n const state = {\n control: field.formControl,\n message,\n entry: null as FormlyValidationMessageEntry,\n subscription: new Subscription(),\n };\n fieldMessages.set(error, state);\n state.subscription.add(\n (isObservable(message) ? message : of(message)).subscribe({\n next: (message) => {\n state.entry = { field, error, message };\n emit();\n },\n error: (error) => subscriber.error(error),\n }),\n );\n });\n });\n refreshing = false;\n emit();\n };\n\n subscriber.add(() => {\n subscriptions.forEach((subscription) => subscription.unsubscribe());\n messages.forEach((fieldMessages) => fieldMessages.forEach((state) => state.subscription.unsubscribe()));\n });\n refresh();\n });\n }\n\n private getFields(roots: readonly FormlyFieldConfig[]) {\n const fields = new Set<FormlyFieldConfig>();\n const visit = (field: FormlyFieldConfig) => {\n if (!field || fields.has(field)) {\n return;\n }\n\n fields.add(field);\n field.fieldGroup?.forEach(visit);\n };\n roots.forEach(visit);\n\n return Array.from(fields);\n }\n\n private isVisible(field: FormlyFieldConfig) {\n if (!field.formControl || field.formControl.disabled) {\n return false;\n }\n for (let parent = field; parent; parent = parent.parent) {\n if (parent.hide) {\n return false;\n }\n }\n\n return true;\n }\n}\n","import { Directive } from '@angular/core';\nimport { UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { FieldType } from './field.type';\nimport { clone, assignFieldValue, getFieldValue, getField, getKeyPath, 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 this.addArrayElement(field, i);\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 i = Math.trunc(i) || 0;\n i = i < 0 ? Math.max(this.model.length + i, 0) : Math.min(i, this.model.length);\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n // Connected arrays share a FormArray. A keyless array uses its parent's control, which it does not share.\n const fields = hasKey(this.field)\n ? (this.field as FormlyFieldConfigCache).formControl._fields.filter((f) => f === this.field || f.fieldArray)\n : [this.field];\n if (fields.some((field) => field.props.trackByIndex)) {\n this._build();\n return;\n }\n const fixedFields = this.detachFixedFields(fields);\n fields.forEach((field) => {\n this.addArrayElement(field, i);\n field.fieldGroup.forEach((f, key) => this.updateArrayElementKey(f, `${key}`));\n });\n\n // Existing fields retain their controls and register them at their new keys.\n // Clear the shifted positions so the new field cannot reuse an existing control.\n const formControl = this.formControl;\n if (formControl instanceof UntypedFormArray) {\n for (let key = formControl.length - 1; key >= i; key--) {\n formControl.removeAt(key, { emitEvent: false });\n }\n } else {\n for (let key = this.field.fieldGroup.length - 2; key >= i; key--) {\n (formControl as UntypedFormGroup).removeControl(`${key}`, { emitEvent: false });\n }\n }\n\n this._build(fixedFields);\n }\n\n remove(i: number, { markAsDirty } = { markAsDirty: true }) {\n markAsDirty && this.formControl.markAsDirty();\n this.model.splice(i, 1);\n\n const fields = hasKey(this.field)\n ? (this.field as FormlyFieldConfigCache).formControl._fields.filter((f) => f === this.field || f.fieldArray)\n : [this.field];\n const trackByIndex = fields.some((field) => field.props.trackByIndex);\n const fixedFields = trackByIndex ? [] : this.detachFixedFields(fields);\n fields.forEach((field) => {\n const index = trackByIndex ? field.fieldGroup.length - 1 : i;\n const [removed] = field.fieldGroup.splice(index, 1);\n field.fieldGroup.forEach((f, key) => this.updateArrayElementKey(f, `${key}`));\n unregisterControl(removed, true);\n });\n this._build(fixedFields);\n }\n\n private _build(fixedFields: FormlyFieldConfig[] = []) {\n const fields = (this.field as FormlyFieldConfigCache).formControl._fields ?? [this.field];\n fields.forEach((f) => (this.options as any).build(f));\n const getPath = (field: FormlyFieldConfig) => {\n const path: string[] = [];\n for (let parent = field; parent; parent = parent.parent) {\n path.unshift(...getKeyPath(parent));\n }\n return path;\n };\n fixedFields.forEach((field) => {\n const path = getPath(field).slice(getPath(this.field).length);\n const array = fields.find((f) => getField(f, path)) || this.field;\n const target = path.length ? getField(array, path) : array;\n if (target?.formControl) {\n registerControl(field, target.formControl);\n }\n });\n fixedFields.forEach((field) => {\n this.options.build(field);\n this.options.detectChanges(field);\n });\n this.options.fieldChanges.next({\n field: this.field,\n value: getFieldValue(this.field),\n type: 'valueChanges',\n });\n }\n\n private detachFixedFields(arrays: FormlyFieldConfig[]): FormlyFieldConfigCache[] {\n const fixedFields = new Set<FormlyFieldConfigCache>();\n const visited = new Set<FormlyFieldConfigCache['formControl']>();\n const visit = (control: FormlyFieldConfigCache['formControl']) => {\n if (!control || visited.has(control)) {\n return;\n }\n visited.add(control);\n if (control instanceof UntypedFormArray || control instanceof UntypedFormGroup) {\n Object.values(control.controls).forEach(visit);\n }\n };\n visit(this.formControl);\n const visitField = (field: FormlyFieldConfig) => {\n visit(field.formControl);\n field.fieldGroup?.forEach(visitField);\n };\n // Hidden rows retain controls that are no longer in the FormArray.\n arrays.forEach(visitField);\n const visitFixedFields = (field: FormlyFieldConfigCache) => {\n if (arrays.includes(field) || field.shareFormControl === false) {\n return;\n }\n if (hasKey(field) && visited.has(field.formControl)) {\n fixedFields.add(field);\n }\n field.fieldGroup?.forEach(visitFixedFields);\n };\n let root: FormlyFieldConfig = this.field;\n while (root.parent) {\n root = root.parent;\n }\n visitFixedFields(root);\n fixedFields.forEach((field) => {\n const control = field.formControl;\n const index = control._fields?.indexOf(field) ?? -1;\n if (index !== -1) {\n control._fields.splice(index, 1);\n }\n control.setValidators(null);\n control.setAsyncValidators(null);\n field.formControl = null;\n });\n\n return [...fixedFields];\n }\n\n private addArrayElement(field: FormlyFieldConfig, index: number) {\n // Factories use fieldGroup.length to select the schema for the new position.\n const tail = field.fieldGroup.splice(index);\n try {\n const f = { ...clone(typeof field.fieldArray === 'function' ? field.fieldArray(field) : field.fieldArray) };\n if (f.key !== null) {\n f.key = `${index}`;\n }\n\n field.fieldGroup.push(f);\n } finally {\n field.fieldGroup.push(...tail);\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","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 { FormlyValidationMessagesPipe } from './templates/formly-validation-messages.pipe';\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/**\n * Registers Formly components and configuration for NgModule-based applications.\n *\n * `forRoot()` provides the shared `FormlyConfig` at the application root, while\n * `forChild()` adds feature configuration using the inherited service. This follows\n * Angular's [root/child module registration convention](https://frontendatlas.com/angular/trivia/angular-forroot-forchild).\n */\n@NgModule({\n declarations: [\n LegacyFormlyTemplate,\n LegacyFormlyForm,\n LegacyFormlyField,\n LegacyFormlyAttributes,\n LegacyFormlyValidationMessage,\n FormlyGroup,\n FormlyTemplateType,\n ],\n exports: [\n FormlyValidationMessagesPipe,\n LegacyFormlyTemplate,\n LegacyFormlyForm,\n LegacyFormlyField,\n LegacyFormlyAttributes,\n LegacyFormlyValidationMessage,\n FormlyGroup,\n ],\n imports: [CommonModule, FormlyValidationMessagesPipe],\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"],"mappings":"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"}
|