{"version":3,"file":"ngx-formly-core-json-schema.mjs","sources":["../../../../src/core/json-schema/src/formly-json-schema.service.ts","../../../../src/core/json-schema/src/ngx-formly-core-json-schema.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { FormlyFieldConfig } from '@ngx-formly/core';\nimport { JSONSchema7, JSONSchema7Definition } from 'json-schema';\nimport { AbstractControl, UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport {\n  ɵreverseDeepMerge as reverseDeepMerge,\n  ɵgetFieldValue as getFieldValue,\n  ɵclone as clone,\n  ɵhasKey as hasKey,\n} from '@ngx-formly/core';\nimport { tap } from 'rxjs/operators';\n\nexport interface FormlyJsonschemaOptions {\n  /**\n   * allows to intercept the mapping, taking the already mapped\n   * formly field and the original JSONSchema source from which it\n   * was mapped.\n   */\n  map?: (mappedField: FormlyFieldConfig, mapSource: JSONSchema7) => FormlyFieldConfig;\n}\n\ninterface FormlyJSONSchema7 extends JSONSchema7 {\n  widget?: { formlyConfig: FormlyFieldConfig };\n}\n\n// https://stackoverflow.com/a/27865285\nfunction decimalPlaces(a: number) {\n  if (!isFinite(a)) {\n    return 0;\n  }\n\n  let e = 1,\n    p = 0;\n  while (Math.round(a * e) / e !== a) {\n    e *= 10;\n    p++;\n  }\n\n  return p;\n}\n\nfunction isEmpty(v: any) {\n  return v === '' || v == null;\n}\n\nfunction isObject(v: any) {\n  return v != null && typeof v === 'object' && !Array.isArray(v);\n}\n\nfunction isInteger(value: any) {\n  return Number.isInteger ? Number.isInteger(value) : typeof value === 'number' && Math.floor(value) === value;\n}\n\nfunction isConst(schema: JSONSchema7Definition) {\n  return typeof schema === 'object' && (schema.hasOwnProperty('const') || (schema.enum && schema.enum.length === 1));\n}\n\nfunction toNumber(value: string | number | null) {\n  if (value === '' || value === undefined) {\n    return undefined;\n  }\n\n  if (value === null) {\n    return null;\n  }\n\n  if (typeof value === 'number') {\n    return value;\n  }\n\n  const val = parseFloat(value);\n  return !isNaN(val) ? val : value;\n}\n\nfunction totalMatchedFields(field: FormlyFieldConfig): number {\n  if (!field.fieldGroup) {\n    return hasKey(field) && getFieldValue(field) !== undefined ? 1 : 0;\n  }\n\n  const total = field.fieldGroup.reduce((s, f) => totalMatchedFields(f) + s, 0);\n  if (total === 0 && hasKey(field)) {\n    const value = getFieldValue(field);\n    if (\n      value === null ||\n      (value !== undefined && ((field.fieldArray && Array.isArray(value)) || (!field.fieldArray && isObject(value))))\n    ) {\n      return 1;\n    }\n  }\n\n  return total;\n}\n\ninterface IOptions extends FormlyJsonschemaOptions {\n  schema: FormlyJSONSchema7;\n  resetOnHide?: boolean;\n  shareFormControl?: boolean;\n  ignoreDefault?: boolean;\n  strict?: boolean;\n  readOnly?: boolean;\n  key?: FormlyFieldConfig['key'];\n  isOptional?: boolean;\n  conditionalSchemas?: JSONSchema7[];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FormlyJsonschema {\n  toFieldConfig(schema: JSONSchema7, options?: FormlyJsonschemaOptions): FormlyFieldConfig {\n    schema = clone(schema);\n    return this._toFieldConfig(schema, { schema, ...(options || {}) });\n  }\n\n  private _toFieldConfig(schema: FormlyJSONSchema7, { key, isOptional, ...options }: IOptions): FormlyFieldConfig {\n    schema = this.resolveSchema(schema, options);\n    const types = this.guessSchemaType(schema);\n\n    let field: FormlyFieldConfig & { shareFormControl?: boolean } = {\n      type: types[0],\n      defaultValue: schema.default,\n      props: {\n        label: schema.title,\n        readonly: schema.readOnly,\n        description: schema.description,\n      },\n    };\n\n    if (key != null) {\n      field.key = key;\n    }\n\n    if (!options.ignoreDefault && (schema.readOnly || options.readOnly)) {\n      field.props.disabled = true;\n      options = { ...options, readOnly: true };\n    }\n\n    if (options.resetOnHide) {\n      field.resetOnHide = true;\n    }\n\n    if (options.shareFormControl === false) {\n      field.shareFormControl = false;\n    }\n\n    if (field.defaultValue === undefined && types.length === 1 && isOptional === false) {\n      switch (types[0]) {\n        case 'null': {\n          field.defaultValue = null;\n          break;\n        }\n        case 'string': {\n          field.defaultValue = '';\n          break;\n        }\n        case 'object': {\n          field.defaultValue = {};\n          break;\n        }\n        case 'array': {\n          field.defaultValue = schema.minItems > 0 ? Array.from(new Array(schema.minItems)) : [];\n          break;\n        }\n      }\n    }\n\n    if (options.ignoreDefault) {\n      delete field.defaultValue;\n    }\n\n    this.addValidator(field, 'type', {\n      schemaType: types,\n      expression: ({ value }: AbstractControl) => {\n        if (value === undefined) {\n          return true;\n        }\n\n        if (value === null && types.indexOf('null') !== -1) {\n          return true;\n        }\n\n        switch (types[0]) {\n          case 'null': {\n            return typeof value === null;\n          }\n          case 'string': {\n            return typeof value === 'string';\n          }\n          case 'integer': {\n            return isInteger(value);\n          }\n          case 'number': {\n            return typeof value === 'number';\n          }\n          case 'object': {\n            return isObject(value);\n          }\n          case 'array': {\n            return Array.isArray(value);\n          }\n        }\n\n        return true;\n      },\n    });\n\n    switch (field.type) {\n      case 'number':\n      case 'integer': {\n        field.parsers = [\n          (v: string | number, f: FormlyFieldConfig) => {\n            v = toNumber(v);\n\n            if (v === null && f) {\n              const input =\n                typeof document !== 'undefined' && f.id\n                  ? document.querySelector<HTMLInputElement>(`#${f.id}`)\n                  : undefined;\n              if (input && input.validity && !input.validity.badInput) {\n                v = undefined;\n              }\n\n              if (v !== f.formControl.value) {\n                f.formControl.setValue(v, { emitModelToViewChange: false });\n              }\n            }\n\n            return v;\n          },\n        ] as ((value: any, f?: FormlyFieldConfig) => any)[];\n\n        if (schema.hasOwnProperty('minimum')) {\n          field.props.min = schema.minimum;\n        }\n\n        if (schema.hasOwnProperty('maximum')) {\n          field.props.max = schema.maximum;\n        }\n\n        if (schema.hasOwnProperty('exclusiveMinimum')) {\n          field.props.exclusiveMinimum = schema.exclusiveMinimum;\n          this.addValidator(\n            field,\n            'exclusiveMinimum',\n            ({ value }: AbstractControl) => isEmpty(value) || value > schema.exclusiveMinimum,\n          );\n        }\n\n        if (schema.hasOwnProperty('exclusiveMaximum')) {\n          field.props.exclusiveMaximum = schema.exclusiveMaximum;\n          this.addValidator(\n            field,\n            'exclusiveMaximum',\n            ({ value }: AbstractControl) => isEmpty(value) || value < schema.exclusiveMaximum,\n          );\n        }\n\n        if (schema.hasOwnProperty('multipleOf')) {\n          field.props.step = schema.multipleOf;\n          this.addValidator(field, 'multipleOf', ({ value }: AbstractControl) => {\n            if (isEmpty(value) || typeof value !== 'number' || value === 0 || schema.multipleOf <= 0) {\n              return true;\n            }\n\n            // https://github.com/ajv-validator/ajv/issues/652#issue-283610859\n            const multiplier = Math.pow(10, decimalPlaces(schema.multipleOf));\n            return Math.round(value * multiplier) % Math.round(schema.multipleOf * multiplier) === 0;\n          });\n        }\n        break;\n      }\n      case 'string': {\n        field.parsers = [\n          (v, f: FormlyFieldConfig) => {\n            if (types.indexOf('null') !== -1) {\n              v = isEmpty(v) ? null : v;\n            } else if (f && !f.props.required) {\n              v = v === '' ? undefined : v;\n            }\n\n            return v;\n          },\n        ] as ((value: any, f?: FormlyFieldConfig) => any)[];\n\n        ['minLength', 'maxLength', 'pattern'].forEach((prop) => {\n          if (schema.hasOwnProperty(prop)) {\n            field.props[prop] = (schema as any)[prop];\n          }\n        });\n        break;\n      }\n      case 'object': {\n        if (!field.fieldGroup) {\n          field.fieldGroup = [];\n        }\n\n        const { propDeps, schemaDeps } = this.resolveDependencies(schema);\n        Object.keys(schema.properties || {}).forEach((property) => {\n          const isRequired = Array.isArray(schema.required) && schema.required.indexOf(property) !== -1;\n          const f = this._toFieldConfig(<JSONSchema7>schema.properties[property], {\n            ...options,\n            key: property,\n            isOptional: isOptional || !isRequired,\n          });\n\n          field.fieldGroup.push(f);\n          if (isRequired || propDeps[property]) {\n            f.expressions = {\n              ...(f.expressions || {}),\n              'props.required': (f) => {\n                let parent = f.parent;\n                const model = f.fieldGroup && f.key != null ? parent.model : f.model;\n                while (parent.key == null && parent.parent) {\n                  parent = parent.parent;\n                }\n\n                const required = parent && parent.props ? parent.props.required : false;\n                if (!model && !required) {\n                  return false;\n                }\n\n                if (Array.isArray(schema.required) && schema.required.indexOf(property) !== -1) {\n                  return true;\n                }\n\n                return propDeps[property] && f.model && propDeps[property].some((k) => !isEmpty(f.model[k]));\n              },\n            };\n          }\n\n          if (schemaDeps[property]) {\n            const getConstValue = (s: JSONSchema7) => {\n              return s.hasOwnProperty('const') ? s.const : s.enum[0];\n            };\n\n            const oneOfSchema = schemaDeps[property].oneOf as JSONSchema7[];\n            if (\n              oneOfSchema &&\n              oneOfSchema.every((o) => o.properties && o.properties[property] && isConst(o.properties[property]))\n            ) {\n              oneOfSchema.forEach((oneOfSchemaItem) => {\n                const { [property]: constSchema, ...properties } = oneOfSchemaItem.properties;\n                field.fieldGroup.push({\n                  ...this._toFieldConfig(\n                    { ...oneOfSchemaItem, properties },\n                    { ...options, shareFormControl: false, resetOnHide: true },\n                  ),\n                  expressions: {\n                    hide: (f) => !f.model || getConstValue(constSchema as JSONSchema7) !== f.model[property],\n                  },\n                });\n              });\n            } else {\n              field.fieldGroup.push({\n                ...this._toFieldConfig(schemaDeps[property], options),\n                expressions: {\n                  hide: (f) => !f.model || isEmpty(f.model[property]),\n                },\n              });\n            }\n          }\n        });\n\n        if (schema.oneOf) {\n          field.fieldGroup.push(\n            this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, shareFormControl: false }),\n          );\n        }\n\n        if (schema.anyOf) {\n          field.fieldGroup.push(this.resolveMultiSchema('anyOf', <JSONSchema7[]>schema.anyOf, options));\n        }\n\n        // Process if/then/else conditional schemas\n        if (options.conditionalSchemas) {\n          const conditionalSchemas = options.conditionalSchemas as Array<JSONSchema7 & { _ifCondition: any }>;\n          conditionalSchemas.forEach((conditionalSchema) => {\n            const condition = conditionalSchema._ifCondition;\n            if (condition && conditionalSchema.properties) {\n              // Create a field group with the conditional fields\n              const conditionalFieldGroup: FormlyFieldConfig = {\n                fieldGroup: [],\n                expressions: {\n                  hide: (f) => {\n                    if (!f.model) {\n                      return true;\n                    }\n                    const modelValue = f.model[condition.property];\n                    const matches = modelValue === condition.value;\n                    // If negate is true (for \"else\" case), invert the condition\n                    return condition.negate ? matches : !matches;\n                  },\n                },\n              };\n\n              // Add each property from the conditional schema to the field group\n              Object.keys(conditionalSchema.properties).forEach((property) => {\n                const propSchema = conditionalSchema.properties[property] as JSONSchema7;\n                if (!propSchema) {\n                  return;\n                }\n                const isRequired =\n                  Array.isArray(conditionalSchema.required) && conditionalSchema.required.indexOf(property) !== -1;\n                const conditionalField = this._toFieldConfig(propSchema, {\n                  ...options,\n                  key: property,\n                  isOptional: !isRequired,\n                  resetOnHide: true,\n                });\n                conditionalFieldGroup.fieldGroup.push(conditionalField);\n              });\n\n              field.fieldGroup.push(conditionalFieldGroup);\n            }\n          });\n        }\n        break;\n      }\n      case 'array': {\n        if (schema.hasOwnProperty('minItems')) {\n          field.props.minItems = schema.minItems;\n          this.addValidator(field, 'minItems', ({ value }: AbstractControl) => {\n            return isEmpty(value) || value.length >= schema.minItems;\n          });\n          if (!isOptional && schema.minItems > 0 && field.defaultValue === undefined) {\n            field.defaultValue = Array.from(new Array(schema.minItems));\n          }\n        }\n        if (schema.hasOwnProperty('maxItems')) {\n          field.props.maxItems = schema.maxItems;\n          this.addValidator(field, 'maxItems', ({ value }: AbstractControl) => {\n            return isEmpty(value) || value.length <= schema.maxItems;\n          });\n        }\n        if (schema.hasOwnProperty('uniqueItems')) {\n          field.props.uniqueItems = schema.uniqueItems;\n          this.addValidator(field, 'uniqueItems', ({ value }: AbstractControl) => {\n            if (isEmpty(value) || !schema.uniqueItems) {\n              return true;\n            }\n\n            const uniqueItems = Array.from(\n              new Set(\n                value.map((v: any) =>\n                  JSON.stringify(v, (k, o) => {\n                    if (isObject(o)) {\n                      return Object.keys(o)\n                        .sort()\n                        .reduce((obj: any, key) => {\n                          obj[key] = o[key];\n                          return obj;\n                        }, {});\n                    }\n\n                    return o;\n                  }),\n                ),\n              ),\n            );\n\n            return uniqueItems.length === value.length;\n          });\n        }\n\n        // resolve items schema needed for isEnum check\n        if (schema.items && !Array.isArray(schema.items)) {\n          schema.items = this.resolveSchema(<JSONSchema7>schema.items, options);\n        }\n\n        // TODO: remove isEnum check once adding an option to skip extension\n        if (!this.isEnum(schema)) {\n          field.fieldArray = (root: FormlyFieldConfig) => {\n            const length = root.fieldGroup ? root.fieldGroup.length : 0;\n            const items = schema.items as JSONSchema7 | JSONSchema7[];\n            if (!Array.isArray(items)) {\n              if (!items) {\n                return {};\n              }\n\n              const isMultiSchema = items.oneOf || items.anyOf;\n\n              // When items is a single schema, the additionalItems keyword is meaningless, and it should not be used.\n              const f = this._toFieldConfig(\n                items,\n                isMultiSchema ? { ...options, key: `${length}`, isOptional: false } : { ...options, isOptional: false },\n              );\n\n              if (isMultiSchema && !hasKey(f)) {\n                f.key = null;\n              }\n\n              return f;\n            }\n\n            const itemSchema = items[length] ? items[length] : schema.additionalItems;\n            const f = itemSchema ? this._toFieldConfig(<JSONSchema7>itemSchema, options) : {};\n            if (f.props) {\n              f.props.required = true;\n            }\n            if (items[length]) {\n              f.props.removable = false;\n            }\n\n            return f;\n          };\n        }\n        break;\n      }\n    }\n\n    if (schema.hasOwnProperty('const')) {\n      field.props.const = schema.const;\n      this.addValidator(field, 'const', ({ value }: AbstractControl) => value === schema.const);\n      if (!field.type) {\n        field.defaultValue = schema.const;\n      }\n    }\n\n    if (this.isEnum(schema)) {\n      const enumOptions = this.toEnumOptions(schema);\n      const multiple = field.type === 'array';\n\n      field.type = 'enum';\n      field.props.multiple = multiple;\n      field.props.options = enumOptions;\n\n      const enumValues = enumOptions.map((o) => o.value);\n      this.addValidator(field, 'enum', ({ value }: AbstractControl) => {\n        if (value === undefined) {\n          return true;\n        }\n\n        if (multiple) {\n          return Array.isArray(value) ? value.every((o) => enumValues.includes(o)) : false;\n        }\n\n        return enumValues.includes(value);\n      });\n    }\n\n    if (schema.oneOf && !field.type) {\n      delete field.key;\n      field.fieldGroup = [\n        this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.oneOf, { ...options, key, shareFormControl: false }),\n      ];\n    }\n\n    if (schema.anyOf && !field.type) {\n      delete field.key;\n      field.fieldGroup = [\n        this.resolveMultiSchema('oneOf', <JSONSchema7[]>schema.anyOf, { ...options, key, shareFormControl: false }),\n      ];\n    }\n\n    // map in possible formlyConfig options from the widget property\n    if (schema.widget?.formlyConfig) {\n      field = this.mergeFields(field, schema.widget.formlyConfig);\n    }\n\n    field.templateOptions = field.props;\n    // if there is a map function passed in, use it to allow the user to\n    // further customize how fields are being mapped\n    return options.map ? options.map(field, schema) : field;\n  }\n\n  private resolveSchema(schema: JSONSchema7, options: IOptions): JSONSchema7 {\n    if (schema && schema.$ref) {\n      schema = this.resolveDefinition(schema, options);\n    }\n\n    if (schema && schema.allOf) {\n      schema = this.resolveAllOf(schema, options);\n    }\n\n    // Process if/then/else and store conditionals in options for later processing\n    if (schema && (schema.if || schema.then || schema.else)) {\n      const conditionalSchemas = this.resolveIfThenElse(schema, options);\n      if (conditionalSchemas.length > 0) {\n        // Store conditional schemas in options for processing in _toFieldConfig\n        options.conditionalSchemas = conditionalSchemas;\n      }\n    }\n\n    return schema;\n  }\n\n  private resolveAllOf({ allOf, ...baseSchema }: FormlyJSONSchema7, options: IOptions) {\n    if (!allOf.length) {\n      throw Error(`allOf array can not be empty ${allOf}.`);\n    }\n\n    return (allOf as FormlyJSONSchema7[]).reduce((base: FormlyJSONSchema7, schema: FormlyJSONSchema7) => {\n      schema = this.resolveSchema(schema, options);\n      if (base.required && schema.required) {\n        base.required = [...base.required, ...schema.required];\n      }\n\n      if (schema.uniqueItems) {\n        base.uniqueItems = schema.uniqueItems;\n      }\n\n      // resolve to min value\n      (\n        ['maxLength', 'maximum', 'exclusiveMaximum', 'maxItems', 'maxProperties'] as (keyof FormlyJSONSchema7)[]\n      ).forEach((prop) => {\n        if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n          (base as any)[prop] = base[prop] < schema[prop] ? base[prop] : schema[prop];\n        }\n      });\n\n      // resolve to max value\n      (\n        ['minLength', 'minimum', 'exclusiveMinimum', 'minItems', 'minProperties'] as (keyof FormlyJSONSchema7)[]\n      ).forEach((prop) => {\n        if (!isEmpty(base[prop]) && !isEmpty(schema[prop])) {\n          (base as any)[prop] = base[prop] > schema[prop] ? base[prop] : schema[prop];\n        }\n      });\n\n      return reverseDeepMerge(base, schema);\n    }, baseSchema);\n  }\n\n  private resolveMultiSchema(mode: 'oneOf' | 'anyOf', schemas: JSONSchema7[], options: IOptions): FormlyFieldConfig {\n    return {\n      type: 'multischema',\n      fieldGroup: [\n        {\n          type: 'enum',\n          defaultValue: -1,\n          props: {\n            multiple: mode === 'anyOf',\n            options: schemas.map((s, i) => ({ label: s.title, value: i, disabled: s.readOnly })),\n          },\n          hooks: {\n            onInit: (f) => f.formControl.valueChanges.pipe(tap(() => f.options.detectChanges(f.parent))),\n          },\n        },\n        {\n          fieldGroup: schemas.map((s, i) => ({\n            ...this._toFieldConfig(s, { ...options, resetOnHide: true }),\n            expressions: {\n              hide: (f, forceUpdate?: boolean) => {\n                const control = f.parent.parent.fieldGroup[0].formControl;\n                if (control.value === -1 || forceUpdate) {\n                  let value = f.parent.fieldGroup\n                    .map(\n                      (f, i) =>\n                        [f, i, this.isFieldValid(f, i, schemas, options)] as [FormlyFieldConfig, number, boolean],\n                    )\n                    .sort(([f1, , f1Valid], [f2, , f2Valid]) => {\n                      if (f1Valid !== f2Valid) {\n                        return f2Valid ? 1 : -1;\n                      }\n\n                      const matchedFields1 = totalMatchedFields(f1);\n                      const matchedFields2 = totalMatchedFields(f2);\n                      if (matchedFields1 === matchedFields2) {\n                        if (f1.props.disabled === f2.props.disabled) {\n                          return 0;\n                        }\n\n                        return matchedFields2 > matchedFields1 ? 1 : -1;\n                      }\n\n                      return matchedFields2 > matchedFields1 ? 1 : -1;\n                    })\n                    .map(([, i]) => i);\n\n                  if (mode === 'anyOf') {\n                    const definedValue = value.filter((i) => totalMatchedFields(f.parent.fieldGroup[i]));\n                    value = definedValue.length > 0 ? definedValue : [value[0] || 0];\n                  }\n\n                  value = value.length > 0 ? value : [0];\n                  control.setValue(mode === 'anyOf' ? value : value[0]);\n                }\n\n                return Array.isArray(control.value) ? control.value.indexOf(i) === -1 : control.value !== i;\n              },\n            },\n          })),\n        },\n      ],\n    };\n  }\n\n  private resolveDefinition(schema: FormlyJSONSchema7, options: IOptions): FormlyJSONSchema7 {\n    const [uri, pointer] = schema.$ref.split('#/');\n    if (uri) {\n      throw Error(`Remote schemas for ${schema.$ref} not supported yet.`);\n    }\n\n    const definition = !pointer\n      ? null\n      : pointer\n          .split('/')\n          .reduce((def, path) => (def?.hasOwnProperty(path) ? (def as any)[path] : null), options.schema);\n\n    if (!definition) {\n      throw Error(`Cannot find a definition for ${schema.$ref}.`);\n    }\n\n    if (definition.$ref) {\n      return this.resolveDefinition(definition, options);\n    }\n\n    return {\n      ...definition,\n      ...['title', 'description', 'default', 'widget'].reduce((annotation, p) => {\n        if (schema.hasOwnProperty(p)) {\n          annotation[p] = (schema as any)[p];\n        }\n\n        return annotation;\n      }, {} as any),\n    };\n  }\n\n  private resolveDependencies(schema: JSONSchema7) {\n    const propDeps: { [id: string]: string[] } = {};\n    const schemaDeps: { [id: string]: JSONSchema7 } = {};\n\n    Object.keys(schema.dependencies || {}).forEach((prop) => {\n      const dependency = schema.dependencies[prop] as JSONSchema7;\n      if (Array.isArray(dependency)) {\n        // Property dependencies\n        dependency.forEach((dep) => {\n          if (!propDeps[dep]) {\n            propDeps[dep] = [prop];\n          } else {\n            propDeps[dep].push(prop);\n          }\n        });\n      } else {\n        // schema dependencies\n        schemaDeps[prop] = dependency;\n      }\n    });\n\n    return { propDeps, schemaDeps };\n  }\n\n  private extractIfCondition(ifSchema: JSONSchema7): { property: string; value: any } | null {\n    // Extract the property and const value from the \"if\" schema\n    // Supports: { \"properties\": { \"propName\": { \"const\": value } } }\n    if (ifSchema.properties) {\n      const propName = Object.keys(ifSchema.properties)[0];\n      if (propName) {\n        const propSchema = ifSchema.properties[propName] as JSONSchema7;\n        if (propSchema && propSchema.hasOwnProperty('const')) {\n          return { property: propName, value: propSchema.const };\n        }\n      }\n    }\n    return null;\n  }\n\n  private resolveIfThenElse(schema: JSONSchema7, options: IOptions): JSONSchema7[] {\n    // Process if/then/else and return array of conditional schemas to add to fieldGroup\n    const conditionalSchemas: JSONSchema7[] = [];\n\n    if (schema.if && typeof schema.if === 'object') {\n      const condition = this.extractIfCondition(schema.if as JSONSchema7);\n      if (condition) {\n        // Process \"then\" branch\n        if (schema.then && typeof schema.then === 'object') {\n          const resolvedSchema = this.resolveConditionalSchema(schema.then as JSONSchema7, options);\n          conditionalSchemas.push({\n            ...resolvedSchema,\n            _ifCondition: condition,\n          } as any);\n        }\n\n        // Process \"else\" branch\n        if (schema.else && typeof schema.else === 'object') {\n          const resolvedSchema = this.resolveConditionalSchema(schema.else as JSONSchema7, options);\n          conditionalSchemas.push({\n            ...resolvedSchema,\n            _ifCondition: { property: condition.property, value: condition.value, negate: true },\n          } as any);\n        }\n      }\n    }\n\n    return conditionalSchemas;\n  }\n\n  private resolveConditionalSchema(conditionalSchema: JSONSchema7, options: IOptions): JSONSchema7 {\n    // Resolve $ref and allOf if present in conditional schema\n    // Note: We don't use resolveSchema here to avoid recursive processing of nested if/then/else\n    let resolved = conditionalSchema;\n    if (conditionalSchema.$ref) {\n      resolved = this.resolveDefinition(conditionalSchema, options);\n    }\n    if (resolved.allOf) {\n      resolved = this.resolveAllOf(resolved, options);\n    }\n    return resolved;\n  }\n\n  private guessSchemaType(schema: JSONSchema7) {\n    const type = schema?.type;\n    if (!type && schema?.properties) {\n      return ['object'];\n    }\n\n    if (Array.isArray(type)) {\n      if (type.length === 1) {\n        return type;\n      }\n\n      if (type.length === 2 && type.indexOf('null') !== -1) {\n        return type.sort((t1) => (t1 == 'null' ? 1 : -1));\n      }\n\n      return type;\n    }\n\n    return type ? [type] : [];\n  }\n\n  private addValidator(field: FormlyFieldConfig, name: string, validator: FormlyFieldConfig['validators']) {\n    field.validators = field.validators || {};\n    field.validators[name] = validator;\n  }\n\n  private isEnum(schema: JSONSchema7): boolean {\n    return (\n      !!schema.enum ||\n      (schema.anyOf && (schema.anyOf as JSONSchema7[]).every(isConst)) ||\n      (schema.oneOf && (schema.oneOf as JSONSchema7[]).every(isConst)) ||\n      (schema.uniqueItems && schema.items && !Array.isArray(schema.items) && this.isEnum(<JSONSchema7>schema.items))\n    );\n  }\n\n  private toEnumOptions(schema: JSONSchema7): { value: any; label: any }[] {\n    if (schema.enum) {\n      return schema.enum.map((value) => ({ value, label: value }));\n    }\n\n    const toEnum = (s: JSONSchema7) => {\n      const value = s.hasOwnProperty('const') ? s.const : s.enum[0];\n      const option: any = { value, label: s.title || value };\n      if (s.readOnly) {\n        option.disabled = true;\n      }\n\n      return option;\n    };\n\n    if (schema.anyOf) {\n      return (schema.anyOf as JSONSchema7[]).map(toEnum);\n    }\n\n    if (schema.oneOf) {\n      return (schema.oneOf as JSONSchema7[]).map(toEnum);\n    }\n\n    return this.toEnumOptions(<JSONSchema7>schema.items);\n  }\n\n  private isFieldValid(\n    root: FormlyFieldConfig & { _schemasFields?: { [key: number]: FormlyFieldConfig } },\n    i: number,\n    schemas: JSONSchema7[],\n    options: IOptions,\n  ): boolean {\n    const schema = schemas[i] as JSONSchema7 & { _field?: FormlyFieldConfig };\n    if (!schema._field) {\n      Object.defineProperty(schema, '_field', { enumerable: false, writable: true, configurable: true });\n    }\n\n    let field = schema._field;\n    let model = root.model ? root.model : root.fieldArray ? [] : {};\n    if (root.model && hasKey(root)) {\n      model = { [Array.isArray(root.key) ? root.key.join('.') : root.key]: getFieldValue(root) };\n    }\n\n    model = clone(model);\n    if (!field) {\n      field = schema._field = root.options.build({\n        form: Array.isArray(model) ? new UntypedFormArray([]) : new UntypedFormGroup({}),\n        fieldGroup: [\n          this._toFieldConfig(schema, {\n            ...options,\n            resetOnHide: true,\n            ignoreDefault: true,\n            map: null,\n          }),\n        ],\n        model,\n        options: {},\n      });\n    } else {\n      (field as any).model = model;\n      root.options.build(field);\n    }\n\n    return field.form.valid;\n  }\n\n  private mergeFields(f1: any, f2: any) {\n    for (const prop in f2) {\n      const f1Prop = prop === 'templateOptions' ? 'props' : prop;\n      if (isObject(f1[f1Prop]) && isObject(f2[prop])) {\n        f1[f1Prop] = this.mergeFields(f1[f1Prop], f2[prop]);\n      } else if (f2[prop] != null) {\n        f1[f1Prop] = f2[prop];\n      }\n    }\n\n    return f1;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["hasKey","getFieldValue","clone","reverseDeepMerge"],"mappings":"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"}