{"version":3,"file":"ngx-schema-form.mjs","sources":["../../../projects/schema-form/src/lib/widget.ts","../../../projects/schema-form/src/lib/model/actionregistry.ts","../../../projects/schema-form/src/lib/model/bindingregistry.ts","../../../projects/schema-form/src/lib/log.service.ts","../../../projects/schema-form/src/lib/widgetregistry.ts","../../../projects/schema-form/src/lib/widgetfactory.ts","../../../projects/schema-form/src/lib/terminator.service.ts","../../../projects/schema-form/src/lib/formelement.action.component.ts","../../../projects/schema-form/src/lib/widgetchooser.component.ts","../../../projects/schema-form/src/lib/formelement.component.ts","../../../projects/schema-form/src/lib/defaultwidgets/array/array.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/_directives/disableControl.directive.ts","../../../projects/schema-form/src/lib/defaultwidgets/checkbox/checkbox.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/file/file.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/integer/integer.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/object/object.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/radio/radio.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/range/range.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/select/select.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/string/string.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/textarea/textarea.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/button/button.widget.ts","../../../projects/schema-form/src/lib/defaultwidgets/defaultwidgetregistry.ts","../../../projects/schema-form/src/lib/template-schema/field/field.ts","../../../projects/schema-form/src/lib/model/utils.ts","../../../projects/schema-form/src/lib/model/formproperty.ts","../../../projects/schema-form/src/lib/model/typemapping.ts","../../../projects/schema-form/src/lib/model/formpropertyfactory.ts","../../../projects/schema-form/src/lib/model/atomicproperty.ts","../../../projects/schema-form/src/lib/model/objectproperty.ts","../../../projects/schema-form/src/lib/model/arrayproperty.ts","../../../projects/schema-form/src/lib/model/stringproperty.ts","../../../projects/schema-form/src/lib/model/booleanproperty.ts","../../../projects/schema-form/src/lib/model/numberproperty.ts","../../../projects/schema-form/src/lib/model/nullproperty.ts","../../../projects/schema-form/src/lib/model/validatorregistry.ts","../../../projects/schema-form/src/lib/model/schemapreprocessor.ts","../../../projects/schema-form/src/lib/template-schema/template-schema-element.ts","../../../projects/schema-form/src/lib/template-schema/button/button.component.ts","../../../projects/schema-form/src/lib/template-schema/button/button.component.html","../../../projects/schema-form/src/lib/template-schema/field/item/item.component.ts","../../../projects/schema-form/src/lib/template-schema/field/item/item.component.html","../../../projects/schema-form/src/lib/template-schema/field/field-parent.ts","../../../projects/schema-form/src/lib/template-schema/template-schema.service.ts","../../../projects/schema-form/src/lib/template-schema/field/field.component.ts","../../../projects/schema-form/src/lib/template-schema/field/field.component.html","../../../projects/schema-form/src/lib/schemavalidatorfactory.ts","../../../projects/schema-form/src/lib/property-binding-registry.ts","../../../projects/schema-form/src/lib/expression-compiler-factory.ts","../../../projects/schema-form/src/lib/form.component.ts","../../../projects/schema-form/src/lib/template-schema/template-schema.directive.ts","../../../projects/schema-form/src/lib/template-schema/template-schema.module.ts","../../../projects/schema-form/src/lib/default.widget.ts","../../../projects/schema-form/src/lib/schema-form.module.ts","../../../projects/schema-form/src/ngx-schema-form.ts"],"sourcesContent":["import { AfterViewInit, Directive } from \"@angular/core\";\nimport { UntypedFormControl } from \"@angular/forms\";\n\nimport { ArrayProperty } from \"./model/arrayproperty\";\nimport { FormProperty } from \"./model/formproperty\";\nimport { ObjectProperty } from \"./model/objectproperty\";\nimport { ISchema } from \"./model/ISchema\";\n\nexport abstract class Widget<T extends FormProperty> {\n  formProperty: T;\n  control: UntypedFormControl;\n  errorMessages: string[];\n\n  id: string = \"\";\n  name: string = \"\";\n  schema: ISchema = {};\n}\n\n@Directive()\nexport class ControlWidget\n  extends Widget<FormProperty>\n  implements AfterViewInit {\n  ngAfterViewInit() {\n    const control = this.control;\n    this.formProperty.valueChanges.subscribe((newValue) => {\n      if (control.value !== newValue) {\n        control.setValue(newValue, { emitEvent: false });\n      }\n    });\n    this.formProperty.errorsChanges.subscribe((errors) => {\n      control.setErrors(errors, { emitEvent: true });\n      const messages = (errors || [])\n        .filter((e) => {\n          return e.path && e.path.slice(1) === this.formProperty.path;\n        })\n        .map((e) => e.message);\n      this.errorMessages = messages.filter((m, i) => messages.indexOf(m) === i);\n    });\n    control.valueChanges.subscribe((newValue) => {\n      this.formProperty.setValue(newValue, false);\n    });\n  }\n}\n\n@Directive()\nexport class ArrayLayoutWidget\n  extends Widget<ArrayProperty>\n  implements AfterViewInit {\n  ngAfterViewInit() {\n    const control = this.control;\n    this.formProperty.errorsChanges.subscribe((errors) => {\n      control.setErrors(errors, { emitEvent: true });\n    });\n  }\n}\n\n@Directive()\nexport class ObjectLayoutWidget\n  extends Widget<ObjectProperty>\n  implements AfterViewInit {\n  ngAfterViewInit() {\n    const control = this.control;\n    this.formProperty.errorsChanges.subscribe((errors) => {\n      control.setErrors(errors, { emitEvent: true });\n    });\n  }\n}\n","import { Action } from './action';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class ActionRegistry {\n  actions: {[key: string]: Action} = {};\n\n  clear() {\n    this.actions = {};\n  }\n\n  register(actionId: string, action: Action) {\n    this.actions[actionId] = action;\n  }\n\n  get(actionId: string) {\n    return this.actions[actionId];\n  }\n}\n","import {Binding} from './binding';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class BindingRegistry {\n  bindings: Binding[] = [];\n\n  clear() {\n    this.bindings = [];\n  }\n\n  register(path: string, binding: Binding | Binding[]) {\n    this.bindings[path] = [].concat(binding);\n  }\n\n  get(path: string): Binding[] {\n    return this.bindings[path];\n  }\n}\n","import { InjectionToken, Inject, Injectable, Optional } from \"@angular/core\";\n\nexport const LOG_LEVEL = new InjectionToken<LogLevel>('Logging level');\n\n/**\n * Represents the different logging levels of the `console` output.\n */\nexport const enum LogLevel {\n    log,\n    warn,\n    error,\n    off,\n    all\n}\n\nexport abstract class LogService {\n    public logLevel = LogLevel.off;\n    constructor(@Optional() @Inject(LOG_LEVEL) public level: any /* should be of type `LogLevel` but AOT fails with : 'Error encountered in metadata generated for exported symbol 'DefaultLogService':\"Could not resolve type LogLevel.\" */) {\n        this.logLevel = level as LogLevel\n    }\n    /**\n     * Equals `console.warn`\n     * @param message \n     * @param optionalParams \n     */\n    public abstract warn(message?: any, ...optionalParams: any[]): void\n    /**\n     * Equals `console.error`\n     * @param message \n     * @param optionalParams \n     */\n    public abstract error(message?: any, ...optionalParams: any[]): void\n    /**\n     * Equals `console.log`\n     * @param message \n     * @param optionalParams \n     */\n    public abstract log(message?: any, ...optionalParams: any[]): void\n\n    isWarnEnabled() {\n        return LogLevel.all === this.logLevel || LogLevel.warn === this.logLevel\n    }\n\n    isErrorEnabled() {\n        return LogLevel.all === this.logLevel || LogLevel.error === this.logLevel\n    }\n\n    isLogEnabled() {\n        return LogLevel.all === this.logLevel || LogLevel.log === this.logLevel\n    }\n}\n\n/**\n * Very simple abstraction of logging\n */\n@Injectable()\nexport class DefaultLogService extends LogService {\n\n    constructor(@Optional() @Inject(LOG_LEVEL) public logLevel: any /* should be of type `LogLevel` but AOT fails with : 'Error encountered in metadata generated for exported symbol 'DefaultLogService':\"Could not resolve type LogLevel.\" */) {\n        super(logLevel)\n        this.logLevel = logLevel as LogLevel\n    }\n    warn = (!this.isWarnEnabled() ? () => { } : console.warn)\n    error = (!this.isErrorEnabled() ? () => { } : console.error)\n    log = (!this.isLogEnabled() ? () => { } : console.log)\n}","export class WidgetRegistry {\n\n  private widgets: { [type: string]: any } = {};\n\n  private defaultWidget: any;\n\n  constructor() { }\n\n  setDefaultWidget(widget: any) {\n    this.defaultWidget = widget;\n  }\n\n  getDefaultWidget() {\n    return this.defaultWidget;\n  }\n\n  hasWidget(type: string) {\n    return this.widgets.hasOwnProperty(type);\n  }\n\n  register(type: string, widget: any) {\n    this.widgets[type] = widget;\n  }\n\n  getWidgetType(type: string): any {\n    if (this.hasWidget(type)) {\n      return this.widgets[type];\n    }\n    return this.defaultWidget;\n  }\n}\n","import {\n  ViewContainerRef,\n  ComponentRef,\n  ComponentFactoryResolver,\n  Injectable\n} from '@angular/core';\n\nimport { WidgetRegistry } from './widgetregistry';\n\n@Injectable()\nexport class WidgetFactory {\n\n  private resolver: ComponentFactoryResolver;\n  private registry: WidgetRegistry;\n\n  constructor(registry: WidgetRegistry, resolver: ComponentFactoryResolver) {\n    this.registry = registry;\n    this.resolver = resolver;\n  }\n\n  createWidget(container: ViewContainerRef, type: string): ComponentRef<any> {\n    let componentClass = this.registry.getWidgetType(type);\n\n    let componentFactory = this.resolver.resolveComponentFactory(componentClass);\n    return container.createComponent(componentFactory);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class TerminatorService {\n  public onDestroy: Subject<boolean>;\n\n  constructor() {\n    this.onDestroy = new Subject();\n  }\n\n  destroy() {\n    this.onDestroy.next(true);\n  }\n}\n","import {\n  Component,\n  ComponentRef,\n  Input,\n  OnChanges,\n  ViewChild,\n  ViewContainerRef,\n  OnInit,\n  OnDestroy\n} from \"@angular/core\";\nimport {Subscription} from 'rxjs';\nimport {WidgetFactory} from \"./widgetfactory\";\nimport {TerminatorService} from \"./terminator.service\";\n\n@Component({\n    selector: 'sf-form-element-action',\n    template: '<ng-template #target></ng-template>',\n    standalone: false\n})\nexport class FormElementComponentAction implements OnInit, OnChanges, OnDestroy {\n\n  @Input()\n  button: any;\n\n  @Input()\n  formProperty: any;\n\n  @ViewChild('target', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\n\n  private ref: ComponentRef<any>;\n  private subs: Subscription;\n\n  constructor(private widgetFactory: WidgetFactory = null,\n              private terminator: TerminatorService) {\n  }\n\n  ngOnInit() {\n    this.subs = this.terminator.onDestroy.subscribe(destroy => {\n      if (destroy) {\n        this.ref.destroy();\n      }\n    });\n  }\n\n  ngOnChanges() {\n    this.ref = this.widgetFactory.createWidget(this.container, this.button.widget || 'button');\n    this.ref.instance.button = this.button;\n    this.ref.instance.formProperty = this.formProperty;\n  }\n\n  ngOnDestroy() {\n    this.subs.unsubscribe();\n  }\n}\n","import {\n  Component,\n  ComponentRef,\n  ChangeDetectorRef,\n  EventEmitter,\n  Input,\n  OnChanges,\n  Output,\n  ViewChild,\n  ViewContainerRef,\n  OnInit,\n  OnDestroy\n} from '@angular/core';\nimport { TerminatorService } from './terminator.service';\nimport { WidgetFactory } from './widgetfactory';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n    selector: 'sf-widget-chooser',\n    template: `<div #target></div>`,\n    standalone: false\n})\nexport class WidgetChooserComponent implements OnInit, OnChanges, OnDestroy {\n\n  @Input() widgetInfo: any;\n\n  @Output() widgetInstanciated = new EventEmitter<any>();\n\n  @ViewChild('target', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\n\n  private widgetInstance: any;\n  private ref: ComponentRef<any>;\n  private subs: Subscription;\n\n  constructor(\n    private widgetFactory: WidgetFactory = null,\n    private cdr: ChangeDetectorRef,\n    private terminator: TerminatorService,\n  ) { }\n\n  ngOnInit() {\n    this.subs = this.terminator.onDestroy.subscribe(destroy => {\n      if (destroy) {\n        this.ref.destroy();\n      }\n    });\n  }\n\n  ngOnChanges() {\n    this.ref = this.widgetFactory.createWidget(this.container, this.widgetInfo.id);\n    this.widgetInstanciated.emit(this.ref.instance);\n    this.widgetInstance = this.ref.instance;\n    this.cdr.detectChanges();\n  }\n\n  ngOnDestroy() {\n    this.subs.unsubscribe();\n  }\n}\n","import {\n  Component, ElementRef,\n  Input, OnDestroy,\n  OnInit, Renderer2\n} from '@angular/core';\n\nimport {\n  UntypedFormControl\n} from '@angular/forms';\n\nimport {Widget} from './widget';\n\nimport {ActionRegistry} from './model/actionregistry';\nimport {FormProperty} from './model/formproperty';\nimport {BindingRegistry} from './model/bindingregistry';\nimport {Binding} from './model/binding';\nimport { LogService } from './log.service';\n\n@Component({\n    selector: 'sf-form-element',\n    template: `\n    @if (formProperty.visible) {\n      <div\n        [class.has-error]=\"!control.valid\"\n        [class.has-success]=\"control.valid\">\n        <sf-widget-chooser\n          (widgetInstanciated)=\"onWidgetInstanciated($event)\"\n          [widgetInfo]=\"formProperty.schema.widget\">\n        </sf-widget-chooser>\n        @for (button of buttons; track button) {\n          <sf-form-element-action [button]=\"button\" [formProperty]=\"formProperty\"></sf-form-element-action>\n        }\n      </div>\n    }`,\n    standalone: false\n})\nexport class FormElementComponent implements OnInit, OnDestroy {\n\n  private static counter = 0;\n\n  @Input() formProperty: FormProperty;\n  control: UntypedFormControl = new UntypedFormControl('', () => null);\n\n  widget: Widget<any> = null;\n\n  buttons = [];\n\n  unlisten = [];\n\n  constructor(private actionRegistry: ActionRegistry,\n              private bindingRegistry: BindingRegistry,\n              private renderer: Renderer2,\n              private elementRef: ElementRef,\n              private logger: LogService) {\n  }\n\n  ngOnInit() {\n    this.parseButtons();\n    this.setupBindings();\n  }\n\n  private setupBindings() {\n    const bindings: Binding[] = this.bindingRegistry.get(this.formProperty.path);\n    if ((bindings || []).length) {\n      bindings.forEach((binding) => {\n        for (const eventId in binding) {\n          this.createBinding(eventId, binding[eventId]);\n        }\n      });\n    }\n  }\n\n  private createBinding(eventId, listeners) {\n    this.unlisten.push(this.renderer.listen(this.elementRef.nativeElement,\n      eventId,\n      (event) => {\n        const _listeners = Array.isArray(listeners) ? listeners : [listeners]\n        for (const _listener of _listeners) {\n          if (_listener instanceof Function) {\n            try { _listener(event, this.formProperty); } catch (e) { this.logger.error(`Error calling bindings event listener for '${eventId}'`, e) }\n          } else {\n            this.logger.warn('Calling non function handler for eventId ' + eventId + ' for path ' + this.formProperty.path);\n          }\n        }\n      }));\n  }\n\n  private parseButtons() {\n    if (this.formProperty.schema.buttons !== undefined) {\n      this.buttons = this.formProperty.schema.buttons;\n\n      for (let button of this.buttons) {\n        this.createButtonCallback(button);\n      }\n    }\n  }\n\n  private createButtonCallback(button) {\n    button.action = (e) => {\n      let action;\n      if (button.id && (action = this.actionRegistry.get(button.id))) {\n        if (action) {\n          action(this.formProperty, button.parameters);\n        }\n      }\n      e.preventDefault();\n    };\n  }\n\n  onWidgetInstanciated(widget: Widget<any>) {\n    this.widget = widget;\n    let id = this.formProperty.canonicalPathNotation || 'field' + (FormElementComponent.counter++);\n    if (this.formProperty.root.rootName) {\n      id = `${this.formProperty.root.rootName}:${id}`;\n    }\n\n    this.widget.formProperty = this.formProperty;\n    this.widget.schema = this.formProperty.schema;\n    this.widget.name = id;\n    this.widget.id = id;\n    this.widget.control = this.control;\n  }\n\n  ngOnDestroy(): void {\n    if (this.unlisten) {\n      this.unlisten.forEach((item) => {\n        item();\n      });\n    }\n  }\n\n}\n","import { Component } from '@angular/core';\n\nimport { FormProperty } from '../../model';\nimport { ArrayLayoutWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-array-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  @for (itemProperty of (formProperty.properties); track itemProperty) {\n\t    <div>\n\t      <sf-form-element [formProperty]=\"itemProperty\"></sf-form-element>\n\t      @if (!(schema.hasOwnProperty('minItems') && schema.hasOwnProperty('maxItems') && schema.minItems === schema.maxItems)) {\n\t        <button (click)=\"removeItem(itemProperty)\" class=\"btn btn-default array-remove-button\"\n\t          [disabled]=\"isRemoveButtonDisabled()\"\n\t          >\n\t          <span class=\"glyphicon glyphicon-minus\" aria-hidden=\"true\"></span> Remove\n\t        </button>\n\t      }\n\t    </div>\n\t  }\n\t  @if (!(schema.hasOwnProperty('minItems') && schema.hasOwnProperty('maxItems') && schema.minItems === schema.maxItems)) {\n\t    <button (click)=\"addItem()\" class=\"btn btn-default array-add-button\"\n\t      [disabled]=\"isAddButtonDisabled()\"\n\t      >\n\t      <span class=\"glyphicon glyphicon-plus\" aria-hidden=\"true\"></span> Add\n\t    </button>\n\t  }\n\t</div>`,\n    standalone: false\n})\nexport class ArrayWidget extends ArrayLayoutWidget {\n  buttonDisabledAdd:boolean\n  buttonDisabledRemove:boolean\n\n  addItem() {\n\tthis.formProperty.addItem();\n\tthis.updateButtonDisabledState()\n  }\n\n  removeItem(item: FormProperty) {\n\tthis.formProperty.removeItem(item);\n\tthis.updateButtonDisabledState()\n  }\n\n  trackByIndex(index: number, item: any) {\n    return index;\n  }\n\n\tupdateButtonDisabledState() {\n\t\tthis.buttonDisabledAdd = this.isAddButtonDisabled()\n\t\tthis.buttonDisabledRemove = this.isRemoveButtonDisabled()\n\t}\n\tisAddButtonDisabled() {\n\t\tif (this.schema.hasOwnProperty('maxItems') && Array.isArray(this.formProperty.properties)) {\n\t\t\tif (this.formProperty.properties.length >= this.schema.maxItems) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\tisRemoveButtonDisabled() {\n\t\tif (this.schema.hasOwnProperty('minItems') && Array.isArray(this.formProperty.properties)) {\n\t\t\tif (this.formProperty.properties.length <= this.schema.minItems) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n}\n","import { Input, Directive } from '@angular/core'\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n    selector: '[disableControl]',\n    standalone: false\n})\nexport class DisableControlDirective {\n\n    @Input() set disableControl(condition: boolean) {\n        const action = condition ? 'disable' : 'enable';\n        this.ngControl.control[action]();\n    }\n\n    constructor(private ngControl: NgControl) {\n    }\n\n}","import { Component, AfterViewInit } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-checkbox-widget',\n    template: `<div class=\"widget form-group\">\n      @if (schema.title) {\n        <label [attr.for]=\"id\" class=\"horizontal control-label\">\n          {{ schema.title }}\n        </label>\n      }\n      @if (schema.type!='array') {\n        <div class=\"checkbox\">\n          <label class=\"horizontal control-label\">\n            <input [formControl]=\"control\" [attr.name]=\"name\" [attr.id]=\"id\" [indeterminate]=\"control.value !== false && control.value !== true ? true :null\" type=\"checkbox\" [disableControl]=\"schema.readOnly\">\n            @if (schema.readOnly) {\n              <input [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n            }\n            {{schema.description}}\n          </label>\n        </div>\n      }\n      @if (schema.type==='array') {\n        @for (option of schema.items.oneOf; track option) {\n          <div class=\"checkbox\">\n            <label class=\"horizontal control-label\">\n              <input [attr.name]=\"name\"\n                value=\"{{option.enum[0]}}\" type=\"checkbox\"\n                [attr.disabled]=\"schema.readOnly\"\n                (change)=\"onCheck($event.target)\"\n                [attr.checked]=\"checked[option.enum[0]] ? true : null\"\n                [attr.id]=\"id + '.' + option.enum[0]\"\n                >\n              {{option.description}}\n            </label>\n          </div>\n        }\n      }\n    </div>`,\n    standalone: false\n})\nexport class CheckboxWidget extends ControlWidget implements AfterViewInit {\n\n\tchecked: any = {};\n\n\tngAfterViewInit() {\n\t\tconst control = this.control;\n\t\tthis.formProperty.valueChanges.subscribe((newValue) => {\n\t\t\tif (control.value !== newValue) {\n\t\t\t\tcontrol.setValue(newValue, { emitEvent: false });\n\t\t\t\tif (newValue && Array.isArray(newValue)) {\n\t\t\t\t\tnewValue.map(v => this.checked[v] = true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.formProperty.errorsChanges.subscribe((errors) => {\n\t\t\tcontrol.setErrors(errors, { emitEvent: true });\n\t\t});\n\t\tcontrol.valueChanges.subscribe((newValue) => {\n\t\t\tthis.formProperty.setValue(newValue, false);\n\t\t});\n\t}\n\n\tonCheck(el) {\n\t\tif (el.checked) {\n\t\t\tthis.checked[el.value] = true;\n\t\t} else {\n\t\t\tdelete this.checked[el.value];\n\t\t}\n\t\tthis.formProperty.setValue(Object.keys(this.checked), false);\n\t}\n}\n","import { Component, AfterViewInit } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-file-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  <input [name]=\"name\" class=\"text-widget file-widget\" [attr.id]=\"id\"\n\t    [formControl]=\"control\" type=\"file\" [attr.disabled]=\"schema.readOnly?true:null\"\n\t    (change)=\"onFileChange($event)\">\n\t  @if (schema.readOnly) {\n\t    <input [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n\t  }\n\t</div>`,\n    standalone: false\n})\nexport class FileWidget extends ControlWidget implements AfterViewInit {\n\n  protected reader = new FileReader();\n  protected filedata: any = {};\n\n  constructor() {\n    super();\n  }\n\n  ngAfterViewInit() {\n    // OVERRIDE ControlWidget ngAfterViewInit() as ReactiveForms do not handle\n    // file inputs\n    const control = this.control;\n    this.formProperty.errorsChanges.subscribe((errors) => {\n      control.setErrors(errors, { emitEvent: true });\n    });\n\n    this.reader.onloadend = () => {\n      this.filedata.data = window.btoa((this.reader.result as string));\n      this.formProperty.setValue(this.filedata, false);\n    };\n  }\n\n  onFileChange($event) {\n    const file = $event.target.files[0];\n    this.filedata.filename = file.name;\n    this.filedata.size = file.size;\n    this.filedata['content-type'] = file.type;\n    this.filedata.encoding = 'base64';\n    this.reader.readAsBinaryString(file);\n  }\n}\n","import {\n  Component,\n} from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-integer-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  <input [attr.readonly]=\"schema.readOnly?true:null\" [attr.name]=\"name\"\n\t    [attr.id]=\"id\"\n\t    class=\"text-widget integer-widget form-control\" [formControl]=\"control\"\n\t    [attr.type]=\"'number'\" [attr.min]=\"schema.minimum\" [attr.max]=\"schema.maximum\"\n\t    [attr.placeholder]=\"schema.placeholder\"\n\t    [attr.maxLength]=\"schema.maxLength || null\"\n\t    [attr.minLength]=\"schema.minLength || null\">\n\t</div>`,\n    standalone: false\n})\nexport class IntegerWidget extends ControlWidget {}\n","import { Component } from '@angular/core';\n\nimport { ObjectLayoutWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-form-object',\n    template: `@for (fieldset of formProperty.schema.fieldsets; track fieldset) {\n  <fieldset>\n    @if (fieldset.title) {\n      <legend>{{fieldset.title}}</legend>\n    }\n    @if (fieldset.description) {\n      <div>{{fieldset.description}}</div>\n    }\n    @for (fieldId of fieldset.fields; track fieldId) {\n      <div>\n        <sf-form-element [formProperty]=\"formProperty.getProperty(fieldId)\"></sf-form-element>\n      </div>\n    }\n  </fieldset>\n}`,\n    standalone: false\n})\nexport class ObjectWidget extends ObjectLayoutWidget { }\n","import { Component } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-radio-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label>{{schema.title}}</label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  @for (option of schema.oneOf; track option) {\n\t    <div class=\"radio\">\n\t      <label class=\"horizontal control-label\">\n\t        <input [formControl]=\"control\" [attr.name]=\"name\" [attr.id]=\"id + '.' + option.enum[0]\" value=\"{{option.enum[0]}}\" type=\"radio\"  [disableControl]=\"schema.readOnly||option.readOnly\">\n\t        {{option.description}}\n\t      </label>\n\t    </div>\n\t  }\n\t  @if (schema.readOnly) {\n\t    <input [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n\t  }\n\t</div>`,\n    standalone: false\n})\nexport class RadioWidget extends ControlWidget {}\n","import { Component } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-range-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  <input [name]=\"name\" class=\"text-widget range-widget\" [attr.id]=\"id\"\n\t    [formControl]=\"control\" [attr.type]=\"'range'\" [attr.min]=\"schema.minimum\" [attr.max]=\"schema.maximum\" [disableControl]=\"schema.readOnly?true:null\" >\n\t  @if (schema.readOnly) {\n\t    <input [attr.name]=\"name\" type=\"hidden\">\n\t  }\n\t</div>`,\n    standalone: false\n})\nexport class RangeWidget extends ControlWidget {}\n","import { Component } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-select-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">\n\t      {{schema.description}}\n\t    </span>\n\t  }\n\t\n\t  @if (schema.type!='array') {\n\t    <select [formControl]=\"control\" [attr.name]=\"name\" [attr.id]=\"id\" [disableControl]=\"schema.readOnly\" class=\"form-control\">\n\t      @if (schema.oneOf) {\n\t        @for (option of schema.oneOf; track option) {\n\t          <option [ngValue]=\"option.enum[0]\" >{{option.description}}</option>\n\t        }\n\t      } @else {\n\t        @for (option of schema.enum; track option) {\n\t          <option [ngValue]=\"option\" >{{option}}</option>\n\t        }\n\t      }\n\t    </select>\n\t  }\n\t\n\t  @if (schema.type==='array') {\n\t    <select multiple [formControl]=\"control\" [attr.name]=\"name\" [attr.id]=\"id\" [disableControl]=\"schema.readOnly\" class=\"form-control\">\n\t      @for (option of schema.items.oneOf; track option) {\n\t        <option [ngValue]=\"option.enum[0]\" [disabled]=\"option.readOnly\">{{option.description}}</option>\n\t      }\n\t    </select>\n\t  }\n\t\n\t  @if (schema.readOnly) {\n\t    <input [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n\t  }\n\t</div>`,\n    standalone: false\n})\nexport class SelectWidget extends ControlWidget {}\n","import { Component } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-string-widget',\n    template: `@if (this.schema.widget.id ==='hidden') {\n  <input\n    [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n} @else {\n  <div class=\"widget form-group\">\n    @if (schema.title) {\n      <label [attr.for]=\"id\" class=\"horizontal control-label\">\n        {{ schema.title }}\n      </label>\n    }\n    @if (schema.description) {\n      <span class=\"formHelp\">{{schema.description}}</span>\n    }\n    <input [name]=\"name\" [attr.readonly]=\"(schema.widget.id!=='color') && schema.readOnly?true:null\"\n      class=\"text-widget.id textline-widget form-control\"\n      [attr.type]=\"!this.schema.widget.id || this.schema.widget.id === 'string' ? 'text' : this.schema.widget.id\"\n      [attr.id]=\"id\"  [formControl]=\"control\" [attr.placeholder]=\"schema.placeholder\"\n      [attr.maxLength]=\"schema.maxLength || null\"\n      [attr.minLength]=\"schema.minLength || null\"\n      [attr.required]=\"schema.isRequired || null\"\n      [disableControl]=\"(schema.widget.id=='color' && schema.readOnly)?true:null\">\n    @if ((schema.widget.id==='color' && schema.readOnly)) {\n      <input [attr.name]=\"name\" type=\"hidden\" [formControl]=\"control\">\n    }\n  </div>\n}\n`,\n    standalone: false\n})\nexport class StringWidget extends ControlWidget {\n\n    getInputType() {\n        if (!this.schema.widget.id || this.schema.widget.id === 'string') {\n            return 'text';\n        } else {\n            return this.schema.widget.id;\n        }\n    }\n}\n","import { Component } from '@angular/core';\n\nimport { ControlWidget } from '../../widget';\n\n@Component({\n    selector: 'sf-textarea-widget',\n    template: `<div class=\"widget form-group\">\n\t  @if (schema.title) {\n\t    <label [attr.for]=\"id\" class=\"horizontal control-label\">\n\t      {{ schema.title }}\n\t    </label>\n\t  }\n\t  @if (schema.description) {\n\t    <span class=\"formHelp\">{{schema.description}}</span>\n\t  }\n\t  <textarea [readonly]=\"schema.readOnly\" [name]=\"name\"\n\t    [attr.id]=\"id\"\n\t    class=\"text-widget textarea-widget form-control\"\n\t    [attr.placeholder]=\"schema.placeholder\"\n\t    [attr.maxLength]=\"schema.maxLength || null\"\n\t    [attr.minLength]=\"schema.minLength || null\"\n\t  [formControl]=\"control\"></textarea>\n\t</div>`,\n    standalone: false\n})\nexport class TextAreaWidget extends ControlWidget {}\n","import {Component} from \"@angular/core\";\n\n@Component({\n    selector: 'sf-button-widget',\n    template: '<button (click)=\"button.action($event)\">{{button.label}}</button>',\n    standalone: false\n})\nexport class ButtonWidget {\n  public button\n  public formProperty\n}\n","import { ArrayWidget } from './array/array.widget';\nimport { ButtonWidget } from './button/button.widget';\nimport { CheckboxWidget } from './checkbox/checkbox.widget';\nimport { FileWidget } from './file/file.widget';\nimport { IntegerWidget } from './integer/integer.widget';\nimport { ObjectWidget } from './object/object.widget';\nimport { RadioWidget } from './radio/radio.widget';\nimport { RangeWidget } from './range/range.widget';\nimport { SelectWidget } from './select/select.widget';\nimport { StringWidget } from './string/string.widget';\nimport { TextAreaWidget } from './textarea/textarea.widget';\n\nimport { WidgetRegistry } from '../widgetregistry';\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DefaultWidgetRegistry extends WidgetRegistry {\n  constructor() {\n    super();\n\n    this.register('array',  ArrayWidget);\n    this.register('object',  ObjectWidget);\n\n    this.register('string', StringWidget);\n    this.register('search', StringWidget);\n    this.register('tel', StringWidget);\n    this.register('url', StringWidget);\n    this.register('email', StringWidget);\n    this.register('password', StringWidget);\n    this.register('color', StringWidget);\n    this.register('date', StringWidget);\n    this.register('date-time', StringWidget);\n    this.register('time', StringWidget);\n\n    this.register('integer', IntegerWidget);\n    this.register('number', IntegerWidget);\n    this.register('range', RangeWidget);\n\n    this.register('textarea', TextAreaWidget);\n\n    this.register('file', FileWidget);\n    this.register('select', SelectWidget);\n    this.register('radio', RadioWidget);\n    this.register('boolean', CheckboxWidget);\n    this.register('checkbox', CheckboxWidget);\n\n    this.register('button', ButtonWidget);\n\n    this.setDefaultWidget(StringWidget);\n  }\n}\n","import { Validator } from '../../model/validator';\nimport {ISchema} from '../../model/ISchema';\nimport { TUnorderedPair } from '../../model/utils';\n\nexport enum FieldType {\n  String = 'string',\n  Object = 'object',\n  Array = 'array',\n  Boolean = 'boolean',\n  Integer =  'integer',\n  Number = 'number',\n  Null = 'null',\n}\n\nexport type TNullableFieldType = TUnorderedPair<\n  FieldType.Null,\n  FieldType.String | FieldType.Number | FieldType.Boolean | FieldType.Integer\n>;\n\nexport interface Field {\n  name: string;\n  required: boolean;\n  getSchema(): ISchema;\n  getButtons(): any;\n  getValidators(): { path: string, validator: Validator }[];\n}\n\n\n","export type TUnorderedPair<TFirst, TSecond> = [TFirst, TSecond] | [TSecond, TFirst];\n\nexport function isPresent(o) {\n  return o !== null && o !== undefined;\n}\n\nexport function isBlank(o) {\n  return o === null || o === undefined;\n}\n\nexport function isEmptyObject(o) {\n  for (var i in o) return true;\n  return false;\n}","import {BehaviorSubject, combineLatest, Observable, of} from 'rxjs';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\n\nimport {SchemaValidatorFactory} from '../schemavalidatorfactory';\nimport {ValidatorRegistry} from './validatorregistry';\nimport {PropertyBindingRegistry} from '../property-binding-registry';\nimport { ExpressionCompilerFactory, ExpressionCompilerVisibilityIf } from '../expression-compiler-factory';\nimport { ISchema, TSchemaPropertyType } from './ISchema';\nimport { LogService } from '../log.service';\nimport { FieldType } from '../template-schema/field/field';\nimport { isEmptyObject } from './utils';\n\nexport abstract class FormProperty {\n  public schemaValidator: Function;\n  public expressionCompilerVisibiltyIf: ExpressionCompilerVisibilityIf;\n\n  _value: any = null;\n  _errors: any = null;\n  private _valueChanges = new BehaviorSubject<any>(null);\n  private _errorsChanges = new BehaviorSubject<any>(null);\n  private _visible = true;\n  private _visibilityChanges = new BehaviorSubject<boolean>(true);\n  private _root: PropertyGroup;\n  private _parent: PropertyGroup;\n  private _path: string;\n  _propertyBindingRegistry: PropertyBindingRegistry;\n  __canonicalPath: string;\n  __canonicalPathNotation: string;\n\n  /**\n   * Provides the unique path of this form element.<br/>\n   * E.g.:\n   * <code>/garage/cars</code>,<br/>\n   * <code>/shop/book/0/page/1/</code>\n   */\n  get _canonicalPath() { return this.__canonicalPath; }\n  set _canonicalPath(canonicalPath: string) {\n    this.__canonicalPath = canonicalPath;\n    this.__canonicalPathNotation = (this.__canonicalPath||'')\n      .replace(new RegExp('^/', 'ig'), '')\n      .replace(new RegExp('/$', 'ig'), '')\n      .replace(new RegExp('/', 'ig'), '.');\n  }\n  /**\n   * Uses the unique path provided by the property <code>_canonicalPath</code><br/>\n   * but converts it to a HTML Element Attribute ID compliant format.<br/>\n   * E.g.:\n   * <code>garage.cars</code>,<br/>\n   * <code>shop.book.0.page.1.</code>\n   */\n  get canonicalPathNotation() { return this.__canonicalPathNotation; }\n\n  private _rootName;\n  /**\n   * Provides the HTML Element Attribute ID/NAME compliant representation\n   * of the root element.<br/>\n   * Represents the HTML FORM NAME.<br/>\n   * Only the root <code>FormProperty</code> will provide a value here.\n   */\n  get rootName() { return this._rootName; }\n\n  constructor(schemaValidatorFactory: SchemaValidatorFactory,\n              private validatorRegistry: ValidatorRegistry,\n              expressionCompilerFactory: ExpressionCompilerFactory,\n              public schema: ISchema,\n              parent: PropertyGroup,\n              path: string,\n              protected logger: LogService) {\n    this.schemaValidator = schemaValidatorFactory.createValidatorFn(this.schema);\n    this.expressionCompilerVisibiltyIf = expressionCompilerFactory.createExpressionCompilerVisibilityIf();\n\n    this._parent = parent;\n    if (parent) {\n      this._root = parent.root;\n    } else if (this instanceof PropertyGroup) {\n      this._root = <PropertyGroup><any>this;\n      this._rootName = this.createRootName();\n    }\n    this._path = path;\n  }\n\n  /**\n   * Creates the HTML ID and NAME attribute compliant string.\n   */\n  private createRootName(): string {\n    if (this.schema && this.schema['name']) {\n      return this._rootName = this.schema['name'].replace(new RegExp('[\\\\s]+', 'ig'), '_')\n    }\n    return '';\n  }\n\n  public get valueChanges() {\n    return this._valueChanges;\n  }\n\n  public get errorsChanges() {\n    return this._errorsChanges;\n  }\n\n  public get type(): TSchemaPropertyType {\n    return this.schema.type;\n  }\n\n  public get isNullableType(): boolean {\n    return Array.isArray(this.schema.type) && this.schema.type.some(type => type === FieldType.Null);\n  }\n\n  public get parent(): PropertyGroup {\n    return this._parent;\n  }\n\n  public get root(): PropertyGroup {\n    return this._root || <PropertyGroup><any>this;\n  }\n\n  public get path(): string {\n    return this._path;\n  }\n\n  public get value() {\n    return this._value;\n  }\n\n  public get visible() {\n    return this._visible;\n  }\n\n  public get valid() {\n    return this._errors === null;\n  }\n\n  public abstract setValue(value: any, onlySelf: boolean);\n\n  public abstract reset(value: any, onlySelf: boolean);\n\n  public updateValueAndValidity(onlySelf = false, emitEvent = true) {\n    this._updateValue();\n\n    if (emitEvent) {\n      this.valueChanges.next(this.value);\n    }\n\n    this._runValidation();\n\n    if (this.parent && !onlySelf) {\n      this.parent.updateValueAndValidity(onlySelf, emitEvent);\n    }\n\n  }\n\n  /**\n   * @internal\n   */\n  public abstract _hasValue(): boolean;\n\n  /**\n   *  @internal\n   */\n  public abstract _updateValue();\n\n  /**\n   * @internal\n   */\n  public _runValidation(): any {\n    let errors = this.schemaValidator(this._value) || [];\n\n    // remove missing required property error if property is not visible\n    for (let i = errors.length - 1; i >= 0; i -= 1) {\n      const error = errors[i];\n      if (error.code === \"OBJECT_MISSING_REQUIRED_PROPERTY\") {\n        let path = `${error.path.substring(1)}`;\n        if (path.substring(1) !== error.params[0]) {\n          path += `/${error.params.join(\"/\")}`;\n        }\n        const requiredProperty = this.searchProperty(path);\n        if (requiredProperty && requiredProperty.visible === false) {\n          errors.splice(i, 1);\n        }\n      }\n    }\n\n    let customValidator = this.validatorRegistry.get(this.path);\n    if (customValidator) {\n      let customErrors = customValidator(this.value, this, this.findRoot());\n      errors = this.mergeErrors(errors, customErrors);\n    }\n    if (errors.length === 0) {\n      errors = null;\n    }\n\n    this._errors = errors;\n    this.setErrors(this._errors);\n  }\n\n  private mergeErrors(errors, newErrors) {\n    if (newErrors) {\n      if (Array.isArray(newErrors)) {\n        errors = errors.concat(...newErrors);\n      } else {\n        errors.push(newErrors);\n      }\n    }\n    return errors;\n  }\n\n  private setErrors(errors) {\n    this._errors = errors;\n    this._errorsChanges.next(errors);\n  }\n\n  public extendErrors(errors) {\n    errors = this.mergeErrors(this._errors || [], errors);\n    this.setErrors(errors);\n  }\n\n  searchProperty(path: string): FormProperty {\n    let prop: FormProperty = this;\n    let base: PropertyGroup = null;\n\n    let result = null;\n    if (path[0] === '/') {\n      base = this.findRoot();\n      result = base.getProperty(path.substr(1));\n    } else {\n      while (result === null && prop.parent !== null) {\n        prop = base = prop.parent;\n        result = base.getProperty(path);\n      }\n    }\n    return result;\n  }\n\n  public findRoot(): PropertyGroup {\n    let property: FormProperty = this;\n    while (property.parent !== null) {\n      property = property.parent;\n    }\n    return <PropertyGroup>property;\n  }\n\n  private setVisible(visible: boolean) {\n    this._visible = visible;\n    this._visibilityChanges.next(visible);\n    this.updateValueAndValidity();\n  }\n\n  /**\n   * Making use of the expression compiler for the <code>visibleIf</code> condition\n   * @param sourceProperty The source property where the `visibleIf` condition is set.\n   * @param targetProperty  The target property what provided the `value` on which the `visibleIf` condition will be checked against. May be `null` or `undefined`\n   * @param dependencyPath The dependency path of the `targetProperty`\n   * @param value The value of the `targetProperty` to check the `visiblityIf` condintion against. May be `null` or `undefined`\n   * @param expression The value or expression to check against the `value` for the `targetProperty`. May be `null` or `undefined`\n   */\n  private __evaluateVisibilityIf(\n    sourceProperty: FormProperty,\n    targetProperty: FormProperty,\n    dependencyPath: string,\n    value: any = '',\n    expression: string | string[] | number | number[] | boolean | boolean[]): boolean {\n    try {\n      let valid = false\n      const expArray = Array.isArray(expression) ? expression : [expression]\n      for (const expString of expArray) {\n        if (typeof expString === 'boolean') {\n          valid = !expString ? !value : value\n        } else if (typeof expString === 'number') {\n          valid = (!!value || value == 0) ? `${expString}` === `${value}` : false;\n        } else if (-1 !== `${expString}`.indexOf('$ANY$')) {\n          if(Array.isArray(value)) {\n            valid = value.length > 0;\n          } else if(typeof value === \"number\") {\n            valid = true;\n          } else if(typeof value === \"boolean\") {\n            valid = true;\n          } else if(typeof value === \"string\") {\n            valid = value !== '';\n          } else if(typeof value === \"object\") {\n            valid = !isEmptyObject(value);\n          }\n        } else if (0 === `${expString}`.indexOf('$EXP$')) {\n          const _expresssion = (expString as string).substring('$EXP$'.length);\n          valid = true === this.expressionCompilerVisibiltyIf.evaluate(_expresssion, {\n            source: sourceProperty,\n            target: targetProperty\n          })\n        } else if (Array.isArray(value)) {\n\t\t\t    valid = value.some((val) => `${val}` === `${expString}`);\n\t\t    } else {\n          valid = !!value ? `${expString}` === `${value}` : false;\n        }\n        if (valid) {\n          break\n        }\n      }\n      return valid\n    } catch (error) {\n      this.logger.error('Error processing \"VisibileIf\" expression for path: ', dependencyPath,\n        `source - ${(sourceProperty ? sourceProperty._canonicalPath : '<no-sourceProperty>')}: `, sourceProperty,\n        `target - ${(targetProperty ? targetProperty._canonicalPath : '<no-targetProperty>')}: `, targetProperty,\n        'value:', value,\n        'expression: ', expression,\n        'error: ', error)\n    }\n  }\n\n  /**\n   * binds visibility conditions of type `oneOf` and `allOf`.\n   * @returns `true` if any visibility binding of type `oneOf` or `allOf` has been processed. Otherwise `false`.\n   */\n  private __bindVisibility_oneOf_or_allOf(): boolean {\n    /**\n     * <pre>\n     *     \"oneOf\":[{\n     *         \"path\":[\"value\",\"value\"]\n     *     },{\n     *         \"path\":[\"value\",\"value\"]\n     *     }]\n     * </pre>\n     * <pre>\n     *     \"allOf\":[{\n     *         \"path\":[\"value\",\"value\"]\n     *     },{\n     *         \"path\":[\"value\",\"value\"]\n     *     }]\n     * </pre>\n     */\n    // get the visibleIf property and check if it has a oneOf or allOf property\n    const visibleIfProperty = this.schema.visibleIf;\n    let oneOfOrAllOf;\n    if (visibleIfProperty) {\n      if (!!visibleIfProperty.oneOf) oneOfOrAllOf = visibleIfProperty.oneOf;\n      else if (!!visibleIfProperty.allOf) oneOfOrAllOf = visibleIfProperty.allOf;\n    }\n\n    // oneOf or allOf is set so this method handles the binding\n    if (visibleIfProperty && oneOfOrAllOf) {\n      const finalObservable: Observable<boolean> = this.__bindConditionalVisiblityChain(oneOfOrAllOf, !!visibleIfProperty.oneOf, !!visibleIfProperty.allOf);\n      // subscribe to the last observable which collects all temporary results\n      finalObservable.pipe(distinctUntilChanged()).subscribe((visible) => {\n        this.setVisible(visible);\n      });\n      return true;\n    }\n\n    // oneOf and allOf is not set. this method does not handle the logic\n    return false;\n  }\n\n  /**\n   * helper function to recursively bind visibilty in an arbitrary chain oneOf allOf chain\n   * @param visbilityElement The element from the visibitly chain. Can be an array from e.g. {\"oneOf\": [...]} or an element with one property for the dependency path e.g. {\"textField1\": ...}\n   * @param isOneOf Boolean to chain the oberservables as oneOf\n   * @param isAllOf Boolean to chain the oberservables as allOf\n   * @returns An Array with one\n   */\n  private __bindConditionalVisiblityChain(visbilityElement: any, isOneOf: boolean, isAllOf: boolean): Observable<boolean> {\n    // all observables are added to this array, if the element is oneOf or allOf\n    const visibiltyBindings: Array<Observable<boolean>> = [];\n\n    // oneOf or allOf = visibiltyElement must be an array\n    if (isOneOf || isAllOf) {\n      for (const objInOf of visbilityElement) {\n        // bind all elements recursively with the same function.\n        // objInOf must be an object, which may contain allOf or oneOf again but this is checked by the recursive call to this method\n        visibiltyBindings.push(this.__bindConditionalVisiblityChain(objInOf, false, false));\n      }\n      // visibiltyElement must be an obj, which may contain oneOf or allOf again\n    } else {\n      const containsOneOf = visbilityElement.hasOwnProperty(\"oneOf\");\n      const containsAllOf = visbilityElement.hasOwnProperty(\"allOf\");\n\n      let visibleIfOf: any = null;\n      if (containsOneOf) visibleIfOf = visbilityElement.oneOf;\n      else if (containsAllOf) visibleIfOf = visbilityElement.allOf;\n\n      // if oneOf or allOf is present check if it is an array with at least 1 element\n      if (visibleIfOf) {\n        // empty arrays just return boolean false\n        if (visibleIfOf.length == 0) return of(false);\n        // recursive call if visbilityElement has oneOf or allOf in it\n        return this.__bindConditionalVisiblityChain(visibleIfOf, containsOneOf, containsAllOf);\n      } else {\n        // it's a dependency path\n        const observables = this.__handleDependencyPath(visbilityElement);\n        return combineLatest(observables, (...values: boolean[]) => values.indexOf(true) !== -1);\n      }\n    }\n\n    // combine all observables to one boolean by using logical and or logical or. eventually return the observable\n    let ret;\n    if (isAllOf) ret = combineLatest(visibiltyBindings, (...values: boolean[]) => values.indexOf(false) === -1);\n    else if (isOneOf) ret = combineLatest(visibiltyBindings, (...values: boolean[]) => values.indexOf(true) !== -1);\n    return ret;\n  }\n\n  /**\n   * Handles a dependency path in a oneOf or allOf\n   * @param dependencyElement An element / object which contains neither a field with oneOf or allOf as name. Handled as dependency path in json\n   * @returns An oberservable boolean containing the evaluation of the statement, where the statement is the value of the dependency path field\n   */\n  private __handleDependencyPath(dependencyElement: any): Array<Observable<any>> {\n    const dependencyPath = Object.keys(dependencyElement)[0];\n\n    const propertiesBinding = [];\n    const properties = this.findProperties(this, dependencyPath);\n    if ((properties || []).length) {\n      for (const property of properties) {\n        if (property) {\n          let valueCheck;\n          const _chk = value => this.__evaluateVisibilityIf(this, property, dependencyPath, value, dependencyElement[dependencyPath]) ? true : false;\n\n          valueCheck = property.valueChanges.pipe(map(_chk));\n          const visibilityCheck = property._visibilityChanges;\n          const and = combineLatest([valueCheck, visibilityCheck], (v1, v2) => v1 && v2);\n          propertiesBinding.push(and);\n        }\n      }\n      return propertiesBinding;\n    } else {\n      this.logger.warn(\"Can't find property \" + dependencyPath + \" for visibility check of \" + this.path);\n      this.registerMissingVisibilityBinding(dependencyPath, this);\n    }\n    return [of(false)];\n  }\n\n  // A field is visible if AT LEAST ONE of the properties it depends on is visible AND has a value in the list\n  public _bindVisibility() {\n    if (this.__bindVisibility_oneOf_or_allOf())\n      return;\n    let visibleIf = this.schema.visibleIf;\n    if (typeof visibleIf === 'object' && Object.keys(visibleIf).length === 0) {\n      this.setVisible(false);\n    } else if (visibleIf !== undefined) {\n      let propertiesBinding = [];\n      for (let dependencyPath in visibleIf) {\n        if (visibleIf.hasOwnProperty(dependencyPath)) {\n          const properties = this.findProperties(this, dependencyPath);\n          if ((properties || []).length) {\n            for (const property of properties) {\n              if (property) {\n                const valueCheck = property.valueChanges.pipe(map(\n                  value => this.__evaluateVisibilityIf(this, property, dependencyPath, value, visibleIf[dependencyPath])\n                ));\n                const visibilityCheck = property._visibilityChanges;\n                const and = combineLatest([valueCheck, visibilityCheck], (v1, v2) => v1 && v2);\n                propertiesBinding.push(and);\n              }\n            }\n          } else {\n            this.logger.warn('Can\\'t find property ' + dependencyPath + ' for visibility check of ' + this.path);\n            this.registerMissingVisibilityBinding(dependencyPath, this);\n            // not visible if not existent\n            this.setVisible(false);\n          }\n        }\n      }\n\n      combineLatest(propertiesBinding, (...values: boolean[]) => {\n        return values.indexOf(true) !== -1;\n      }).pipe(distinctUntilChanged()).subscribe((visible) => {\n        this.setVisible(visible);\n      });\n    }\n  }\n\n  private registerMissingVisibilityBinding(dependencyPath: string, formProperty: FormProperty) {\n    formProperty._propertyBindingRegistry.getPropertyBindingsVisibility().add(dependencyPath, formProperty.path);\n  }\n\n\n  /**\n   * Finds all <code>formProperties</code> from a path with wildcards.<br/>\n   * e.g: <code>/garage/cars/&#42;/tires/&#42;/name</code><br/>\n   * @param target\n   * @param propertyPath\n   */\n  findProperties(target: FormProperty, propertyPath: string): FormProperty[] {\n    const props: FormProperty[] = [];\n    const paths = this.findPropertyPaths(target, propertyPath);\n    for (const path of paths) {\n      const p: FormProperty = target.searchProperty(path);\n      if (p) {\n        props.push(p);\n      }\n    }\n    return props;\n  }\n\n  /**\n   * Creates canonical paths from a path with wildcards.\n   * e.g:<br/>\n   * From:<br/>\n   * <code>/garage/cars/&#42;/tires/&#42;/name</code><br/>\n   * it creates:<br/>\n   * <code>/garage/cars/0/tires/0/name</code><br/>\n   * <code>/garage/cars/0/tires/1/name</code><br/>\n   * <code>/garage/cars/0/tires/2/name</code><br/>\n   * <code>/garage/cars/0/tires/3/name</code><br/>\n   * <code>/garage/cars/1/tires/0/name</code><br/>\n   * <code>/garage/cars/2/tires/1/name</code><br/>\n   * <code>/garage/cars/3/tires/2/name</code><br/>\n   * <code>/garage/cars/3/tires/3/name</code><br/>\n   * <code>/garage/cars/&#42;/tires/&#42;/name</code><br/>\n   * <code>/garage/cars/&#42;/tires/2/name</code><br/>\n   * <code>/garage/cars/&#42;/tires/3/name</code><br/>\n   * <br/>etc...\n   * @param target\n   * @param path\n   * @param parentPath\n   */\n  findPropertyPaths(target: FormProperty, path: string, parentPath?: string): string[] {\n    const ix = path.indexOf('*');\n    if (-1 !== ix) {\n      const prePath = ix > -1 ? path.substring(0, ix - 1) : path;\n      const subPath = ix > -1 ? path.substring(ix + 1) : path;\n      const prop: FormProperty = target.searchProperty(prePath);\n      let pathFound = [];\n      if (prop instanceof PropertyGroup) {\n        const arrProp = prop.properties as FormProperty[];\n        for (let i = 0; i < arrProp.length; i++) {\n          const curreItemPath = (parentPath || '') + prePath + (prePath.endsWith('/') ? '' : '/') + i + subPath;\n          const curreItemPrePath = (parentPath || '') + prePath + i;\n          if (-1 === curreItemPath.indexOf('*')) {\n            pathFound.push(curreItemPath);\n          }\n          const childrenPathFound = this.findPropertyPaths(arrProp[i], subPath, curreItemPrePath);\n          pathFound = pathFound.concat(childrenPathFound);\n        }\n      }\n      return pathFound;\n    }\n    return [path];\n  }\n}\n\nexport abstract class PropertyGroup extends FormProperty {\n\n  _properties: FormProperty[] | { [key: string]: FormProperty } = null;\n\n  get properties() {\n    return this._properties;\n  }\n\n  set properties(properties: FormProperty[] | { [key: string]: FormProperty }) {\n    /**\n     * Override the setter to add an observer that notices when an item is added or removed.<br/>\n     */\n    this._properties = new Proxy(properties, this._propertyProxyHandler);\n  }\n  \n  private _propertyProxyHandler = new ExtendedProxyHandler(this.logger)\n\n  getProperty(path: string) {\n    let subPathIdx = path.indexOf('/');\n    let propertyId = subPathIdx !== -1 ? path.substr(0, subPathIdx) : path;\n\n    let property = this.properties[propertyId];\n    if (property !== null && subPathIdx !== -1 && property instanceof PropertyGroup) {\n      let subPath = path.substr(subPathIdx + 1);\n      property = (<PropertyGroup>property).getProperty(subPath);\n    }\n    return property;\n  }\n\n  public forEachChild(fn: (formProperty: FormProperty, str: String) => void) {\n    for (let propertyId in this.properties) {\n      if (this.properties.hasOwnProperty(propertyId)) {\n        let property = this.properties[propertyId];\n        fn(property, propertyId);\n      }\n    }\n  }\n\n  public forEachChildRecursive(fn: (formProperty: FormProperty) => void) {\n    this.forEachChild((child) => {\n      fn(child);\n    });\n  }\n\n  public _bindVisibility() {\n    super._bindVisibility();\n    this._bindVisibilityRecursive();\n  }\n\n  private _bindVisibilityRecursive() {\n    this.forEachChildRecursive((property) => {\n      property._bindVisibility();\n    });\n  }\n\n  public isRoot() {\n    return this === this.root;\n  }\n}\n\n\nexport class ExtendedProxyHandler implements ProxyHandler<FormProperty[] | { [key: string]: FormProperty }> {\n  constructor(private logger: LogService) { }\n  /**\n   * When a new item is added it will be checked for visibility updates to proceed <br/>\n   * if any other field has a binding reference to it.<br/>\n   */\n  set(target: FormProperty[] | { [p: string]: FormProperty }, p: PropertyKey, value: any, receiver: any): boolean {\n\n    /**\n     * 1) Make sure a canonical path is set\n     */\n    const assertCanonicalPath = (propertyValue: any) => {\n      const formProperty = propertyValue as FormProperty;\n      if (Array.isArray(target) && propertyValue instanceof FormProperty) {\n        /**\n         * Create a canonical path replacing the last '*' with the elements position in array\n         * @param propertyPath\n         * @param indexOfChild\n         */\n        const getCanonicalPath = (propertyPath: string, indexOfChild: number) => {\n          let pos;\n          if (propertyPath && -1 !== (pos = propertyPath.lastIndexOf('*'))) {\n            return propertyPath.substring(0, pos) + indexOfChild.toString() + propertyPath.substring(pos + 1);\n          }\n        };\n        if (formProperty) {\n          formProperty._canonicalPath = getCanonicalPath(formProperty._canonicalPath, p as number);\n        }\n      }\n\n      const recalculateCanonicalPath = (formProperty: FormProperty) => {\n        if (!(formProperty instanceof PropertyGroup))\n          return\n        const propertyGroup = formProperty as PropertyGroup;\n        const propertyGroupChildren = (Array.isArray(propertyGroup.properties) ?\n          propertyGroup.properties :\n          Object.values(propertyGroup.properties || {})) as FormProperty[];\n        if (propertyGroupChildren.length || (formProperty.path || '').endsWith('/*')) {\n          /**\n           * If it is an array, then all children canonical paths must be computed now.\n           * The children don't have the parent's path segment set yet,\n           * because they are created before the parent gets attached to its parent.\n           */\n          for (const child of propertyGroupChildren) {\n            if (child.__canonicalPath.indexOf('*') >= 0) {\n              const p_path = formProperty._canonicalPath.split('/')\n              child._canonicalPath = p_path.concat(child._canonicalPath.split('/').splice(p_path.length)).join('/')\n            }\n            recalculateCanonicalPath(child)\n          }\n        }\n      }\n      recalculateCanonicalPath(formProperty)\n      const propertyGroup = formProperty as PropertyGroup;\n      const propertyGroupChildren = (Array.isArray(propertyGroup.properties) ?\n      propertyGroup.properties :\n      Object.values(propertyGroup.properties || {})) as FormProperty[];\n      return { property: formProperty, children: propertyGroupChildren };\n    };\n    const { property, children } = assertCanonicalPath(value);\n\n    /**\n     * 2) Add the new property before rebinding, so it can be found by <code>_bindVisibility</code>\n     */\n    const result = target[p as string] = value;\n\n    /**\n     * 3) Re-bind the visibility bindings referencing to this canonical paths\n     */\n    const rebindVisibility = () => {\n      const rebindAll = [property].concat(children);\n      const findPropertiesToRebind = (formProperty: FormProperty) => {\n        const propertyBindings = formProperty._propertyBindingRegistry.getPropertyBindingsVisibility();\n        let rebind: string[] = [];\n        if (formProperty._canonicalPath) {\n          rebind = rebind.concat(rebind.concat(propertyBindings.findByDependencyPath(formProperty._canonicalPath) || []));\n          if (formProperty._canonicalPath.startsWith('/')) {\n            rebind = rebind.concat(rebind.concat(propertyBindings.findByDependencyPath(formProperty._canonicalPath.substring(1)) || []));\n          }\n        }\n        rebind = rebind.concat(propertyBindings.findByDependencyPath(formProperty.path) || []);\n        if (formProperty.path.startsWith('/')) {\n          rebind = rebind.concat(rebind.concat(propertyBindings.findByDependencyPath(formProperty.path.substring(1)) || []));\n        }\n        const uniqueValues = {};\n        for (const item of rebind) {\n          uniqueValues[item] = item;\n        }\n        return Object.keys(uniqueValues);\n      };\n      for (const _property of rebindAll) {\n        if (_property instanceof FormProperty) {\n          try {\n            const rebindPaths = findPropertiesToRebind(_property);\n            for (const rebindPropPath of rebindPaths) {\n              const rebindProp = _property.searchProperty(rebindPropPath);\n              if (!rebindProp) {\n                this.logger.warn('Can\\'t find property to rebind visibility at path:', _property.path, 'property:', _property);\n              } else {\n                rebindProp._bindVisibility();\n              }\n            }\n          } catch (e) {\n            this.logger.error('Rebinding visibility error at path:', _property.path, 'property:', _property, e);\n          }\n        }\n      }\n    };\n    rebindVisibility();\n\n    return result;\n  }\n  get(target: FormProperty[] | { [p: string]: FormProperty }, p: PropertyKey, receiver: any): any {\n    return target[p as string];\n  }\n  deleteProperty(target: FormProperty[] | { [p: string]: FormProperty }, p: PropertyKey): boolean {\n    return delete target[p as string];\n  }\n}\n","import { FieldType } from '../template-schema/field/field';\n\nexport type TPropertyTypeMapping = { [type in FieldType]?: any };\n\nexport const PROPERTY_TYPE_MAPPING: TPropertyTypeMapping  = {};\n","import { FormProperty, PropertyGroup } from './formproperty';\nimport { SchemaValidatorFactory } from '../schemavalidatorfactory';\nimport { ValidatorRegistry } from './validatorregistry';\nimport { PropertyBindingRegistry } from '../property-binding-registry';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport { ISchema, TSchemaPropertyType } from './ISchema';\nimport { LogService } from '../log.service';\nimport { TNullableFieldType, FieldType } from '../template-schema/field/field';\n\nexport class FormPropertyFactory {\n\n  constructor(private schemaValidatorFactory: SchemaValidatorFactory, private validatorRegistry: ValidatorRegistry,\n              private propertyBindingRegistry: PropertyBindingRegistry,\n              private expressionCompilerFactory: ExpressionCompilerFactory,\n              private logger: LogService) {\n  }\n\n  createProperty(schema: ISchema, parent: PropertyGroup = null, propertyId?: string): FormProperty {\n    let newProperty = null;\n    let path = '';\n    let _canonicalPath = '';\n    if (parent) {\n      path += parent.path;\n      if (parent.parent !== null) {\n        path += '/';\n        _canonicalPath += '/';\n      }\n      if (parent.type === 'object') {\n        path += propertyId;\n        _canonicalPath += propertyId;\n      } else if (parent.type === 'array') {\n        path += '*';\n        _canonicalPath += '*';\n      } else {\n        throw new Error('Instanciation of a FormProperty with an unknown parent type: ' + parent.type);\n      }\n      _canonicalPath = (parent._canonicalPath || parent.path) + _canonicalPath;\n    } else {\n      path = '/';\n      _canonicalPath = '/';\n    }\n\n    if (schema.$ref) {\n      const refSchema = this.schemaValidatorFactory.getSchema(parent.root.schema, schema.$ref);\n      newProperty = this.createProperty(refSchema, parent, path);\n    } else {\n      const type: FieldType = this.isUnionType(schema.type) && this.isValidNullableUnionType(schema.type as TNullableFieldType)\n          ? this.extractTypeFromNullableUnionType(schema.type as TNullableFieldType)\n          :  schema.type as FieldType;\n\n      if (PROPERTY_TYPE_MAPPING[type]) {\n        if (type === 'object' || type === 'array') {\n          newProperty = PROPERTY_TYPE_MAPPING[type](\n          this.schemaValidatorFactory, this.validatorRegistry, this.expressionCompilerFactory, schema, parent, path, this, this.logger);\n        } else {\n          newProperty = PROPERTY_TYPE_MAPPING[type](\n          this.schemaValidatorFactory, this.validatorRegistry, this.expressionCompilerFactory, schema, parent, path, this.logger);\n        }\n      } else {\n        throw new TypeError(`Undefined type ${type} (existing: ${Object.keys(PROPERTY_TYPE_MAPPING)})`);\n      }\n    }\n\n    newProperty._propertyBindingRegistry = this.propertyBindingRegistry;\n    newProperty._canonicalPath = _canonicalPath;\n\n    if (newProperty instanceof PropertyGroup) newProperty.reset(null, true);\n\n    return newProperty;\n  }\n\n  private isUnionType(unionType: TSchemaPropertyType): boolean {\n    return Array.isArray(unionType) && unionType.length > 1;\n  }\n\n  private isValidNullableUnionType(unionType: TNullableFieldType): boolean {\n    if (!unionType.some(subType => subType === FieldType.Null)) {\n      throw new TypeError(`Unsupported union type ${unionType}. Supports only nullable union types, for example [\"string\", \"null\"]`);\n    }\n\n    if (unionType.length !== 2) {\n      throw new TypeError(`Unsupported count of types in nullable union type ${unionType}. Supports only two types one of the which should be \"null\"`);\n    }\n\n    const type = this.extractTypeFromNullableUnionType(unionType);\n\n    if (!type || [FieldType.Object, FieldType.Array].includes(type)) {\n      throw new TypeError(`Unsupported second type ${type} for nullable union. Allowed types are \"${FieldType.Number}\", \"${FieldType.Integer}\", \"${FieldType.Boolean}\", \"${FieldType.String}\"`);\n    }\n\n    return true;\n  }\n\n  private extractTypeFromNullableUnionType(unionType: TNullableFieldType): FieldType | undefined {\n    return unionType.filter(type => type !== 'null')?.[0] as FieldType | undefined;\n  }\n}\n","import {FormProperty} from './formproperty';\n\nexport abstract class AtomicProperty extends FormProperty {\n\n  setValue(value, onlySelf = false) {\n    this._value = value;\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  reset(value: any = null, onlySelf = true) {\n    this.resetValue(value);\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  resetValue(value: any): any {\n    if (value === null) {\n      if (this.schema.default !== undefined) {\n        value = this.schema.default;\n      } else {\n        value = this.fallbackValue();\n      }\n    }\n    this._value = value;\n  }\n\n  public _hasValue(): boolean {\n    return this.fallbackValue() !== this.value;\n  }\n\n  abstract fallbackValue(): any;\n\n  public _updateValue() {\n  }\n}\n","import { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport {PropertyGroup} from './formproperty';\nimport {FormPropertyFactory} from './formpropertyfactory';\nimport {SchemaValidatorFactory} from '../schemavalidatorfactory';\nimport {ValidatorRegistry} from './validatorregistry';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class ObjectProperty extends PropertyGroup {\n\n  private propertiesId: string[] = [];\n\n  constructor(private formPropertyFactory: FormPropertyFactory,\n              schemaValidatorFactory: SchemaValidatorFactory,\n              validatorRegistry: ValidatorRegistry,\n              expressionCompilerFactory: ExpressionCompilerFactory,\n              schema: ISchema,\n              parent: PropertyGroup,\n              path: string,\n              logger: LogService) {\n    super(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n    this.createProperties();\n  }\n\n  setValue(value: any, onlySelf: boolean) {\n    for (const propertyId in value) {\n      if (value.hasOwnProperty(propertyId)) {\n        this.properties[propertyId].setValue(value[propertyId], true);\n      }\n    }\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  reset(value: any, onlySelf = true) {\n    value = value || this.schema.default || {};\n    this.resetProperties(value);\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  resetProperties(value: any) {\n    for (const propertyId in this.schema.properties) {\n      if (this.schema.properties.hasOwnProperty(propertyId)) {\n        this.properties[propertyId].reset(value[propertyId], true);\n      }\n    }\n  }\n\n  createProperties() {\n    this.properties = {};\n    this.propertiesId = [];\n    for (const propertyId in this.schema.properties) {\n      if (this.schema.properties.hasOwnProperty(propertyId)) {\n        const propertySchema = this.schema.properties[propertyId];\n        this.properties[propertyId] = this.formPropertyFactory.createProperty(propertySchema, this, propertyId);\n        this.propertiesId.push(propertyId);\n      }\n    }\n  }\n\n  public _hasValue(): boolean {\n    return !!Object.keys(this.value).length;\n  }\n\n  public _updateValue() {\n    this.reduceValue();\n  }\n\n  public _runValidation() {\n    super._runValidation();\n\n    if (this._errors) {\n      this._errors.forEach(error => {\n        const prop = this.searchProperty(error.path.slice(1));\n        if (prop) {\n          prop.extendErrors(error);\n        }\n      });\n    }\n  }\n\n  private reduceValue(): void {\n    const value = {};\n    this.forEachChild((property, propertyId: string) => {\n      if (property.visible && property._hasValue()) {\n        value[propertyId] = property.value;\n      }\n    });\n    this._value = value;\n  }\n}\n\nPROPERTY_TYPE_MAPPING.object = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    formPropertyFactory: FormPropertyFactory,\n    logger: LogService\n) => {\n    return new ObjectProperty(\n        formPropertyFactory, schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import {FormProperty, PropertyGroup} from './formproperty';\nimport {FormPropertyFactory} from './formpropertyfactory';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport {SchemaValidatorFactory} from '../schemavalidatorfactory';\nimport {ValidatorRegistry} from './validatorregistry';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class ArrayProperty extends PropertyGroup {\n\n  constructor(private formPropertyFactory: FormPropertyFactory,\n              schemaValidatorFactory: SchemaValidatorFactory,\n              validatorRegistry: ValidatorRegistry,\n              expressionCompilerFactory: ExpressionCompilerFactory,\n              schema: ISchema,\n              parent: PropertyGroup,\n              path: string,\n              logger: LogService) {\n    super(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n  }\n\n  addItem(value: any = null): FormProperty {\n    let newProperty = this.addProperty();\n    newProperty.reset(value, false);\n    newProperty._bindVisibility();\n    return newProperty;\n  }\n\n  private addProperty() {\n    let itemSchema = this.schema.items\n    if (Array.isArray(this.schema.items)) {\n      const itemSchemas = this.schema.items as object[]\n      if (itemSchemas.length > (<FormProperty[]>this.properties).length) {\n        itemSchema = itemSchema[(<FormProperty[]>this.properties).length]\n      } else if (this.schema.additionalItems) {\n        itemSchema = this.schema.additionalItems\n      } else {\n        // souldn't add new items since schema is undefined for the item at its position\n        return null\n      }\n    }\n    let newProperty = this.formPropertyFactory.createProperty(itemSchema, this);\n    (<FormProperty[]>this.properties).push(newProperty);\n    return newProperty;\n  }\n\n  removeItem(item: FormProperty) {\n    this.properties = (<FormProperty[]>this.properties).filter(i => i !== item);\n    this.updateValueAndValidity(false, true);\n  }\n\n  setValue(value: any, onlySelf: boolean) {\n    this.createProperties();\n    this.resetProperties(value);\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  public _hasValue(): boolean {\n    return true;\n  }\n\n  public _updateValue() {\n    this.reduceValue();\n  }\n\n  private reduceValue(): void {\n    const value = [];\n    this.forEachChild((property, _) => {\n      if (property.visible && property._hasValue()) {\n        value.push(property.value);\n      }\n    });\n    this._value = value;\n  }\n\n  reset(value: any, onlySelf = true) {\n    value = value || this.schema.default || [];\n    this.properties = [];\n    this.resetProperties(value);\n    this.updateValueAndValidity(onlySelf, true);\n  }\n\n  private createProperties() {\n    this.properties = [];\n  }\n\n\n  private resetProperties(value: any) {\n    for (let idx in value) {\n      if (value.hasOwnProperty(idx)) {\n        let property = this.addProperty();\n        property.reset(value[idx], true);\n      }\n    }\n  }\n}\n\nPROPERTY_TYPE_MAPPING.array = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    formPropertyFactory: FormPropertyFactory,\n    logger: LogService\n) => {\n    return new ArrayProperty(\n        formPropertyFactory, schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import { AtomicProperty } from './atomicproperty';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport { PropertyGroup } from './formproperty';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport { ValidatorRegistry } from './validatorregistry';\nimport { SchemaValidatorFactory } from '../schemavalidatorfactory';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class StringProperty extends AtomicProperty {\n\n  fallbackValue() {\n    return this.isNullableType ? null : '';\n  }\n\n}\n\nPROPERTY_TYPE_MAPPING.string = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    logger: LogService\n) => {\n    return new StringProperty(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import { AtomicProperty } from './atomicproperty';\nimport { ValidatorRegistry, PropertyGroup } from '.';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport { SchemaValidatorFactory } from '../schemavalidatorfactory';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class BooleanProperty extends AtomicProperty {\n\n  fallbackValue() {\n    return null;\n  }\n}\n\nPROPERTY_TYPE_MAPPING.boolean = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    logger: LogService\n) => {\n    return new BooleanProperty(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import {AtomicProperty} from './atomicproperty';\nimport { ValidatorRegistry, PropertyGroup } from '.';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport { SchemaValidatorFactory } from '../schemavalidatorfactory';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class NumberProperty extends AtomicProperty {\n\n  fallbackValue() {\n    return null;\n  }\n\n  setValue(value, onlySelf = false) {\n    if (typeof value === 'string') {\n      if (value.length) {\n        value = value.indexOf('.') > -1 ? parseFloat(value) : parseInt(value, 10);\n      } else {\n        value = null;\n      }\n    }\n    this._value = value;\n    this.updateValueAndValidity(onlySelf, true);\n  }\n}\n\nPROPERTY_TYPE_MAPPING.integer = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    logger: LogService\n) => {\n    return new NumberProperty(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n\n PROPERTY_TYPE_MAPPING.number = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    logger: LogService\n) => {\n    return new NumberProperty(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import { AtomicProperty } from './atomicproperty';\nimport { ValidatorRegistry, PropertyGroup } from '.';\nimport { ExpressionCompilerFactory } from '../expression-compiler-factory';\nimport { SchemaValidatorFactory } from '../schemavalidatorfactory';\nimport { PROPERTY_TYPE_MAPPING } from './typemapping';\nimport {ISchema} from './ISchema';\nimport { LogService } from '../log.service';\n\nexport class NullProperty extends AtomicProperty {\n  fallbackValue() {\n    return null;\n  }\n}\n\nPROPERTY_TYPE_MAPPING.null = (\n    schemaValidatorFactory: SchemaValidatorFactory,\n    validatorRegistry: ValidatorRegistry,\n    expressionCompilerFactory: ExpressionCompilerFactory,\n    schema: ISchema,\n    parent: PropertyGroup,\n    path: string,\n    logger: LogService\n) => {\n    return new NullProperty(schemaValidatorFactory, validatorRegistry, expressionCompilerFactory, schema, parent, path, logger);\n};\n","import { Validator } from './validator';\nimport { Injectable } from \"@angular/core\";\n\n@Injectable()\nexport class ValidatorRegistry {\n  private validators: Validator[] = [];\n\n  register(path: string, validator: Validator) {\n    this.validators[path] = validator;\n  }\n\n  get(path: string): Validator {\n    return this.validators[path];\n  }\n\n  clear() {\n    this.validators = [];\n  }\n}\n","import {isBlank} from './utils';\nimport {Injectable} from '@angular/core';\nimport {ISchema} from './ISchema';\nimport {FieldType} from '../template-schema/field/field';\n\nfunction formatMessage(message, path) {\n  return `Parsing error on ${path}: ${message}`;\n}\n\nfunction schemaError(message, path): void {\n  let mesg = formatMessage(message, path);\n  throw new Error(mesg);\n}\n\nfunction schemaWarning(message, path): void {\n  let mesg = formatMessage(message, path);\n  throw new Error(mesg);\n}\n\n@Injectable()\nexport class SchemaPreprocessor {\n\n  static preprocess(jsonSchema: ISchema, path = '/'): any {\n    jsonSchema = jsonSchema || {};\n    SchemaPreprocessor.normalizeExtensions(jsonSchema);\n    if (jsonSchema.type === 'object') {\n      SchemaPreprocessor.checkProperties(jsonSchema, path);\n      SchemaPreprocessor.checkAndCreateFieldsets(jsonSchema, path);\n    } else if (jsonSchema.type === 'array') {\n      SchemaPreprocessor.checkItems(jsonSchema, path);\n    }\n    SchemaPreprocessor.normalizeWidget(jsonSchema);\n    SchemaPreprocessor.recursiveCheck(jsonSchema, path);\n  }\n\n  private static checkProperties(jsonSchema, path: string) {\n    if (isBlank(jsonSchema.properties)) {\n      jsonSchema.properties = {};\n      schemaWarning('Provided json schema does not contain a \\'properties\\' entry. Output schema will be empty', path);\n    }\n  }\n\n  private static checkAndCreateFieldsets(jsonSchema: any, path: string) {\n    if (jsonSchema.fieldsets === undefined) {\n      if (jsonSchema.order !== undefined) {\n        SchemaPreprocessor.replaceOrderByFieldsets(jsonSchema);\n      } else {\n        SchemaPreprocessor.createFieldsets(jsonSchema);\n      }\n    }\n    SchemaPreprocessor.checkFieldsUsage(jsonSchema, path);\n  }\n\n  private static checkFieldsUsage(jsonSchema: ISchema, path: string) {\n    let fieldsId: string[] = Object.keys(jsonSchema.properties);\n    let usedFields = {};\n    for (let fieldset of jsonSchema.fieldsets) {\n      for (let fieldId of fieldset.fields) {\n        if (usedFields[fieldId] === undefined) {\n          usedFields[fieldId] = [];\n        }\n        usedFields[fieldId].push(fieldset.id);\n      }\n    }\n\n    for (const fieldId of fieldsId) {\n      const isRequired = jsonSchema.required && jsonSchema.required.indexOf(fieldId) > -1;\n      if (isRequired && jsonSchema.properties[fieldId]) {\n        jsonSchema.properties[fieldId].isRequired = true;\n      }\n      if (usedFields.hasOwnProperty(fieldId)) {\n        if (usedFields[fieldId].length > 1) {\n          schemaError(`${fieldId} is referenced by more than one fieldset: ${usedFields[fieldId]}`, path);\n        }\n        delete usedFields[fieldId];\n      } else if (isRequired) {\n        schemaError(`${fieldId} is a required field but it is not referenced as part of a 'order' or a 'fieldset' property`, path);\n      } else {\n        delete jsonSchema[fieldId];\n        schemaWarning(`Removing unreferenced field ${fieldId}`, path);\n      }\n    }\n\n    for (let remainingfieldsId in usedFields) {\n      if (usedFields.hasOwnProperty(remainingfieldsId)) {\n        schemaWarning(`Referencing non-existent field ${remainingfieldsId} in one or more fieldsets`, path);\n      }\n    }\n  }\n\n  private static createFieldsets(jsonSchema: ISchema) {\n    jsonSchema.order = Object.keys(jsonSchema.properties);\n    SchemaPreprocessor.replaceOrderByFieldsets(jsonSchema);\n  }\n\n  private static replaceOrderByFieldsets(jsonSchema: ISchema) {\n    jsonSchema.fieldsets = [{\n      id: 'fieldset-default',\n      title: jsonSchema.title || '',\n      description: jsonSchema.description || '',\n      name: jsonSchema.name || '',\n      fields: jsonSchema.order\n    }];\n    delete jsonSchema.order;\n  }\n\n  private static normalizeWidget(fieldSchema: ISchema) {\n    let widget = fieldSchema.widget;\n    if (widget === undefined) {\n      widget = {'id': fieldSchema.type};\n    } else if (typeof widget === 'string') {\n      widget = {'id': widget};\n    }\n    fieldSchema.widget = widget;\n  }\n\n  private static checkItems(jsonSchema: ISchema, path) {\n    if (jsonSchema.items === undefined) {\n      schemaError('No \\'items\\' property in array', path);\n    }\n  }\n\n  private static recursiveCheck(jsonSchema: ISchema, path: string) {\n    if (jsonSchema.type === FieldType.Object) {\n      for (let fieldId in jsonSchema.properties) {\n        if (jsonSchema.properties.hasOwnProperty(fieldId)) {\n          let fieldSchema = jsonSchema.properties[fieldId];\n          SchemaPreprocessor.preprocess(fieldSchema, path + fieldId + '/');\n        }\n      }\n      if (jsonSchema.hasOwnProperty('definitions')) {\n        for (let fieldId in jsonSchema.definitions) {\n          if (jsonSchema.definitions.hasOwnProperty(fieldId)) {\n            let fieldSchema = jsonSchema.definitions[fieldId];\n            SchemaPreprocessor.removeRecursiveRefProperties(fieldSchema, `#/definitions/${fieldId}`);\n            SchemaPreprocessor.preprocess(fieldSchema, path + fieldId + '/');\n          }\n        }\n      }\n    } else if (jsonSchema.type === 'array') {\n      if (Array.isArray(jsonSchema.items || {})) {\n        for (let i = 0; i < jsonSchema.items.length; i++) {\n          SchemaPreprocessor.preprocess(jsonSchema.items[i], path + '*/');\n        }\n      } else {\n        SchemaPreprocessor.preprocess(jsonSchema.items, path + '*/');\n      }\n      if (jsonSchema.additionalItems) {\n        SchemaPreprocessor.preprocess(jsonSchema.additionalItems, path + '*/');\n      }\n    }\n  }\n\n  private static removeRecursiveRefProperties(jsonSchema: ISchema, definitionPath) {\n    // to avoid infinite loop\n    if (jsonSchema.type === FieldType.Object) {\n      for (let fieldId in jsonSchema.properties) {\n        if (jsonSchema.properties.hasOwnProperty(fieldId)) {\n          if (jsonSchema.properties[fieldId].$ref\n            && jsonSchema.properties[fieldId].$ref === definitionPath) {\n            delete jsonSchema.properties[fieldId];\n          } else if (jsonSchema.properties[fieldId].type === 'object') {\n            SchemaPreprocessor.removeRecursiveRefProperties(jsonSchema.properties[fieldId], definitionPath);\n          }\n        }\n      }\n    }\n  }\n  \n  /**\n   * Enables alias names for JSON schema extensions.\n   *\n   * Copies the value of each alias JSON schema property\n   * to the JSON schema property of ngx-schema-form.\n   *\n   * @param schema JSON schema to enable alias names.\n   */\n  private static normalizeExtensions(schema: ISchema): void {\n    const extensions = [\n        { name: \"fieldsets\", regex: /^x-?field-?sets$/i },\n        { name: \"widget\",    regex: /^x-?widget$/i },\n        { name: \"visibleIf\", regex: /^x-?visible-?if$/i }\n    ];\n    const keys = Object.keys(schema);\n    for (let i = 0; i < keys.length; ++i) {\n      let k = keys[i];\n      let e = extensions.find(e => !!k.match(e.regex));\n      if (e) {\n        let v = schema[k];\n        let copy = JSON.parse(JSON.stringify(v));\n        schema[e.name] = copy;\n      }\n    }\n  }\n}\n\n","import { ElementRef } from '@angular/core';\n\nexport class TemplateSchemaElement {\n\n  getTextContent(elementRef: ElementRef): string {\n    const nodes = Array.from(elementRef.nativeElement.childNodes);\n    const node = <HTMLElement>nodes.filter((el: HTMLElement) => {\n      return el.nodeType === el.TEXT_NODE;\n    }).pop();\n\n    if (!node || !node.nodeValue) {\n      return '';\n    }\n\n    return node.nodeValue.trim();\n  }\n\n}\n","import {\n  Component,\n  AfterContentInit,\n  Input,\n  Output,\n  ElementRef,\n  EventEmitter,\n  forwardRef\n} from '@angular/core';\n\nimport { TemplateSchemaElement } from '../template-schema-element';\n\n\n@Component({\n    selector: 'sf-button',\n    templateUrl: './button.component.html',\n    providers: [\n        {\n            provide: TemplateSchemaElement,\n            useExisting: forwardRef(() => ButtonComponent),\n        }\n    ],\n    standalone: false\n})\nexport class ButtonComponent extends TemplateSchemaElement implements AfterContentInit {\n\n  @Input()\n  id: string;\n\n  @Input()\n  label = '';\n\n  @Input()\n  widget: string | object;\n\n  @Output()\n  click = new EventEmitter<any>();\n\n  constructor(private elementRef: ElementRef) {\n    super();\n  }\n\n  private setLabelFromContent() {\n    const textContent = this.getTextContent(this.elementRef);\n\n    // label as @Input takes priority over content text\n    if (textContent && !this.label) {\n      this.label = textContent;\n    }\n\n  }\n\n  ngAfterContentInit() {\n    this.setLabelFromContent();\n  }\n\n}\n","<ng-content></ng-content>\n","import {\n Component,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { TemplateSchemaElement } from '../../template-schema-element';\n\n\n@Component({\n    selector: 'sf-item',\n    templateUrl: './item.component.html',\n    standalone: false\n})\nexport class ItemComponent extends TemplateSchemaElement implements OnInit {\n\n  @Input()\n  value: any;\n\n  description: string;\n\n  constructor(private elementRef: ElementRef) {\n    super();\n  }\n\n  ngOnInit() {\n    this.description = this.getTextContent(this.elementRef);\n  }\n\n}\n","<ng-content></ng-content>\n","import { QueryList } from '@angular/core';\n\nimport { Validator } from '../../model/validator';\nimport { ActionRegistry } from '../../model/actionregistry';\nimport { ButtonComponent } from '../button/button.component';\nimport { TemplateSchemaElement } from '../template-schema-element';\n\nimport { Field, FieldType, TNullableFieldType } from './field';\nimport {ISchema} from '../../model/ISchema';\n\nexport abstract class FieldParent extends TemplateSchemaElement {\n\n  name = '';\n  type: FieldType | TNullableFieldType;\n\n  get path(): string {\n    if (!this.name) {\n      return '';\n    }\n\n    return '/' + this.name;\n  }\n\n  protected abstract actionRegistry: ActionRegistry;\n  protected abstract childButtons: QueryList<ButtonComponent>;\n\n\n  getButtons(): { id: string, label: string, widget?: string | object }[] {\n\n    return this.childButtons.map((button, index) => {\n\n      if (!button.id) {\n        const randomString = Math.random().toString(16).substr(2, 8);\n        // generate id for button\n        button.id = this.name + randomString + '_'  + (index + 1);\n      }\n\n      // register as button action the EventEmitter click\n      this.actionRegistry.register(\n        button.id,\n        button.click.emit.bind(button.click)\n      );\n\n      const _button = <any>{\n        id: button.id,\n        label: button.label,\n      };\n\n      if (button.widget) {\n        _button.widget = button.widget;\n      }\n\n      return _button;\n\n    });\n  }\n\n  protected getFieldsValidators(\n    fields: Field[]\n  ): { path: string, validator: Validator }[] {\n\n    return fields.reduce((validators, field) => {\n      return validators.concat(field.getValidators());\n    }, []);\n\n  }\n\n  protected getFieldsSchema(fields: Field[]): ISchema {\n    return fields.reduce((schema: ISchema, field: Field) => {\n\n      switch (this.type) {\n        case FieldType.Array:\n          schema.items = field.getSchema();\n          break;\n\n        default:\n          if (!schema.properties) {\n            schema.properties = {};\n          }\n\n          schema.properties[field.name] = field.getSchema();\n          break;\n      }\n\n      const buttons = field.getButtons();\n      if (buttons.length > 0) {\n        schema.buttons = buttons;\n      }\n\n      if (!field.required) {\n        return schema;\n      }\n\n      if (!schema.required) {\n        schema.required = [];\n      }\n      schema.required.push(field.name);\n      return schema;\n    }, {});\n  }\n\n}\n","import { Injectable, EventEmitter } from '@angular/core';\n\n@Injectable()\nexport class TemplateSchemaService {\n\n  changes = new EventEmitter();\n\n  constructor() { }\n\n  changed() {\n    this.changes.emit();\n  }\n\n}\n","import {\n  Component,\n  Input,\n  AfterContentInit,\n  ContentChildren,\n  QueryList,\n  ElementRef,\n  SimpleChanges,\n  OnChanges,\n  forwardRef,\n} from \"@angular/core\";\n\nimport { ActionRegistry } from \"../../model/actionregistry\";\nimport { Validator } from \"../../model/validator\";\n\nimport { TemplateSchemaService } from \"../template-schema.service\";\nimport { ButtonComponent } from \"../button/button.component\";\n\nimport { FieldParent } from \"./field-parent\";\nimport { FieldType, Field, TNullableFieldType } from \"./field\";\nimport { ItemComponent } from \"./item/item.component\";\nimport { merge } from \"rxjs\";\nimport { ISchema } from \"../../model/ISchema\";\n\n@Component({\n    selector: \"sf-field\",\n    templateUrl: \"./field.component.html\",\n    standalone: false\n})\nexport class FieldComponent\n  extends FieldParent\n  implements Field, OnChanges, AfterContentInit\n{\n  @ContentChildren(forwardRef(() => FieldComponent))\n  childFields: QueryList<FieldComponent>;\n\n  @ContentChildren(ItemComponent)\n  childItems: QueryList<ItemComponent>;\n\n  @ContentChildren(ButtonComponent)\n  childButtons: QueryList<ButtonComponent>;\n\n  @Input()\n  name: string;\n\n  @Input()\n  type: FieldType | TNullableFieldType = FieldType.String;\n\n  @Input()\n  format: string;\n\n  @Input()\n  required: boolean;\n\n  @Input()\n  readOnly: boolean;\n\n  @Input()\n  title: string;\n\n  @Input()\n  description: string;\n\n  @Input()\n  placeholder: string;\n\n  @Input()\n  widget: string | object;\n\n  @Input()\n  validator: Validator;\n\n  @Input()\n  schema: ISchema = {};\n\n  constructor(\n    private elementRef: ElementRef,\n    private templateSchemaService: TemplateSchemaService,\n    protected actionRegistry: ActionRegistry\n  ) {\n    super();\n  }\n\n  getSchema(): ISchema {\n    const { properties, items, required } = this.getFieldsSchema(\n      this.childFields.filter((field) => field !== this)\n    );\n\n    const oneOf = this.getOneOf();\n\n    const schema: ISchema = {\n      type: this.type,\n    };\n\n    if (this.title !== undefined) {\n      schema.title = this.title;\n    }\n\n    if (properties !== undefined) {\n      schema.properties = properties;\n    }\n\n    if (items !== undefined) {\n      schema.items = items;\n    }\n\n    // requried child fields\n    if (required !== undefined) {\n      schema.required = required;\n    }\n\n    if (oneOf !== undefined) {\n      schema.oneOf = oneOf;\n    }\n\n    if (this.description !== undefined) {\n      schema.description = this.description;\n    }\n\n    if (this.placeholder !== undefined) {\n      schema.placeholder = this.placeholder;\n    }\n\n    if (this.format !== undefined) {\n      schema.format = this.format;\n    }\n\n    if (this.widget !== undefined) {\n      schema.widget = this.widget;\n    }\n\n    if (this.readOnly !== undefined) {\n      schema.readOnly = this.readOnly;\n    }\n\n    const buttons = this.getButtons();\n    if (buttons.length > 0) {\n      schema.buttons = buttons;\n    }\n\n    // @Input schema takes precedence\n    return Object.assign(schema, this.schema);\n  }\n\n  getValidators(): { path: string; validator: Validator }[] {\n    // registering validator here is not possible since prop full path is needed\n    const childValidators = this.getFieldsValidators(\n      this.childFields.filter((field) => field !== this)\n    );\n    const validators = childValidators.map(({ path, validator }) => {\n      return {\n        path: this.path + path,\n        validator,\n      };\n    });\n\n    if (!this.validator) {\n      return validators;\n    }\n\n    validators.push({ path: this.path, validator: this.validator });\n    return validators;\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    const keys = Object.keys(changes);\n    if (keys.length > 0) {\n      for (const key of keys) {\n        if (!changes[key].isFirstChange()) {\n          // on any input change, force schema change generation\n          this.templateSchemaService.changed();\n          break;\n        }\n      }\n    }\n  }\n\n  private getOneOf() {\n    if (this.childItems.length === 0) {\n      return;\n    }\n\n    const items = this.childItems.map(({ value, description }) => {\n      if (!Array.isArray(value)) {\n        return { enum: [value], description };\n      }\n\n      return { enum: value, description };\n    });\n\n    if (items.length === 0) {\n      return;\n    }\n\n    return items;\n  }\n\n  private setTitleFromContent() {\n    const textContent = this.getTextContent(this.elementRef);\n\n    //  title as @Input takes priority over content text\n    if (textContent && !this.title) {\n      this.title = textContent;\n    }\n  }\n\n  ngAfterContentInit() {\n    // cache it\n    this.setTitleFromContent();\n\n    merge(\n      this.childFields.changes,\n      this.childItems.changes,\n      this.childButtons.changes\n    ).subscribe(() => this.templateSchemaService.changed());\n  }\n}\n","<ng-content ></ng-content>\n","import ZSchema from 'z-schema';\nimport {Injectable} from '@angular/core';\nimport {ISchema} from './model/ISchema';\nimport {FieldType} from './template-schema/field/field';\n\nexport abstract class SchemaValidatorFactory {\n  abstract createValidatorFn(schema): (value: any) => any;\n\n  abstract getSchema(schema, ref): any;\n\n  /**\n   * Override this method to reset the schema validator instance.<br/>\n   * This may be required since some schema validators keep a deep copy<br/>\n   * of your schemas and changes at runtime are not recognized by the schema validator.<br/>\n   * In this method you should either re-instantiate the schema validator or\n   * clear its cache.<br/>\n   * Example of re-instantiating schema validator\n   * <code>\n   *     reset(){\n   *         this.zschema = new ZSchema({})\n   *     }\n   * </code>\n   * <br/>\n   * Since this method it self does nothing there is <br/>\n   * no need to call the <code>super.reset()</code>\n   */\n  reset() {\n\n  }\n\n  /**\n   * Override this method if the validator instance supports compiling a schema an resolve all refs and defs.\n   * @param schema The schema to be compiled and get its refs, deps, etc. resolved\n   * @returns The compiled schema. Per default it does simply return the give schema.\n   */\n  compile(schema:any){\n    return schema\n  }\n}\n\n@Injectable()\nexport class ZSchemaValidatorFactory extends SchemaValidatorFactory {\n\n  protected zschema;\n\n  constructor() {\n    super();\n    this.createSchemaValidator();\n  }\n\n  private createSchemaValidator() {\n    this.zschema =  new ZSchema({\n      breakOnFirstError: false\n    });\n  }\n\n  reset() {\n    this.createSchemaValidator();\n  }\n\n  compile(schema: any) {\n    const zSchema = new ZSchema({}) as any;\n    zSchema.compileSchema(schema);\n    return zSchema.getResolvedSchema(schema);\n  }\n\n  createValidatorFn(schema: ISchema) {\n    return (value): { [key: string]: boolean } => {\n\n      if (schema.type === FieldType.Number || schema.type === FieldType.Integer) {\n        value = +value;\n      }\n\n      this.zschema.validate(value, schema);\n      // tslint:disable-next-line:prefer-const\n      let err = this.zschema.getLastErrors();\n\n      this.denormalizeRequiredPropertyPaths(err);\n\n      return err || null;\n    };\n  }\n\n  getSchema(schema: any, ref: string) {\n    // check definitions are valid\n    const isValid = this.zschema.compileSchema(schema);\n    if (isValid) {\n      return this.getDefinition(schema, ref);\n    } else {\n      throw this.zschema.getLastError();\n    }\n  }\n\n  private denormalizeRequiredPropertyPaths(err: any[]) {\n    if (err && err.length) {\n      err = err.map(error => {\n        if (error.path === '#/' && error.code === 'OBJECT_MISSING_REQUIRED_PROPERTY') {\n          error.path = `${error.path}${error.params[0]}`;\n        }\n        return error;\n      });\n    }\n  }\n\n  private getDefinition(schema: any, ref: string) {\n    let foundSchema = schema;\n    ref.split('/').slice(1).forEach(ptr => {\n      if (ptr) {\n        foundSchema = foundSchema[ptr];\n      }\n    });\n    return foundSchema;\n  }\n}\n\n","import { Injectable } from \"@angular/core\";\n/**\n * General purpose propery binding registry\n */\n@Injectable()\nexport class PropertyBindingRegistry {\n\n  private bindings: { [key: string]: PropertyBindings } = {};\n\n  getPropertyBindings(type: PropertyBindingTypes): PropertyBindings {\n    this.bindings[type] = this.bindings[type] || new PropertyBindings();\n    return this.bindings[type];\n  }\n\n  getPropertyBindingsVisibility() {\n    return this.getPropertyBindings(PropertyBindingTypes.visibility);\n  }\n}\n\n/**\n * Defines the types of supported property bindings.<br/>\n * For now only <code>visibility</code> is supported.<br/>\n */\nexport enum PropertyBindingTypes {\n  visibility\n}\n\n/**\n * Storage that holds all bindings that are property paths related.<br/>\n */\nexport class PropertyBindings {\n  sourcesIndex: SimplePropertyIndexer = new SimplePropertyIndexer();\n  dependenciesIndex: SimplePropertyIndexer = new SimplePropertyIndexer();\n\n  add(dependencyPath: string, sourcePropertyPath: string) {\n    this.sourcesIndex.store(sourcePropertyPath, dependencyPath);\n    this.dependenciesIndex.store(dependencyPath, sourcePropertyPath);\n  }\n\n  findByDependencyPath(dependencyPath: string): string[] {\n    const result = this.dependenciesIndex.find(dependencyPath);\n    result.results = result.results || [];\n    let values = [];\n    for (const res of result.results) {\n      values = values.concat(Object.keys(res.value));\n    }\n    return result.found ? values : [];\n  }\n\n  getBySourcePropertyPath(sourcePropertyPath: string): string[] {\n    const result = this.sourcesIndex.find(sourcePropertyPath);\n    result.results = result.results || [];\n    let values = [];\n    for (const res of result.results) {\n      values = values.concat(Object.keys(res.value));\n    }\n    return result.found ? values : [];\n  }\n\n  createPathIndex(path: string): string[] {\n    return path.split('/');\n  }\n}\n\n/**\n * Simple indexer to store property paths\n */\nexport class SimplePropertyIndexer {\n\n  static MARKER = '$____value';\n  index: object = {};\n  findOnlyWithValue = true;\n\n  private _createPathIndex(path: string) {\n    return path\n      .replace(new RegExp('//', 'g'), '/')\n      .replace(new RegExp('^/', 'g'), '')\n      .split('/').filter(item => item);\n  }\n\n  store(propertyPath: string, value?: any) {\n    this._storeIndex(this._createPathIndex(propertyPath), value);\n  }\n\n  private _storeIndex(pathIndex: string[], value?: string) {\n    let indexPos = this.index;\n    for (const key of pathIndex) {\n      indexPos[key] = indexPos[key] || {};\n      indexPos = indexPos[key];\n    }\n    if (indexPos && value) {\n      indexPos[SimplePropertyIndexer.MARKER] = indexPos[SimplePropertyIndexer.MARKER] || {};\n      indexPos[SimplePropertyIndexer.MARKER][value] = value;\n    }\n  }\n\n  /**\n   * Find path in index.<br/>\n   * Will find path like:<br/>\n   * <ul>\n   *     <li>/property/0/prop</li>\n   *     <li>/property/0/prop/2/test</li>\n   *     <li>/property/0/prop/&#42;/test</li>\n   *     <li>/property/&#42;/prop/1/test</li>\n   *     <li>/property/&#42;/prop/&#42;/test</li>\n   *     <li>/property/1/prop/&#42;/test</li>\n   *  </ul>\n   * @param path\n   */\n  find(path: string): IndexerResult {\n    return this._findInIndex(this._createPathIndex(path));\n  }\n\n  _findInIndex(path: string[]): IndexerResult {\n    const ixRes: IndexerResult = {target: path, found: false, results: []};\n    this.__findIndex(ixRes, path, this.index, []);\n    return ixRes;\n  }\n\n  __findIndex(indexerResults: IndexerResult, path: string[], index: object, parent?: string[]) {\n\n    const p = parent || [];\n    const segment = path[0];\n    const wild = ('*' === segment) ? Object.keys(index) : [];\n    const _keys = ((Array.isArray(segment) ? segment : [segment]) as string[]).concat(wild);\n    const keys = _keys.filter((item, pos) => '*' !== item && _keys.indexOf(item) === pos); // remove duplicates\n\n    if (index['*']) {\n      keys.push('*');\n    }\n\n    let paths = [];\n    for (const key of keys) {\n      const restPath = path.slice(1);\n      const restIndex = index[key];\n      const restParent = p.concat(key);\n\n      if (path.length === 1) {// collect only the full paths\n        if (!this.findOnlyWithValue || (restIndex && restIndex[SimplePropertyIndexer.MARKER])) {\n          indexerResults.results = indexerResults.results || [];\n          indexerResults.results.push({\n            path: restParent,\n            value: restIndex[SimplePropertyIndexer.MARKER]\n          });\n          paths.push(restParent);\n          indexerResults.found = indexerResults.results.length > 0;\n        }\n      }\n\n      if (!restPath || !restPath.length || !restIndex) {\n        break;\n      }\n      const restPaths = this.__findIndex(indexerResults, restPath, restIndex, restParent);\n\n      paths = paths.concat(restPaths);\n    }\n    return paths;\n  }\n\n}\n\nexport interface IndexerResult {\n  /**\n   * The path originally searched for\n   */\n  target: string[];\n  /**\n   * Flag for the status of found or not found.<br/>\n   * Usually <code>results</code> will be empty if no matches found.\n   */\n  found: boolean;\n  /**\n   * The result path and values from the index search.<br/>\n   * Usually <code>results</code> will be empty if no matches found.\n   */\n  results: {\n    /**\n     * The path that matched the <code>target</code>\n     * separated in segments\n     */\n    path: string[],\n    /**\n     * The value stored at the <code>path</code>\n     */\n    value: any\n  }[];\n}\n","export abstract class ExpressionCompilerFactory {\n    public abstract createExpressionCompiler(): ExpressionCompiler;\n    public abstract createExpressionCompilerVisibilityIf(): ExpressionCompilerVisibilityIf;\n}\n\nexport interface ExpressionCompiler {\n    evaluate(expression: string, context: object): any;\n}\n\nexport interface ExpressionCompilerVisibilityIf {\n    evaluate(expression: string, context: ExpressionContextVisibilitIf): any;\n}\n/**\n * UseCase:<br/>\n * When evaluating the expression of a <code>visibilityIf</code> condition\n * an instance of this definition will be passed as context.<br/>\n * This will give access to the source and target <code>FormProperty</code>.\n */\nexport interface ExpressionContextVisibilitIf {\n    /**\n     * The source property which has the <code>visibilityIf</code> defined\n     */\n    source: FormProperty\n    /**\n     * The target property given with the <code>visibilityIf</code>\n     * <em>path</em> property\n     */\n    target: FormProperty\n}\n\n\nimport * as JEXL from 'jexl';\nimport { FormProperty } from './model';\n\nexport class JEXLExpressionCompilerFactory extends ExpressionCompilerFactory {\n    public createExpressionCompiler(): ExpressionCompiler {\n        return new JEXLExpressionCompiler();\n    }\n\n    public createExpressionCompilerVisibilityIf(): ExpressionCompilerVisibilityIf {\n        return new JEXLExpressionCompilerVisibiltyIf();\n    }\n}\n\nexport class JEXLExpressionCompiler implements ExpressionCompiler {\n    evaluate(expression: string, context: object = {}): any {\n        return new JEXL.Jexl().evalSync(expression, context)\n    }\n}\n\nexport class JEXLExpressionCompilerVisibiltyIf implements ExpressionCompilerVisibilityIf {\n    evaluate(expression: string, context: ExpressionContextVisibilitIf = { source: {} as FormProperty, target: {} as FormProperty }): any {\n        return new JEXL.Jexl().evalSync(expression, context)\n    }\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  OnChanges,\n  EventEmitter,\n  Input,\n  Output,\n  SimpleChanges\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {Action} from './model/action';\nimport {ActionRegistry} from './model/actionregistry';\nimport {FormProperty} from './model/formproperty';\nimport {FormPropertyFactory} from './model/formpropertyfactory';\nimport {SchemaPreprocessor} from './model/schemapreprocessor';\nimport {ValidatorRegistry} from './model/validatorregistry';\nimport {Validator} from './model/validator';\nimport {Binding} from './model/binding';\nimport {BindingRegistry} from './model/bindingregistry';\n\nimport {SchemaValidatorFactory} from './schemavalidatorfactory';\nimport {WidgetFactory} from './widgetfactory';\nimport {TerminatorService} from './terminator.service';\nimport {PropertyBindingRegistry} from './property-binding-registry';\nimport { ExpressionCompilerFactory } from './expression-compiler-factory';\nimport {ISchema} from './model/ISchema';\nimport { LogService } from './log.service';\n\nexport function useFactory(schemaValidatorFactory, validatorRegistry, propertyBindingRegistry, expressionCompilerFactory, logService) {\n  return new FormPropertyFactory(schemaValidatorFactory, validatorRegistry, propertyBindingRegistry, expressionCompilerFactory, logService);\n}\n\n@Component({\n    selector: 'sf-form',\n    template: `\n    @if (rootProperty) {\n      <form [attr.name]=\"rootProperty.rootName\" [attr.id]=\"rootProperty.rootName\">\n        <sf-form-element [formProperty]=\"rootProperty\"></sf-form-element>\n      </form>\n    }`,\n    providers: [\n        ActionRegistry,\n        ValidatorRegistry,\n        PropertyBindingRegistry,\n        BindingRegistry,\n        SchemaPreprocessor,\n        WidgetFactory,\n        {\n            provide: FormPropertyFactory,\n            useFactory: useFactory,\n            deps: [SchemaValidatorFactory, ValidatorRegistry, PropertyBindingRegistry, ExpressionCompilerFactory, LogService]\n        },\n        TerminatorService,\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: FormComponent,\n            multi: true\n        }\n    ],\n    standalone: false\n})\nexport class FormComponent implements OnChanges, ControlValueAccessor {\n\n  @Input() schema: ISchema | null = null;\n\n  @Input() model: any;\n\n  @Input() actions: { [actionId: string]: Action } = {};\n\n  @Input() validators: { [path: string]: Validator } = {};\n\n  @Input() bindings: { [path: string]: Binding } = {};\n\n  @Output() onChange = new EventEmitter<{ value: any }>();\n\n  @Output() modelChange = new EventEmitter<any>();\n\n  @Output() isValid = new EventEmitter<boolean>();\n\n  @Output() onErrorChange = new EventEmitter<{ value: any[] }>();\n\n  @Output() onErrorsChange = new EventEmitter<{value: any}>();\n\n  rootProperty: FormProperty = null;\n\n  private onChangeCallback: any;\n\n  constructor(\n    private formPropertyFactory: FormPropertyFactory,\n    private actionRegistry: ActionRegistry,\n    private validatorRegistry: ValidatorRegistry,\n    private bindingRegistry: BindingRegistry,\n    private cdr: ChangeDetectorRef,\n    private terminator: TerminatorService\n  ) { }\n\n  writeValue(obj: any) {\n    if (this.rootProperty) {\n      this.rootProperty.reset(obj, false);\n    }\n  }\n\n  registerOnChange(fn: any) {\n    this.onChangeCallback = fn;\n    if (this.rootProperty) {\n      this.rootProperty.valueChanges.subscribe(\n        this.onValueChanges.bind(this)\n      );\n    }\n  }\n\n  // TODO implement\n  registerOnTouched(fn: any) {\n  }\n\n  // TODO implement\n  // setDisabledState(isDisabled: boolean)?: void\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.validators) {\n      this.setValidators();\n    }\n\n    if (changes.actions) {\n      this.setActions();\n    }\n\n    if (changes.bindings) {\n      this.setBindings();\n    }\n\n    if (this.schema && !this.schema.type) {\n      this.schema.type = 'object';\n    }\n\n    if (this.schema && changes.schema) {\n      if (!changes.schema.firstChange) {\n        this.terminator.destroy();\n      }\n\n      SchemaPreprocessor.preprocess(this.schema);\n      this.rootProperty = this.formPropertyFactory.createProperty(this.schema);\n      if (this.model) {\n        // this.rootProperty.reset(this.model, false);\n      }\n\n      this.rootProperty.valueChanges.subscribe(\n        this.onValueChanges.bind(this)\n      );\n\n      this.rootProperty.errorsChanges.subscribe(value => {\n        this.onErrorChange.emit({value: value});\n        this.isValid.emit(!(value && value.length));\n      });\n\n    }\n\n    if (this.schema && (changes.model || changes.schema )) {\n      this.rootProperty.reset(this.model, false);\n      this.rootProperty._bindVisibility();\n      this.cdr.detectChanges();\n    }\n\n  }\n\n  private setValidators() {\n    this.validatorRegistry.clear();\n    if (this.validators) {\n      for (const validatorId in this.validators) {\n        if (this.validators.hasOwnProperty(validatorId)) {\n          this.validatorRegistry.register(validatorId, this.validators[validatorId]);\n        }\n      }\n    }\n  }\n\n  private setActions() {\n    this.actionRegistry.clear();\n    if (this.actions) {\n      for (const actionId in this.actions) {\n        if (this.actions.hasOwnProperty(actionId)) {\n          this.actionRegistry.register(actionId, this.actions[actionId]);\n        }\n      }\n    }\n  }\n\n  private setBindings() {\n    this.bindingRegistry.clear();\n    if (this.bindings) {\n      for (const bindingPath in this.bindings) {\n        if (this.bindings.hasOwnProperty(bindingPath)) {\n          this.bindingRegistry.register(bindingPath, this.bindings[bindingPath]);\n        }\n      }\n    }\n  }\n\n  public reset() {\n    this.rootProperty.reset(null, true);\n  }\n\n  private setModel(value: any) {\n    if (this.model) {\n      for (const key of Object.keys(this.model)) delete this.model[key];\n      Object.assign(this.model, value);\n    } else {\n      this.model = value;\n    }\n  }\n\n  private onValueChanges(value) {\n    if (this.onChangeCallback) {\n      this.setModel(value);\n      this.onChangeCallback(value);\n    }\n\n    // two way binding is used\n    if (this.modelChange.observers.length > 0) {\n      if (!this.onChangeCallback) {\n        this.setModel(value);\n      }\n    }\n    this.onChange.emit({value: value});\n  }\n}\n","import {\n  Directive,\n  ContentChildren,\n  QueryList,\n  AfterContentInit,\n  SimpleChange,\n} from '@angular/core';\nimport { merge } from 'rxjs';\n\nimport { FormComponent } from '../form.component';\nimport { ActionRegistry } from '../model/actionregistry';\nimport { ValidatorRegistry } from '../model/validatorregistry';\nimport { TerminatorService } from '../terminator.service';\n\nimport { TemplateSchemaService } from './template-schema.service';\nimport { FieldComponent } from './field/field.component';\nimport { FieldType } from './field/field';\nimport { ButtonComponent } from './button/button.component';\nimport { FieldParent } from './field/field-parent';\nimport {ISchema} from '../model/ISchema';\n\n\n@Directive({\n    selector: 'sf-form[templateSchema]',\n    providers: [\n        TemplateSchemaService\n    ],\n    standalone: false\n})\nexport class TemplateSchemaDirective extends FieldParent implements AfterContentInit {\n\n  @ContentChildren(FieldComponent)\n  childFields: QueryList<FieldComponent>;\n\n  @ContentChildren(ButtonComponent)\n  childButtons: QueryList<ButtonComponent>;\n\n  constructor(\n    protected actionRegistry: ActionRegistry,\n    protected validatorRegistry: ValidatorRegistry,\n    private formComponent: FormComponent,\n    private terminatorService: TerminatorService,\n    private templateSchemaService: TemplateSchemaService\n  ) {\n    super();\n  }\n\n  setFormDocumentSchema(fields: FieldComponent[]) {\n      this.actionRegistry.clear();\n      this.validatorRegistry.clear();\n\n      const schema: ISchema = this.getFieldsSchema(fields);\n\n      const validators = this.getFieldsValidators(fields);\n      validators.forEach(({ path, validator }) => {\n        this.validatorRegistry.register(path, validator);\n      });\n\n      const previousSchema: ISchema = this.formComponent.schema;\n      this.formComponent.schema = {\n        type: FieldType.Object,\n        properties: schema.properties\n      };\n\n      if (schema.required && schema.required.length > 0) {\n        this.formComponent.schema.requred = schema.required;\n      }\n\n      const buttons = this.getButtons();\n      if (buttons.length > 0) {\n        this.formComponent.schema.buttons = buttons;\n      }\n\n      this.formComponent.ngOnChanges({\n        schema: new SimpleChange(\n          previousSchema,\n          this.formComponent.schema,\n          Boolean(previousSchema)\n        )\n      });\n\n  }\n\n\n  ngAfterContentInit() {\n\n    if (this.childFields.length > 0) {\n      this.setFormDocumentSchema(this.childFields.toArray());\n    }\n\n    merge(\n      this.childFields.changes,\n      this.templateSchemaService.changes\n    )\n   .subscribe(() => {\n      this.terminatorService.destroy();\n      this.setFormDocumentSchema(this.childFields.toArray());\n    });\n\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { FieldComponent } from './field/field.component';\nimport { TemplateSchemaDirective } from './template-schema.directive';\nimport { ButtonComponent } from './button/button.component';\nimport { ItemComponent } from './field/item/item.component';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    TemplateSchemaDirective,\n    FieldComponent,\n    ButtonComponent,\n    ItemComponent\n  ],\n  exports: [\n    TemplateSchemaDirective,\n    FieldComponent,\n    ButtonComponent,\n    ItemComponent\n  ]\n})\nexport class TemplateSchemaModule { }\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'sf-default-field',\n    template: `<p>Unknow type</p>`,\n    standalone: false\n})\nexport class DefaultWidget {}\n","import {NgModule, ModuleWithProviders} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n  FormsModule,\n  ReactiveFormsModule\n} from '@angular/forms';\n\nimport {FormElementComponent} from './formelement.component';\nimport {FormComponent} from './form.component';\nimport {WidgetChooserComponent} from './widgetchooser.component';\nimport {ArrayWidget} from './defaultwidgets/array/array.widget';\nimport {ButtonWidget} from './defaultwidgets/button/button.widget';\nimport {ObjectWidget} from './defaultwidgets/object/object.widget';\nimport {CheckboxWidget} from './defaultwidgets/checkbox/checkbox.widget';\nimport {FileWidget} from './defaultwidgets/file/file.widget';\nimport {IntegerWidget} from './defaultwidgets/integer/integer.widget';\nimport {TextAreaWidget} from './defaultwidgets/textarea/textarea.widget';\nimport {RadioWidget} from './defaultwidgets/radio/radio.widget';\nimport {RangeWidget} from './defaultwidgets/range/range.widget';\nimport {SelectWidget} from './defaultwidgets/select/select.widget';\nimport {StringWidget} from './defaultwidgets/string/string.widget';\nimport {DefaultWidgetRegistry} from './defaultwidgets/defaultwidgetregistry';\nimport {DisableControlDirective} from './defaultwidgets/_directives/disableControl.directive';\n\nimport {\n  DefaultWidget\n} from './default.widget';\n\nimport {WidgetRegistry} from './widgetregistry';\nimport {SchemaValidatorFactory, ZSchemaValidatorFactory} from './schemavalidatorfactory';\nimport {FormElementComponentAction} from './formelement.action.component';\nimport {ExpressionCompilerFactory, JEXLExpressionCompilerFactory} from './expression-compiler-factory';\n\nimport { LOG_LEVEL, LogLevel, LogService, DefaultLogService } from './log.service';\n\nconst moduleProviders = [\n  {\n    provide: WidgetRegistry,\n    useClass: DefaultWidgetRegistry\n  },\n  {\n    provide: SchemaValidatorFactory,\n    useClass: ZSchemaValidatorFactory\n  },\n  {\n    provide: ExpressionCompilerFactory,\n    useClass: JEXLExpressionCompilerFactory\n  },\n  {\n    provide: LOG_LEVEL,\n    useValue: LogLevel.off\n  },\n  {\n    provide: LogService,\n    useClass: DefaultLogService\n  }\n];\n\n@NgModule({\n    imports: [CommonModule, FormsModule, ReactiveFormsModule],\n    declarations: [\n        FormElementComponent,\n        FormElementComponentAction,\n        FormComponent,\n        WidgetChooserComponent,\n        DefaultWidget,\n        ArrayWidget,\n        ButtonWidget,\n        ObjectWidget,\n        CheckboxWidget,\n        FileWidget,\n        IntegerWidget,\n        TextAreaWidget,\n        RadioWidget,\n        RangeWidget,\n        SelectWidget,\n        StringWidget,\n        DisableControlDirective\n    ],\n    exports: [\n        FormComponent,\n        FormElementComponent,\n        FormElementComponentAction,\n        WidgetChooserComponent,\n        ArrayWidget,\n        ButtonWidget,\n        ObjectWidget,\n        CheckboxWidget,\n        FileWidget,\n        IntegerWidget,\n        TextAreaWidget,\n        RadioWidget,\n        RangeWidget,\n        SelectWidget,\n        StringWidget,\n        DisableControlDirective\n    ]\n})\nexport class SchemaFormModule {\n\n  static forRoot(): ModuleWithProviders<SchemaFormModule> {\n    return {\n      ngModule: SchemaFormModule,\n      providers: [...moduleProviders]\n    };\n  }\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.WidgetRegistry","i1.WidgetFactory","i2.TerminatorService","i1.ActionRegistry","i2.BindingRegistry","i3.LogService","i4.FormElementComponentAction","i5.WidgetChooserComponent","i1.FormElementComponent","i2.DisableControlDirective","i1.TemplateSchemaService","i2.ActionRegistry","i1.FormPropertyFactory","i3.ValidatorRegistry","i4.BindingRegistry","i5.TerminatorService","i6","i7.FormElementComponent","i2.ValidatorRegistry","i3.FormComponent","i4.TerminatorService","i5.TemplateSchemaService"],"mappings":"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"}