{"version":3,"file":"ngx-fast-forms-core.mjs","sources":["../../../../libs/core/src/lib/internal/action/action-event-impl.ts","../../../../libs/core/src/lib/actions/action.service.ts","../../../../libs/core/src/lib/internal/symbols.ts","../../../../libs/core/src/lib/actions/actions.decorator.ts","../../../../libs/core/src/lib/internal/action/action-control-internal.ts","../../../../libs/core/src/lib/internal/action/action-group-internal.ts","../../../../libs/core/src/lib/control/fast-form-group.ts","../../../../libs/core/src/lib/control/fast-form-control.ts","../../../../libs/core/src/lib/actions/array-index.directive.ts","../../../../libs/core/src/lib/actions/fast-form-action-group.ts","../../../../libs/core/src/lib/actions/fast-form-action.ts","../../../../libs/core/src/lib/components/base/base-control.component.ts","../../../../libs/core/src/lib/components/base/base-array.component.ts","../../../../libs/core/src/lib/components/base/base-group.component.ts","../../../../libs/core/src/lib/control/control.decorator.ts","../../../../libs/core/src/lib/internal/control-wrapper-v2.ts","../../../../libs/core/src/lib/internal/validation/validator-definition.util.ts","../../../../libs/core/src/lib/internal/token.ts","../../../../libs/core/src/lib/internal/validation/validator-registry.ts","../../../../libs/core/src/lib/internal/util/array.util.ts","../../../../libs/core/src/lib/validation/validator-factory.service.ts","../../../../libs/core/src/lib/util/list.util.ts","../../../../libs/core/src/lib/internal/abstract-registry.ts","../../../../libs/core/src/lib/model.ts","../../../../libs/core/src/lib/internal/control/control-registry.service.ts","../../../../libs/core/src/lib/service/control-factory-v2.service.ts","../../../../libs/core/src/lib/service/fast-form-builder.ts","../../../../libs/core/src/lib/components/util/inject-token.ts","../../../../libs/core/src/lib/components/base/base-inline.component.ts","../../../../libs/core/src/lib/internal/control/control-id-impl.ts","../../../../libs/core/src/lib/components/question-definition.ts","../../../../libs/core/src/lib/internal/form-render.service.ts","../../../../libs/core/src/lib/directive/form-renderer.directive.ts","../../../../libs/core/src/lib/components/fast-form-array-v2/fast-form-array-v2.component.ts","../../../../libs/core/src/lib/components/fast-form-array-v2/fast-form-array-v2.component.html","../../../../libs/core/src/lib/components/fast-form-group-v2/fast-form-group-v2.component.ts","../../../../libs/core/src/lib/components/fast-form-group-v2/fast-form-group-v2.component.html","../../../../libs/core/src/lib/control/fast-form-array.ts","../../../../libs/core/src/lib/internal/control-wrapper.ts","../../../../libs/core/src/lib/service/control-factory.service.ts","../../../../libs/core/src/lib/components/fast-form-group/fast-form-group.component.ts","../../../../libs/core/src/lib/components/fast-form-group/fast-form-group.component.html","../../../../libs/core/src/lib/components/fast-form-control/fast-form-control.component.ts","../../../../libs/core/src/lib/components/fast-form-control/fast-form-control.component.html","../../../../libs/core/src/lib/components/fast-form-row/fast-form-row.component.ts","../../../../libs/core/src/lib/components/fast-form-row/fast-form-row.component.html","../../../../libs/core/src/lib/control/control-factory.decorator.ts","../../../../libs/core/src/lib/service/fast-forms.service.ts","../../../../libs/core/src/lib/test/mock/control-id-impl.mock.ts","../../../../libs/core/src/lib/validation/validation.decorator.ts","../../../../libs/core/src/lib/components/fast-form-array/fast-form-array.component.ts","../../../../libs/core/src/lib/components/fast-form-array/fast-form-array.component.html","../../../../libs/core/src/lib/fast-forms.module.ts","../../../../libs/core/src/ngx-fast-forms-core.ts"],"sourcesContent":["import { ActionEvent } from '../../actions/models';\n\nexport class ActionEventImpl implements ActionEvent {\n  matchId: string;\n  args: (string | number)[];\n  data?: unknown;\n\n  constructor(public rawId: string, data?: unknown) {\n    this.matchId = rawId.replace(/\\[\\d+]/g, '');\n    this.args = rawId.split('.')\n        .map(idPart => {\n          return idPart.split('[').map(arrayPart => {\n            if (arrayPart.endsWith(']')) {\n              return Number(arrayPart.substring(0, arrayPart.length - 1));\n            } else {\n              return arrayPart;\n            }\n          });\n        })\n        .reduce((last, current) => last.concat(current), []);\n    this.data = data;\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { filter, Observable, Subject } from 'rxjs';\nimport { ActionEvent } from './models';\nimport { ActionEventImpl } from '../internal/action/action-event-impl';\n\n@Injectable()\nexport class ActionService {\n\n  private _actions$ = new Subject<ActionEvent>();\n\n  public get actions(): Observable<ActionEvent> {\n    return this._actions$.asObservable();\n  }\n\n  public actionEndWith(actionMatchId: string): Observable<ActionEvent> {\n    return this.actions.pipe(\n        filter(event => event.matchId.endsWith(actionMatchId))\n    );\n  }\n\n  emitAction(id: string, data?: unknown) {\n    this._actions$.next(new ActionEventImpl(id, data));\n  }\n}\n","export const META_VALIDATOR_OPTIONS_KEY = 'AFF_VALIDATOR_OPTIONS_META';\nexport const META_COMPONENT_OPTIONS_KEY = 'AFF_COMPONENT_OPTIONS_META';\n","import { META_COMPONENT_OPTIONS_KEY } from '../internal/symbols';\nimport { InternalControlComponent } from '../internal/control/models';\n\nexport interface ActionControlOptions {\n  type: string;\n}\n\nexport function ActionControl(options: ActionControlOptions) {\n\n  return (target: unknown): void => {\n    const actionClass: InternalControlComponent = target as InternalControlComponent;\n    actionClass[META_COMPONENT_OPTIONS_KEY] = {\n      ...actionClass[META_COMPONENT_OPTIONS_KEY],\n      type: options.type,\n      internalType: 'action'\n    };\n  };\n}\n","import { AbstractControl } from '@angular/forms';\nimport { FormActionControl } from '../../actions/fast-form-action';\n\nexport class FromActionControlInternal extends AbstractControl implements FormActionControl {\n\n  constructor() {\n    super([], []);\n  }\n\n  private _disabled = false;\n\n  override get disabled(): boolean {\n    return this._disabled;\n  }\n\n  override disable() {\n    this._disabled = true;\n  }\n\n  override enable() {\n    this._disabled = false;\n  }\n\n  setValue(): void {\n    throw new Error('Method not supported on action.');\n  }\n\n  patchValue(): void {\n    throw new Error('Method not supported on action.');\n  }\n\n  reset(): void {\n    this.enable();\n  }\n}\n","import { FormGroup } from '@angular/forms';\nimport { FormActionGroup } from '../../actions/fast-form-action-group';\nimport { FromActionControlInternal } from './action-control-internal';\n\nexport class FormActionGroupInternal extends FormGroup implements FormActionGroup {\n\n  constructor(controls: { [key: string]: FromActionControlInternal | FormActionGroupInternal }) {\n    super(controls, [], []);\n  }\n\n  private _disabled = false;\n\n  override get disabled(): boolean {\n    return this._disabled;\n  }\n\n  override disable() {\n    this._disabled = true;\n  }\n\n  override enable() {\n    this._disabled = false;\n  }\n\n  override reset(): void {\n    this._disabled = false;\n  }\n}\n","import { AbstractControl, AbstractControlOptions, FormGroup } from '@angular/forms';\nimport { Question } from '../model';\nimport { ControlFactoryService } from '../service/control-factory.service';\nimport { Observable, Subject } from 'rxjs';\nimport { ActionEvent } from '../actions/models';\nimport { FromActionControlInternal } from '../internal/action/action-control-internal';\nimport { FormActionGroupInternal } from '../internal/action/action-group-internal';\n\nexport class FastFormGroup extends FormGroup {\n\n  public readonly questionChanges: Observable<Array<Question>>;\n  public actionEvents: Observable<ActionEvent>;\n  public index: number | null = null;\n  public readonly actions: { [key: string]: FromActionControlInternal | FormActionGroupInternal } = {};\n\n  private _questionChanges$ = new Subject<Array<Question>>();\n  private _actions$ = new Subject<ActionEvent>();\n\n  private _questions: Array<Question>;\n\n  public get questions(): Array<Question> {\n    return this._questions || [];\n  }\n\n  private get mergedControls() {\n    return {\n      ...this.actions,\n      ...this.controls,\n    };\n  }\n\n  constructor(questions: Array<Question>,\n              private controlFactory: ControlFactoryService,\n              options?: AbstractControlOptions) {\n    super({}, options);\n    this.validateQuestions(questions);\n    this.questionChanges = this._questionChanges$.asObservable();\n    this._questions = questions;\n    this.createChildControls();\n    this.actionEvents = this._actions$.asObservable();\n  }\n\n  override get(path: string): AbstractControl | null {\n    const pathParts = path.split('.');\n    const firstPath = pathParts.shift();\n    if (firstPath === undefined) {\n      return null;\n    }\n    if (pathParts.length === 0) {\n      return this.mergedControls[firstPath] ?? null;\n    } else {\n      return this.mergedControls[firstPath]?.get(pathParts.join('.')) ?? null;\n    }\n  }\n\n  public setQuestions(questions: Array<Question>) {\n    this._questions = questions;\n    this.controls = {};\n    this.createChildControls();\n    this._questionChanges$.next(questions);\n  }\n\n  override addControl(name: string, control: AbstractControl, options?: {\n    emitEvent?: boolean | undefined;\n  } | undefined): void {\n    if (control instanceof FromActionControlInternal || control instanceof FormActionGroupInternal) {\n      this.actions[name] = control;\n    } else {\n      super.addControl(name, control, options);\n    }\n  }\n\n  private createChildControls() {\n    this.controlFactory.createFromQuestions(this, this._questions);\n  }\n\n  private validateQuestions(questions: Question[]) {\n    const ids = new Set();\n    questions.forEach(q => {\n      if (ids.has(q.id)) {\n        throw new Error(`Duplicated form control id ${q.id} found.`);\n      }\n      ids.add(q.id);\n    });\n  }\n}\n","import { FormControl } from '@angular/forms';\nimport { Question } from '../model';\n\nexport class FastFormControl extends FormControl {\n\n  public index: number | null = null;\n\n  constructor(public question: Question, value?: unknown) {\n    super(value);\n  }\n}\n","import { Directive, Input, OnChanges, Optional, SimpleChanges } from '@angular/core';\nimport { FormControlDirective, FormGroupDirective } from '@angular/forms';\nimport { FastFormGroup } from '../control/fast-form-group';\nimport { FastFormControl } from '../control/fast-form-control';\n\n@Directive({\n  selector: '[affArrayIndex]'\n})\nexport class ArrayIndexDirective implements OnChanges {\n\n  private index!: number;\n\n  @Input() set affArrayIndex(index: number) {\n    this.index = index;\n  }\n\n  constructor(@Optional() private group?: FormGroupDirective,\n              @Optional() private control?: FormControlDirective) {\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['affArrayIndex']) {\n      if (this.group?.form instanceof FastFormGroup) {\n        this.group.form.index = this.index;\n      }\n      if (this.control?.form instanceof FastFormControl) {\n        this.control.form.index = this.index;\n      }\n    }\n  }\n}\n","import { FormActionGroupInternal } from \"../internal/action/action-group-internal\";\nimport { FormActionControl } from \"./fast-form-action\";\n\nexport interface FormActionGroup {\n\n  get disabled(): boolean;\n\n  get(path: string): FormActionControl | FormActionGroup | null;\n\n  disable(): void;\n\n  enable(): void;\n}\n\nexport class ActionGroupFactory {\n\n  public static create(children: {[key: string]: FormActionControl | FormActionGroup}): FormActionGroup {\n    return new FormActionGroupInternal(children as any);\n  }\n}","import { FromActionControlInternal } from '../internal/action/action-control-internal';\n\nexport interface FormActionControl {\n\n  get disabled(): boolean;\n\n  disable(): void;\n\n  enable(): void;\n}\n\nexport class ActionControlFactory {\n\n  public static create(): FormActionControl {\n    return new FromActionControlInternal();\n  }\n}","import { AbstractControl, FormGroup } from '@angular/forms';\nimport { Question } from '../../model';\n\n/**\n * @deprecated Will be removed in version [3.0.0]. Use dependency\n * injection pattern instead.\n */\nexport abstract class BaseFormControlComponent<T = unknown, C = AbstractControl> {\n  formGroup!: FormGroup;\n  control!: C;\n  question!: Question;\n  properties!: T;\n}\n","import { Question } from '../../model';\nimport { FastFormArray } from '../../control/fast-form-array';\n\n/**\n * @deprecated Will be removed in version [3.0.0]. Use dependency\n * injection pattern instead.\n */\nexport abstract class BaseFormArrayComponent<T = unknown> {\n  formArray!: FastFormArray;\n  question!: Question;\n  properties!: T;\n}\n","import { FormGroup } from '@angular/forms';\nimport { Question } from '../../model';\n\n/**\n * @deprecated Will be removed in version [3.0.0]. Use dependency\n * injection pattern instead.\n */\nexport abstract class BaseFormGroupComponent<T = unknown> {\n  formGroup!: FormGroup;\n  questions!: Array<Question>;\n  properties!: T;\n}\n","import { META_COMPONENT_OPTIONS_KEY } from '../internal/symbols';\nimport { InternalControlComponent } from '../internal/control/models';\nimport { FormControlType } from '../model';\n\nexport interface ControlOptions {\n  type: string;\n  inline?: boolean;\n  controlType?: FormControlType;\n}\n\nexport function Control(options: ControlOptions) {\n\n  return (target: unknown): void => {\n    const controlComponent = target as InternalControlComponent;\n    controlComponent[META_COMPONENT_OPTIONS_KEY] = {\n      ...controlComponent[META_COMPONENT_OPTIONS_KEY],\n      internalType: options.controlType === undefined ? 'control' : options.controlType,\n      type: options.type,\n      inline: options.inline\n    };\n  };\n}\n","import { AbstractControlOptions, FormControlOptions, FormControlState } from '@angular/forms';\nimport { FormControlType } from '../model';\nimport { TypedQuestion } from '../question-definition';\n\n//TODO: Remove this and render with old render service and old control wrapper\nexport class ControlWrapperV2 {\n\n\n  constructor(\n      private _controlType: FormControlType,\n      private _initialState: FormControlState<any> | any,\n      private _question: TypedQuestion & (AbstractControlOptions | FormControlOptions),\n      private _arrayQuestion: ControlWrapperV2 | null,\n      private _groupQuestions: { [key: string]: ControlWrapperV2 } | null\n  ) {\n  }\n\n  get controlType(): FormControlType {\n    return this._controlType;\n  }\n\n  get initialState(): FormControlState<any> | any {\n    return this._initialState;\n  }\n\n  get question(): TypedQuestion & (AbstractControlOptions | FormControlOptions) {\n    return this._question as any;\n  }\n\n  get arrayQuestion(): ControlWrapperV2 {\n    if (this._arrayQuestion) {\n      return this._arrayQuestion;\n    } else {\n      throw new Error('No array question defined.');\n    }\n  }\n\n  get groupQuestion(): { [key: string]: ControlWrapperV2 } {\n    if (this._groupQuestions) {\n      return this._groupQuestions;\n    } else {\n      throw new Error('No group question defined.');\n    }\n  }\n\n  public static fromControl(initialState: FormControlState<any> | any, opts: TypedQuestion & FormControlOptions): ControlWrapperV2 {\n    return new ControlWrapperV2(\n        'control',\n        initialState,\n        opts,\n        null,\n        null\n    );\n  }\n\n  public static fromGroup(question: TypedQuestion & AbstractControlOptions, groupQuestions: { [key: string]: ControlWrapperV2 }): ControlWrapperV2 {\n    return new ControlWrapperV2(\n        'group',\n        null,\n        question,\n        null,\n        groupQuestions\n    );\n  }\n\n  public static fromArray(\n      question: TypedQuestion & AbstractControlOptions,\n      arrayQuestion?: ControlWrapperV2): ControlWrapperV2 {\n    return new ControlWrapperV2(\n        'array',\n        null,\n        question,\n        arrayQuestion ?? null,\n        null\n    );\n  }\n}\n","export class ValidatorDefinition {\n\n  public readonly id: string;\n  public readonly args: Array<string>\n\n  constructor(private definition: string) {\n    if (this.definition.includes(':')) {\n      this.id = this.definition.split(':')[0];\n      this.args = this.definition.split(':')[1].split(',');\n    } else {\n      this.id = this.definition;\n      this.args = [];\n    }\n  }\n}\n\n\n","import { InjectionToken } from '@angular/core';\nimport { InternalValidator } from './validation/models';\n\nexport const VALIDATORS = new InjectionToken<Array<Array<InternalValidator>>>('AFF_VALIDATORS');\n","import { Injector } from '@angular/core';\nimport { InternalValidator } from './models';\nimport { ValidatorDefinition } from './validator-definition.util';\nimport { META_VALIDATOR_OPTIONS_KEY } from '../symbols';\nimport { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { ValidatorType } from '../../validation/symbols';\n\nexport class ValidatorRegistry {\n\n  private validators: Array<InternalValidator> = [];\n\n  constructor(private injector: Injector,\n              validatorsPerModule: Array<Array<InternalValidator>>) {\n    for (const vList of validatorsPerModule) {\n      for (const v of (vList ?? [])) {\n        this.validate(v);\n        this.validators.push(v);\n      }\n    }\n  }\n\n  public hasSyncValidator(id: string): boolean {\n    return !!this.getValidatorType(id, 'sync');\n  }\n\n  public hasAsyncValidator(id: string): boolean {\n    return !!this.getValidatorType(id, 'async');\n  }\n\n  public hasValidator(id: string, type: ValidatorType): boolean {\n    return !!this.getValidatorType(id, type);\n  }\n\n  public getSyncValidator(def: ValidatorDefinition): ValidatorFn {\n    return this.createValidator(def, 'sync');\n  }\n\n  public getAsyncValidator(def: ValidatorDefinition): AsyncValidatorFn {\n    return this.createValidator(def, 'async');\n  }\n\n  public getValidator(def: ValidatorDefinition, type: ValidatorType): ValidatorFn | AsyncValidatorFn {\n    return this.createValidator(def, type);\n  }\n\n  private createValidator(def: ValidatorDefinition, type: ValidatorType) {\n    const validatorType = this.getValidatorType(def.id, type);\n    if (!validatorType) {\n      throw new Error(`No ${type} validator registered with type [${def.id}]`);\n    }\n    const validatorFactory = this.injector.get(validatorType);\n    return validatorFactory.createValidator(def.args);\n  }\n\n  private getValidatorType(id: string, type: ValidatorType): InternalValidator | undefined {\n    return this.validators.find(validator => {\n      const options = validator[META_VALIDATOR_OPTIONS_KEY];\n      return options.type === type && options.id === id;\n    });\n  }\n\n  private validate(v: InternalValidator) {\n    if (!v[META_VALIDATOR_OPTIONS_KEY]) {\n      throw new Error(`Validator must be decorated with [@Validator] decorator.`);\n    }\n  }\n}\n","export function toArray<T>(option?: T | Array<T>): Array<T> {\n  if (option) {\n    if (option instanceof Array) {\n      return option;\n    } else {\n      return [option];\n    }\n  } else {\n    return [];\n  }\n}\n","import { Inject, Injectable, Injector, Optional } from '@angular/core';\nimport { AsyncValidatorFn, ValidatorFn, Validators } from '@angular/forms';\nimport { ValidationOptions } from '../model';\nimport { ValidatorDefinition } from '../internal/validation/validator-definition.util';\nimport { VALIDATORS } from '../internal/token';\nimport { InternalValidator } from '../internal/validation/models';\nimport { ValidatorRegistry } from '../internal/validation/validator-registry';\nimport { toArray } from '../internal/util/array.util';\nimport { ValidatorType } from './symbols';\n\n\n@Injectable({\n  providedIn: 'any'\n})\nexport class ValidatorFactoryService {\n\n  private registry: ValidatorRegistry;\n\n  constructor(private injector: Injector,\n              @Optional() @Inject(VALIDATORS) registeredValidators?: Array<Array<InternalValidator>>) {\n    this.registry = new ValidatorRegistry(injector, registeredValidators ?? []);\n  }\n\n  public createValidators(options?: ValidationOptions): Array<ValidatorFn> {\n    const validators: ValidatorFn[] = [];\n    if (!options) {\n      return validators;\n    }\n    if (options.required) {\n      validators.push(Validators.required);\n    }\n    if (options.min) {\n      validators.push(Validators.min(options.min));\n    }\n    if (options.minLength) {\n      validators.push(Validators.minLength(options.minLength));\n    }\n    if (options.max) {\n      validators.push(Validators.max(options.max));\n    }\n    if (options.maxLength) {\n      validators.push(Validators.maxLength(options.maxLength));\n    }\n    if (options.email) {\n      validators.push(Validators.email);\n    }\n    if (options.pattern) {\n      validators.push(Validators.pattern(options.pattern));\n    }\n    validators.push(...this.createCustomValidators('sync', options));\n    return validators;\n  }\n\n  public createAsyncValidators(options?: ValidationOptions): Array<AsyncValidatorFn> {\n    return this.createCustomValidators('async', options) as Array<AsyncValidatorFn>;\n  }\n\n  private createCustomValidators(type: ValidatorType, options?: ValidationOptions): Array<ValidatorFn> | Array<AsyncValidatorFn> {\n    const validatorIds = toArray(type === 'sync' ? options?.custom : options?.customAsync);\n    const validators = validatorIds.map(id => new ValidatorDefinition(id))\n        .filter(def => {\n          if (this.registry.hasValidator(def.id, type)) {\n            return true;\n          } else {\n            console.warn(`No ${type} validator registered with id [${def.id}].`);\n            return false;\n          }\n        })\n        .map(def => this.registry.getValidator(def, type));\n\n    if (type === 'sync') {\n      validators.push(...toArray(options?.customFn));\n    } else {\n      validators.push(...toArray(options?.customAsyncFn));\n    }\n    return validators;\n\n  }\n}\n\n","export function flattenArray<T>(itemsList?: Array<Array<T>>): Array<T> {\n  const flattenedArray: Array<T> = [];\n  for (const itemList of itemsList ?? []) {\n    for (const item of itemList) {\n      flattenedArray.push(item);\n    }\n  }\n  return flattenedArray;\n}","import { flattenArray } from \"../util/list.util\";\n\nexport abstract class AbstractRegistry<T> {\n\n  private items: { [key: string]: T } = {};\n\n  protected constructor(items?: Array<Array<T>>) {\n    const registeredIds = new Set<string>();\n    for (const item of flattenArray(items)) {\n      this.validate(item);\n      this.ids(item).forEach(id => {\n        if (registeredIds.has(id)) {\n          throw new Error(`Id [${id}] already exist.`);\n        }\n        registeredIds.add(id);\n        this.items[id] = item;\n      });\n    }\n  }\n\n  public hasItem(id: string): boolean {\n    return id in this.items;\n  }\n\n  public getItem(id: string): T {\n    if (id in this.items) {\n      return this.items[id];\n    } else {\n      throw new Error(`No item with id [${id}] found in registry.`);\n    }\n  }\n\n  abstract validate(item: T): void;\n\n  abstract ids(item: T): string[];\n\n\n}\n","import { AsyncValidatorFn, ValidatorFn } from '@angular/forms';\nimport { InjectionToken, Type } from '@angular/core';\nimport { BaseFormControlComponent } from './components/base/base-control.component';\nimport { BaseFormInlineComponent } from './components/base/base-inline.component';\nimport { BaseFormArrayComponent } from './components/base/base-array.component';\nimport { BaseFormGroupComponent } from './components/base/base-group.component';\nimport { InternalControlComponent } from './internal/control/models';\nimport { BasicQuestion } from './components/question-definition';\nimport { ControlFactoryMethod } from './question-definition';\n\nexport const AFF_CONTROL_COMPONENTS = new InjectionToken<Array<Array<InternalControlComponent>>>('AFF_CONTROL_COMPONENTS');\n\nexport interface DynamicFormDefinition {\n  type: string;\n  inline?: boolean;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  component: Type<BaseFormControlComponent<any, any> | BaseFormInlineComponent | BaseFormArrayComponent<any> | BaseFormGroupComponent>;\n  controlFactory?: ControlFactoryMethod;\n}\n\nexport type QuestionProperties = { [key: string]: unknown };\n\nexport interface Question extends BasicQuestion {\n  type: string;\n}\n\nexport interface ValidationOptions {\n  required?: boolean;\n  min?: number;\n  minLength?: number;\n  max?: number;\n  maxLength?: number;\n  email?: boolean;\n  pattern?: string | RegExp;\n  custom?: string | Array<string>;\n  customFn?: ValidatorFn | Array<ValidatorFn>;\n  customAsync?: string | Array<string>;\n  customAsyncFn?: AsyncValidatorFn | Array<AsyncValidatorFn>;\n}\n\nexport interface FastFormSubmitEvent {\n  event: unknown;\n  data: unknown;\n}\n\nexport type FormControlType = 'control' | 'array' | 'group';\nexport type FormActionType = 'action';\n\n\nexport type EmitEventOption = {\n  emitEvent?: boolean\n}\n\nexport type OnlySelfOption = {\n  onlySelf?: boolean;\n}\n\nexport type IndexOption = {\n  index?: number\n}\n","import { ControlComponentMetaData, InternalControlComponent } from './models';\nimport { META_COMPONENT_OPTIONS_KEY } from '../symbols';\nimport { Inject, Injectable, Optional, Type } from '@angular/core';\nimport { BaseFormInlineComponent } from '../../components/base/base-inline.component';\nimport { BaseFormArrayComponent } from '../../components/base/base-array.component';\nimport { AbstractRegistry } from '../abstract-registry';\nimport { AFF_CONTROL_COMPONENTS } from '../../model';\nimport { BaseFormControlComponent } from '../../components/base/base-control.component';\nimport { BaseFormGroupComponent } from '../../components/base/base-group.component';\nimport { InternalControlDefinition } from '../models';\nimport { ControlFactoryMethod } from '../../question-definition';\n\n@Injectable({\n  providedIn: 'any'\n})\nexport class ControlRegistry extends AbstractRegistry<InternalControlComponent> {\n\n  constructor(@Optional() @Inject(AFF_CONTROL_COMPONENTS) controlComponentsPerModule?: Array<Array<InternalControlComponent>>) {\n    super(controlComponentsPerModule);\n  }\n\n  override ids(item: InternalControlComponent): string[] {\n    return item[META_COMPONENT_OPTIONS_KEY].type.split(',');\n  }\n\n  override validate(control: InternalControlComponent) {\n    if (!control[META_COMPONENT_OPTIONS_KEY]) {\n      throw new Error(`Control component must be decorated with [@Control] decorator.`);\n    }\n  }\n\n  hasControlFactory(type: string): boolean {\n    if (this.hasItem(type)) {\n      const metaData = this.getComponentMetaData(type);\n      return metaData.controlFactory !== undefined;\n    } else {\n      return false;\n    }\n  }\n\n  getControlFactory(type: string): ControlFactoryMethod | null {\n    const def = this.getDefinition(type);\n    if (def.controlFactory !== undefined) {\n      return def.controlFactory;\n    }\n    return null;\n  }\n\n  getDefinition(type: string): InternalControlDefinition {\n    const component = this.getItem(type);\n    const componentMetaData = component[META_COMPONENT_OPTIONS_KEY];\n    return {\n      type: type,\n      inline: componentMetaData.inline,\n      controlFactory: componentMetaData.controlFactory,\n      component: component as any as Type<BaseFormControlComponent<any, any> | BaseFormInlineComponent | BaseFormArrayComponent<any> | BaseFormGroupComponent>,\n      internalType: componentMetaData.internalType\n    };\n  }\n\n  private getComponentMetaData(type: string): ControlComponentMetaData {\n    return this.getItem(type)[META_COMPONENT_OPTIONS_KEY];\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { ControlRegistry } from '../internal/control/control-registry.service';\nimport {\n  AbstractControl,\n  AbstractControlOptions,\n  AsyncValidatorFn,\n  FormArray,\n  FormControl,\n  FormControlOptions,\n  FormControlState,\n  FormGroup,\n  ValidatorFn\n} from '@angular/forms';\nimport { ControlWrapperKey, FastFormBuilder, hasControlWrapper, WrapperProvider } from './fast-form-builder';\nimport { ControlWrapperV2 } from '../internal/control-wrapper-v2';\nimport { ValidatorFactoryService } from '../validation/validator-factory.service';\nimport { ValidationOptions } from '../model';\nimport { ValidatorFunctionType, ValidatorType } from '../validation/symbols';\nimport { ControlFactoryMethod, TypedQuestion } from '../question-definition';\n\n//TODO: Check if introducing circ dependency with FastFormBuilder is best solution\n//Possible solution: Add static control enhancement method to add wrapper to control\n@Injectable({\n  providedIn: 'any'\n})\nexport class ControlFactoryV2 {\n\n  constructor(private readonly validatorFactory: ValidatorFactoryService,\n              private readonly cr: ControlRegistry) {\n  }\n\n  create(wrapper: ControlWrapperV2): AbstractControl {\n    switch (wrapper.controlType) {\n      case 'control':\n        return this.dynamicControl(wrapper.initialState, wrapper.question);\n      case 'group':\n        return this.group(wrapper.question, this.createSubGroupControls(wrapper.groupQuestion));\n      case 'array':\n        return this.array(wrapper.question, this.create(wrapper.arrayQuestion));\n    }\n  }\n\n  public control<T>(state: FormControlState<T> | T, question: TypedQuestion<T> & FormControlOptions & { nonNullable: true }): FormControl<T>;\n  public control<T>(state: FormControlState<T> | T, question: TypedQuestion<T> & FormControlOptions): FormControl<T | null>;\n  public control<T>(state: FormControlState<T> | T, question: TypedQuestion<T> & FormControlOptions): FormControl<T> {\n    return this.dynamicControl(state, question) as FormControl<T>;\n  }\n\n  public dynamicControl(state: FormControlState<any> | any, question: TypedQuestion & FormControlOptions): AbstractControl {\n    let control: AbstractControl;\n    const controlFactory = this.cr.getControlFactory(question.type);\n    if (controlFactory) {\n      control = this.createViaFactoryMethod(controlFactory, question, state);\n    } else {\n      control = new FormControl(state, {\n        ...this.createValidators(question),\n        updateOn: question.updateOn,\n        nonNullable: question.nonNullable\n      });\n    }\n    (control as WrapperProvider)[ControlWrapperKey] = ControlWrapperV2.fromControl(state, question);\n    return control;\n  }\n\n  public group(question: TypedQuestion & AbstractControlOptions, groupControls?: { [key: string]: AbstractControl }): FormGroup {\n    const controlFactory = this.cr.getControlFactory(question.type);\n    let group: FormGroup;\n    if (controlFactory) {\n      group = this.createViaFactoryMethod(controlFactory, question) as FormGroup;\n    } else {\n      group = new FormGroup<any>(groupControls ?? {}, {\n        ...this.createValidators(question),\n        updateOn: question.updateOn\n      });\n    }\n\n    const groupQuestions: { [key: string]: ControlWrapperV2 } = {};\n    Object.keys(groupControls ?? {}).forEach(key => {\n      const childControl = this.deriveDefinition(null, (groupControls ?? {})[key]);\n      if (!childControl.question.id) {\n        childControl.question.id = key;\n      }\n      groupQuestions[key] = childControl;\n    });\n    (group as WrapperProvider)[ControlWrapperKey] = ControlWrapperV2.fromGroup(question, groupQuestions);\n    return group;\n  }\n\n  public array(question: TypedQuestion & AbstractControlOptions, arrayQuestion?: AbstractControl): FormArray {\n    const controlFactory = this.cr.getControlFactory(question.type);\n    let array: FormArray;\n    if (controlFactory) {\n      array = this.createViaFactoryMethod(controlFactory, question) as FormArray;\n    } else {\n      array = new FormArray<any>([], {\n        ...this.createValidators(question),\n        updateOn: question.updateOn\n      });\n    }\n    if (arrayQuestion) {\n      (array as WrapperProvider)[ControlWrapperKey] = ControlWrapperV2.fromArray(question, this.deriveDefinition(null, arrayQuestion));\n    } else {\n      (array as WrapperProvider)[ControlWrapperKey] = ControlWrapperV2.fromArray(question);\n    }\n    return array;\n  }\n\n  public deriveDefinition(key: string | null, control: AbstractControl): ControlWrapperV2 {\n    if (!hasControlWrapper(control)) {\n      throw new Error(`Cannot create control which is not created via the [${FastFormBuilder.name}].`);\n    }\n    const wrapper = control[ControlWrapperKey];\n    if (wrapper.controlType === 'control') {\n      return wrapper;\n    } else if (wrapper.controlType === 'group') {\n      return wrapper;\n    } else if (wrapper.controlType === 'array') {\n      return wrapper;\n    } else {\n      throw new Error(`The control type [${wrapper.controlType}]} is not supported.`);\n    }\n  }\n\n  private createValidators(question: { validation?: ValidationOptions } & FormControlOptions): {\n    validators: ValidatorFn[] | null,\n    asyncValidators: AsyncValidatorFn[] | null\n  } {\n    return {\n      validators: this.createValidatorsByType('sync', question.validators, question.validation),\n      asyncValidators: this.createValidatorsByType('async', question.asyncValidators, question.validation)\n    };\n  }\n\n  private createValidatorsByType<T extends ValidatorType>(\n      type: T,\n      validators: ValidatorFunctionType[T] | ValidatorFunctionType[T][] | null | undefined,\n      opts?: ValidationOptions\n  ): ValidatorFunctionType[T][] | null {\n    const combinedValidators: ValidatorFunctionType[T][] = [];\n    if (validators) {\n      if (validators instanceof Array) {\n        validators.forEach(v => combinedValidators.push(v));\n      } else {\n        combinedValidators.push(validators);\n      }\n    }\n    if (opts) {\n      if (type === 'sync') {\n        combinedValidators.push(...this.validatorFactory.createValidators(opts) as any);\n      } else if (type === 'async') {\n        combinedValidators.push(...this.validatorFactory.createAsyncValidators(opts));\n      }\n    }\n    if (combinedValidators.length === 0) {\n      return null;\n    } else {\n      return combinedValidators;\n    }\n  }\n\n  private createSubGroupControls(groupQuestions: { [key: string]: ControlWrapperV2 }): { [key: string]: AbstractControl } {\n    const groupDef: { [key: string]: AbstractControl } = {};\n    Object.keys(groupQuestions).forEach(key => {\n      groupDef[key] = this.create(groupQuestions[key]);\n    });\n    return groupDef;\n  }\n\n  private createViaFactoryMethod(method: ControlFactoryMethod, question: TypedQuestion, defaultValue?: any): AbstractControl {\n    return method({\n      ...question,\n      defaultValue: defaultValue\n    }, {\n      ...this.createValidators(question),\n      fb: new FastFormBuilder(this)\n    });\n  }\n}\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormControl, FormControlState, FormGroup } from '@angular/forms';\nimport { ControlWrapperV2 } from '../internal/control-wrapper-v2';\nimport { ControlFactoryV2 } from './control-factory-v2.service';\nimport { ArrayBuilderDefinition, ControlBuilderDefinition, GroupBuilderDefinition } from '../question-definition';\n\n\n@Injectable({\n  providedIn: 'any'\n})\nexport class FastFormBuilder {\n\n  constructor(private cf: ControlFactoryV2) {\n  }\n\n\n  public control<T = any>(state: FormControlState<T> | T, opts: ControlBuilderDefinition & { nonNullable: true }): FormControl<T>;\n  public control<T = any>(state: FormControlState<T> | T, opts: ControlBuilderDefinition): FormControl<T | null>;\n  public control<T = any>(state: FormControlState<T> | T, opts: ControlBuilderDefinition): FormControl<T> {\n    return this.dynamicControl(state, opts) as FormControl<T>;\n  }\n\n  public controlGroup<T extends object>(\n      state: T,\n      opts: ControlBuilderDefinition\n  ): FormGroup<{ [K in keyof T]: AbstractControl<T[K]> }> {\n    return this.dynamicControl(state, opts) as FormGroup<{ [K in keyof T]: AbstractControl<T[K]> }>;\n  }\n\n  public dynamicControl<T = any>(state: FormControlState<T> | T, opts: ControlBuilderDefinition): AbstractControl {\n    return this.cf.dynamicControl(state, opts);\n  }\n\n  /**\n   * Experimental\n   */\n  public group<T extends object>(\n      question: GroupBuilderDefinition,\n      groupControls?: { [key: string]: AbstractControl }\n  ): FormGroup<{ [K in keyof T]: AbstractControl<T[K]> }> {\n    return this.cf.group({\n      ...question,\n      type: question.type ?? 'group-v2'\n    }, groupControls);\n  }\n\n  /**\n   * Experimental\n   */\n  public array<T>(question: ArrayBuilderDefinition, arrayQuestion?: AbstractControl<T>): FormArray<AbstractControl<T>> {\n    return this.cf.array({\n      ...question,\n      type: question.type ?? 'array-v2'\n    }, arrayQuestion);\n  }\n\n  /**\n   * Experimental\n   */\n  newArrayEntry(array: FormArray): AbstractControl {\n    if (hasControlWrapper(array)) {\n      const wrapper = array[ControlWrapperKey];\n      if (wrapper.controlType !== 'array') {\n        throw new Error(`Cannot create array entry for component type [${wrapper.controlType}].`);\n      }\n      return this.cf.create(wrapper.arrayQuestion);\n    } else {\n      throw new Error(`Cannot create array entry when control is not created via [${FastFormBuilder.name}].`);\n    }\n  }\n}\n\n\nexport const ControlWrapperKey = 'aff_wrapper';\n\nexport type WrapperProvider = (AbstractControl | FormGroup | FormControl | FormArray) & {\n  [ControlWrapperKey]: ControlWrapperV2;\n}\n\nexport function hasControlWrapper(control: object): control is WrapperProvider {\n  return ControlWrapperKey in control;\n}\n\n\n\n\n","import { InjectionToken } from '@angular/core';\nimport { QuestionProperties } from '../../model';\nimport { FormArray, FormControl, FormGroup } from '@angular/forms';\nimport { FormActionGroup } from '../../actions/fast-form-action-group';\nimport { FormActionControl } from '../../actions/fast-form-action';\nimport { ControlId } from '../../control/models';\n\nexport const CONTROL_PROPERTIES = new InjectionToken<QuestionProperties>('AFF_CONTROL_PROPERTIES');\nexport const FORM_CONTROL = new InjectionToken<FormControl | FormGroup | FormArray | FormActionGroup | FormActionControl>('AFF_FORM_CONTROL');\nexport const CONTROL_ID = new InjectionToken<ControlId>('AFF_CONTROL_ID');\n","import { FormGroup } from '@angular/forms';\nimport { Question } from '../../model';\n\n/**\n * @deprecated Will be removed in version [3.0.0]. Use dependency\n * injection pattern instead.\n */\nexport abstract class BaseFormInlineComponent {\n  formGroup!: FormGroup;\n  questions!: Array<Question>;\n}\n","import { ControlId } from '../../control/models';\n\nexport class ControlIdImpl implements ControlId {\n  private readonly parts: IdPart[];\n\n  constructor(private parentParts: IdPart[] = []) {\n    this.parts = parentParts.map((part) => ({\n      id: part.id,\n      indexProvider: part.indexProvider,\n    }));\n  }\n\n  addPart(part: string): ControlIdImpl {\n    return new ControlIdImpl([\n      ...this.parts,\n      {\n        id: part,\n      },\n    ]);\n  }\n\n  addIndex(part: string | undefined, indexProvider: IndexProvider): ControlIdImpl {\n    let clonedId = new ControlIdImpl(this.parts);\n    if (clonedId.parts.length > 0) {\n      const lastPart = clonedId.parts[clonedId.parts.length - 1];\n      if (lastPart.indexProvider === undefined) {\n        lastPart.indexProvider = indexProvider;\n      } else {\n        clonedId = new ControlIdImpl([...clonedId.parts, { indexProvider: indexProvider }]);\n      }\n    } else if (clonedId.parts.length === 0) {\n      if (part === undefined) {\n        clonedId = new ControlIdImpl([{ indexProvider: indexProvider }]);\n      } else {\n        clonedId = new ControlIdImpl([{ indexProvider: indexProvider }, { id: part }]);\n      }\n    }\n    return clonedId;\n  }\n\n  getId(): string {\n    return this.parts\n      .map((part) => {\n        if (part.id !== undefined && part.indexProvider !== undefined) {\n          return `${part.id}[${part.indexProvider.index}]`;\n        } else if (part.indexProvider !== undefined) {\n          return `[${part.indexProvider.index}]`;\n        } else {\n          return part.id;\n        }\n      })\n      .join('.');\n  }\n}\n\ninterface IdPart {\n  id?: string;\n  indexProvider?: IndexProvider;\n}\n\ninterface IndexProvider {\n  index: number | null;\n}\n","import { Question, ValidationOptions } from '../model';\n\nexport class QuestionDefinition<T = any> {\n  public readonly id?: string;\n  public readonly label?: string;\n  public readonly hidden?: boolean;\n  public readonly disabled?: boolean;\n  public readonly validation?: ValidationOptions;\n  public readonly properties?: T;\n  public readonly defaultValue?: string | number;\n  public readonly children?: Question[];\n\n  constructor(question: BasicQuestion) {\n    this.id = question.id;\n    this.label = question.label;\n    this.hidden = question.hidden;\n    this.disabled = question.disabled;\n    this.validation = question.validation;\n    this.properties = question.properties as T;\n    this.defaultValue = question.defaultValue;\n    this.children = question.children;\n  }\n}\n\nexport interface BasicQuestion {\n  id: string;\n  label?: string;\n  hidden?: boolean;\n  disabled?: boolean;\n  validation?: ValidationOptions;\n  properties?: unknown;\n  defaultValue?: string | number;\n  children?: Question[];\n}\n","import { ComponentRef, Injectable, Injector, StaticProvider, ViewContainerRef } from '@angular/core';\nimport { DynamicFormDefinition, Question } from '../model';\nimport { BaseFormInlineComponent } from '../components/base/base-inline.component';\nimport { AbstractControl, FormControl, FormGroup } from '@angular/forms';\nimport { BaseFormArrayComponent } from '../components/base/base-array.component';\nimport { FastFormArray } from '../control/fast-form-array';\nimport { BaseFormControlComponent } from '../components/base/base-control.component';\nimport { BaseFormGroupComponent } from '../components/base/base-group.component';\nimport { ControlRegistry } from './control/control-registry.service';\nimport { CONTROL_ID, CONTROL_PROPERTIES, FORM_CONTROL } from '../components/util/inject-token';\nimport { ActionService } from '../actions/action.service';\nimport { ControlIdImpl } from './control/control-id-impl';\nimport { ArrayIndexDirective } from '../actions/array-index.directive';\nimport { FastFormControl } from '../control/fast-form-control';\nimport { FastFormGroup } from '../control/fast-form-group';\nimport { QuestionDefinition } from '../components/question-definition';\nimport { ControlWrapperKey, hasControlWrapper } from '../service/fast-form-builder';\nimport { ControlWrapperV2 } from './control-wrapper-v2';\n\n@Injectable({\n  providedIn: 'any'\n})\nexport class FormRenderService {\n\n  constructor(\n      private controlRegistry: ControlRegistry,\n      private injector: Injector) {\n  }\n\n  renderOnly<T>(\n      viewContainerRef: ViewContainerRef,\n      control: AbstractControl,\n      opts: {\n        injector: Injector\n      }\n  ): ComponentRef<T> {\n    if (!hasControlWrapper(control)) {\n      throw new Error('Cannot render control which has no control wrapper.');\n    }\n    // console.log(parent);\n    const question = (control[ControlWrapperKey] as ControlWrapperV2).question;\n    // console.log(question);\n    // console.log((parent[QuestionWrapper] as ControlWrapperV2).question);\n    const def = this.controlRegistry.getDefinition(question.type as any);\n    const providers: StaticProvider[] = [\n      {provide: FORM_CONTROL, useValue: control},\n      {\n        provide: QuestionDefinition, useValue: new QuestionDefinition({\n          id: '',\n          ...question\n        })\n      }\n    ];\n    //TODO: Check if this injection is valid\n    if (question.properties) {\n      providers.push({provide: CONTROL_PROPERTIES, useValue: question.properties});\n    }\n    const controlComponentRef = viewContainerRef.createComponent(def.component, {\n      injector: Injector.create({\n        providers,\n        parent: opts.injector ? opts.injector : this.injector\n      })\n    });\n\n    // this.renderer.appendChild(viewContainerRef.element.nativeElement, ComponentRef);\n    if (control instanceof FormGroup) {\n      // Object.keys(parent.controls).forEach(key => {\n      //   const controlComponentRef = viewContainerRef.createComponent(def.component, {\n      //     injector: Injector.create({\n      //       providers: [\n      //         {provide: FORM_CONTROL, useValue: parent}\n      //       ]\n      //       // parent: injector ? injector : this.injector\n      //     })\n      //   });\n      //\n      // })\n    }\n    // if (this.shouldInitialize(controlComponentRef.instance)) {\n    //   this.initializeComponent(parent, question, formDefinition.component.name, controlComponentRef.instance);\n    // }\n    return controlComponentRef as any;\n  }\n\n  render<T>(\n      viewContainerRef: ViewContainerRef,\n      parent: AbstractControl,\n      question: Question,\n      formDefinition: DynamicFormDefinition,\n      injector: Injector,\n      actionService?: ActionService,\n      indexDirective?: ArrayIndexDirective\n  ): ComponentRef<T> {\n    const controlComponentRef = viewContainerRef.createComponent(formDefinition.component, {\n      injector: Injector.create({\n        providers: this.createProviders(question, parent, injector, actionService, indexDirective),\n        parent: injector ? injector : this.injector\n      })\n    });\n    if (this.shouldInitialize(controlComponentRef.instance)) {\n      this.initializeComponent(parent, question, formDefinition.component.name, controlComponentRef.instance);\n    }\n    return controlComponentRef as any;\n  }\n\n  private createProviders(\n      question: Question,\n      parent: AbstractControl,\n      injector: Injector,\n      actionService?: ActionService,\n      indexDirective?: ArrayIndexDirective\n  ): StaticProvider[] {\n    const id = injector.get<ControlIdImpl>(CONTROL_ID, new ControlIdImpl());\n    let control: AbstractControl | null = null;\n    if (this.controlRegistry.hasItem(question.type)) {\n      const def = this.controlRegistry.getDefinition(question.type);\n      if (\n          (def.internalType === 'control' && parent instanceof FormControl)\n          || def.inline\n      ) {\n        control = parent;\n      } else {\n        control = parent.get(question.id);\n      }\n    }\n    return [\n      {provide: QuestionDefinition, useValue: new QuestionDefinition(question)},\n      {provide: CONTROL_PROPERTIES, useValue: question.properties ?? {}},\n      {provide: CONTROL_ID, useValue: this.createControlId(id, question.id, parent, indexDirective)},\n      {provide: FORM_CONTROL, useValue: control},\n      {provide: ActionService, useValue: actionService}\n    ];\n  }\n\n  private createControlId(id: ControlIdImpl,\n                          questionId: string,\n                          control: AbstractControl,\n                          indexDirective?: ArrayIndexDirective\n  ): ControlIdImpl {\n    if (indexDirective && (control instanceof FastFormGroup || control instanceof FastFormControl)) {\n      return id.addIndex(questionId, control);\n    } else {\n      return id.addPart(questionId);\n    }\n  }\n\n  private shouldInitialize(component: unknown): boolean {\n    return (\n        component instanceof BaseFormArrayComponent ||\n        component instanceof BaseFormInlineComponent ||\n        component instanceof BaseFormControlComponent ||\n        component instanceof BaseFormGroupComponent\n    );\n  }\n\n  // TODO better type check\n  private initializeComponent(\n      control: AbstractControl,\n      question: Question,\n      componentName: string,\n      component: BaseFormArrayComponent | BaseFormInlineComponent | BaseFormControlComponent\n  ) {\n    if (component instanceof BaseFormArrayComponent && control instanceof FormGroup) {\n      this.initializeFormArrayComponent(control, question, component);\n    } else if (component instanceof BaseFormInlineComponent && control instanceof FormGroup) {\n      this.initializeFormInlineComponent(control, question, component);\n    } else if (\n        component instanceof BaseFormControlComponent &&\n        (control instanceof FormGroup || control instanceof FormControl)\n    ) {\n      this.initializeFormControlComponent(control, question, component);\n    } else if (component instanceof BaseFormGroupComponent && control instanceof FormGroup) {\n      this.initializeFormGroupComponent(control, question, component);\n    } else {\n      throw new Error(`Cannot create component [${componentName}] for question with id [${question.id}]`);\n    }\n  }\n\n  private initializeFormArrayComponent(formGroup: FormGroup, question: Question, component: BaseFormArrayComponent) {\n    component.formArray = formGroup.controls[question.id] as FastFormArray;\n    const formChildren = question.children ?? [];\n    if (formChildren.length > 1) {\n      throw new Error('Only one children is allowed in a form array.');\n    }\n    if (formChildren.length === 0) {\n      console.warn(`No question registered in form array [${question.id}].`);\n    } else {\n      component.question = formChildren[0];\n    }\n    component.properties = question?.properties ?? {};\n  }\n\n  private initializeFormInlineComponent(formGroup: FormGroup, question: Question, component: BaseFormInlineComponent) {\n    component.formGroup = formGroup;\n    component.questions = question.children ?? [];\n  }\n\n  private initializeFormGroupComponent(formGroup: FormGroup, question: Question, component: BaseFormGroupComponent) {\n    component.formGroup = formGroup.controls[question.id] as FormGroup;\n    component.questions = question.children ?? [];\n    component.properties = question?.properties ?? {};\n  }\n\n  private initializeFormControlComponent(\n      control: FormGroup | FormControl,\n      question: Question,\n      component: BaseFormControlComponent\n  ) {\n    if (control instanceof FormGroup) {\n      component.formGroup = control;\n      component.control = control.controls[question.id];\n    } else {\n      component.control = control;\n    }\n    component.question = question;\n    component.properties = question?.properties ?? {};\n  }\n}\n","import { Directive, Injector, Input, OnInit, Optional, Renderer2, ViewContainerRef } from '@angular/core';\nimport { AbstractControl, FormGroupDirective } from '@angular/forms';\nimport { FormRenderService } from '../internal/form-render.service';\n\n@Directive({\n  selector: '[affRenderer],[renderControl],[renderControlName]'\n})\nexport class FormRendererDirective implements OnInit {\n\n  @Input() renderControl: AbstractControl | null = null;\n  @Input() renderControlName: string | null = null;\n\n  constructor(\n      private viewContainerRef: ViewContainerRef,\n      private renderer: Renderer2,\n      private renderService: FormRenderService,\n      private injector: Injector,\n      @Optional() private groupDirective?: FormGroupDirective) {\n  }\n\n  ngOnInit(): void {\n    const control = this.controlToRender;\n    if (control) {\n      this.render(control);\n    }\n  }\n\n  private get controlToRender(): AbstractControl | null {\n    let control: AbstractControl | null = null;\n    if (this.renderControlName) {\n      control = this.groupDirective?.form.controls[this.renderControlName] ?? null;\n    } else if (this.renderControl) {\n      control = this.renderControl;\n    } else if (this.groupDirective?.control) {\n      control = this.groupDirective.control;\n    }\n    return control;\n  }\n\n  private render(control: AbstractControl) {\n    const isHtmlElement = this.viewContainerRef.element.nativeElement instanceof HTMLElement;\n    const componentRef = this.renderService.renderOnly(this.viewContainerRef, control, {injector: this.injector});\n    if (isHtmlElement) {\n      this.renderer.appendChild(this.viewContainerRef.element.nativeElement, componentRef.location.nativeElement);\n    }\n  }\n}\n","import { Component, Inject } from '@angular/core';\nimport { FormArray } from '@angular/forms';\nimport { Control } from '../../control/control.decorator';\nimport { FastFormBuilder, hasControlWrapper } from '../../service/fast-form-builder';\nimport { FORM_CONTROL } from '../util/inject-token';\n\n@Control({\n  type: 'array-v2',\n  controlType: 'array'\n})\n@Component({\n  selector: 'aff-form-array-v2',\n  templateUrl: './fast-form-array-v2.component.html'\n})\nexport class FastFormArrayV2Component {\n\n  constructor(@Inject(FORM_CONTROL) public array: FormArray,\n              private fb: FastFormBuilder) {\n  }\n\n  addRow(i?: number) {\n    if (this.array && hasControlWrapper(this.array)) {\n      if (i !== undefined) {\n        this.array.insert(i + 1, this.fb.newArrayEntry(this.array));\n      } else {\n        this.array.push(this.fb.newArrayEntry(this.array));\n      }\n    }\n  }\n\n  deleteRow(i?: number) {\n    if (i !== undefined) {\n      this.array?.removeAt(i);\n    }\n  }\n}\n","<div *ngFor=\"let subForm of array.controls; let i = index\" class=\"aff-array-entry\">\n    <div class=\"array-container\">\n        <div [renderControl]=\"subForm\"></div>\n    </div>\n    <div class=\"array-actions\">\n        <button (click)=\"addRow(i)\">Add</button>\n        <button (click)=\"deleteRow(i)\">Delete</button>\n    </div>\n</div>\n<button (click)=\"addRow()\" *ngIf=\"array.controls.length === 0\">\n    <span>New entry</span>\n</button>\n","import { Component, Inject } from '@angular/core';\nimport { FormGroup } from '@angular/forms';\nimport { Control } from '../../control/control.decorator';\nimport { FORM_CONTROL } from '../util/inject-token';\nimport { FormGroupV2Properties } from './properties';\nimport { QuestionDefinition } from '../question-definition';\n\n@Control({\n  type: 'group-v2',\n  controlType: 'group'\n})\n@Component({\n  selector: 'aff-form-group-v2',\n  templateUrl: './fast-form-group-v2.component.html'\n})\nexport class FastFormGroupV2Component {\n\n  public props: InternalGroupProperties;\n\n  constructor(@Inject(FORM_CONTROL) public formGroup: FormGroup,\n              def: QuestionDefinition<FormGroupV2Properties>) {\n    this.props = {\n      ...def.properties,\n      alignment: def.properties?.alignment ?? 'row'\n    };\n  }\n\n  public get controlKeys(): string[] {\n    return Object.keys(this.formGroup.controls ?? {});\n  }\n}\n\ninterface InternalGroupProperties {\n  alignment: 'row' | 'column';\n}\n","<div [ngClass]=\"{\n  'row': props.alignment === 'row',\n  'column': props.alignment === 'column'\n}\" class=\"aff-form-group-v2\">\n  <ng-container *ngFor=\"let key of controlKeys\" [renderControl]=\"formGroup.get(key)\"></ng-container>\n</div>\n","import { FormArray } from '@angular/forms';\nimport { EmitEventOption, IndexOption, OnlySelfOption, Question } from '../model';\nimport { ControlFactoryService } from '../service/control-factory.service';\n\nexport class FastFormArray extends FormArray {\n\n  constructor(private question: Question,\n              private controlFactory: ControlFactoryService) {\n    super([]);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  override setValue(values: any, options?: EmitEventOption & OnlySelfOption) {\n    if (values instanceof Array) {\n      this.updateControlCount(values.length, {emitEvent: false});\n    } else {\n      // TODO error handling\n    }\n    super.setValue(values, options);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  override patchValue(values: any, options?: EmitEventOption & OnlySelfOption) {\n    if (values instanceof Array) {\n      this.updateControlCount(values.length, {emitEvent: false});\n    } else {\n      // TODO error handling\n    }\n    super.patchValue(values, options);\n  }\n\n  public addRow(index?: number, options?: EmitEventOption) {\n    this.addControlsToArray(1, {\n      index: index,\n      emitEvent: options?.emitEvent\n    });\n  }\n\n  public copyRow(index: number, options?: EmitEventOption & OnlySelfOption & { insertAfter?: number }) {\n    const listValue = this.getRawValue();\n    listValue.splice(index, 0, listValue[index]);\n    const newIndex = options?.insertAfter != null ? options?.insertAfter + 1 : index + 1;\n    this.addControlsToArray(1, {\n      index: newIndex,\n      emitEvent: false\n    });\n    this.controls[newIndex].patchValue(listValue[index], options);\n  }\n\n  private updateControlCount(dataLength: number, options?: EmitEventOption) {\n    if (dataLength > this.controls.length) {\n      this.addControlsToArray(dataLength - this.controls.length, options);\n    }\n    if (dataLength < this.controls.length) {\n      this.removeControlsFromArray(this.controls.length - dataLength, options);\n    }\n  }\n\n  private addControlsToArray(amount: number, options?: EmitEventOption & IndexOption) {\n    for (let i = 0; i < amount; i++) {\n      this.controlFactory.createFromQuestion(this, this.question, options);\n    }\n  }\n\n  private removeControlsFromArray(amount: number, options?: EmitEventOption & IndexOption) {\n    const lastControlIndex = this.controls.length - 1;\n    const startIndex = options?.index !== undefined ? options.index : lastControlIndex;\n    for (let i = startIndex; i > startIndex - amount; i--) {\n      this.removeAt(i, {emitEvent: options?.emitEvent});\n    }\n  }\n}\n","import { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { FastFormGroup } from '../control/fast-form-group';\nimport { EmitEventOption, IndexOption } from '../model';\nimport { FromActionControlInternal } from './action/action-control-internal';\nimport { InternalControlType } from './models';\n\nexport class ControlWrapper {\n\n    private control: AbstractControl | null;\n    private action: FromActionControlInternal | null;\n  \n    constructor(private id: string, control: AbstractControl, controlType: InternalControlType) {\n      if (controlType === 'action') {\n        this.control = null;\n        this.action = control as FromActionControlInternal;\n      } else if (control instanceof AbstractControl) {\n        this.control = control;\n        this.action = null;\n      } else {\n        throw new Error('Unsupported type.');\n      }\n    }\n  \n    static forFormControl<T extends AbstractControl>(id: string, formControl: T): ControlWrapper {\n      return new ControlWrapper(id, formControl, 'control');\n    }\n  \n    static forFormArray<T extends FormArray>(id: string, formArray: T): ControlWrapper {\n      return new ControlWrapper(id, formArray, 'array');\n    }\n  \n    static forAction(id: string, actionControl: AbstractControl): ControlWrapper {\n      return new ControlWrapper(id, actionControl, 'action');\n    }\n  \n    public addToParent(parent: FormGroup | FormArray, options?: IndexOption & EmitEventOption) {\n      if (parent instanceof FormGroup) {\n        this.addToGroup(parent, {\n          emitEvent: options?.emitEvent\n        });\n      } else {\n        this.addToArray(parent, options?.index, {\n          emitEvent: options?.emitEvent\n        });\n      }\n    }\n\n    private addToGroup(parent: FormGroup, options?: EmitEventOption) {\n      if (this.control !== null) {\n        parent.addControl(this.id, this.control, options);\n      } else if (this.action !== null) {\n        if (parent instanceof FastFormGroup) {\n            parent.addControl(this.id, this.action, options);\n        } else {\n            console.warn('Cannot add action to standard reactive form.');\n        }\n      } else {\n        throw new Error(`Cannot add control or action to parent.`);\n      }\n    }\n\n    private addToArray(parent: FormArray, index?: number, options?: EmitEventOption) {\n      if (this.control !== null) {\n        if (index !== undefined) {\n          parent.insert(index, this.control, options);\n        } else {\n          parent.push(this.control, options);\n        }\n      } else if (this.action !== null) {\n        console.warn('Actions are not supported in form arrays.');\n      } else {\n        throw new Error(`Cannot add control or action to parent.`);\n      }\n    }\n  }\n","import { Injectable } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { EmitEventOption, IndexOption, Question } from '../model';\nimport { ValidatorFactoryService } from '../validation/validator-factory.service';\nimport { FastFormArray } from '../control/fast-form-array';\nimport { FastFormControl } from '../control/fast-form-control';\nimport { FastFormGroup } from '../control/fast-form-group';\nimport { ControlRegistry } from '../internal/control/control-registry.service';\nimport { FromActionControlInternal } from '../internal/action/action-control-internal';\nimport { ControlWrapper } from '../internal/control-wrapper';\nimport { flattenArray } from '../util/list.util';\nimport { FastFormBuilder } from './fast-form-builder';\n\n@Injectable({\n  providedIn: 'any',\n})\nexport class ControlFactoryService {\n\n  constructor(private validatorFactory: ValidatorFactoryService,\n              private controlRegistry: ControlRegistry,\n              private fb: FastFormBuilder) {\n  }\n\n  public createFromQuestions(parent: FormGroup, questions: Array<Question>, options?: EmitEventOption) {\n    for (const question of questions || []) {\n      this.createFromQuestion(parent, question, options);\n    }\n  }\n\n  public createFromQuestion(parent: FormGroup | FormArray, question: Question, options?: IndexOption & EmitEventOption) {\n    let createdControls: ControlWrapper[];\n    if (this.controlRegistry.hasItem(question.type)) {\n      const def = this.controlRegistry.getDefinition(question.type);\n      if (def.inline) {\n        createdControls = flattenArray(\n          (question.children ?? []).map((childQuestion) => {\n            return this.createControl(childQuestion);\n          }),\n        );\n      } else {\n        createdControls = this.createControl(question);\n      }\n    } else {\n      createdControls = this.createControl(question);\n    }\n    createdControls.map((control) => control.addToParent(parent, options));\n  }\n\n  public createFormControl(question: Question): AbstractControl {\n    return this.createControlFromDecoratedComponents(question) ??\n      this.createControlDefault(question);\n  }\n\n  private createControl(question: Question): ControlWrapper[] {\n    const wrappers: ControlWrapper[] = [];\n    if (this.controlRegistry.hasItem(question.type)) {\n      const definition = this.controlRegistry.getDefinition(question.type);\n      if (definition.internalType === 'control') {\n        wrappers.push(ControlWrapper.forFormControl(question.id, this.createAndInitFormControl(question)));\n      } else if (definition.internalType === 'action') {\n        wrappers.push(ControlWrapper.forAction(question.id, this.createAndInitFormAction(question)));\n      } else if (definition.internalType === 'array') {\n        // TODO length check and assertions, create group automatically if more than one\n        wrappers.push(ControlWrapper.forFormArray(question.id, new FastFormArray((question.children ?? [])[0], this)));\n      } else if (definition.internalType === 'group') {\n        wrappers.push(ControlWrapper.forFormControl(question.id, this.createAndInitFormGroup(question)));\n      }\n    }\n    if (wrappers.length === 0) {\n      console.error(`Form control with type [${question.type}] not found.`);\n    }\n    return wrappers;\n  }\n\n  private createAndInitFormControl(question: Question): AbstractControl {\n    const control = this.createFormControl(question);\n    const validator = this.validatorFactory.createValidators(question.validation);\n    const asyncValidator = this.validatorFactory.createAsyncValidators(question.validation);\n    control.setValidators(validator);\n    control.setAsyncValidators(asyncValidator);\n    if (question.disabled) {\n      control.disable({ emitEvent: false });\n    }\n    return control;\n  }\n\n  private createControlFromDecoratedComponents(question: Question): AbstractControl | undefined {\n    if (this.controlRegistry.hasControlFactory(question.type)) {\n      const def = this.controlRegistry.getDefinition(question.type);\n      if (def.controlFactory !== undefined) {\n        return def.controlFactory(question, {\n          fb: this.fb,\n          validators: this.validatorFactory.createValidators(question.validation),\n          asyncValidators: this.validatorFactory.createAsyncValidators(question.validation),\n        });\n      }\n    }\n    return undefined;\n  }\n\n  private createControlDefault(question: Question): AbstractControl {\n    return new FastFormControl(question, question.defaultValue);\n  }\n\n  private createAndInitFormAction(question: Question): AbstractControl {\n    const definition = this.controlRegistry.getDefinition(question.type);\n    if (definition) {\n      if (definition.controlFactory) {\n        return definition.controlFactory(question, {\n          fb: this.fb,\n          validators: this.validatorFactory.createValidators(question.validation),\n          asyncValidators: this.validatorFactory.createAsyncValidators(question.validation),\n        });\n      }\n    }\n    return new FromActionControlInternal();\n  }\n\n  private createAndInitFormGroup(question: Question): AbstractControl {\n    const subFormGroup = new FastFormGroup(question.children ?? [], this);\n    if (question.disabled) {\n      subFormGroup.disable({ emitEvent: false });\n    }\n    return subFormGroup;\n  }\n}\n","import {\n  Component,\n  EventEmitter,\n  Injector,\n  Input,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { FastFormGroup } from '../../control/fast-form-group';\nimport { FastFormSubmitEvent, Question } from '../../model';\nimport { ControlFactoryService } from '../../service/control-factory.service';\nimport { ValidatorFactoryService } from '../../validation/validator-factory.service';\nimport { FormRenderService } from '../../internal/form-render.service';\nimport { HttpClient } from '@angular/common/http';\nimport { ActionService } from '../../actions/action.service';\nimport { ActionEvent } from '../../actions/models';\nimport { Subscription } from 'rxjs';\nimport { ArrayIndexDirective } from '../../actions/array-index.directive';\nimport { Control } from '../../control/control.decorator';\nimport { ControlRegistry } from '../../internal/control/control-registry.service';\n\n@Control({\n  type: 'group',\n  controlType: 'group'\n})\n@Component({\n  selector: 'aff-form-group',\n  templateUrl: './fast-form-group.component.html'\n})\nexport class FastFormGroupComponent implements OnChanges, OnInit, OnDestroy {\n\n  @Input() public endpoint!: string;\n  @ViewChild('componentViewContainer', {\n    read: ViewContainerRef,\n    static: true\n  }) componentViewContainerRef!: ViewContainerRef;\n  @Output() public action = new EventEmitter<ActionEvent>();\n  @Output() public submitEvent = new EventEmitter<FastFormSubmitEvent>();\n\n  private _actionService: ActionService;\n  private _actionsSub!: Subscription;\n\n  public _formGroup: FastFormGroup;\n\n  @Input()\n  public set formGroup(formGroup: FastFormGroup) {\n    this._formGroup = formGroup;\n  }\n\n  constructor(private controlFactory: ControlFactoryService,\n              private validatorFactory: ValidatorFactoryService,\n              private formRenderService: FormRenderService,\n              private injector: Injector,\n              private controlRegistry: ControlRegistry,\n              @Optional() actionService: ActionService,\n              @Optional() private indexDirective?: ArrayIndexDirective,\n              @Optional() private http?: HttpClient) {\n    this._formGroup = new FastFormGroup([], this.controlFactory);\n    if (actionService) {\n      this._actionService = actionService;\n    } else {\n      this._actionService = new ActionService();\n    }\n  }\n\n  ngOnInit(): void {\n    this._formGroup.questionChanges.subscribe(() => {\n      this.render();\n    });\n    this._actionsSub = this._actionService.actions.subscribe({\n      next: event => {\n        this.action.emit(event);\n      }\n    });\n  }\n\n  ngOnChanges(): void {\n    this.render();\n  }\n\n  ngOnDestroy(): void {\n    this._actionsSub.unsubscribe();\n  }\n\n  processOnSubmit(event: unknown) {\n    this._formGroup.markAllAsTouched();\n    if (this._formGroup.valid) {\n      this.submitEvent.next({\n        event: event,\n        data: this._formGroup.value\n      });\n    }\n  }\n\n  private render() {\n    this.componentViewContainerRef.clear();\n    this._formGroup.questions.filter(question => !question.hidden)\n        .forEach(question => {\n          this.createComponent(question);\n        });\n  }\n\n  private createComponent(question: Question) {\n    if (this.controlRegistry.hasItem(question.type)) {\n      const controlDefinition = this.controlRegistry.getDefinition(question.type);\n      this.formRenderService.render(\n          this.componentViewContainerRef,\n          this._formGroup,\n          question,\n          controlDefinition,\n          this.injector,\n          this._actionService,\n          this.indexDirective\n      );\n    }\n  }\n}\n","<form (ngSubmit)=\"processOnSubmit($event)\" [formGroup]=\"_formGroup\" class=\"aff-form-group\">\n  <ng-container #componentViewContainer></ng-container>\n\n  <ng-container *ngFor=\"let question of _formGroup.questions\">\n    <ng-container *ngIf=\"question.type === 'group'\">\n      <aff-form-group [formGroup]=\"$any(_formGroup.get(question.id))\"></aff-form-group>\n    </ng-container>\n  </ng-container>\n\n  <button style=\"display: none\" type=\"submit\">hidden submit</button>\n</form>\n","import { Component, Injector, Input, OnInit, Optional, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FormRenderService } from '../../internal/form-render.service';\nimport { FastFormControl } from '../../control/fast-form-control';\nimport { Question } from '../../model';\nimport { ActionService } from '../../actions/action.service';\nimport { ArrayIndexDirective } from '../../actions/array-index.directive';\nimport { ControlRegistry } from '../../internal/control/control-registry.service';\n\n@Component({\n  selector: 'aff-form-control',\n  templateUrl: './fast-form-control.component.html'\n})\nexport class FastFormControlComponent implements OnInit {\n\n  @ViewChild('componentViewContainer', {\n    read: ViewContainerRef,\n    static: true\n  }) componentViewContainerRef!: ViewContainerRef;\n\n  @Input() control!: FastFormControl;\n\n  constructor(private renderService: FormRenderService,\n              private controlRegistry: ControlRegistry,\n              private injector: Injector,\n              @Optional() private actionService?: ActionService,\n              @Optional() private arrayIndex?: ArrayIndexDirective) {\n  }\n\n  ngOnInit(): void {\n    this.createComponent(this.control.question);\n  }\n\n  private createComponent(question: Question) {\n    if (this.controlRegistry.hasItem(question.type)) {\n      this.renderService.render(this.componentViewContainerRef,\n          this.control,\n          question,\n          this.controlRegistry.getDefinition(question.type),\n          this.injector,\n          this.actionService);\n    }\n  }\n}\n","<ng-container #componentViewContainer></ng-container>\n","import {\n  Component,\n  EventEmitter,\n  Inject,\n  Injector,\n  OnChanges,\n  OnInit,\n  Optional,\n  Output,\n  Renderer2,\n  ViewChild,\n  ViewContainerRef\n} from '@angular/core';\nimport { Question } from '../../model';\nimport { FormRenderService } from '../../internal/form-render.service';\nimport { CONTROL_PROPERTIES, FORM_CONTROL } from '../util/inject-token';\nimport { FastFormsRowProperties } from './models';\nimport { ActionService } from '../../actions/action.service';\nimport { QuestionDefinition } from '../question-definition';\nimport { AbstractControl } from '@angular/forms';\nimport { ControlRegistry } from '../../internal/control/control-registry.service';\nimport { Control } from '../../control/control.decorator';\n\n@Control({\n  type: 'row',\n  inline: true\n})\n@Component({\n  selector: 'aff-form-row',\n  templateUrl: './fast-form-row.component.html'\n})\nexport class FastFormRowComponent implements OnInit, OnChanges {\n\n  @ViewChild('componentViewContainer', {\n    read: ViewContainerRef,\n    static: true\n  }) componentViewContainerRef!: ViewContainerRef;\n\n  @Output() codeOnSubmit = new EventEmitter();\n\n  constructor(private uiRegistry: FormRenderService,\n              private renderer: Renderer2,\n              private injector: Injector,\n              private definition: QuestionDefinition,\n              private controlRegistry: ControlRegistry,\n              @Inject(FORM_CONTROL) private control: AbstractControl,\n              @Inject(CONTROL_PROPERTIES) private properties: FastFormsRowProperties,\n              @Optional() private actionService: ActionService) {\n  }\n\n  private get children(): Question[] {\n    return this.definition.children ?? [];\n  }\n\n  ngOnInit(): void {\n    this.render();\n  }\n\n  ngOnChanges(): void {\n    this.render();\n  }\n\n  private render() {\n    this.componentViewContainerRef.clear();\n    this.children.filter(question => !question.hidden)\n        .forEach(question => {\n          this.createComponent(question);\n        });\n  }\n\n  private createComponent(question: Question) {\n    if (this.controlRegistry.hasItem(question.type)) {\n      const formDefinition = this.controlRegistry.getDefinition(question.type);\n      const componentRef = this.uiRegistry.render(\n          this.componentViewContainerRef,\n          this.control,\n          question,\n          formDefinition,\n          this.injector,\n          this.actionService\n      );\n      const nativeElement = componentRef.location.nativeElement as HTMLElement;\n      if (this.properties.size) {\n        nativeElement.style.flexBasis = `${this.properties.size[question.id]?.percent}%`;\n      }\n      this.renderer.addClass(componentRef.location.nativeElement, `row_${question.id}`);\n    }\n  }\n}\n","<div class=\"aff-form-row\">\n  <ng-container #componentViewContainer></ng-container>\n</div>\n","import { META_COMPONENT_OPTIONS_KEY } from '../internal/symbols';\nimport { InternalControlComponent } from '../internal/control/models';\n\nexport function ControlFactory() {\n\n  return (target: any, propertyKey: string, descriptor: PropertyDescriptor): void => {\n    const controlComponent = target as InternalControlComponent;\n    controlComponent[META_COMPONENT_OPTIONS_KEY] = {\n      ...controlComponent[META_COMPONENT_OPTIONS_KEY],\n      controlFactory: descriptor.value\n    };\n  };\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { Question } from '../model';\nimport { FastFormGroup } from '../control/fast-form-group';\nimport { ControlFactoryService } from './control-factory.service';\nimport { HttpClient } from '@angular/common/http';\nimport { AbstractControlOptions } from '@angular/forms';\nimport { FastFormControl } from '../control/fast-form-control';\n\n@Injectable({\n  providedIn: 'any',\n})\nexport class FastFormsService {\n\n  constructor(private readonly controlFactory: ControlFactoryService,\n              @Optional() private readonly http?: HttpClient) {\n  }\n\n  public createSingleControl(question: Question): FastFormControl {\n    return new FastFormControl(question, question.defaultValue);\n  }\n\n  public createDynamicForm(questions: Array<Question>, options?: AbstractControlOptions): FastFormGroup {\n    return new FastFormGroup(questions, this.controlFactory, options);\n  }\n\n  public createHttpForm(endpoint: string): FastFormGroup {\n    if (!this.http) {\n      throw new Error(`No HttpClient found. Register [HttpClientModule] in your app.`);\n    }\n    const formGroup = new FastFormGroup([], this.controlFactory);\n    this.http.get<Array<Question>>(endpoint)\n      .subscribe(questions => formGroup.setQuestions(questions));\n    return formGroup;\n  }\n}\n","import { ControlId } from '../../control/models';\n\nexport class ControlIdMock implements ControlId {\n\n  constructor(private readonly id: string) {\n  }\n\n  getId(): string {\n    return this.id;\n  }\n}\n","import { META_VALIDATOR_OPTIONS_KEY } from '../internal/symbols';\nimport { InternalValidator } from '../internal/validation/models';\nimport { ValidatorType } from './symbols';\n\nexport interface ValidatorOptions {\n  id: string;\n  type: ValidatorType;\n}\n\nexport function Validator(options: ValidatorOptions) {\n\n  return (target: unknown): void => {\n    const validatorClass: InternalValidator = target as InternalValidator;\n    validatorClass[META_VALIDATOR_OPTIONS_KEY] = {\n      id: options.id,\n      type: options.type\n    };\n  }\n}\n","import { Component } from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\nimport { Control } from '../../control/control.decorator';\nimport { BaseFormArrayComponent } from '../base/base-array.component';\n\n@Control({\n  type: 'array',\n  controlType: 'array'\n})\n@Component({\n  selector: 'aff-form-array',\n  templateUrl: './fast-form-array.component.html'\n})\nexport class FastFormArrayComponent extends BaseFormArrayComponent {\n\n  public isControl(data: unknown): boolean {\n    return data instanceof FormControl;\n  }\n\n  public isGroup(data: unknown): boolean {\n    return data instanceof FormGroup;\n  }\n}\n","<form class=\"aff-form-array\">\n  <ng-container *ngFor=\"let subForm of formArray.controls; let i = index\">\n    <ng-container *ngIf=\"isControl(subForm)\">\n      <aff-form-control [affArrayIndex]=\"i\" [control]=\"$any(subForm)\"></aff-form-control>\n    </ng-container>\n    <ng-container *ngIf=\"isGroup(subForm)\">\n      <aff-form-group [affArrayIndex]=\"i\" [formGroup]=\"$any(subForm)\"></aff-form-group>\n    </ng-container>\n  </ng-container>\n</form>\n","import { CommonModule } from '@angular/common';\nimport { ModuleWithProviders, NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { ArrayIndexDirective } from './actions/array-index.directive';\nimport { FastFormArrayComponent } from './components/fast-form-array/fast-form-array.component';\nimport { FastFormControlComponent } from './components/fast-form-control/fast-form-control.component';\nimport { FastFormGroupComponent } from './components/fast-form-group/fast-form-group.component';\nimport { FastFormRowComponent } from './components/fast-form-row/fast-form-row.component';\nimport { VALIDATORS } from './internal/token';\nimport { AFF_CONTROL_COMPONENTS } from './model';\nimport { FormRendererDirective } from './directive/form-renderer.directive';\nimport { FastFormGroupV2Component } from './components/fast-form-group-v2/fast-form-group-v2.component';\nimport { FastFormArrayV2Component } from './components/fast-form-array-v2/fast-form-array-v2.component';\n\n@NgModule({\n  imports: [\n    CommonModule,\n    ReactiveFormsModule,\n  ],\n  declarations: [\n    FastFormGroupComponent,\n    FastFormGroupV2Component,\n    FastFormArrayComponent,\n    FastFormControlComponent,\n    FastFormRowComponent,\n    ArrayIndexDirective,\n    FormRendererDirective,\n    FastFormArrayV2Component,\n  ],\n  exports: [\n    FastFormControlComponent,\n    FastFormGroupComponent,\n    FastFormGroupV2Component,\n    FastFormArrayV2Component,\n    FastFormRowComponent,\n    ArrayIndexDirective,\n    FormRendererDirective,\n  ],\n  providers: [\n    {\n      provide: AFF_CONTROL_COMPONENTS,\n      useValue: [\n        FastFormGroupComponent,\n        FastFormGroupV2Component,\n        FastFormArrayComponent,\n        FastFormArrayV2Component,\n        FastFormRowComponent],\n      multi: true,\n    },\n  ],\n})\nexport class FastFormsModule {\n  public static forRoot(options?: {\n    validators?: Array<any>;\n    controls?: Array<any>;\n  }): ModuleWithProviders<FastFormsModule> {\n    return {\n      ngModule: FastFormsModule,\n      providers: [\n        ...(options?.validators ?? []),\n        {\n          provide: VALIDATORS,\n          multi: true,\n          useValue: options?.validators ?? [],\n        },\n        {\n          provide: AFF_CONTROL_COMPONENTS,\n          multi: true,\n          useValue: options?.controls ?? [],\n        },\n      ],\n    };\n  }\n\n  public static forChild(options?: {\n    validators?: Array<any>;\n    controls?: Array<any>;\n  }): ModuleWithProviders<FastFormsModule> {\n    return {\n      ngModule: FastFormsModule,\n      providers: [\n        ...(options?.validators ?? []),\n        {\n          provide: VALIDATORS,\n          multi: true,\n          useValue: options?.validators ?? [],\n        },\n        {\n          provide: AFF_CONTROL_COMPONENTS,\n          multi: true,\n          useValue: options?.controls ?? [],\n        },\n      ],\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.ValidatorFactoryService","i2.ControlRegistry","i1.ControlFactoryV2","i1.ControlRegistry","i1.FormRenderService","i1.FastFormBuilder","i2","i3.FormRendererDirective","i1.QuestionDefinition","i3.FastFormBuilder","i1.ControlFactoryService","i2.ValidatorFactoryService","i3.FormRenderService","i4.ControlRegistry","i5.ActionService","i6.ArrayIndexDirective","i3.ActionService","i4.ArrayIndexDirective","i2.QuestionDefinition","i3.ControlRegistry","i4.ActionService","i3.FastFormGroupComponent","i4.FastFormControlComponent","i5.ArrayIndexDirective"],"mappings":"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"}