{"version":3,"sources":["node_modules/@ngx-formly/core/fesm2020/ngx-formly-core.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Type, TemplateRef, ComponentRef, ChangeDetectorRef, InjectionToken, Injectable, Optional, Directive, Input, ViewContainerRef, Component, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, ContentChildren, Inject, ViewChildren, NgModule } from '@angular/core';\nimport * as i2 from '@angular/forms';\nimport { AbstractControl, FormGroup, FormArray, FormControl, NgControl, Validators } from '@angular/forms';\nimport { isObservable, merge, of, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, startWith, debounceTime, filter, switchMap, take, tap, map } from 'rxjs/operators';\nimport * as i2$1 from '@angular/common';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport * as i1 from '@angular/platform-browser';\nconst _c0 = [\"container\"];\nfunction FormlyField_ng_template_0_Template(rf, ctx) {}\nconst _c1 = [\"*\"];\nfunction FormlyGroup_formly_field_0_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"formly-field\", 1);\n }\n if (rf & 2) {\n const f_r1 = ctx.$implicit;\n i0.ɵɵproperty(\"field\", f_r1);\n }\n}\nconst _c2 = [\"fieldComponent\"];\nfunction disableTreeValidityCall(form, callback) {\n const _updateTreeValidity = form._updateTreeValidity.bind(form);\n form._updateTreeValidity = () => {};\n callback();\n form._updateTreeValidity = _updateTreeValidity;\n}\nfunction getFieldId(formId, field, index) {\n if (field.id) {\n return field.id;\n }\n let type = field.type;\n if (!type && field.template) {\n type = 'template';\n }\n if (type instanceof Type) {\n type = type.prototype.constructor.name;\n }\n return [formId, type, field.key, index].join('_');\n}\nfunction hasKey(field) {\n return !isNil(field.key) && field.key !== '' && (!Array.isArray(field.key) || field.key.length > 0);\n}\nfunction getKeyPath(field) {\n if (!hasKey(field)) {\n return [];\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 = [];\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 defineHiddenProp(field, '_keyPath', {\n key: field.key,\n path\n });\n }\n return field._keyPath.path.slice(0);\n}\nconst FORMLY_VALIDATORS = ['required', 'pattern', 'minLength', 'maxLength', 'min', 'max'];\nfunction assignFieldValue(field, value) {\n let paths = getKeyPath(field);\n if (paths.length === 0) {\n return;\n }\n let root = field;\n while (root.parent) {\n root = root.parent;\n paths = [...getKeyPath(root), ...paths];\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 assignModelValue(root.model, paths, value);\n}\nfunction assignModelValue(model, paths, value) {\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 model = model[path];\n }\n model[paths[paths.length - 1]] = clone(value);\n}\nfunction getFieldValue(field) {\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 return model;\n}\nfunction reverseDeepMerge(dest, ...args) {\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// check a value is null or undefined\nfunction isNil(value) {\n return value == null;\n}\nfunction isUndefined(value) {\n return value === undefined;\n}\nfunction isBlankString(value) {\n return value === '';\n}\nfunction isFunction(value) {\n return typeof value === 'function';\n}\nfunction objAndSameType(obj1, obj2) {\n return isObject(obj1) && isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2) && !(Array.isArray(obj1) || Array.isArray(obj2));\n}\nfunction isObject(x) {\n return x != null && typeof x === 'object';\n}\nfunction isPromise(obj) {\n return !!obj && typeof obj.then === 'function';\n}\nfunction clone(value) {\n if (!isObject(value) || isObservable(value) || value instanceof TemplateRef || /* instanceof SafeHtmlImpl */value.changingThisBreaksApplicationSecurity || ['RegExp', 'FileList', 'File', 'Blob'].indexOf(value.constructor.name) !== -1) {\n return value;\n }\n if (value instanceof Set) {\n return new Set(value);\n }\n if (value instanceof Map) {\n return new Map(value);\n }\n if (value instanceof Uint8Array) {\n return new Uint8Array(value);\n }\n if (value instanceof Uint16Array) {\n return new Uint16Array(value);\n }\n if (value instanceof Uint32Array) {\n return new Uint32Array(value);\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 if (value instanceof AbstractControl) {\n return null;\n }\n if (value instanceof Date) {\n return new Date(value.getTime());\n }\n if (Array.isArray(value)) {\n return value.slice(0).map(v => clone(v));\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 return newVal;\n }, c);\n}\nfunction defineHiddenProp(field, prop, defaultValue) {\n Object.defineProperty(field, prop, {\n enumerable: false,\n writable: true,\n configurable: true\n });\n field[prop] = defaultValue;\n}\nfunction observeDeep(source, paths, setFn) {\n let observers = [];\n const unsubscribe = () => {\n observers.forEach(observer => observer());\n observers = [];\n };\n const observer = observe(source, paths, ({\n firstChange,\n currentValue\n }) => {\n !firstChange && setFn();\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 return () => {\n observer.unsubscribe();\n unsubscribe();\n };\n}\nfunction observe(o, paths, setFn) {\n if (!o._observers) {\n defineHiddenProp(o, '_observers', {});\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 const key = paths[paths.length - 1];\n const prop = paths.join('.');\n if (!o._observers[prop]) {\n o._observers[prop] = {\n value: target[key],\n onChange: []\n };\n }\n const state = o._observers[prop];\n if (target[key] !== state.value) {\n state.value = target[key];\n }\n if (setFn && state.onChange.indexOf(setFn) === -1) {\n state.onChange.push(setFn);\n setFn({\n currentValue: state.value,\n firstChange: true\n });\n if (state.onChange.length >= 1 && isObject(target)) {\n const {\n enumerable\n } = Object.getOwnPropertyDescriptor(target, key) || {\n enumerable: true\n };\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({\n previousValue,\n currentValue,\n firstChange: false\n }));\n }\n }\n });\n }\n }\n return {\n setValue(currentValue, emitEvent = true) {\n if (currentValue === state.value) {\n return;\n }\n const previousValue = state.value;\n state.value = currentValue;\n state.onChange.forEach(changeFn => {\n if (changeFn !== setFn && emitEvent) {\n changeFn({\n previousValue,\n currentValue,\n firstChange: false\n });\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}\nfunction getField(f, key) {\n key = Array.isArray(key) ? key.join('.') : key;\n if (!f.fieldGroup) {\n return undefined;\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;\n if (k === key) {\n return c;\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 return undefined;\n}\nfunction markFieldForCheck(field) {\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\n/**\n * An InjectionToken for registering additional formly config options (types, wrappers ...).\n */\nconst FORMLY_CONFIG = new InjectionToken('FORMLY_CONFIG');\n/**\n * Maintains list of formly config options. This can be used to register new field type.\n */\nlet FormlyConfig = /*#__PURE__*/(() => {\n class FormlyConfig {\n constructor() {\n this.types = {};\n this.validators = {};\n this.wrappers = {};\n this.messages = {};\n this.extras = {\n checkExpressionOn: 'modelChange',\n lazyRender: true,\n resetFieldOnHide: true,\n renderFormlyFieldElement: true,\n showError(field) {\n return field.formControl?.invalid && (field.formControl?.touched || field.options.parentForm?.submitted || !!field.field.validation?.show);\n }\n };\n this.extensions = {};\n this.presets = {};\n this.extensionsByPriority = {};\n }\n addConfig(config) {\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 = {\n ...this.extras,\n ...config.extras\n };\n }\n if (config.presets) {\n this.presets = {\n ...this.presets,\n ...config.presets.reduce((acc, curr) => ({\n ...acc,\n [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) {\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] = {\n name: options.name\n };\n }\n ['component', 'extends', 'defaultOptions', 'wrappers'].forEach(prop => {\n if (options.hasOwnProperty(prop)) {\n this.types[options.name][prop] = options[prop];\n }\n });\n }\n }\n getType(name, throwIfNotFound = false) {\n if (name instanceof Type) {\n return {\n component: name,\n name: name.prototype.constructor.name\n };\n }\n if (!this.types[name]) {\n if (throwIfNotFound) {\n throw new Error(`[Formly Error] The type \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return null;\n }\n this.mergeExtendedType(name);\n return this.types[name];\n }\n /** @ignore */\n getMergedField(field = {}) {\n const type = this.getType(field.type);\n if (!type) {\n return;\n }\n if (type.defaultOptions) {\n reverseDeepMerge(field, type.defaultOptions);\n }\n const extendDefaults = type.extends && this.getType(type.extends).defaultOptions;\n if (extendDefaults) {\n reverseDeepMerge(field, extendDefaults);\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 const componentRef = this.resolveFieldTypeRef(field);\n if (componentRef?.instance?.defaultOptions) {\n reverseDeepMerge(field, componentRef.instance.defaultOptions);\n }\n if (!field.wrappers && type.wrappers) {\n field.wrappers = [...type.wrappers];\n }\n }\n /** @ignore @internal */\n resolveFieldTypeRef(field = {}) {\n const type = this.getType(field.type);\n if (!type) {\n return null;\n }\n if (!type.component || type._componentRef) {\n return type._componentRef;\n }\n const {\n _viewContainerRef,\n _injector\n } = field.options;\n if (!_viewContainerRef || !_injector) {\n return null;\n }\n const componentRef = _viewContainerRef.createComponent(type.component, {\n injector: _injector\n });\n defineHiddenProp(type, '_componentRef', 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 return type._componentRef;\n }\n setWrapper(options) {\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 getWrapper(name) {\n if (name instanceof Type) {\n return {\n component: name,\n name: name.prototype.constructor.name\n };\n }\n if (!this.wrappers[name]) {\n throw new Error(`[Formly Error] The wrapper \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.wrappers[name];\n }\n /** @ignore */\n setTypeWrapper(type, name) {\n if (!this.types[type]) {\n this.types[type] = {};\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 setValidator(options) {\n this.validators[options.name] = options;\n }\n getValidator(name) {\n if (!this.validators[name]) {\n throw new Error(`[Formly Error] The validator \"${name}\" could not be found. Please make sure that is registered through the FormlyModule declaration.`);\n }\n return this.validators[name];\n }\n addValidatorMessage(name, message) {\n this.messages[name] = message;\n if (typeof ngDevMode === 'undefined' || ngDevMode) {\n const deprecated = {\n minlength: 'minLength',\n maxlength: 'maxLength'\n };\n if (deprecated[name]) {\n console.warn(`Formly deprecation: passing validation messages key '${name}' is deprecated since v6.0, use '${deprecated[name]}' instead.`);\n this.messages[deprecated[name]] = message;\n }\n }\n }\n getValidatorMessage(name) {\n return this.messages[name];\n }\n setSortedExtensions(extensionOptions) {\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).map(Number).sort((a, b) => a - b).reduce((acc, prio) => ({\n ...acc,\n ...this.extensionsByPriority[prio]\n }), {});\n }\n mergeExtendedType(name) {\n if (!this.types[name].extends) {\n return;\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 if (!this.types[name].wrappers) {\n this.types[name].wrappers = extendedType.wrappers;\n }\n }\n }\n FormlyConfig.ɵfac = function FormlyConfig_Factory(t) {\n return new (t || FormlyConfig)();\n };\n FormlyConfig.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FormlyConfig,\n factory: FormlyConfig.ɵfac,\n providedIn: 'root'\n });\n return FormlyConfig;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FormlyFormBuilder = /*#__PURE__*/(() => {\n class FormlyFormBuilder {\n constructor(config, injector, viewContainerRef, parentForm) {\n this.config = config;\n this.injector = injector;\n this.viewContainerRef = viewContainerRef;\n this.parentForm = parentForm;\n }\n buildForm(form, fieldGroup = [], model, options) {\n this.build({\n fieldGroup,\n model,\n form,\n options\n });\n }\n build(field) {\n if (!this.config.extensions.core) {\n throw new Error('NgxFormly: missing `forRoot()` call. use `forRoot()` when registering the `FormlyModule`.');\n }\n if (!field.parent) {\n this._setOptions(field);\n }\n disableTreeValidityCall(field.form, () => {\n this._build(field);\n if (!field.parent) {\n const options = field.options;\n options.checkExpressions?.(field, true);\n options._detectChanges?.(field);\n }\n });\n }\n _build(field) {\n if (!field) {\n return;\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 _setOptions(field) {\n field.form = field.form || new FormGroup({});\n field.model = field.model || {};\n field.options = field.options || {};\n const options = field.options;\n if (!options._viewContainerRef) {\n defineHiddenProp(options, '_viewContainerRef', this.viewContainerRef);\n }\n if (!options._injector) {\n defineHiddenProp(options, '_injector', this.injector);\n }\n if (!options.build) {\n options._buildForm = () => {\n console.warn(`Formly: 'options._buildForm' is deprecated since v6.0, use 'options.build' instead.`);\n this.build(field);\n };\n options.build = (f = field) => {\n this.build(f);\n return f;\n };\n }\n if (!options.parentForm && this.parentForm) {\n defineHiddenProp(options, 'parentForm', this.parentForm);\n observe(options, ['parentForm', 'submitted'], ({\n firstChange\n }) => {\n if (!firstChange) {\n options.detectChanges(field);\n }\n });\n }\n }\n }\n FormlyFormBuilder.ɵfac = function FormlyFormBuilder_Factory(t) {\n return new (t || FormlyFormBuilder)(i0.ɵɵinject(FormlyConfig), i0.ɵɵinject(i0.Injector), i0.ɵɵinject(i0.ViewContainerRef, 8), i0.ɵɵinject(i2.FormGroupDirective, 8));\n };\n FormlyFormBuilder.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FormlyFormBuilder,\n factory: FormlyFormBuilder.ɵfac,\n providedIn: 'root'\n });\n return FormlyFormBuilder;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction unregisterControl(field, 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 const form = control.parent;\n if (!form) {\n return;\n }\n const opts = {\n emitEvent\n };\n if (form instanceof FormArray) {\n const key = form.controls.findIndex(c => c === control);\n if (key !== -1) {\n form.removeAt(key, opts);\n }\n } else if (form instanceof FormGroup) {\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 control.setParent(null);\n}\nfunction findControl(field) {\n if (field.formControl) {\n return field.formControl;\n }\n if (field.shareFormControl === false) {\n return null;\n }\n return field.form?.get(getKeyPath(field));\n}\nfunction registerControl(field, control, emitEvent = false) {\n control = control || field.formControl;\n if (!control._fields) {\n defineHiddenProp(control, '_fields', []);\n }\n if (control._fields.indexOf(field) === -1) {\n control._fields.push(field);\n }\n if (!field.formControl && control) {\n defineHiddenProp(field, 'formControl', control);\n control.setValidators(null);\n control.setAsyncValidators(null);\n field.props.disabled = !!field.props.disabled;\n const disabledObserver = observe(field, ['props', 'disabled'], ({\n firstChange,\n currentValue\n }) => {\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 if (!field.form || !hasKey(field)) {\n return;\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 for (let i = 0; i < paths.length - 1; i++) {\n const path = paths[i];\n if (!form.get([path])) {\n form.setControl(path, new FormGroup({}), {\n emitEvent\n });\n }\n form = form.get([path]);\n }\n const key = paths[paths.length - 1];\n if (!field._hide && form.get([key]) !== control) {\n form.setControl(key, control, {\n emitEvent\n });\n }\n}\nfunction updateValidity(c, onlySelf = false) {\n const status = c.status;\n const value = c.value;\n c.updateValueAndValidity({\n emitEvent: false,\n onlySelf\n });\n if (status !== c.status) {\n c.statusChanges.emit(c.status);\n }\n if (value !== c.value) {\n c.valueChanges.emit(c.value);\n }\n}\nfunction clearControl(form) {\n delete form?._fields;\n form.setValidators(null);\n form.setAsyncValidators(null);\n if (form instanceof FormGroup || form instanceof FormArray) {\n Object.values(form.controls).forEach(c => clearControl(c));\n }\n}\nlet FormlyTemplate = /*#__PURE__*/(() => {\n class FormlyTemplate {\n constructor(ref) {\n this.ref = ref;\n }\n ngOnChanges() {\n this.name = this.name || 'formly-group';\n }\n }\n FormlyTemplate.ɵfac = function FormlyTemplate_Factory(t) {\n return new (t || FormlyTemplate)(i0.ɵɵdirectiveInject(i0.TemplateRef));\n };\n FormlyTemplate.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormlyTemplate,\n selectors: [[\"\", \"formlyTemplate\", \"\"]],\n inputs: {\n name: [i0.ɵɵInputFlags.None, \"formlyTemplate\", \"name\"]\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return FormlyTemplate;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n// workarround for https://github.com/angular/angular/issues/43227#issuecomment-904173738\nlet FormlyFieldTemplates = /*#__PURE__*/(() => {\n class FormlyFieldTemplates {}\n FormlyFieldTemplates.ɵfac = function FormlyFieldTemplates_Factory(t) {\n return new (t || FormlyFieldTemplates)();\n };\n FormlyFieldTemplates.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: FormlyFieldTemplates,\n factory: FormlyFieldTemplates.ɵfac\n });\n return FormlyFieldTemplates;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The `` component is used to render the UI widget (layout + type) of a given `field`.\n */\nlet FormlyField = /*#__PURE__*/(() => {\n class FormlyField {\n constructor(config, renderer, _elementRef, hostContainerRef, form) {\n this.config = config;\n this.renderer = renderer;\n this._elementRef = _elementRef;\n this.hostContainerRef = hostContainerRef;\n this.form = form;\n this.hostObservers = [];\n this.componentRefs = [];\n this.hooksObservers = [];\n this.detectFieldBuild = false;\n this.valueChangesUnsubscribe = () => {};\n }\n get containerRef() {\n return this.config.extras.renderFormlyFieldElement ? this.viewContainerRef : this.hostContainerRef;\n }\n 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 return null;\n }\n ngAfterContentInit() {\n this.triggerHook('afterContentInit');\n }\n ngAfterViewInit() {\n this.triggerHook('afterViewInit');\n }\n ngDoCheck() {\n if (this.detectFieldBuild && this.field && this.field.options) {\n this.render();\n }\n }\n ngOnInit() {\n this.triggerHook('onInit');\n }\n ngOnChanges(changes) {\n this.triggerHook('onChanges', changes);\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 renderField(containerRef, f, wrappers = []) {\n if (this.containerRef === containerRef) {\n this.resetRefs(this.field);\n this.containerRef.clear();\n wrappers = this.field?.wrappers;\n }\n if (wrappers?.length > 0) {\n const [wrapper, ...wps] = wrappers;\n const {\n component\n } = this.config.getWrapper(wrapper);\n const ref = containerRef.createComponent(component);\n this.attachComponentRef(ref, f);\n observe(ref.instance, ['fieldComponent'], ({\n currentValue,\n previousValue,\n firstChange\n }) => {\n if (currentValue) {\n if (previousValue && previousValue._lContainer === currentValue._lContainer) {\n return;\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 !firstChange && ref.changeDetectorRef.detectChanges();\n }\n });\n } else if (f?.type) {\n const inlineType = this.form?.templates?.find(ref => ref.name === f.type);\n let ref;\n if (inlineType) {\n ref = containerRef.createEmbeddedView(inlineType.ref, {\n $implicit: f\n });\n } else {\n const {\n component\n } = this.config.getType(f.type, true);\n ref = containerRef.createComponent(component);\n }\n this.attachComponentRef(ref, f);\n }\n }\n triggerHook(name, changes) {\n if (name === 'onInit' || name === 'onChanges' && changes.field && !changes.field.firstChange) {\n this.valueChangesUnsubscribe();\n this.valueChangesUnsubscribe = this.fieldChanges(this.field);\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 if (name === 'onChanges' && changes.field) {\n this.resetRefs(changes.field.previousValue);\n this.render();\n }\n }\n attachComponentRef(ref, field) {\n this.componentRefs.push(ref);\n field._componentRefs.push(ref);\n if (ref instanceof ComponentRef) {\n Object.assign(ref.instance, {\n field\n });\n }\n }\n render() {\n if (!this.field) {\n return;\n }\n // require Formly build\n if (!this.field.options) {\n this.detectFieldBuild = true;\n return;\n }\n this.detectFieldBuild = false;\n this.hostObservers.forEach(hostObserver => hostObserver.unsubscribe());\n this.hostObservers = [observe(this.field, ['hide'], ({\n firstChange,\n currentValue\n }) => {\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 && 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 !firstChange && this.field.options.detectChanges(this.field);\n }), observe(this.field, ['className'], ({\n firstChange,\n currentValue\n }) => {\n if ((!firstChange || firstChange && currentValue) && (!this.config.extras.lazyRender || this.field.hide !== true)) {\n this.elementRef && this.renderer.setAttribute(this.elementRef.nativeElement, 'class', currentValue);\n }\n }), ...['touched', 'pristine', 'status'].map(prop => observe(this.field, ['formControl', prop], ({\n firstChange\n }) => !firstChange && markFieldForCheck(this.field)))];\n }\n resetRefs(field) {\n if (field) {\n if (field._localFields) {\n field._localFields = [];\n } else {\n defineHiddenProp(this.field, '_localFields', []);\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 this.componentRefs = [];\n }\n fieldChanges(field) {\n if (!field) {\n return () => {};\n }\n const subscribes = [observeDeep(field, ['props'], () => field.options.detectChanges(field))];\n if (field.options) {\n subscribes.push(observeDeep(field.options, ['formState'], () => field.options.detectChanges(field)));\n }\n for (const key of Object.keys(field._expressions || {})) {\n const expressionObserver = observe(field, ['_expressions', key], ({\n currentValue,\n previousValue\n }) => {\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 subscribes.push(() => {\n if (field._expressions[key]?.subscription) {\n field._expressions[key].subscription.unsubscribe();\n }\n expressionObserver.unsubscribe();\n });\n }\n for (const path of [['focus'], ['template'], ['fieldGroupClassName'], ['validation', 'show']]) {\n const fieldObserver = observe(field, path, ({\n firstChange\n }) => !firstChange && field.options.detectChanges(field));\n subscribes.push(() => fieldObserver.unsubscribe());\n }\n if (field.formControl && !field.fieldGroup) {\n const control = field.formControl;\n let valueChanges = control.valueChanges.pipe(distinctUntilChanged((x, y) => {\n if (x !== y || Array.isArray(x) || isObject(x)) {\n return false;\n }\n return true;\n }));\n if (control.value !== getFieldValue(field)) {\n valueChanges = valueChanges.pipe(startWith(control.value));\n }\n const {\n updateOn,\n debounce\n } = field.modelOptions;\n if ((!updateOn || updateOn === 'change') && debounce?.default > 0) {\n valueChanges = control.valueChanges.pipe(debounceTime(debounce.default));\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, {\n emitEvent: false,\n onlySelf: true\n });\n }\n field.parsers?.forEach(parserFn => value = parserFn(value));\n if (value !== field.formControl.value) {\n field.formControl.setValue(value);\n return;\n }\n if (hasKey(field)) {\n assignFieldValue(field, value);\n }\n field.options.fieldChanges.next({\n value,\n field,\n type: 'valueChanges'\n });\n });\n subscribes.push(() => sub.unsubscribe());\n }\n let templateFieldsSubs = [];\n observe(field, ['_localFields'], ({\n currentValue\n }) => {\n templateFieldsSubs.forEach(unsubscribe => unsubscribe());\n templateFieldsSubs = (currentValue || []).map(f => this.fieldChanges(f));\n });\n return () => {\n subscribes.forEach(unsubscribe => unsubscribe());\n templateFieldsSubs.forEach(unsubscribe => unsubscribe());\n };\n }\n }\n FormlyField.ɵfac = function FormlyField_Factory(t) {\n return new (t || FormlyField)(i0.ɵɵdirectiveInject(FormlyConfig), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(FormlyFieldTemplates, 8));\n };\n FormlyField.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FormlyField,\n selectors: [[\"formly-field\"]],\n viewQuery: function FormlyField_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7, ViewContainerRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.viewContainerRef = _t.first);\n }\n },\n inputs: {\n field: \"field\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 2,\n vars: 0,\n consts: [[\"container\", \"\"]],\n template: function FormlyField_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtemplate(0, FormlyField_ng_template_0_Template, 0, 0, \"ng-template\", null, 0, i0.ɵɵtemplateRefExtractor);\n }\n },\n styles: [\"[_nghost-%COMP%]:empty{display:none}\"]\n });\n return FormlyField;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The `` 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 `` component.\n */\nlet FormlyForm = /*#__PURE__*/(() => {\n class FormlyForm {\n constructor(builder, config, ngZone, fieldTemplates) {\n this.builder = builder;\n this.config = config;\n this.ngZone = ngZone;\n this.fieldTemplates = fieldTemplates;\n /** Event that is emitted when the model value is changed */\n this.modelChange = new EventEmitter();\n this.field = {\n type: 'formly-group'\n };\n this._modelChangeValue = {};\n this.valueChangesUnsubscribe = () => {};\n }\n /** The form instance which allow to track model value and validation status. */\n set form(form) {\n this.field.form = form;\n }\n get form() {\n return this.field.form;\n }\n /** The model to be represented by the form. */\n set model(model) {\n if (this.config.extras.immutable && this._modelChangeValue === model) {\n return;\n }\n this.setField({\n model\n });\n }\n get model() {\n return this.field.model;\n }\n /** The field configurations for building the form. */\n set fields(fieldGroup) {\n this.setField({\n fieldGroup\n });\n }\n get fields() {\n return this.field.fieldGroup;\n }\n /** Options for the form. */\n set options(options) {\n this.setField({\n options\n });\n }\n get options() {\n return this.field.options;\n }\n set templates(templates) {\n this.fieldTemplates.templates = templates;\n }\n ngDoCheck() {\n if (this.config.extras.checkExpressionOn === 'changeDetectionCheck') {\n this.checkExpressionChange();\n }\n }\n ngOnChanges(changes) {\n if (changes.fields && this.form) {\n clearControl(this.form);\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 ngOnDestroy() {\n this.valueChangesUnsubscribe();\n }\n checkExpressionChange() {\n this.field.options.checkExpressions?.(this.field);\n }\n valueChanges() {\n this.valueChangesUnsubscribe();\n const sub = this.field.options.fieldChanges.pipe(filter(({\n field,\n type\n }) => hasKey(field) && type === 'valueChanges'), switchMap(() => this.ngZone.onStable.asObservable().pipe(take(1)))).subscribe(() => 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 return () => sub.unsubscribe();\n }\n setField(field) {\n if (this.config.extras.immutable) {\n this.field = {\n ...this.field,\n ...clone(field)\n };\n } else {\n Object.keys(field).forEach(p => this.field[p] = field[p]);\n }\n }\n }\n FormlyForm.ɵfac = function FormlyForm_Factory(t) {\n return new (t || FormlyForm)(i0.ɵɵdirectiveInject(FormlyFormBuilder), i0.ɵɵdirectiveInject(FormlyConfig), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(FormlyFieldTemplates));\n };\n FormlyForm.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FormlyForm,\n selectors: [[\"formly-form\"]],\n contentQueries: function FormlyForm_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, FormlyTemplate, 4);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n }\n },\n inputs: {\n form: \"form\",\n model: \"model\",\n fields: \"fields\",\n options: \"options\"\n },\n outputs: {\n modelChange: \"modelChange\"\n },\n features: [i0.ɵɵProvidersFeature([FormlyFormBuilder, FormlyFieldTemplates]), i0.ɵɵNgOnChangesFeature],\n decls: 1,\n vars: 1,\n consts: [[3, \"field\"]],\n template: function FormlyForm_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"formly-field\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"field\", ctx.field);\n }\n },\n dependencies: [FormlyField],\n encapsulation: 2,\n changeDetection: 0\n });\n return FormlyForm;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Allow to link the `field` HTML attributes (`id`, `name` ...) and Event attributes (`focus`, `blur` ...) to an element in the DOM.\n */\nlet FormlyAttributes = /*#__PURE__*/(() => {\n class FormlyAttributes {\n constructor(renderer, elementRef, _document) {\n this.renderer = renderer;\n this.elementRef = elementRef;\n this.uiAttributesCache = {};\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 this.uiEvents = {\n listeners: [],\n events: ['click', 'keyup', 'keydown', 'keypress', 'focus', 'blur', 'change'],\n callback: (eventName, $event) => {\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 this.document = _document;\n }\n get props() {\n return this.field.props || {};\n }\n get fieldAttrElements() {\n return this.field?.['_elementRefs'] || [];\n }\n ngOnChanges(changes) {\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(this.renderer.listen(this.elementRef.nativeElement, eventName, e => this.uiEvents.callback(eventName, e)));\n }\n });\n if (this.props?.attributes) {\n observe(this.field, ['props', 'attributes'], ({\n currentValue,\n previousValue\n }) => {\n if (previousValue) {\n Object.keys(previousValue).forEach(attr => this.removeAttribute(attr));\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 this.detachElementRef(changes.field.previousValue);\n this.attachElementRef(changes.field.currentValue);\n if (this.fieldAttrElements.length === 1) {\n !this.id && this.field.id && this.setAttribute('id', this.field.id);\n this.focusObserver = observe(this.field, ['focus'], ({\n currentValue\n }) => {\n this.toggleFocus(currentValue);\n });\n }\n }\n if (changes.id) {\n this.setAttribute('id', this.id);\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;\n this.uiAttributes = [...FORMLY_VALIDATORS, 'tabindex', 'placeholder', 'readonly', 'disabled', 'step'].filter(attr => !element.hasAttribute || !element.hasAttribute(attr));\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 (this.uiAttributesCache[attr] !== value && (!this.props.attributes || !this.props.attributes.hasOwnProperty(attr.toLowerCase()))) {\n this.uiAttributesCache[attr] = value;\n if (value || value === 0) {\n this.setAttribute(attr, value === true ? attr : `${value}`);\n } else {\n this.removeAttribute(attr);\n }\n }\n }\n }\n ngOnDestroy() {\n this.uiEvents.listeners.forEach(listener => listener());\n this.detachElementRef(this.field);\n this.focusObserver?.unsubscribe();\n }\n toggleFocus(value) {\n const element = this.fieldAttrElements ? this.fieldAttrElements[0] : null;\n if (!element || !element.nativeElement.focus) {\n return;\n }\n const isFocused = !!this.document.activeElement && this.fieldAttrElements.some(({\n nativeElement\n }) => this.document.activeElement === nativeElement || nativeElement.contains(this.document.activeElement));\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 onFocus($event) {\n this.focusObserver?.setValue(true);\n this.props.focus?.(this.field, $event);\n }\n onBlur($event) {\n this.focusObserver?.setValue(false);\n this.props.blur?.(this.field, $event);\n }\n // handle custom `change` event, for regular ones rely on DOM listener\n onHostChange($event) {\n if ($event instanceof Event) {\n return;\n }\n this.onChange($event);\n }\n onChange($event) {\n this.props.change?.(this.field, $event);\n this.field.formControl?.markAsDirty();\n }\n attachElementRef(f) {\n if (!f) {\n return;\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 detachElementRef(f) {\n const index = f?.['_elementRefs'] ? this.fieldAttrElements.indexOf(this.elementRef) : -1;\n if (index !== -1) {\n f['_elementRefs'].splice(index, 1);\n }\n }\n setAttribute(attr, value) {\n this.renderer.setAttribute(this.elementRef.nativeElement, attr, value);\n }\n removeAttribute(attr) {\n this.renderer.removeAttribute(this.elementRef.nativeElement, attr);\n }\n }\n FormlyAttributes.ɵfac = function FormlyAttributes_Factory(t) {\n return new (t || FormlyAttributes)(i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(DOCUMENT));\n };\n FormlyAttributes.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FormlyAttributes,\n selectors: [[\"\", \"formlyAttributes\", \"\"]],\n hostBindings: function FormlyAttributes_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"change\", function FormlyAttributes_change_HostBindingHandler($event) {\n return ctx.onHostChange($event);\n });\n }\n },\n inputs: {\n field: [i0.ɵɵInputFlags.None, \"formlyAttributes\", \"field\"],\n id: \"id\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return FormlyAttributes;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FieldType = /*#__PURE__*/(() => {\n class FieldType {\n constructor() {\n this.field = {};\n }\n set _formlyControls(controls) {\n const f = this.field;\n f._localFields = controls.map(c => c.control._fields || []).flat().filter(f => f.formControl !== this.field.formControl);\n }\n get model() {\n return this.field.model;\n }\n get form() {\n return this.field.form;\n }\n get options() {\n return this.field.options;\n }\n get key() {\n return this.field.key;\n }\n get formControl() {\n return this.field.formControl;\n }\n get props() {\n return this.field.props || {};\n }\n /** @deprecated Use `props` instead. */\n get to() {\n return this.props;\n }\n get showError() {\n return this.options.showError(this);\n }\n get id() {\n return this.field.id;\n }\n get formState() {\n return this.options?.formState || {};\n }\n }\n FieldType.ɵfac = function FieldType_Factory(t) {\n return new (t || FieldType)();\n };\n FieldType.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FieldType,\n viewQuery: function FieldType_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(NgControl, 5);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._formlyControls = _t);\n }\n },\n inputs: {\n field: \"field\"\n }\n });\n return FieldType;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @ignore */\nlet FormlyGroup = /*#__PURE__*/(() => {\n class FormlyGroup extends FieldType {}\n FormlyGroup.ɵfac = /* @__PURE__ */(() => {\n let ɵFormlyGroup_BaseFactory;\n return function FormlyGroup_Factory(t) {\n return (ɵFormlyGroup_BaseFactory || (ɵFormlyGroup_BaseFactory = i0.ɵɵgetInheritedFactory(FormlyGroup)))(t || FormlyGroup);\n };\n })();\n FormlyGroup.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FormlyGroup,\n selectors: [[\"formly-group\"]],\n hostVars: 2,\n hostBindings: function FormlyGroup_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.field.fieldGroupClassName || \"\");\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature],\n ngContentSelectors: _c1,\n decls: 2,\n vars: 1,\n consts: [[3, \"field\", 4, \"ngFor\", \"ngForOf\"], [3, \"field\"]],\n template: function FormlyGroup_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef();\n i0.ɵɵtemplate(0, FormlyGroup_formly_field_0_Template, 1, 1, \"formly-field\", 0);\n i0.ɵɵprojection(1);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"ngForOf\", ctx.field.fieldGroup);\n }\n },\n dependencies: [FormlyField, i2$1.NgForOf],\n encapsulation: 2,\n changeDetection: 0\n });\n return FormlyGroup;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * The `` component renders the error message of a given `field`.\n */\nlet FormlyValidationMessage = /*#__PURE__*/(() => {\n class FormlyValidationMessage {\n constructor(config) {\n this.config = config;\n }\n ngOnChanges() {\n const EXPR_VALIDATORS = FORMLY_VALIDATORS.map(v => `templateOptions.${v}`);\n this.errorMessage$ = merge(this.field.formControl.statusChanges, !this.field.options ? of(null) : this.field.options.fieldChanges.pipe(filter(({\n field,\n type,\n property\n }) => {\n return field === this.field && type === 'expressionChanges' && (property.indexOf('validation') !== -1 || EXPR_VALIDATORS.indexOf(property) !== -1);\n }))).pipe(startWith(null), switchMap(() => isObservable(this.errorMessage) ? this.errorMessage : of(this.errorMessage)));\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 if (isObject(fieldForm.errors[error])) {\n if (fieldForm.errors[error].errorPath) {\n return undefined;\n }\n if (fieldForm.errors[error].message) {\n message = fieldForm.errors[error].message;\n }\n }\n if (this.field.validation?.messages?.[error]) {\n message = this.field.validation.messages[error];\n }\n if (this.field.validators?.[error]?.message) {\n message = this.field.validators[error].message;\n }\n if (this.field.asyncValidators?.[error]?.message) {\n message = this.field.asyncValidators[error].message;\n }\n if (typeof message === 'function') {\n return message(fieldForm.errors[error], this.field);\n }\n return message;\n }\n }\n return undefined;\n }\n }\n FormlyValidationMessage.ɵfac = function FormlyValidationMessage_Factory(t) {\n return new (t || FormlyValidationMessage)(i0.ɵɵdirectiveInject(FormlyConfig));\n };\n FormlyValidationMessage.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FormlyValidationMessage,\n selectors: [[\"formly-validation-message\"]],\n inputs: {\n field: \"field\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 2,\n vars: 3,\n template: function FormlyValidationMessage_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵtext(0);\n i0.ɵɵpipe(1, \"async\");\n }\n if (rf & 2) {\n i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(1, 1, ctx.errorMessage$));\n }\n },\n dependencies: [i2$1.AsyncPipe],\n encapsulation: 2,\n changeDetection: 0\n });\n return FormlyValidationMessage;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FieldArrayType = /*#__PURE__*/(() => {\n class FieldArrayType extends FieldType {\n onPopulate(field) {\n if (hasKey(field)) {\n const control = findControl(field);\n registerControl(field, control ? control : new FormArray([], {\n updateOn: field.modelOptions.updateOn\n }));\n }\n field.fieldGroup = field.fieldGroup || [];\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 for (let i = field.fieldGroup.length; i < length; i++) {\n const f = {\n ...clone(typeof field.fieldArray === 'function' ? field.fieldArray(field) : field.fieldArray)\n };\n if (f.key !== null) {\n f.key = `${i}`;\n }\n field.fieldGroup.push(f);\n }\n }\n add(i, initialModel, {\n markAsDirty\n } = {\n markAsDirty: true\n }) {\n i = i == null ? this.field.fieldGroup.length : i;\n if (!this.model) {\n assignFieldValue(this.field, []);\n }\n this.model.splice(i, 0, initialModel ? clone(initialModel) : undefined);\n this._build();\n markAsDirty && this.formControl.markAsDirty();\n }\n remove(i, {\n markAsDirty\n } = {\n markAsDirty: true\n }) {\n this.model.splice(i, 1);\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 markAsDirty && this.formControl.markAsDirty();\n }\n _build() {\n const fields = this.field.formControl._fields ?? [this.field];\n fields.forEach(f => this.options.build(f));\n this.field.options.detectChanges(this.field);\n this.options.fieldChanges.next({\n field: this.field,\n value: getFieldValue(this.field),\n type: 'valueChanges'\n });\n }\n updateArrayElementKey(f, newKey) {\n if (hasKey(f)) {\n f.key = newKey;\n return;\n }\n if (!f.fieldGroup?.length) {\n return;\n }\n for (let i = 0; i < f.fieldGroup.length; i++) {\n this.updateArrayElementKey(f.fieldGroup[i], newKey);\n }\n }\n }\n FieldArrayType.ɵfac = /* @__PURE__ */(() => {\n let ɵFieldArrayType_BaseFactory;\n return function FieldArrayType_Factory(t) {\n return (ɵFieldArrayType_BaseFactory || (ɵFieldArrayType_BaseFactory = i0.ɵɵgetInheritedFactory(FieldArrayType)))(t || FieldArrayType);\n };\n })();\n FieldArrayType.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FieldArrayType,\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return FieldArrayType;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet FieldWrapper = /*#__PURE__*/(() => {\n class FieldWrapper extends FieldType {\n set _formlyControls(_) {}\n set _staticContent(content) {\n this.fieldComponent = content;\n }\n }\n FieldWrapper.ɵfac = /* @__PURE__ */(() => {\n let ɵFieldWrapper_BaseFactory;\n return function FieldWrapper_Factory(t) {\n return (ɵFieldWrapper_BaseFactory || (ɵFieldWrapper_BaseFactory = i0.ɵɵgetInheritedFactory(FieldWrapper)))(t || FieldWrapper);\n };\n })();\n FieldWrapper.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: FieldWrapper,\n viewQuery: function FieldWrapper_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c2, 5, ViewContainerRef);\n i0.ɵɵviewQuery(_c2, 7, ViewContainerRef);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.fieldComponent = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._staticContent = _t.first);\n }\n },\n features: [i0.ɵɵInheritDefinitionFeature]\n });\n return FieldWrapper;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/** @ignore */\nlet FormlyTemplateType = /*#__PURE__*/(() => {\n class FormlyTemplateType extends FieldType {\n constructor(sanitizer) {\n super();\n this.sanitizer = sanitizer;\n this.innerHtml = {};\n }\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 ? this.sanitizer.bypassSecurityTrustHtml(this.field.template) : this.field.template\n };\n }\n return this.innerHtml.content;\n }\n }\n FormlyTemplateType.ɵfac = function FormlyTemplateType_Factory(t) {\n return new (t || FormlyTemplateType)(i0.ɵɵdirectiveInject(i1.DomSanitizer));\n };\n FormlyTemplateType.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: FormlyTemplateType,\n selectors: [[\"formly-template\"]],\n features: [i0.ɵɵInheritDefinitionFeature],\n decls: 1,\n vars: 1,\n consts: [[3, \"innerHtml\"]],\n template: function FormlyTemplateType_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 0);\n }\n if (rf & 2) {\n i0.ɵɵproperty(\"innerHtml\", ctx.template, i0.ɵɵsanitizeHtml);\n }\n },\n encapsulation: 2,\n changeDetection: 0\n });\n return FormlyTemplateType;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction evalStringExpression(expression, argNames) {\n try {\n return Function(...argNames, `return ${expression};`);\n } catch (error) {\n console.error(error);\n }\n}\nfunction evalExpression(expression, thisArg, argVal) {\n if (typeof expression === 'function') {\n return expression.apply(thisArg, argVal);\n } else {\n return expression ? true : false;\n }\n}\nclass FieldExpressionExtension {\n onPopulate(field) {\n if (field._expressions) {\n return;\n }\n // cache built expression\n defineHiddenProp(field, '_expressions', {});\n observe(field, ['hide'], ({\n currentValue,\n firstChange\n }) => {\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 if (field.hideExpression) {\n observe(field, ['hideExpression'], ({\n currentValue: expr\n }) => {\n field._expressions.hide = this.parseExpressions(field, 'hide', typeof expr === 'boolean' ? () => expr : expr);\n });\n }\n const evalExpr = (key, expr) => {\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.pipe(tap(v => {\n this.evalExpr(field, key, v);\n field.options._detectChanges(field);\n }))\n };\n }\n };\n field.expressions = field.expressions || {};\n for (const key of Object.keys(field.expressions)) {\n observe(field, ['expressions', key], ({\n currentValue: expr\n }) => {\n evalExpr(key, isFunction(expr) ? (...args) => expr(field, args[3]) : expr);\n });\n }\n field.expressionProperties = field.expressionProperties || {};\n for (const key of Object.keys(field.expressionProperties)) {\n observe(field, ['expressionProperties', key], ({\n currentValue\n }) => evalExpr(key, currentValue));\n }\n }\n postPopulate(field) {\n if (field.parent) {\n return;\n }\n if (!field.options.checkExpressions) {\n let checkLocked = false;\n field.options.checkExpressions = (f, ignoreCache) => {\n if (checkLocked) {\n return;\n }\n checkLocked = true;\n const fieldChanged = this.checkExpressions(f, ignoreCache);\n const options = field.options;\n options._hiddenFieldsForCheck.sort(f => f.hide ? -1 : 1).forEach(f => this.changeHideState(f, f.hide, !ignoreCache));\n options._hiddenFieldsForCheck = [];\n if (fieldChanged) {\n this.checkExpressions(field);\n }\n checkLocked = false;\n };\n field.options._checkField = (f, ignoreCache) => {\n console.warn(`Formly: 'options._checkField' is deprecated since v6.0, use 'options.checkExpressions' instead.`);\n field.options.checkExpressions(f, ignoreCache);\n };\n }\n }\n parseExpressions(field, path, expr) {\n let parentExpression;\n if (field.parent && ['hide', 'props.disabled'].includes(path)) {\n const rootValue = f => {\n return path === 'hide' ? f.hide : f.props.disabled;\n };\n parentExpression = () => {\n let root = field.parent;\n while (root.parent && !rootValue(root)) {\n root = root.parent;\n }\n return rootValue(root);\n };\n }\n expr = expr || (() => false);\n if (typeof expr === 'string') {\n expr = evalStringExpression(expr, ['model', 'formState', 'field']);\n }\n let currentValue;\n return {\n callback: ignoreCache => {\n try {\n const exprValue = evalExpression(parentExpression ? (...args) => parentExpression(field) || expr(...args) : expr, {\n field\n }, [field.model, field.options.formState, field, ignoreCache]);\n if (ignoreCache || currentValue !== exprValue && (!isObject(exprValue) || isObservable(exprValue) || JSON.stringify(exprValue) !== JSON.stringify(currentValue))) {\n currentValue = exprValue;\n this.evalExpr(field, path, exprValue);\n return true;\n }\n return false;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${path}\"] ${error.message}`;\n throw error;\n }\n }\n };\n }\n checkExpressions(field, ignoreCache = false) {\n if (!field) {\n return false;\n }\n let fieldChanged = false;\n if (field._expressions) {\n for (const key of Object.keys(field._expressions)) {\n field._expressions[key].callback?.(ignoreCache) && (fieldChanged = true);\n }\n }\n field.fieldGroup?.forEach(f => this.checkExpressions(f, ignoreCache) && (fieldChanged = true));\n return fieldChanged;\n }\n changeDisabledState(field, value) {\n if (field.fieldGroup) {\n field.fieldGroup.filter(f => !f._expressions.hasOwnProperty('props.disabled')).forEach(f => this.changeDisabledState(f, value));\n }\n if (hasKey(field) && field.props.disabled !== value) {\n field.props.disabled = value;\n }\n }\n changeHideState(field, hide, resetOnHide) {\n if (field.fieldGroup) {\n field.fieldGroup.filter(f => !f._expressions.hide).forEach(f => this.changeHideState(f, hide, resetOnHide));\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 if (hide === true && (!c._fields || c._fields.every(f => !!f._hide))) {\n unregisterControl(field, true);\n if (resetOnHide && field.resetOnHide) {\n assignFieldValue(field, undefined);\n field.formControl.reset({\n value: undefined,\n disabled: field.formControl.disabled\n });\n field.options.fieldChanges.next({\n value: undefined,\n field,\n type: 'valueChanges'\n });\n if (field.fieldGroup && field.formControl instanceof FormArray) {\n field.fieldGroup.length = 0;\n }\n }\n } else if (hide === false) {\n if (field.resetOnHide && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n assignFieldValue(field, field.defaultValue);\n }\n registerControl(field, undefined, true);\n if (field.resetOnHide && field.fieldArray && field.fieldGroup?.length !== field.model?.length) {\n field.options.build(field);\n }\n }\n }\n if (field.options.fieldChanges) {\n field.options.fieldChanges.next({\n field,\n type: 'hidden',\n value: hide\n });\n }\n }\n evalExpr(field, prop, value) {\n if (prop.indexOf('model.') === 0) {\n const key = prop.replace(/^model\\./, ''),\n parent = field.fieldGroup ? field : field.parent;\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({\n key,\n parent,\n model: field.model\n }, value);\n if (control && !(isNil(control.value) && isNil(value)) && control.value !== value) {\n control.patchValue(value);\n }\n } else {\n try {\n let target = 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 target[paths[lastIndex]] = value;\n } catch (error) {\n error.message = `[Formly Error] [Expression \"${prop}\"] ${error.message}`;\n throw error;\n }\n if (['templateOptions.disabled', 'props.disabled'].includes(prop) && hasKey(field)) {\n this.changeDisabledState(field, value);\n }\n }\n this.emitExpressionChanges(field, prop, value);\n }\n emitExpressionChanges(field, property, value) {\n if (!field.options.fieldChanges) {\n return;\n }\n field.options.fieldChanges.next({\n field,\n type: 'expressionChanges',\n property,\n value\n });\n }\n _evalExpressionPath(field, prop) {\n if (field._expressions[prop] && field._expressions[prop].paths) {\n return field._expressions[prop].paths;\n }\n let paths = [];\n if (prop.indexOf('[') === -1) {\n paths = prop.split('.');\n } else {\n prop.split(/[[\\]]{1,2}/) // https://stackoverflow.com/a/20198206\n .filter(p => p).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 if (field._expressions[prop]) {\n field._expressions[prop].paths = paths;\n }\n return paths;\n }\n}\nclass FieldValidationExtension {\n constructor(config) {\n this.config = config;\n }\n onPopulate(field) {\n this.initFieldValidation(field, 'validators');\n this.initFieldValidation(field, 'asyncValidators');\n }\n initFieldValidation(field, type) {\n const validators = [];\n if (type === 'validators' && !(field.hasOwnProperty('fieldGroup') && !hasKey(field))) {\n validators.push(this.getPredefinedFieldValidation(field));\n }\n if (field[type]) {\n for (const validatorName of Object.keys(field[type])) {\n validatorName === 'validation' ? validators.push(...field[type].validation.map(v => this.wrapNgValidatorFn(field, v))) : validators.push(this.wrapNgValidatorFn(field, field[type][validatorName], validatorName));\n }\n }\n defineHiddenProp(field, '_' + type, validators);\n }\n getPredefinedFieldValidation(field) {\n let VALIDATORS = [];\n FORMLY_VALIDATORS.forEach(opt => observe(field, ['props', opt], ({\n currentValue,\n firstChange\n }) => {\n VALIDATORS = VALIDATORS.filter(o => o !== opt);\n if (opt === 'required' && currentValue != null && typeof currentValue !== 'boolean') {\n console.warn(`Formly: Invalid prop 'required' of type '${typeof currentValue}', expected 'boolean' (Field:${field.key}).`);\n }\n if (currentValue != null && currentValue !== false) {\n VALIDATORS.push(opt);\n }\n if (!firstChange && field.formControl) {\n updateValidity(field.formControl);\n }\n }));\n return control => {\n if (VALIDATORS.length === 0) {\n return null;\n }\n return Validators.compose(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 = this.config.getValidatorMessage('minlength') || field.validation?.messages?.minlength ? 'minlength' : 'minLength';\n return minLengthResult ? {\n [minLengthKey]: minLengthResult.minlength\n } : null;\n case 'maxLength':\n const maxLengthResult = Validators.maxLength(value)(control);\n const maxLengthKey = this.config.getValidatorMessage('maxlength') || field.validation?.messages?.maxlength ? 'maxlength' : 'maxLength';\n return maxLengthResult ? {\n [maxLengthKey]: maxLengthResult.maxlength\n } : 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 }))(control);\n };\n }\n wrapNgValidatorFn(field, validator, validatorName) {\n let validatorOption;\n if (typeof validator === 'string') {\n validatorOption = clone(this.config.getValidator(validator));\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 if (typeof validator === 'object' && validator.expression) {\n const {\n expression,\n ...options\n } = validator;\n validatorOption = {\n name: validatorName,\n validation: expression,\n options: Object.keys(options).length > 0 ? options : null\n };\n }\n if (typeof validator === 'function') {\n validatorOption = {\n name: validatorName,\n validation: validator\n };\n }\n return control => {\n const errors = validatorOption.validation(control, field, validatorOption.options);\n if (isPromise(errors)) {\n return errors.then(v => this.handleResult(field, validatorName ? !!v : v, validatorOption));\n }\n if (isObservable(errors)) {\n return errors.pipe(map(v => this.handleResult(field, validatorName ? !!v : v, validatorOption)));\n }\n return this.handleResult(field, validatorName ? !!errors : errors, validatorOption);\n };\n }\n handleResult(field, errors, {\n name,\n options\n }) {\n if (typeof errors === 'boolean') {\n errors = errors ? null : {\n [name]: options ? options : true\n };\n }\n const ctrl = field.formControl;\n ctrl?._childrenErrors?.[name]?.();\n if (isObject(errors)) {\n Object.keys(errors).forEach(name => {\n const errorPath = errors[name].errorPath ? errors[name].errorPath : options?.errorPath;\n const childCtrl = errorPath ? field.formControl.get(errorPath) : null;\n if (childCtrl) {\n const {\n errorPath: _errorPath,\n ...opts\n } = errors[name];\n childCtrl.setErrors({\n ...(childCtrl.errors || {}),\n [name]: opts\n });\n !ctrl._childrenErrors && defineHiddenProp(ctrl, '_childrenErrors', {});\n ctrl._childrenErrors[name] = () => {\n const {\n [name]: _toDelete,\n ...childErrors\n } = childCtrl.errors || {};\n childCtrl.setErrors(Object.keys(childErrors).length === 0 ? null : childErrors);\n };\n }\n });\n }\n return errors;\n }\n}\nclass FieldFormExtension {\n prePopulate(field) {\n if (!this.root) {\n this.root = field;\n }\n if (field.parent) {\n Object.defineProperty(field, 'form', {\n get: () => field.parent.formControl,\n configurable: true\n });\n }\n }\n onPopulate(field) {\n if (field.hasOwnProperty('fieldGroup') && !hasKey(field)) {\n defineHiddenProp(field, 'formControl', field.form);\n } else {\n this.addFormControl(field);\n }\n }\n postPopulate(field) {\n if (this.root !== field) {\n return;\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 addFormControl(field) {\n let control = findControl(field);\n if (field.fieldArray) {\n return;\n }\n if (!control) {\n const controlOptions = {\n updateOn: field.modelOptions.updateOn\n };\n if (field.fieldGroup) {\n control = new FormGroup({}, controlOptions);\n } else {\n const value = hasKey(field) ? getFieldValue(field) : field.defaultValue;\n control = new FormControl({\n value,\n disabled: !!field.props.disabled\n }, {\n ...controlOptions,\n initialValueIsDefault: true\n });\n }\n }\n registerControl(field, control);\n }\n setValidators(field, disabled = false) {\n if (disabled === false && hasKey(field) && field.props?.disabled) {\n disabled = true;\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 {\n formControl: c\n } = field;\n if (c) {\n if (hasKey(field) && c instanceof FormControl) {\n if (disabled && c.enabled) {\n c.disable({\n emitEvent: false,\n onlySelf: true\n });\n markForCheck = true;\n }\n if (!disabled && c.disabled) {\n c.enable({\n emitEvent: false,\n onlySelf: true\n });\n markForCheck = true;\n }\n }\n if (null === c.validator && this.hasValidators(field, '_validators')) {\n c.setValidators(() => {\n const v = Validators.compose(this.mergeValidators(field, '_validators'));\n return v ? v(c) : null;\n });\n markForCheck = true;\n }\n if (null === c.asyncValidator && this.hasValidators(field, '_asyncValidators')) {\n c.setAsyncValidators(() => {\n const v = Validators.composeAsync(this.mergeValidators(field, '_asyncValidators'));\n return v ? v(c) : of(null);\n });\n markForCheck = true;\n }\n if (markForCheck) {\n updateValidity(c, true);\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 return markForCheck;\n }\n hasValidators(field, type) {\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 return field.fieldGroup?.some(f => f?.fieldGroup && !hasKey(f) && this.hasValidators(f, type));\n }\n mergeValidators(field, type) {\n const validators = [];\n const c = field.formControl;\n if (c?._fields?.length > 1) {\n c._fields.filter(f => !f._hide).forEach(f => validators.push(...f[type]));\n } else if (field[type]) {\n validators.push(...field[type]);\n }\n if (field.fieldGroup) {\n field.fieldGroup.filter(f => f?.fieldGroup && !hasKey(f)).forEach(f => validators.push(...this.mergeValidators(f, type)));\n }\n return validators;\n }\n}\nclass CoreExtension {\n constructor(config) {\n this.config = config;\n this.formId = 0;\n }\n prePopulate(field) {\n const root = field.parent;\n this.initRootOptions(field);\n this.initFieldProps(field);\n if (root) {\n Object.defineProperty(field, 'options', {\n get: () => root.options,\n configurable: true\n });\n Object.defineProperty(field, 'model', {\n get: () => hasKey(field) && field.fieldGroup ? getFieldValue(field) : root.model,\n configurable: true\n });\n }\n Object.defineProperty(field, 'get', {\n value: key => getField(field, key),\n configurable: true\n });\n this.getFieldComponentInstance(field).prePopulate?.(field);\n }\n onPopulate(field) {\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', {\n get: () => field,\n configurable: true\n });\n Object.defineProperty(f, 'index', {\n get: () => index,\n configurable: true\n });\n }\n this.formId++;\n });\n }\n }\n postPopulate(field) {\n this.getFieldComponentInstance(field).postPopulate?.(field);\n }\n initFieldProps(field) {\n field.props ?? (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 initRootOptions(field) {\n if (field.parent) {\n return;\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 if (!options.fieldChanges) {\n defineHiddenProp(options, 'fieldChanges', new Subject());\n }\n if (!options._hiddenFieldsForCheck) {\n options._hiddenFieldsForCheck = [];\n }\n options._markForCheck = f => {\n console.warn(`Formly: 'options._markForCheck' is deprecated since v6.0, use 'options.detectChanges' instead.`);\n options.detectChanges(f);\n };\n options._detectChanges = f => {\n if (f._componentRefs) {\n markFieldForCheck(f);\n }\n f.fieldGroup?.forEach(f => f && options._detectChanges(f));\n };\n options.detectChanges = f => {\n f.options.checkExpressions?.(f);\n options._detectChanges(f);\n };\n options.resetModel = model => {\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 observe(options, ['parentForm', 'submitted']).setValue(false, false);\n options.build(field);\n field.form.reset(field.model);\n };\n options.updateInitialValue = model => options._initialModel = clone(model ?? field.model);\n field.options.updateInitialValue();\n }\n initFieldOptions(field) {\n reverseDeepMerge(field, {\n id: getFieldId(`formly_${this.formId}`, field, field.index),\n hooks: {},\n modelOptions: {},\n validation: {\n messages: {}\n },\n props: !field.type || !hasKey(field) ? {} : {\n label: '',\n placeholder: '',\n disabled: false\n }\n });\n if (this.config.extras.resetFieldOnHide && field.resetOnHide !== false) {\n field.resetOnHide = true;\n }\n if (field.type !== 'formly-template' && (field.template || field.expressions?.template || field.expressionProperties?.template)) {\n field.type = 'formly-template';\n }\n if (!field.type && field.fieldGroup) {\n field.type = 'formly-group';\n }\n if (field.type) {\n this.config.getMergedField(field);\n }\n if (hasKey(field) && !isUndefined(field.defaultValue) && isUndefined(getFieldValue(field))) {\n const isHidden = f => 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 if (setDefaultValue) {\n assignFieldValue(field, field.defaultValue);\n }\n }\n field.wrappers = field.wrappers || [];\n }\n getFieldComponentInstance(field) {\n const componentRefInstance = () => {\n let componentRef = this.config.resolveFieldTypeRef(field);\n const fieldComponentRef = field._componentRefs?.slice(-1)[0];\n if (fieldComponentRef instanceof ComponentRef && fieldComponentRef?.componentType === componentRef?.componentType) {\n componentRef = fieldComponentRef;\n }\n return componentRef?.instance;\n };\n if (!field._proxyInstance) {\n defineHiddenProp(field, '_proxyInstance', new Proxy({}, {\n get: (_, prop) => componentRefInstance()?.[prop],\n set: (_, prop, value) => componentRefInstance()[prop] = value\n }));\n }\n return field._proxyInstance;\n }\n}\nfunction defaultFormlyConfig(config) {\n return {\n types: [{\n name: 'formly-group',\n component: FormlyGroup\n }, {\n name: 'formly-template',\n component: FormlyTemplateType\n }],\n extensions: [{\n name: 'core',\n extension: new CoreExtension(config),\n priority: -250\n }, {\n name: 'field-validation',\n extension: new FieldValidationExtension(config),\n priority: -200\n }, {\n name: 'field-form',\n extension: new FieldFormExtension(),\n priority: -150\n }, {\n name: 'field-expression',\n extension: new FieldExpressionExtension(),\n priority: -100\n }]\n };\n}\nlet FormlyModule = /*#__PURE__*/(() => {\n class FormlyModule {\n constructor(configService, configs = []) {\n if (!configs) {\n return;\n }\n configs.forEach(config => configService.addConfig(config));\n }\n static forRoot(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [{\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: defaultFormlyConfig,\n deps: [FormlyConfig]\n }, {\n provide: FORMLY_CONFIG,\n useValue: config,\n multi: true\n }, FormlyConfig, FormlyFormBuilder]\n };\n }\n static forChild(config = {}) {\n return {\n ngModule: FormlyModule,\n providers: [{\n provide: FORMLY_CONFIG,\n multi: true,\n useFactory: defaultFormlyConfig,\n deps: [FormlyConfig]\n }, {\n provide: FORMLY_CONFIG,\n useValue: config,\n multi: true\n }, FormlyFormBuilder]\n };\n }\n }\n FormlyModule.ɵfac = function FormlyModule_Factory(t) {\n return new (t || FormlyModule)(i0.ɵɵinject(FormlyConfig), i0.ɵɵinject(FORMLY_CONFIG, 8));\n };\n FormlyModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: FormlyModule\n });\n FormlyModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[CommonModule]]\n });\n return FormlyModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/*\n * Public API Surface of core\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { FORMLY_CONFIG, FieldArrayType, FieldType, FieldWrapper, FormlyConfig, FormlyField, FormlyForm, FormlyFormBuilder, FormlyModule, FormlyAttributes as ɵFormlyAttributes, FormlyGroup as ɵFormlyGroup, FormlyTemplate as ɵFormlyTemplate, FormlyValidationMessage as ɵFormlyValidationMessage, clone as ɵclone, defineHiddenProp as ɵdefineHiddenProp, getFieldValue as ɵgetFieldValue, hasKey as ɵhasKey, observe as ɵobserve, reverseDeepMerge as ɵreverseDeepMerge };\n"],"mappings":"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","names":["_c0","FormlyField_ng_template_0_Template","rf","ctx","_c1","FormlyGroup_formly_field_0_Template","ɵɵelement","f_r1","ɵɵproperty","_c2","disableTreeValidityCall","form","callback","_updateTreeValidity","getFieldId","formId","field","index","type","Type","hasKey","isNil","getKeyPath","path","key","defineHiddenProp","FORMLY_VALIDATORS","assignFieldValue","value","paths","root","k","m","model","assignModelValue","i","isObject","clone","getFieldValue","reverseDeepMerge","dest","args","src","srcArg","isBlankString","objAndSameType","isUndefined","isFunction","obj1","obj2","x","isPromise","obj","isObservable","TemplateRef","AbstractControl","v","proto","c","newVal","prop","propDesc","defaultValue","observeDeep","source","setFn","observers","unsubscribe","observer","observe","firstChange","currentValue","o","target","state","enumerable","previousValue","changeFn","emitEvent","getField","f","len","markFieldForCheck","ref","ComponentRef$1","ChangeDetectorRef","FORMLY_CONFIG","InjectionToken","FormlyConfig","config","validator","wrapper","validation","__spreadValues","acc","curr","__spreadProps","options","option","name","throwIfNotFound","extendDefaults","defaultOptions","componentRef","_viewContainerRef","_injector","e","message","extensionOptions","extensionOption","priority","a","b","prio","extendedType","t","ɵɵdefineInjectable","FormlyFormBuilder","injector","viewContainerRef","parentForm","fieldGroup","extensions","extension","FormGroup","ɵɵinject","Injector","ViewContainerRef","FormGroupDirective","unregisterControl","control","fieldIndex","opts","FormArray","findControl","registerControl","disabledObserver","FormControl","updateValidity","onlySelf","status","clearControl","FormlyTemplate","ɵɵdirectiveInject","ɵɵdefineDirective","InputFlags","ɵɵNgOnChangesFeature","FormlyFieldTemplates","FormlyField","renderer","_elementRef","hostContainerRef","changes","hostObserver","containerRef","wrappers","wps","component","viewRef","inlineType","sub","subscribes","expressionObserver","fieldObserver","valueChanges","distinctUntilChanged","y","startWith","updateOn","debounce","debounceTime","parserFn","templateFieldsSubs","Renderer2","ElementRef","ɵɵdefineComponent","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","ɵɵtemplate","ɵɵtemplateRefExtractor","FormlyForm","builder","ngZone","fieldTemplates","EventEmitter","templates","filter","switchMap","take","p","NgZone","dirIndex","ɵɵcontentQuery","ɵɵProvidersFeature","FormlyAttributes","elementRef","_document","eventName","$event","listener","attr","element","isFocused","nativeElement","DOCUMENT","ɵɵlistener","FieldType","controls","NgControl","FormlyGroup","ɵFormlyGroup_BaseFactory","ɵɵgetInheritedFactory","ɵɵclassMap","ɵɵInheritDefinitionFeature","ɵɵprojectionDef","ɵɵprojection","NgForOf","FormlyValidationMessage","EXPR_VALIDATORS","merge","property","of","fieldForm","error","ɵɵtext","ɵɵpipe","ɵɵtextInterpolate","ɵɵpipeBind1","AsyncPipe","FieldArrayType","length","initialModel","markAsDirty","newKey","ɵFieldArrayType_BaseFactory","FieldWrapper","_","content","ɵFieldWrapper_BaseFactory","FormlyTemplateType","sanitizer","DomSanitizer","ɵɵsanitizeHtml","evalStringExpression","expression","argNames","evalExpression","thisArg","argVal","FieldExpressionExtension","expr","evalExpr","Observable","tap","checkLocked","ignoreCache","fieldChanged","parentExpression","rootValue","exprValue","hide","resetOnHide","parent","lastIndex","arrayPath","FieldValidationExtension","validators","validatorName","VALIDATORS","opt","Validators","minLengthResult","minLengthKey","maxLengthResult","maxLengthKey","validatorOption","_a","__objRest","errors","map","ctrl","errorPath","childCtrl","_errorPath","_toDelete","childErrors","__restKey","FieldFormExtension","controlOptions","disabled","markForCheck","CoreExtension","props","Subject","isHidden","setDefaultValue","componentRefInstance","fieldComponentRef","defaultFormlyConfig","FormlyModule","configService","configs","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule"],"x_google_ignoreList":[0]}