{"version":3,"file":"kronscht-former.mjs","sources":["../../../projects/former/src/lib/former.service.ts","../../../projects/former/src/lib/elements/base-element.component.ts","../../../projects/former/src/lib/elements/validation-error/validation-error.component.ts","../../../projects/former/src/lib/elements/validation-error/validation-error.component.html","../../../projects/former/src/lib/elements/calendar-element/calendar-element.component.ts","../../../projects/former/src/lib/elements/calendar-element/calendar-element.component.html","../../../projects/former/src/lib/elements/dropdown-element/dropdown-element.component.ts","../../../projects/former/src/lib/elements/dropdown-element/dropdown-element.component.html","../../../projects/former/src/lib/elements/input-group-element/input-group-element.component.ts","../../../projects/former/src/lib/elements/input-group-element/input-group-element.component.html","../../../projects/former/src/lib/elements/text-element/text-element.component.ts","../../../projects/former/src/lib/elements/text-element/text-element.component.html","../../../projects/former/src/lib/elements/autocomplete-element/autocomplete-element.component.ts","../../../projects/former/src/lib/elements/autocomplete-element/autocomplete-element.component.html","../../../projects/former/src/lib/elements/checkbox-element/checkbox-element.component.ts","../../../projects/former/src/lib/elements/checkbox-element/checkbox-element.component.html","../../../projects/former/src/lib/elements/number-element/number-element.component.ts","../../../projects/former/src/lib/elements/number-element/number-element.component.html","../../../projects/former/src/lib/elements/text-area-element/text-area-element.component.ts","../../../projects/former/src/lib/elements/text-area-element/text-area-element.component.html","../../../projects/former/src/lib/elements/display-text-element/display-text-element.component.ts","../../../projects/former/src/lib/elements/display-text-element/display-text-element.component.html","../../../projects/former/src/lib/elements/template-element/template-element.component.ts","../../../projects/former/src/lib/elements/template-element/template-element.component.html","../../../projects/former/src/lib/generated-form-element/generated-form-element.component.ts","../../../projects/former/src/lib/generated-form-element/generated-form-element.component.html","../../../projects/former/src/lib/elements/grid-layout-element/grid-layout-element.component.html","../../../projects/former/src/lib/elements/grid-column-element/grid-column-element.component.html","../../../projects/former/src/lib/elements/group-element/group-element.component.html","../../../projects/former/src/lib/elements/card-element/card-element.component.html","../../../projects/former/src/lib/directive/template-name.directive.ts","../../../projects/former/src/lib/generated-form/generated-form.component.ts","../../../projects/former/src/lib/generated-form/generated-form.component.html","../../../projects/former/src/lib/former.utils.ts","../../../projects/former/src/lib/generated-form-actions/generated-form-actions.component.ts","../../../projects/former/src/lib/generated-form-actions/generated-form-actions.component.html","../../../projects/former/src/lib/former.module.ts","../../../projects/former/src/lib/model/former.model.ts","../../../projects/former/src/public-api.ts","../../../projects/former/src/kronscht-former.ts"],"sourcesContent":["/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { inject, Injectable } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, ValidatorFn, Validators } from '@angular/forms';\nimport { ElementType, ValidationType } from './model/former.enum';\nimport { BaseElement, Element, Elements, FormDefinition, MaxFormValidator, MaxLengthFormValidator, MinFormValidator, MinLengthFormValidator, PatternFormValidator } from './model/former.model';\n\n@Injectable({\n  providedIn: 'root',\n})\nexport class FormerService {\n  readonly fb = inject(FormBuilder);\n\n  generateForm(formDefinition: FormDefinition): FormGroup {\n    const formGroup = this.fb.group({});\n\n    this.addControlRecursive(formGroup, formDefinition.elements);\n\n    return formGroup;\n  }\n\n  addControlRecursive(formGroup: FormGroup, elements: Elements) {\n    for (const key of Object.keys(elements)) {\n      const element: Element = elements[key];\n      switch (element.type) {\n        case ElementType.GroupElement: {\n          const nestedGroup = this.fb.group({});\n          this.addControlRecursive(nestedGroup, element.elements);\n          formGroup.addControl(key, nestedGroup);\n          break;\n        }\n        case ElementType.GridColumnElement:\n        case ElementType.GridLayoutElement:\n        case ElementType.CardElement:\n          this.addControlRecursive(formGroup, element.elements);\n          break;\n        case ElementType.TemplateElement:\n          break;\n        default:\n          formGroup.addControl(key, new FormControl(undefined, this.addValidators(element)));\n      }\n    }\n  }\n\n  addValidators(element: BaseElement): ValidatorFn[] {\n    const validators: ValidatorFn[] = [];\n\n    if (element.validators) {\n      for (const validator of element.validators) {\n        switch (validator.validationType) {\n          case ValidationType.Min:\n            validators.push(Validators.max((validator as MinFormValidator).min));\n            break;\n          case ValidationType.Max:\n            validators.push(Validators.max((validator as MaxFormValidator).max));\n            break;\n          case ValidationType.Required:\n            validators.push(Validators.required);\n            break;\n          case ValidationType.Email:\n            validators.push(Validators.email);\n            break;\n          case ValidationType.MinLength:\n            validators.push(Validators.minLength((validator as MinLengthFormValidator).minLength));\n            break;\n          case ValidationType.MaxLength:\n            validators.push(Validators.maxLength((validator as MaxLengthFormValidator).maxLength));\n            break;\n          case ValidationType.Pattern:\n            validators.push(Validators.pattern((validator as PatternFormValidator).pattern));\n            break;\n          default:\n            break;\n        }\n      }\n    }\n\n    return validators;\n  }\n}\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { KeyValue } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { AbstractControl, FormGroup } from '@angular/forms';\nimport { DisableElement } from '../model/former.model';\n\n@Component({\n  selector: 'lib-base-element-component',\n  template: '<div>do not use directly</div>',\n})\nexport abstract class BaseElementComponent<T extends object> implements OnInit {\n  @Input() parentKey = '';\n  @Input() element!: KeyValue<string, T>;\n  @Input() formGroup!: FormGroup;\n\n  get key(): string {\n    return this.element.key;\n  }\n\n  get field(): T {\n    return this.element.value;\n  }\n\n  get control(): AbstractControl {\n    return this.formGroup.get(this.key) as AbstractControl;\n  }\n\n  ngOnInit(): void {\n    if (this.control && (this.field as DisableElement)) {\n      if ((this.field as DisableElement).disabled) {\n        this.control.disable();\n      } else {\n        this.control.enable();\n      }\n    }\n  }\n}\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component, Input } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { BaseElement } from '../../model/former.model';\n\n@Component({\n  selector: 'lib-validation-error',\n  templateUrl: './validation-error.component.html',\n  styleUrls: ['./validation-error.component.css'],\n})\nexport class ValidationErrorComponent {\n  @Input() control?: AbstractControl;\n  @Input() field?: BaseElement;\n  @Input() key?: string;\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div *ngIf=\"control?.invalid\">\n  <div *ngFor=\"let validator of field?.validators\">\n    <small\n      *ngIf=\"control?.hasError(validator.validationType)\"\n      [id]=\"key + '-message'\"\n      class=\"p-error\"\n      >{{ validator.messageKey | translate: validator.messageArgs }}</small\n    >\n  </div>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { CalendarElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-calendar-element',\n  templateUrl: './calendar-element.component.html',\n  styleUrls: ['./calendar-element.component.css'],\n})\nexport class CalendarElementComponent extends BaseElementComponent<CalendarElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <span class=\"p-float-label mt-4\">\n    <p-calendar\n      [id]=\"key\"\n      [name]=\"key\"\n      [formControlName]=\"key\"\n      [dateFormat]=\"element.value.dateFormat\"\n      [styleClass]=\"'p-inputtext-sm w-full'\"></p-calendar>\n    <label [for]=\"key\">{{ element.value.title }}</label>\n  </span>\n  <lib-validation-error\n    [control]=\"control\"\n    [key]=\"key\"\n    [field]=\"field\"></lib-validation-error>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { DropdownElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-dropdown-element',\n  templateUrl: './dropdown-element.component.html',\n  styleUrls: ['./dropdown-element.component.css'],\n})\nexport class DropdownElementComponent extends BaseElementComponent<DropdownElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <span class=\"p-float-label mt-4\">\n    <p-dropdown\n      [formControlName]=\"key\"\n      [options]=\"element.value.options | async\"\n      [placeholder]=\"key\"\n      [showClear]=\"true\"\n      optionLabel=\"{{ element.value.optionLabel || 'name' }}\"\n      optionValue=\"{{ element.value.optionValue || 'code' }}\"\n      [styleClass]=\"'p-inputtext-sm w-full'\">\n    </p-dropdown>\n    <label [for]=\"key\">{{ element.value.title }}</label>\n  </span>\n  <lib-validation-error\n    [control]=\"control\"\n    [key]=\"key\"\n    [field]=\"field\"></lib-validation-error>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { InputGroupElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-input-group-element',\n  templateUrl: './input-group-element.component.html',\n  styleUrls: ['./input-group-element.component.css'],\n})\nexport class InputGroupElementComponent extends BaseElementComponent<InputGroupElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div class=\"p-inputgroup mt-4\">\n    <!--    <span class=\"p-float-label mt-4\">-->\n    <span *ngIf=\"field.icon\" class=\"p-inputgroup-addon\">$</span>\n    <input\n      pInputText\n      [id]=\"key\"\n      [name]=\"key\"\n      [class]=\"'p-inputtext-sm w-full'\"\n      [formControlName]=\"key\"\n      [placeholder]=\"field.title\"\n      [pKeyFilter]=\"field.keyFilter\" />\n    <!--      <label [for]=\"key\">{{element.value.title}}</label>-->\n    <span *ngIf=\"field.unit\" class=\"p-inputgroup-addon\">{{ field.unit }}</span>\n    <!--    </span>-->\n  </div>\n  <lib-validation-error\n    [control]=\"control\"\n    [key]=\"key\"\n    [field]=\"field\"></lib-validation-error>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { TextElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-text-element',\n  templateUrl: './text-element.component.html',\n  styleUrls: ['./text-element.component.css'],\n})\nexport class TextElementComponent extends BaseElementComponent<TextElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div>\n    <span class=\"p-float-label mt-4\">\n      <input\n        pInputText\n        [id]=\"key\"\n        [name]=\"key\"\n        [class]=\"'p-inputtext-sm w-full'\"\n        [formControlName]=\"key\" />\n      <label [for]=\"key\">{{ element.value.title }}</label>\n    </span>\n    <lib-validation-error\n      [control]=\"control\"\n      [key]=\"key\"\n      [field]=\"field\"></lib-validation-error>\n  </div>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { AfterViewInit, Component, ElementRef, OnInit, ViewChild } from '@angular/core';\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { AutoCompleteElement, AutoCompleteOptions } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-autocomplete-element',\n  templateUrl: './autocomplete-element.component.html',\n  styleUrls: ['./autocomplete-element.component.css'],\n})\nexport class AutocompleteElementComponent extends BaseElementComponent<AutoCompleteElement> implements OnInit, AfterViewInit {\n  @ViewChild('autoCompleteElement') elementRef?: ElementRef;\n\n  suggestions: any[] = [];\n\n  filteredSuggestions: any[] = [];\n\n  filter(event: AutoCompleteCompleteEvent) {\n    let filtered: any[] = [];\n    const query = event.query;\n\n    if (this.field.filter) {\n      filtered = this.field.filter(event, this.suggestions);\n    } else {\n      if (this.field.field) {\n        for (const i of this.suggestions as any[]) {\n          const suggestion = (this.suggestions as any[])[i];\n          if (suggestion[this.field.field!].toLowerCase().includes(query.toLowerCase())) {\n            filtered.push(suggestion);\n          }\n        }\n      } else {\n        for (const i of this.suggestions as any[]) {\n          const suggestion = (this.suggestions as any[])[i];\n          if (suggestion.toLowerCase().toLowerCase().includes(query.toLowerCase())) {\n            filtered.push(suggestion);\n          }\n        }\n      }\n    }\n    this.filteredSuggestions = filtered;\n  }\n\n  override ngOnInit(): void {\n    super.ngOnInit();\n    this.field.suggestions.subscribe(data => (this.suggestions = data));\n  }\n\n  ngAfterViewInit(): void {\n    if (this.field.options) {\n      Object.keys(this.field.options).forEach(option => {\n        // if (this.elementRef?.hasOwnProperty(option)) {\n        if (Object.prototype.hasOwnProperty.call(this.elementRef, option)) {\n          (this.elementRef as any)[option] = (this.field.options as any)[option as keyof AutoCompleteOptions];\n        }\n      });\n    }\n  }\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <span class=\"p-float-label mt-4\">\n    <p-autoComplete\n      #autoCompleteElement\n      [formControlName]=\"key\"\n      [suggestions]=\"filteredSuggestions\"\n      [optionLabel]=\"field.field\"\n      (completeMethod)=\"filter($event)\"\n      [style]=\"{ width: field.width ?? '100%' }\"\n      [inputStyle]=\"{ width: '100%' }\"></p-autoComplete>\n    <label [for]=\"key\">{{ element.value.title }}</label>\n  </span>\n  <lib-validation-error\n    [control]=\"control\"\n    [key]=\"key\"\n    [field]=\"field\"></lib-validation-error>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { CheckboxElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-checkbox-element',\n  templateUrl: './checkbox-element.component.html',\n  styleUrls: ['./checkbox-element.component.css'],\n})\nexport class CheckboxElementComponent extends BaseElementComponent<CheckboxElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\" class=\"mt-4 flex align-items-center gap-1\">\n  <p-checkbox\n    [formControlName]=\"key\"\n    [value]=\"field.value\"\n    [id]=\"key\"></p-checkbox>\n  <label for=\"{{ key }}\">{{ field.title }}</label>\n  <lib-validation-error\n    [control]=\"control\"\n    [key]=\"key\"\n    [field]=\"field\"></lib-validation-error>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component, OnInit } from '@angular/core';\nimport { NumberElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\nimport { NumberMode } from '../../model/former.enum';\n\n@Component({\n  selector: 'lib-number-element',\n  templateUrl: './number-element.component.html',\n  styleUrls: ['./number-element.component.css'],\n})\nexport class NumberElementComponent extends BaseElementComponent<NumberElement> implements OnInit {\n  get mode() {\n    if (this.field && this.field.mode) {\n      return this.field.mode;\n    } else {\n      return NumberMode.Decimal;\n    }\n  }\n\n  get currency() {\n    if (this.field && this.field.currency) {\n      return this.field.currency;\n    } else {\n      return 'EUR';\n    }\n  }\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div>\n    <span class=\"p-float-label mt-4\">\n      <p-inputNumber\n        [id]=\"key\"\n        [name]=\"key\"\n        [mode]=\"mode\"\n        [currency]=\"currency\"\n        [locale]=\"field.locale\"\n        [minFractionDigits]=\"field.minFractionDigits\"\n        [maxFractionDigits]=\"field.maxFractionDigits\"\n        [class]=\"'p-inputtext-sm w-full'\"\n        [styleClass]=\"'w-full'\"\n        [formControlName]=\"key\" />\n      <label [for]=\"key\">{{ element.value.title }}</label>\n    </span>\n    <lib-validation-error\n      [control]=\"control\"\n      [key]=\"key\"\n      [field]=\"field\"></lib-validation-error>\n  </div>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component } from '@angular/core';\nimport { TextAreaElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-text-area-element',\n  templateUrl: './text-area-element.component.html',\n  styleUrls: ['./text-area-element.component.css'],\n})\nexport class TextAreaElementComponent extends BaseElementComponent<TextAreaElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div>\n    <span class=\"p-float-label mt-4\">\n      <textarea\n        pInputTextarea\n        [id]=\"key\"\n        [name]=\"key\"\n        [rows]=\"field.rows\"\n        [cols]=\"field.cols\"\n        [class]=\"'p-text-sm w-full'\"\n        [formControlName]=\"key\"\n        [autoResize]=\"false\"></textarea>\n      <label [for]=\"key\">{{ element.value.title }}</label>\n    </span>\n    <lib-validation-error\n      [control]=\"control\"\n      [key]=\"key\"\n      [field]=\"field\"></lib-validation-error>\n  </div>\n</div>\n","import { Component } from '@angular/core';\nimport { DisplayTextElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-display-text-element',\n  templateUrl: './display-text-element.component.html',\n  styleUrls: ['./display-text-element.component.css'],\n})\nexport class DisplayTextElementComponent extends BaseElementComponent<DisplayTextElement> {}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div>\n    <span class=\"flex flex-column gap-1\">\n      <label class=\"underline font-medium\" [for]=\"key\">{{\n        element.value.title\n      }}</label>\n      <span [id]=\"key\">{{ control.value }}</span>\n    </span>\n  </div>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Component, Input, OnChanges, QueryList, SimpleChanges, TemplateRef } from '@angular/core';\nimport { TemplateNameDirective } from '../../directive/template-name.directive';\nimport { TemplateElement } from '../../model/former.model';\nimport { BaseElementComponent } from '../base-element.component';\n\n@Component({\n  selector: 'lib-template-element',\n  templateUrl: './template-element.component.html',\n  styleUrls: ['./template-element.component.css'],\n})\nexport class TemplateElementComponent extends BaseElementComponent<TemplateElement> implements OnChanges {\n  @Input() templates?: QueryList<TemplateNameDirective>;\n\n  template?: TemplateRef<any>;\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.templates) {\n      this.template = this.templates.find(template => template.name === this.field.templateId)?.template;\n    }\n  }\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<ng-container [ngTemplateOutlet]=\"template!\"></ng-container>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { KeyValue } from '@angular/common';\nimport { Component, Input, QueryList } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { ElementType } from '../model/former.enum';\nimport { CardElement, Element, GridColumnElement, GridLayoutElement, GroupElement, LayoutElement } from '../model/former.model';\nimport { BaseElementComponent } from '../elements/base-element.component';\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[lib-generated-form-element]',\n  templateUrl: './generated-form-element.component.html',\n  styleUrls: ['./generated-form-element.component.css'],\n})\nexport class GeneratedFormElementComponent {\n  protected readonly TextElement = ElementType.TextElement;\n  protected readonly DisplayTextElement = ElementType.DisplayTextElement;\n  protected readonly TextAreaElement = ElementType.TextAreaElement;\n  protected readonly NumberElement = ElementType.NumberElement;\n  protected readonly GroupElement = ElementType.GroupElement;\n  protected readonly CalendarElement = ElementType.CalendarElement;\n  protected readonly DropdownElement = ElementType.DropdownElement;\n  protected readonly InputGroupElement = ElementType.InputGroupElement;\n  protected readonly GridLayoutElement = ElementType.GridLayoutElement;\n  protected readonly GridColumnElement = ElementType.GridColumnElement;\n  protected readonly AutocompleteElement = ElementType.AutocompleteElement;\n  protected readonly CheckboxElement = ElementType.CheckboxElement;\n  protected readonly CardElement = ElementType.CardElement;\n  protected readonly TemplateElement = ElementType.TemplateElement;\n\n  @Input() parentKey = '';\n  @Input() element!: KeyValue<string, Element>;\n  @Input() formGroup!: FormGroup;\n  @Input() class!: string;\n\n  @Input() templates?: QueryList<any>;\n\n  get anyElement(): any {\n    return this.element as any;\n  }\n}\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[lib-grid-layout-element]',\n  templateUrl: '../elements/grid-layout-element/grid-layout-element.component.html',\n  styleUrls: ['../elements/grid-layout-element/grid-layout-element.component.css'],\n})\nexport class GridLayoutElementComponent extends BaseElementComponent<GridLayoutElement> {\n  getElementClass(element: any) {\n    if ((element.value as any).type === ElementType.GridColumnElement) {\n      return (element.value as any as LayoutElement).class + ' col-no-padding';\n    } else {\n      return '';\n    }\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  originalOrder = (a: KeyValue<any, any>, b: KeyValue<any, any>): number => {\n    return 0;\n  };\n}\n\n@Component({\n  // eslint-disable-next-line @angular-eslint/component-selector\n  selector: '[lib-grid-column-element]',\n  templateUrl: '../elements/grid-column-element/grid-column-element.component.html',\n  styleUrls: ['../elements/grid-column-element/grid-column-element.component.css'],\n})\nexport class GridColumnElementComponent extends BaseElementComponent<GridColumnElement> {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  originalOrder = (a: KeyValue<any, any>, b: KeyValue<any, any>): number => {\n    return 0;\n  };\n}\n\n@Component({\n  selector: 'lib-group-element',\n  templateUrl: '../elements/group-element/group-element.component.html',\n  styleUrls: ['../elements/group-element/group-element.component.css'],\n})\nexport class GroupElementComponent extends BaseElementComponent<GroupElement> {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  originalOrder = (a: KeyValue<any, any>, b: KeyValue<any, any>): number => {\n    return 0;\n  };\n\n  get childGroup() {\n    return this.formGroup.get(this.key) as FormGroup;\n  }\n}\n\n@Component({\n  selector: 'lib-card-element',\n  templateUrl: '../elements/card-element/card-element.component.html',\n  styleUrls: ['../elements/card-element/card-element.component.css'],\n})\nexport class CardElementComponent extends BaseElementComponent<CardElement> {\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  originalOrder = (a: KeyValue<any, any>, b: KeyValue<any, any>): number => {\n    return 0;\n  };\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [ngSwitch]=\"element.value.type\">\n  <lib-text-element\n    *ngSwitchCase=\"TextElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-text-element>\n  <lib-display-text-element\n    *ngSwitchCase=\"DisplayTextElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-display-text-element>\n  <lib-text-area-element\n    *ngSwitchCase=\"TextAreaElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-text-area-element>\n  <lib-number-element\n    *ngSwitchCase=\"NumberElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-number-element>\n  <lib-group-element\n    *ngSwitchCase=\"GroupElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-group-element>\n  <lib-calendar-element\n    *ngSwitchCase=\"CalendarElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-calendar-element>\n  <lib-dropdown-element\n    *ngSwitchCase=\"DropdownElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-dropdown-element>\n  <lib-checkbox-element\n    *ngSwitchCase=\"CheckboxElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-checkbox-element>\n  <lib-input-group-element\n    *ngSwitchCase=\"InputGroupElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-input-group-element>\n  <lib-autocomplete-element\n    *ngSwitchCase=\"AutocompleteElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-autocomplete-element>\n  <lib-card-element\n    *ngSwitchCase=\"CardElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></lib-card-element>\n  <div\n    lib-grid-layout-element\n    *ngSwitchCase=\"GridLayoutElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"></div>\n  <lib-template-element\n    *ngSwitchCase=\"TemplateElement\"\n    [element]=\"anyElement\"\n    [formGroup]=\"formGroup\"\n    [parentKey]=\"parentKey\"\n    [templates]=\"templates\"></lib-template-element>\n</div>\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [class]=\"field.class + ' no-top-margin'\">\n  <ng-container\n    *ngFor=\"let element of field.elements | keyvalue: originalOrder\">\n    <div [class]=\"getElementClass(element)\">\n      <div\n        lib-grid-column-element\n        [element]=\"element\"\n        [formGroup]=\"formGroup\"\n        [parentKey]=\"parentKey\"></div>\n    </div>\n  </ng-container>\n</div>\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<ng-container *ngFor=\"let element of field.elements | keyvalue: originalOrder\">\n  <div\n    lib-generated-form-element\n    [formGroup]=\"formGroup\"\n    [element]=\"element\"\n    [parentKey]=\"key\"></div>\n</ng-container>\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div [formGroup]=\"formGroup\">\n  <div\n    *ngFor=\"let element of field.elements | keyvalue: originalOrder\"\n    [formGroupName]=\"key\">\n    <div\n      lib-generated-form-element\n      [formGroup]=\"childGroup\"\n      [element]=\"element\"\n      [parentKey]=\"key\"></div>\n  </div>\n</div>\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<p-card [header]=\"field.title\" [styleClass]=\"field.cssClass\">\n  <div *ngFor=\"let element of field.elements | keyvalue: originalOrder\">\n    <div\n      lib-generated-form-element\n      [formGroup]=\"formGroup\"\n      [element]=\"element\"\n      [parentKey]=\"key\"></div>\n  </div>\n</p-card>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: 'ng-template[name]',\n})\nexport class TemplateNameDirective {\n  @Input() name?: string;\n\n  constructor(public template: TemplateRef<any>) {}\n}\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { KeyValue } from '@angular/common';\nimport { AfterContentChecked, ChangeDetectorRef, Component, ContentChildren, EventEmitter, inject, Input, OnChanges, OnInit, Output, QueryList, SimpleChanges } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { TemplateNameDirective } from '../directive/template-name.directive';\nimport { FormerService } from '../former.service';\nimport { ActionType } from '../model/former.enum';\nimport { ActionButton, ActionResult, FormDefinition } from '../model/former.model';\n\n@Component({\n  selector: 'lib-generated-form',\n  templateUrl: './generated-form.component.html',\n  styleUrls: ['./generated-form.component.css'],\n})\nexport class GeneratedFormComponent implements OnInit, OnChanges, AfterContentChecked {\n  readonly formerService = inject(FormerService);\n  readonly cdr = inject(ChangeDetectorRef);\n\n  @ContentChildren(TemplateNameDirective)\n  templates!: QueryList<TemplateNameDirective>;\n\n  @Input() formDefinition!: FormDefinition;\n\n  @Input() formValues!: any;\n\n  form!: FormGroup;\n\n  @Output() changesEvent = new EventEmitter<any>();\n  @Output() submitEvent = new EventEmitter<ActionResult>();\n\n  actionHandler?: ActionButton;\n\n  ngOnInit(): void {\n    this.form = this.formerService.generateForm(this.formDefinition);\n    this.form.valueChanges.subscribe(data => this.changesEvent.emit(data));\n    this.form.patchValue(this.formValues);\n\n    this.form.valueChanges.subscribe(() => this.updateButtonState());\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.form && changes['formValues']) {\n      this.form.patchValue(this.formValues, { emitEvent: false });\n    }\n  }\n\n  ngAfterContentChecked(): void {\n    this.cdr.detectChanges();\n  }\n\n  // Preserve original property order\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  originalOrder = (a: KeyValue<any, any>, b: KeyValue<any, any>): number => {\n    return 0;\n  };\n\n  setActionHandler(action: ActionButton) {\n    this.actionHandler = action;\n  }\n\n  callActionHandler() {\n    if (this.actionHandler) {\n      this.submitEvent.emit({\n        action: this.actionHandler,\n        payload: this.form.value,\n      });\n    }\n  }\n\n  public isButtonDisabled(action: KeyValue<string, ActionButton>) {\n    return action.value.disabled;\n  }\n\n  findActionForKey(action: KeyValue<string, ActionButton>): ActionButton | undefined {\n    return this.formDefinition.actions[action.key ?? ''];\n  }\n\n  findSubmitAction(): ActionButton | undefined {\n    return Object.values(this.formDefinition.actions).find(action => action.type === ActionType.Submit);\n  }\n\n  private updateButtonState() {\n    if (this.findSubmitAction()) {\n      if (this.form.invalid) {\n        this.findSubmitAction()!.disabled = true;\n      } else {\n        this.findSubmitAction()!.disabled = false;\n      }\n    }\n  }\n\n  public reset() {\n    this.form.reset();\n  }\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div>\n  <form [formGroup]=\"form\">\n    <div\n      *ngFor=\"let element of formDefinition.elements | keyvalue: originalOrder\">\n      <div\n        lib-generated-form-element\n        [element]=\"element\"\n        [formGroup]=\"form\"\n        [templates]=\"templates\"></div>\n    </div>\n  </form>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { KeyValue } from '@angular/common';\n\nexport default class FormerUtils {\n  static asKeyValueArray<V>(obj: Record<string, V>): KeyValue<string, V>[] {\n    return Array.from(FormerUtils.keyValueGenerator(obj));\n  }\n\n  static *keyValueGenerator<V>(obj: Record<string, V>): Iterable<KeyValue<string, V>> {\n    for (const key of Object.keys(obj)) {\n      const value = obj[key];\n      yield { key, value };\n    }\n  }\n}\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { KeyValue } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport FormerUtils from '../former.utils';\nimport { GeneratedFormComponent } from '../generated-form/generated-form.component';\nimport { Align } from '../model/former.enum';\nimport { ActionButton } from '../model/former.model';\n\n@Component({\n  selector: 'lib-generated-form-actions',\n  templateUrl: './generated-form-actions.component.html',\n  styleUrls: ['./generated-form-actions.component.css'],\n})\nexport class GeneratedFormActionsComponent implements OnInit, OnChanges {\n  @Input() form?: GeneratedFormComponent;\n\n  leftActions: KeyValue<string, ActionButton>[] = [];\n  rightActions: KeyValue<string, ActionButton>[] = [];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (this.form && this.form.formDefinition && this.form.formDefinition.actions && changes['form']) {\n      this.initActions();\n    }\n  }\n\n  onButtonClick(action: ActionButton) {\n    const form = this.form;\n    if (form) {\n      form.setActionHandler(action);\n      form.callActionHandler();\n    }\n  }\n\n  isButtonDisabled(action: KeyValue<string, ActionButton>) {\n    return this.form?.isButtonDisabled(action);\n  }\n\n  ngOnInit(): void {\n    this.initActions();\n  }\n\n  initActions() {\n    if (this.form && this.form.formDefinition && this.form.formDefinition.actions) {\n      this.leftActions = FormerUtils.asKeyValueArray(this.form?.formDefinition.actions).filter(action => action.value.align === Align.left);\n      this.rightActions = FormerUtils.asKeyValueArray(this.form?.formDefinition.actions).filter(action => action.value.align !== Align.left);\n    }\n  }\n}\n","<!--\n  ~ Apache-2.0 Licence\n  ~ Copyright (c) 2023 Tobias Kronschnabl\n  ~\n  ~ Please see LICENCE for complete licence text.\n  -->\n<div class=\"flex flex-row justify-content-between flex-wrap\">\n  <div class=\"mt-2 flex align-items-center justify-content-center gap-1\">\n    <button\n      *ngFor=\"let action of leftActions\"\n      pButton\n      [label]=\"action.value.label\"\n      [disabled]=\"isButtonDisabled(action)\"\n      (click)=\"onButtonClick(action.value)\"></button>\n  </div>\n\n  <div class=\"mt-2 flex align-items-center justify-content-center gap-1\">\n    <button\n      *ngFor=\"let action of rightActions\"\n      pButton\n      [label]=\"action.value.label\"\n      [disabled]=\"isButtonDisabled(action)\"\n      (click)=\"onButtonClick(action.value)\"></button>\n  </div>\n</div>\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AutoCompleteModule } from 'primeng/autocomplete';\nimport { ButtonModule } from 'primeng/button';\nimport { CalendarModule } from 'primeng/calendar';\nimport { CardModule } from 'primeng/card';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { KeyFilterModule } from 'primeng/keyfilter';\nimport { MessageModule } from 'primeng/message';\nimport { CalendarElementComponent } from './elements/calendar-element/calendar-element.component';\nimport { DropdownElementComponent } from './elements/dropdown-element/dropdown-element.component';\nimport { InputGroupElementComponent } from './elements/input-group-element/input-group-element.component';\nimport { TextElementComponent } from './elements/text-element/text-element.component';\nimport { CardElementComponent, GeneratedFormElementComponent, GridColumnElementComponent, GridLayoutElementComponent, GroupElementComponent } from './generated-form-element/generated-form-element.component';\nimport { GeneratedFormComponent } from './generated-form/generated-form.component';\nimport { AutocompleteElementComponent } from './elements/autocomplete-element/autocomplete-element.component';\nimport { CheckboxElementComponent } from './elements/checkbox-element/checkbox-element.component';\nimport { GeneratedFormActionsComponent } from './generated-form-actions/generated-form-actions.component';\nimport { ValidationErrorComponent } from './elements/validation-error/validation-error.component';\nimport { NumberElementComponent } from './elements/number-element/number-element.component';\nimport { TextAreaElementComponent } from './elements/text-area-element/text-area-element.component';\nimport { DisplayTextElementComponent } from './elements/display-text-element/display-text-element.component';\nimport { TemplateElementComponent } from './elements/template-element/template-element.component';\nimport { TemplateNameDirective } from './directive/template-name.directive';\nimport { InputTextareaModule } from 'primeng/inputtextarea';\n\nconst primeng = [CardModule, InputTextModule, CalendarModule, DropdownModule, MessageModule, KeyFilterModule, AutoCompleteModule, CheckboxModule, ButtonModule, InputNumberModule, InputTextareaModule];\n\n@NgModule({\n  declarations: [\n    GeneratedFormComponent,\n    GeneratedFormElementComponent,\n    TextElementComponent,\n    GroupElementComponent,\n    CalendarElementComponent,\n    DropdownElementComponent,\n    InputGroupElementComponent,\n    GridLayoutElementComponent,\n    GridColumnElementComponent,\n    AutocompleteElementComponent,\n    CheckboxElementComponent,\n    GeneratedFormActionsComponent,\n    ValidationErrorComponent,\n    CardElementComponent,\n    NumberElementComponent,\n    TextAreaElementComponent,\n    DisplayTextElementComponent,\n    TemplateElementComponent,\n    TemplateNameDirective,\n  ],\n  imports: [CommonModule, TranslateModule, ReactiveFormsModule, ...primeng],\n  exports: [GeneratedFormComponent, GeneratedFormActionsComponent, TemplateNameDirective, ...primeng],\n})\nexport class FormerModule {}\n","/*\n * Apache-2.0 Licence\n * Copyright (c) 2023 Tobias Kronschnabl\n *\n * Please see LICENCE for complete licence text.\n */\nimport { AutoCompleteCompleteEvent } from 'primeng/autocomplete';\nimport { KeyFilterPattern } from 'primeng/keyfilter';\nimport { Observable } from 'rxjs';\nimport { ActionType, Align, ElementType, NumberMode, ValidationType } from './former.enum';\nimport { ScrollerOptions } from 'primeng/api';\n\nexport interface FormDefinition {\n  title?: string;\n  elements: Elements;\n  actions: Actions;\n}\n\nexport type Element =\n  | TextElement\n  | DisplayTextElement\n  | TextAreaElement\n  | NumberElement\n  | GroupElement\n  | CalendarElement\n  | DropdownElement\n  | InputGroupElement\n  | AutoCompleteElement\n  | CheckboxElement\n  | CardElement\n  | GridLayoutElement\n  | GridColumnElement\n  | TemplateElement;\n\nexport type Elements = Record<string, Element>;\n\nexport type LayoutElements = Record<string, GridColumnElement>;\n\nexport interface BaseElement {\n  title?: string;\n  cssClass?: string;\n  validators?: FormValidator[];\n}\n\nexport interface DisableElement {\n  disabled?: boolean;\n}\n\nexport interface UnitElement {\n  icon?: string;\n  unit?: string;\n  keyFilter?: RegExp | KeyFilterPattern | null | undefined;\n}\n\nexport interface TextElement extends BaseElement, DisableElement {\n  type: ElementType.TextElement;\n}\n\nexport interface DisplayTextElement extends BaseElement, DisableElement {\n  type: ElementType.DisplayTextElement;\n}\n\nexport interface TextAreaElement extends BaseElement, DisableElement {\n  type: ElementType.TextAreaElement;\n  rows: number;\n  cols?: number;\n}\n\nexport interface NumberElement extends BaseElement, DisableElement {\n  type: ElementType.NumberElement;\n  mode?: NumberMode;\n  currency?: string;\n  locale?: string;\n  minFractionDigits?: number;\n  maxFractionDigits?: number;\n}\n\nexport interface InputGroupElement extends BaseElement, DisableElement, UnitElement {\n  type: ElementType.InputGroupElement;\n}\n\nexport interface GroupElement extends BaseElement, DisableElement {\n  type: ElementType.GroupElement;\n  elements: Elements;\n}\n\nexport interface CalendarElement extends BaseElement, DisableElement {\n  type: ElementType.CalendarElement;\n  dateFormat: string;\n}\n\nexport interface DropdownElement extends BaseElement, DisableElement {\n  type: ElementType.DropdownElement;\n  options: Observable<any>;\n  optionLabel?: string;\n  optionValue?: string;\n}\n\nexport interface AutoCompleteElement extends BaseElement, DisableElement {\n  type: ElementType.AutocompleteElement;\n  suggestions: Observable<any>;\n  field?: string;\n  filter?: (event: AutoCompleteCompleteEvent, data: any[]) => any[];\n  width?: string;\n  options?: AutoCompleteOptions;\n}\n\nexport interface AutoCompleteOptions {\n  minLength?: number;\n  delay?: number;\n  style?: Record<string, any> | null | undefined;\n  panelStyle?: Record<string, any> | null | undefined;\n  styleClass?: string | undefined;\n  panelStyleClass?: string | undefined;\n  inputStyle?: Record<string, any> | null | undefined;\n  inputId?: string | undefined;\n  inputStyleClass?: string | undefined;\n  placeholder?: string | undefined;\n  readonly?: boolean | undefined;\n  disabled?: boolean | undefined;\n  scrollHeight?: string;\n  lazy?: boolean;\n  virtualScroll?: ScrollerOptions | undefined;\n  maxLength?: number | undefined;\n}\n\nexport interface CheckboxElement extends BaseElement, DisableElement {\n  type: ElementType.CheckboxElement;\n  value: string;\n}\n\nexport interface CardElement extends BaseElement {\n  type: ElementType.CardElement;\n  elements: Elements;\n}\n\nexport interface TemplateElement extends BaseElement {\n  type: ElementType.TemplateElement;\n  templateId: string;\n}\n\n// region Layout Elements\n\nexport interface LayoutElement {\n  class: string;\n}\n\nexport interface GridLayoutElement extends LayoutElement {\n  type: ElementType.GridLayoutElement;\n  elements: LayoutElements;\n}\n\nexport interface GridColumnElement extends LayoutElement {\n  type: ElementType.GridColumnElement;\n  elements: Elements;\n}\n\n// endregion\n\n// region Buttons\n\nexport interface AlignableButton {\n  align?: Align;\n}\n\nexport interface FormButton extends AlignableButton, DisableElement {\n  type: ActionType.Button;\n  label: string;\n}\n\nexport interface SubmitButton extends AlignableButton, DisableElement {\n  type: ActionType.Submit;\n  label: string;\n}\n\nexport interface CancelButton extends AlignableButton, DisableElement {\n  type: ActionType.CancelButton;\n  label: string;\n}\n\nexport type ActionButton = FormButton | SubmitButton | CancelButton;\n\nexport type Actions = Record<string, ActionButton>;\n\nexport interface ActionResult {\n  action: ActionButton;\n  payload: any;\n}\n\n// endregion\n\n// region Validation\n\nexport type FormValidator = RequiredFormValidator | MinLengthFormValidator | MaxLengthFormValidator | MinFormValidator | MaxFormValidator | PatternFormValidator | EmailFormValidator;\n\nexport interface BaseFormValidator {\n  validationType: ValidationType;\n  messageKey: string;\n  messageArgs?: any;\n}\n\nexport type RequiredFormValidator = BaseFormValidator;\n\nexport interface MinLengthFormValidator extends BaseFormValidator {\n  minLength: number;\n}\n\nexport interface MaxLengthFormValidator extends BaseFormValidator {\n  maxLength: number;\n}\n\nexport interface MinFormValidator extends BaseFormValidator {\n  min: number;\n}\n\nexport interface MaxFormValidator extends BaseFormValidator {\n  max: number;\n}\n\nexport interface PatternFormValidator extends BaseFormValidator {\n  pattern: RegExp | string;\n}\n\nexport type EmailFormValidator = BaseFormValidator;\n\n// endregion\n","/*\n * Public API Surface of former\n */\n\nexport * from './lib/former.service';\nexport * from './lib/former.module';\nexport * from './lib/generated-form/generated-form.component';\nexport * from './lib/generated-form-actions/generated-form-actions.component';\nexport * from './lib/model/former.model';\nexport * from './lib/model/former.enum';\nexport * from './lib/directive/template-name.directive';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.ValidationErrorComponent","i4","i5.ValidationErrorComponent","i3.TextElementComponent","i4.CalendarElementComponent","i5.DropdownElementComponent","i6.InputGroupElementComponent","i9.NumberElementComponent","i10.TextAreaElementComponent","i11.DisplayTextElementComponent","i12.TemplateElementComponent","i3.GeneratedFormElementComponent"],"mappings":"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"}