{"version":3,"file":"rxap-forms.mjs","sources":["../../../../../packages/angular/forms/src/lib/validators/is-array.ts","../../../../../packages/angular/forms/src/lib/validators/is-boolean.ts","../../../../../packages/angular/forms/src/lib/validators/is-string.ts","../../../../../packages/angular/forms/src/lib/validators/is-number.ts","../../../../../packages/angular/forms/src/lib/validators/is-complex.ts","../../../../../packages/angular/forms/src/lib/validators/is-date.ts","../../../../../packages/angular/forms/src/lib/validators/is-email.ts","../../../../../packages/angular/forms/src/lib/validators/is-enum.ts","../../../../../packages/angular/forms/src/lib/validators/is-int.ts","../../../../../packages/angular/forms/src/lib/validators/is-ip.ts","../../../../../packages/angular/forms/src/lib/validators/is-object.ts","../../../../../packages/angular/forms/src/lib/validators/is-phone-number.ts","../../../../../packages/angular/forms/src/lib/validators/is-port.ts","../../../../../packages/angular/forms/src/lib/validators/is-url.ts","../../../../../packages/angular/forms/src/lib/validators/is-uuid.ts","../../../../../packages/angular/forms/src/lib/validators/index.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-error.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-mark-dirty.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-mark-pristine.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-mark-touched.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-mark-untouched.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-control-name.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-group-name.directive.ts","../../../../../packages/angular/forms/src/lib/tokens.ts","../../../../../packages/angular/forms/src/lib/directives/tokens.ts","../../../../../packages/angular/forms/src/lib/decorators/metadata-keys.ts","../../../../../packages/angular/forms/src/lib/control-actions.ts","../../../../../packages/angular/forms/src/lib/form-array.ts","../../../../../packages/angular/forms/src/lib/form-group.ts","../../../../../packages/angular/forms/src/lib/form-control.ts","../../../../../packages/angular/forms/src/lib/form-builder.ts","../../../../../packages/angular/forms/src/lib/directives/form.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-loaded.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-loading-error.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-loading.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-reset.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-submit-failed.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-submit-invalid.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-submit-successful.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-submit.directive.ts","../../../../../packages/angular/forms/src/lib/directives/form-submitting.directive.ts","../../../../../packages/angular/forms/src/lib/directives/parent-control-container.directive.ts","../../../../../packages/angular/forms/src/lib/directives/forms.module.ts","../../../../../packages/angular/forms/src/lib/directives/models.ts","../../../../../packages/angular/forms/src/lib/decorators/control-async-validator.ts","../../../../../packages/angular/forms/src/lib/decorators/control-change.ts","../../../../../packages/angular/forms/src/lib/decorators/control-set-value.ts","../../../../../packages/angular/forms/src/lib/decorators/control-validator.ts","../../../../../packages/angular/forms/src/lib/decorators/form.ts","../../../../../packages/angular/forms/src/lib/decorators/use-form-array.ts","../../../../../packages/angular/forms/src/lib/decorators/use-form-control.ts","../../../../../packages/angular/forms/src/lib/decorators/use-form-group.ts","../../../../../packages/angular/forms/src/lib/control-value-accessor.ts","../../../../../packages/angular/forms/src/index.ts","../../../../../packages/angular/forms/src/rxap-forms.ts"],"sourcesContent":["import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsArray({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!Array.isArray(control.value)) {\n      return {\n        isArray: {\n          expected: 'A array value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsBoolean({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(control.value instanceof Boolean || typeof control.value === 'boolean')) {\n      return {\n        isBoolean: {\n          expected: 'A boolean value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsString({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(control.value instanceof String || typeof control.value === 'string')) {\n      return {\n        isString: {\n          expected: 'A string value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\n/**\n * Options to be passed to IsNumber decorator.\n */\nexport interface IsNumberOptions {\n  allowNaN?: boolean;\n  allowInfinity?: boolean;\n  maxDecimalPlaces?: number;\n  strict?: boolean;\n}\n\n/**\n * Checks if a given value is a number.\n */\nexport function isNumber(value: unknown, options: IsNumberOptions = {}): value is number {\n  if (typeof value !== 'number') {\n    return false;\n  }\n\n  if (value === Infinity || value === -Infinity) {\n    return options.allowInfinity ?? false;\n  }\n\n  if (Number.isNaN(value)) {\n    return options.allowNaN ?? false;\n  }\n\n  if (options.maxDecimalPlaces !== undefined) {\n    let decimalPlaces = 0;\n    if (value % 1 !== 0) {\n      decimalPlaces = value.toString().split('.')[1].length;\n    }\n    if (decimalPlaces > options.maxDecimalPlaces) {\n      return false;\n    }\n  }\n\n  return Number.isFinite(value);\n}\n\n/**\n * @deprecated use RxapValidators.isNumber() instead\n * @param control\n * @constructor\n */\nexport function IsNumber(control: AbstractControl): ValidationErrors | null {\n  if (control.value === null) {\n    return null;\n  }\n  if (isNaN(Number(control.value))) {\n    return {\n      isNumber: {\n        expected: 'A number or a string representing a number',\n        actual: control.value,\n      },\n    };\n  }\n  return null;\n}\n\nexport function _IsNumber({\n                            message,\n                            options,\n                          }: { message?: string, options?: IsNumberOptions } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!isNumber(\n      !options?.strict && typeof control.value === 'string' ? Number(control.value) : control.value,\n      options,\n    )) {\n      return {\n        isNumber: {\n          expected: 'A number value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport { IsString } from './is-string';\nimport { isNumber } from './is-number';\n\nexport interface ComplexityOptions {\n  uppercase?: number;\n  special?: number;\n  digit?: number;\n  lowercase?: number;\n  upperLower?: number;\n  alphaNumeric?: number;\n  min?: number,\n  max?: number,\n  range?: number,\n  exact?: number,\n}\n\ninterface RegexOptions {\n  uppercase: string;\n  special: string;\n  digit: string;\n  lowercase: string;\n  upperLower: string;\n  alphaNumeric: string;\n}\n\nconst regexOptions: RegexOptions = {\n  uppercase: '.*[A-Z]',\n  special: '.*[^A-Za-z0-9]',\n  digit: '.*[0-9]',\n  lowercase: '.*[a-z]',\n  upperLower: '.*[a-zA-Z]',\n  alphaNumeric: '.*[a-zA-Z0-9]',\n};\n\ninterface LengthOptions {\n  min: string,\n  max: string,\n  range: string,\n  exact: string,\n  no_limit: string;\n}\n\nconst lengthOptions: LengthOptions = {\n  min: '.{n,}',\n  max: '.{0,n}',\n  range: '.{min,max}',\n  exact: '.{n}',\n  no_limit: '.*',\n};\n\ntype Discriminate<U, K extends PropertyKey> =\n  U extends any\n    ? K extends keyof U ? U : U & Record<K, unknown>\n    : never;\n\nfunction inOperator<K extends PropertyKey, T extends object>(k: K, o: T): o is Discriminate<T, K> {\n  return k in o;\n}\n\nfunction create(options: ComplexityOptions): string {\n  let regex = '^';\n  for (const [ key, value ] of Object.entries(regexOptions)) {\n    if (inOperator(key, options) && isNumber(options[key])) {\n      regex += '(?=' + value.repeat(options[key]) + ')';\n    }\n  }\n  if (isNumber(options.min) && isNumber(options.max)) {\n    regex += lengthOptions.range.replace('min', options.min.toFixed(0)).replace('max', options.max.toFixed(0));\n  } else if (isNumber(options.max)) {\n    regex += lengthOptions.max.replace('n', options.max.toFixed(0));\n  } else if (isNumber(options.min)) {\n    regex += lengthOptions.min.replace('n', options.min.toFixed(0));\n  } else if (isNumber(options.exact)) {\n    regex += lengthOptions.exact.replace('n', options.exact.toFixed(0));\n  } else {\n    regex += lengthOptions.no_limit;\n  }\n  regex += '$';\n  return regex;\n}\n\nfunction check(str: string, regexStringOrOptions: string | ComplexityOptions) {\n  let regexString: string;\n  if (typeof regexStringOrOptions === 'object') {\n    regexString = create(regexStringOrOptions);\n  } else {\n    regexString = regexStringOrOptions;\n  }\n  return new RegExp(regexString).test(str);\n}\n\nfunction checkError(str: string, options: ComplexityOptions) {\n  const returnObject: Record<string, boolean> = {};\n  for (const [ key, value ] of Object.entries(options)) {\n    returnObject[key] = check(str, { [key]: value });\n  }\n  return returnObject;\n}\n\nexport function IsComplex({\n                            message,\n                            options,\n                          }: { message?: string, options: ComplexityOptions }) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    const isNotString = IsString({ message })(control);\n    if (isNotString !== null) {\n      return isNotString;\n    }\n    const errors = checkError(control.value, options);\n    if (Object.keys(errors).length && Object.values(errors).some(item => !item)) {\n      return {\n        isComplex: {\n          expected: options,\n          actual: errors,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsDate({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(control.value instanceof Date && !isNaN(control.value.getTime()))) {\n      return {\n        isDate: {\n          expected: 'A date value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport {\n  isEmail,\n  IsEmailOptions,\n} from '@rxap/validator';\n\nexport function IsEmail({\n                          message,\n                          options,\n                        }: { message?: string, options?: IsEmailOptions } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(typeof control.value === 'string' && isEmail(control.value, options))) {\n      return {\n        isEmail: {\n          expected: 'A email value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsEnum({\n                         message,\n                         entity,\n                       }: { message?: string, entity: any }) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (Object.keys(entity).map(k => entity[k]).indexOf(control.value) === -1) {\n      return {\n        isEnum: {\n          expected: 'A enum value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport {\n  isNumber,\n  IsNumberOptions,\n} from './is-number';\n\nexport function IsInt({\n                        message,\n                        options,\n                      }: { message?: string, options?: IsNumberOptions } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!isNumber(control.value, options) || Number.isInteger(control.value)) {\n      return {\n        isInt: {\n          expected: 'A int value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport { isIP } from '@rxap/validator';\n\nexport function IsIP({\n                       message,\n                       version,\n                     }: { message?: string, version?: string | number } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(typeof control.value === 'string' && isIP(control.value, version))) {\n      return {\n        isIp: {\n          expected: `A valid IPv${ version ?? '4' } value`,\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\n\nexport function IsObject({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(control.value !==\n      undefined &&\n      (typeof control.value === 'object' || typeof control.value === 'function') &&\n      !Array.isArray(control.value))) {\n      return {\n        isObject: {\n          expected: 'A object value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport {\n  isMobilePhone,\n  IsMobilePhoneOptions,\n  MobilePhoneLocale,\n} from '@rxap/validator';\n\nexport function IsPhoneNumber({\n                                message,\n                                locale,\n                                options,\n                              }: {\n  message?: string,\n  locale?: 'any' | MobilePhoneLocale | MobilePhoneLocale[],\n  options?: IsMobilePhoneOptions,\n} = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!isMobilePhone(control.value, locale, options)) {\n      return {\n        isPhoneNumber: {\n          expected: 'A phone number value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport { isPort } from '@rxap/validator';\n\nexport function IsPort({ message }: { message?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(typeof control.value === 'string' && isPort(control.value))) {\n      return {\n        isPort: {\n          expected: `A valid port number between 1 and 65535`,\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport {\n  isURL,\n  IsURLOptions,\n} from '@rxap/validator';\n\nexport function IsUrl({\n                        message,\n                        options,\n                      }: { message?: string, options?: IsURLOptions } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(typeof control.value === 'string' && isURL(control.value, options))) {\n      return {\n        isURL: {\n          expected: 'A url value',\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import {\n  AbstractControl,\n  ValidationErrors,\n} from '@angular/forms';\nimport { isUUID } from '@rxap/validator';\n\nexport function IsUUID({\n                         message,\n                         version = 'all',\n                       }: { message?: string, version?: string } = {}) {\n  return (control: AbstractControl): ValidationErrors | null => {\n    if (control.value === null) {\n      return null;\n    }\n    if (!(typeof control.value === 'string' && isUUID(control.value, version))) {\n      return {\n        isUuid: {\n          expected: version === 'all' ? `A valid uuid` : `A valid uuid version ${ version }`,\n          actual: control.value,\n          message,\n        },\n      };\n    }\n    return null;\n  };\n}\n","import { IsArray } from './is-array';\nimport { IsBoolean } from './is-boolean';\nimport { IsComplex } from './is-complex';\nimport { IsDate } from './is-date';\nimport { IsEmail } from './is-email';\nimport { IsEnum } from './is-enum';\nimport { IsInt } from './is-int';\nimport { IsIP } from './is-ip';\nimport { _IsNumber as IsNumber } from './is-number';\nimport { IsObject } from './is-object';\nimport { IsPhoneNumber } from './is-phone-number';\nimport { IsPort } from './is-port';\nimport { IsString } from './is-string';\nimport { IsUrl } from './is-url';\nimport { IsUUID } from './is-uuid';\n\nexport const RxapValidators = {\n  IsNumber,\n  IsBoolean,\n  IsArray,\n  IsDate,\n  IsEnum,\n  IsInt,\n  IsObject,\n  IsString,\n  IsComplex,\n  IsPhoneNumber,\n  IsEmail,\n  IsUrl,\n  IsIP,\n  IsPort,\n  IsUUID,\n};\n","import {\n  Directive,\n  Host,\n  Input,\n  OnDestroy,\n  OnInit,\n  SkipSelf,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport {\n  filter,\n  startWith,\n  tap,\n} from 'rxjs/operators';\nimport { ValidationErrors } from '../types';\n\n/**\n * @deprecated removed use the rxapControlError or rxapControlErrors directive\n */\n@Directive({\n  selector: '[rxapFormControlError]',\n  standalone: true,\n})\nexport class FormControlErrorDirective implements OnInit, OnDestroy {\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input({\n    required: true,\n    alias: 'rxapFormControlErrorFrom',\n  })\n  public name!: string;\n\n  // eslint-disable-next-line @angular-eslint/no-input-rename\n  @Input({\n    required: true,\n    alias: 'rxapFormControlErrorIf',\n  })\n  public errorKey!: string;\n\n  private subscription?: Subscription;\n\n  constructor(\n    private readonly template: TemplateRef<{ $implicit: ValidationErrors }>,\n    @Host() @SkipSelf() private readonly parent: ControlContainer,\n    private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngOnInit() {\n    const control = this.parent.control?.get(this.name);\n\n    if (!control) {\n      throw new Error('Could not extract form control instance');\n    }\n\n    this.subscription = control.statusChanges.pipe(\n      startWith(control.status),\n      filter(status => status === 'INVALID'),\n      tap(() => {\n        this.viewContainerRef.clear();\n        if (control.hasError(this.errorKey)) {\n          this.viewContainerRef.createEmbeddedView(this.template, { $implicit: control.getError(this.errorKey) });\n        }\n      }),\n    ).subscribe();\n\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  Directive,\n  HostListener,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { hasIndexSignature } from '@rxap/utilities';\n\n@Directive({\n  selector: '[rxapFormControlMarkDirty]',\n  standalone: true,\n})\nexport class FormControlMarkDirtyDirective {\n\n  constructor(private readonly parent: ControlContainer) {\n  }\n\n  @HostListener('click')\n  public onClick() {\n    const control = this.parent.control;\n\n    if (control && hasIndexSignature(control) && typeof control['markAllAsDirty'] === 'function') {\n      control['markAllAsDirty']();\n    } else {\n      control?.markAsDirty();\n    }\n\n  }\n\n}\n","import {\n  Directive,\n  HostListener,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { hasIndexSignature } from '@rxap/utilities';\n\n@Directive({\n  selector: '[rxapFormControlMarkPristine]',\n  standalone: true,\n})\nexport class FormControlMarkPristineDirective {\n\n  constructor(private readonly parent: ControlContainer) {\n  }\n\n  @HostListener('click')\n  public onClick() {\n    const control = this.parent.control;\n\n    if (control && hasIndexSignature(control) && typeof control['markAllAsPristine'] === 'function') {\n      control['markAllAsPristine']();\n    } else {\n      control?.markAsPristine();\n    }\n  }\n\n}\n","import {\n  Directive,\n  HostListener,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\n\n@Directive({\n  selector: '[rxapFormControlMarkTouched]',\n  standalone: true,\n})\nexport class FormControlMarkTouchedDirective {\n\n  constructor(private readonly parent: ControlContainer) {\n  }\n\n  @HostListener('click')\n  public onClick() {\n    this.parent.control?.markAllAsTouched();\n  }\n\n}\n","import {\n  Directive,\n  HostListener,\n} from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\nimport { hasIndexSignature } from '@rxap/utilities';\n\n@Directive({\n  selector: '[rxapFormControlMarkUntouched]',\n  standalone: true,\n})\nexport class FormControlMarkUntouchedDirective {\n\n  constructor(private readonly parent: ControlContainer) {\n  }\n\n  @HostListener('click')\n  public onClick() {\n    const control = this.parent.control;\n\n    if (control && hasIndexSignature(control) && typeof control['markAllAsUntouched'] === 'function') {\n      control['markAllAsUntouched']();\n    } else {\n      control?.markAsUntouched();\n    }\n  }\n\n}\n","import {\n  Directive,\n  forwardRef,\n  Inject,\n  Input,\n  Optional,\n  Self,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  AsyncValidator,\n  AsyncValidatorFn,\n  ControlContainer,\n  ControlValueAccessor,\n  FormControlName,\n  NG_ASYNC_VALIDATORS,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  NgControl,\n  Validator,\n  ValidatorFn,\n} from '@angular/forms';\nimport { RxapFormControl } from '../form-control';\n\n/**\n * A full exertion of FormControlName from @angular/forms. The only change is the\n * ability to access the control container outside of the current component\n *\n * @deprecated use the ParentControlContainerDirective\n */\n@Directive({\n  selector: '[rxapFormControlName]',\n  providers: [\n    {\n      provide: NgControl,\n      useExisting: forwardRef(() => FormControlNameDirective),\n    },\n  ],\n  exportAs: 'rxapFormControl',\n  standalone: true,\n})\nexport class FormControlNameDirective extends FormControlName {\n\n  override readonly control!: RxapFormControl;\n\n  @Input('rxapFormControlName')\n  public override name!: string | number | null;\n\n  constructor(\n    @Optional() @SkipSelf() parent: ControlContainer,\n    @Optional() @Self() @Inject(NG_VALIDATORS) validators: Array<Validator | ValidatorFn>,\n    @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:\n      Array<AsyncValidator | AsyncValidatorFn>,\n    @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[],\n  ) {\n    super(parent, validators, asyncValidators, valueAccessors, null);\n  }\n\n}\n","import {\n  Directive,\n  forwardRef,\n  Inject,\n  Input,\n  Optional,\n  Self,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  ControlContainer,\n  FormGroupName,\n  NG_ASYNC_VALIDATORS,\n  NG_VALIDATORS,\n} from '@angular/forms';\nimport { RxapFormGroup } from '../form-group';\n\n/**\n * A full exertion of FormGroupName from @angular/forms. The only change is the\n * ability to access the control container outside of the current component\n *\n * @deprecated use the ParentControlContainerDirective\n */\n@Directive({\n  selector: '[rxapFormGroupName]',\n  providers: [\n    {\n      provide: ControlContainer,\n      useExisting: forwardRef(() => FormGroupNameDirective),\n    },\n  ],\n  exportAs: 'rxapFormGroup',\n  standalone: true,\n})\nexport class FormGroupNameDirective extends FormGroupName {\n\n  @Input('rxapFormGroupName')\n  public override name!: string | number | null;\n\n  public override get control(): RxapFormGroup {\n    // TODO : add type check\n    return this.formDirective!.getFormGroup(this) as any;\n  }\n\n  constructor(\n    @Optional() @SkipSelf() parent: ControlContainer,\n    @Optional() @Self() @Inject(NG_VALIDATORS) validators: any[],\n    @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators: any[],\n  ) {\n    super(parent, validators, asyncValidators);\n  }\n\n}\n","import { InjectionToken } from '@angular/core';\n\nexport const RXAP_FORM_INITIAL_STATE = new InjectionToken('rxap/forms/initial-state');\nexport const RXAP_FORM_CONTEXT = new InjectionToken('rxap/forms/context');\n","import { InjectionToken } from '@angular/core';\nimport { RxapFormBuilder } from '../form-builder';\nimport { FormDefinition } from '../model';\nimport {\n  FormLoadMethod,\n  FormSubmitMethod,\n} from './models';\n\nexport const RXAP_FORM_DEFINITION = new InjectionToken<FormDefinition>('rxap/forms/definition');\n\nexport const RXAP_FORM_DEFINITION_BUILDER = new InjectionToken<RxapFormBuilder>('rxap/forms/definition-builder');\n\nexport const RXAP_FORM_SUBMIT_METHOD = new InjectionToken<FormSubmitMethod<any>>('rxap/form/submit-method');\n\nexport const RXAP_FORM_SUBMIT_FAILED_METHOD = new InjectionToken<FormSubmitMethod<any>>('rxap/form/submit-failed-method');\n\nexport const RXAP_FORM_SUBMIT_SUCCESSFUL_METHOD = new InjectionToken<FormSubmitMethod<any>>(\n  'rxap/form/submit-successful-method');\n\nexport const RXAP_FORM_LOAD_METHOD = new InjectionToken<FormLoadMethod>('rxap/form/load-method');\n\nexport const RXAP_FORM_LOAD_FAILED_METHOD = new InjectionToken<FormLoadMethod>('rxap/form/load-failed-method');\n\nexport const RXAP_FORM_LOAD_SUCCESSFUL_METHOD = new InjectionToken<FormLoadMethod>('rxap/form/load-successful-method');\n","export enum MetadataKeys {\n  CONTROL_VALIDATORS = 'rxap/forms/control-validators',\n  CONTROL_ASYNC_VALIDATORS = 'rxap/forms/control-async-validators',\n  CONTROL_CHANGES = 'rxap/forms/control-changes',\n  CONTROL_SET_VALUE = 'rxap/forms/control-set-value',\n  FORM_ARRAY_GROUPS = 'rxap/forms/form-array-groups',\n  FORM_ARRAY_CONTROLS = 'rxap/forms/form-array-controls',\n  FORM_GROUPS = 'rxap/forms/form-groups',\n  FORM_CONTROLS = 'rxap/forms/form-controls'\n}\n","import {\n  defer,\n  EMPTY,\n  merge,\n  Observable,\n  of,\n  Subscription,\n} from 'rxjs';\nimport {\n  distinctUntilChanged,\n  map,\n} from 'rxjs/operators';\nimport {\n  AbstractControl,\n  ControlOptions,\n  ControlPath,\n  ControlState,\n  ValidatorFn,\n} from './types';\nimport {\n  coerceArray,\n  equals,\n} from '@rxap/utilities';\nimport { RxapFormArray } from './form-array';\nimport { RxapFormGroup } from './form-group';\nimport { RxapFormControl } from './form-control';\n\nfunction getControlValue<T>(control: AbstractControl<T>): T {\n  if ((control as any).getRawValue) {\n    return (control as any).getRawValue();\n  }\n  return control.value;\n}\n\nexport function controlValueChanges$<T>(control: AbstractControl<T>): Observable<T> {\n  return merge(\n    defer(() => of(getControlValue(control))),\n    control.valueChanges.pipe(map(() => getControlValue(control))),\n  );\n}\n\nexport function controlDisabled$<T>(control: AbstractControl<T>): Observable<boolean> {\n  return merge(\n    defer(() => of(control.disabled)),\n    merge(control.statusChanges, control.stateChanges?.asObservable() ?? EMPTY).pipe(\n      map(() => control.disabled),\n      distinctUntilChanged(),\n    ),\n  );\n}\n\nexport function controlEnabled$<T>(control: AbstractControl<T>): Observable<boolean> {\n  return merge(\n    defer(() => of(control.enabled)),\n    merge(control.statusChanges, control.stateChanges?.asObservable() ?? EMPTY).pipe(\n      map(() => control.enabled),\n      distinctUntilChanged(),\n    ),\n  );\n}\n\nexport function controlReadonly$<T>(control: AbstractControl<T>): Observable<boolean> {\n  return merge(\n    defer(() => of(control.readonly ?? false)),\n    merge(control.statusChanges, control.stateChanges?.asObservable() ?? EMPTY).pipe(\n      map(() => control.readonly ?? false),\n      distinctUntilChanged(),\n    ),\n  );\n}\n\nexport function controlStatusChanges$<T>(control: AbstractControl<T>): Observable<ControlState> {\n  return merge(\n    defer(() => of(control.status as ControlState)),\n    control.statusChanges.pipe(\n      map(() => control.status as ControlState),\n      distinctUntilChanged(),\n    ),\n  );\n}\n\nexport function controlErrorChanges$<E>(control: AbstractControl): Observable<E | null> {\n  return merge(\n    defer(() => of(control.errors as E)),\n    control.valueChanges.pipe(\n      map(() => control.errors as E),\n    ),\n    control.statusChanges.pipe(\n      map(() => control.errors as E),\n    ),\n  ).pipe(distinctUntilChanged((a, b) => equals(a, b)));\n}\n\nexport function enableControl<T>(control: AbstractControl<T>, enabled: boolean, opts?: ControlOptions): void {\n  if (enabled) {\n    control.enable(opts);\n  } else {\n    control.disable(opts);\n  }\n}\n\nexport function disableControl<T>(control: AbstractControl<T>, disabled: boolean, opts?: ControlOptions): void {\n  enableControl(control, !disabled, opts);\n}\n\nexport function controlDisabledWhile<T>(\n  control: AbstractControl<T>,\n  observable: Observable<boolean>,\n  opts?: ControlOptions,\n): Subscription {\n  return observable.subscribe(isDisabled => disableControl(control, isDisabled, opts));\n}\n\nexport function controlEnabledWhile<T>(\n  control: AbstractControl<T>,\n  observable: Observable<boolean>,\n  opts?: ControlOptions,\n): Subscription {\n  return observable.subscribe(isEnabled => enableControl(control, isEnabled, opts));\n}\n\nexport function mergeControlValidators<T, Control extends AbstractControl<T>>(\n  control: Control,\n  validators: ValidatorFn<T> | ValidatorFn<T>[],\n): void {\n  control.setValidators([ ...coerceArray(control.validator), ...coerceArray(validators) ]);\n  control.updateValueAndValidity();\n}\n\nexport function validateControlOn<T>(control: AbstractControl<T>, validation: Observable<null | object>): Subscription {\n  return validation.subscribe(maybeError => {\n    control.setErrors(maybeError);\n  });\n}\n\nexport function hasErrorAndTouched<T>(control: AbstractControl<T>, error: string, path?: ControlPath): boolean {\n  const hasError = control.hasError(error, !path || path.length === 0 ? undefined : path);\n  return hasError && control.touched;\n}\n\nexport function hasErrorAndDirty<T>(control: AbstractControl<T>, error: string, path?: ControlPath): boolean {\n  const hasError = control.hasError(error, !path || path.length === 0 ? undefined : path);\n  return hasError && control.dirty;\n}\n\nexport function markAllDirty<T>(control: RxapFormArray<T> | RxapFormGroup<T>): void {\n  control.markAsDirty({ onlySelf: true });\n  (control as any)._forEachChild((_control: any) => _control.markAllAsDirty());\n}\n\nexport function markAllPristine<T>(control: RxapFormArray<T> | RxapFormGroup<T>): void {\n  control.markAsPristine({ onlySelf: true });\n  (control as any)._forEachChild((_control: any) => _control.markAllAsPristine());\n}\n\nexport function markAllUntouched<T>(control: RxapFormArray<T> | RxapFormGroup<T>): void {\n  control.markAsUntouched({ onlySelf: true });\n  (control as any)._forEachChild((_control: any) => _control.markAllAsUntouched());\n}\n\nexport function selectControlValue$<T, R>(\n  control: RxapFormGroup<T> | RxapFormArray<T> | RxapFormControl<T>,\n  mapFn: (state: T) => R,\n): Observable<R> {\n  return (control.value$ as Observable<any>).pipe(map(mapFn), distinctUntilChanged());\n}\n","import {\n  AbstractControl as NgAbstractControl,\n  UntypedFormArray,\n} from '@angular/forms';\nimport {\n  AbstractControl,\n  AsyncValidator,\n  ControlEventOptions,\n  ControlOptions,\n  ControlPath,\n  ControlState,\n  EmitEvent,\n  ExtractStrings,\n  OnlySelf,\n  Validator,\n} from './types';\nimport {\n  distinctUntilChanged,\n  map,\n} from 'rxjs/operators';\nimport {\n  isObservable,\n  Observable,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport {\n  controlDisabled$,\n  controlDisabledWhile,\n  controlEnabled$,\n  controlEnabledWhile,\n  controlErrorChanges$,\n  controlStatusChanges$,\n  controlValueChanges$,\n  disableControl,\n  enableControl,\n  hasErrorAndDirty,\n  hasErrorAndTouched,\n  markAllDirty,\n  markAllPristine,\n  markAllUntouched,\n  mergeControlValidators,\n} from './control-actions';\nimport { coerceArray } from '@rxap/utilities';\nimport {\n  ControlInsertedFn,\n  ControlRemovedFn,\n  FormArrayOptions,\n  FormBuilderFn,\n  FormDefinition,\n  FormType,\n} from './model';\nimport { isDevMode } from '@angular/core';\n\nexport class RxapFormArray<T = any,\n  E extends object = any,\n  Parent extends object = any>\n  extends UntypedFormArray\n  implements AbstractControl<T[]> {\n\n  private _readonly = false;\n\n  public get readonly(): boolean {\n    return (this.parent as any)?.readonly ?? this._readonly;\n  }\n\n  public set readonly(value: boolean) {\n    this._readonly = value;\n    this.controls.forEach(control => (control as any).stateChanges?.next());\n  }\n\n  /**\n   * @internal\n   */\n  public get rxapFormDefinition():\n    | (FormType<Parent> & FormDefinition<Parent>)\n    | undefined {\n    return (this.parent as any).rxapFormDefinition;\n  }\n\n  public get controlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.controlPath) {\n        if (parent === this.root) {\n          return this.controlId;\n        } else {\n          return [ parent.controlPath, this.controlId ].join('.');\n        }\n      }\n    }\n    return this.controlId;\n  }\n\n  public override readonly value!: T[];\n\n  public get fullControlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.fullControlPath) {\n        return [ parent.fullControlPath, this.controlId ].join('.');\n      }\n    }\n    return this.controlId;\n  }\n\n  public override readonly valueChanges!: Observable<T[]>;\n\n  public readonly value$ = controlValueChanges$<T[]>(this);\n  // @ts-expect-error overwrite the public type\n  public override readonly status!: ControlState;\n  public readonly disabled$ = controlDisabled$(this);\n  public override readonly statusChanges!: Observable<ControlState>;\n  public readonly enabled$ = controlEnabled$(this);\n  public override readonly errors!: E | null;\n  public readonly status$ = controlStatusChanges$(this);\n  public readonly errors$ = controlErrorChanges$<E>(this);\n  public readonly controlId: string;\n  private readonly touchChanges = new Subject<boolean>();\n  public readonly touch$ = this.touchChanges\n                               .asObservable()\n                               .pipe(distinctUntilChanged());\n  private readonly dirtyChanges = new Subject<boolean>();\n  public readonly dirty$ = this.dirtyChanges\n                               .asObservable()\n                               .pipe(distinctUntilChanged());\n  private readonly _builder: FormBuilderFn;\n  private readonly _controlInsertedFn: ControlInsertedFn;\n  private readonly _controlRemovedFn: ControlRemovedFn;\n\n  constructor(\n    public override controls: Array<AbstractControl<T>>,\n    options: FormArrayOptions,\n  ) {\n    super(controls, options);\n    this.controlId = options.controlId;\n    this._builder = options.builder;\n    this._controlInsertedFn = options.controlInsertedFn;\n    this._controlRemovedFn = options.controlRemovedFn;\n  }\n\n  public select<R>(mapFn: (state: T[]) => R): Observable<R> {\n    return this.value$.pipe(map(mapFn), distinctUntilChanged());\n  }\n\n  public override at(index: number): AbstractControl<T> {\n    return super.at(index) as AbstractControl<T>;\n  }\n\n  public override getRawValue(): T[] {\n    return super.getRawValue();\n  }\n\n  public override insert(index: number, control: AbstractControl<T>): void {\n    if (isDevMode()) {\n      console.warn('It is not recommend to use the FormArray.insert method');\n    }\n    return super.insert(index, control);\n  }\n\n  /**\n   * inserts a new control at the specified index. If the index is undefined\n   * the new control will be added to the end.\n   *\n   * @param index (optional) the index where the control should be created\n   * @param state (optional) the initial state of the new control\n   * @param options (optional) ControlEventOptions\n   */\n  public insertAt(index?: number, state?: T, options?: ControlEventOptions): void {\n    const insertIndex = index ?? this.controls.length;\n    const length = this.controls.length;\n    const controlOrDefinition = this._builder(state, {\n      controlId: insertIndex.toFixed(0),\n    });\n\n    this._controlInsertedFn(insertIndex, controlOrDefinition);\n\n    if (insertIndex < this.controls.length) {\n      // update the control ids for all controls, that are moved.\n      for (let i = insertIndex; i < this.controls.length; i++) {\n        Reflect.set(this.controls[i], 'controlId', (\n          i + 1\n        ).toFixed(0));\n      }\n    }\n    if (length === this.controls.length) {\n      // the _controlInsertedFn has not yet added the new control to the form array\n      // call the super insert after the update, bc the insert method will\n      // trigger a change detection\n      if (controlOrDefinition instanceof NgAbstractControl) {\n        super.insert(insertIndex, controlOrDefinition, options);\n      } else {\n        super.insert(insertIndex, controlOrDefinition.rxapFormGroup!, options);\n      }\n    } else {\n      if (controlOrDefinition instanceof NgAbstractControl) {\n        controlOrDefinition.setParent(this);\n        (controlOrDefinition as any)['_registerOnCollectionChange']?.((this as any)['_onCollectionChange']);\n      } else {\n        controlOrDefinition.rxapFormGroup!.setParent(this);\n        (controlOrDefinition.rxapFormGroup as any)['_registerOnCollectionChange']?.((this as any)['_onCollectionChange']);\n      }\n      this.updateValueAndValidity({ emitEvent: options?.emitEvent });\n    }\n  }\n\n  public disabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ) {\n    return controlDisabledWhile(this, observable, options);\n  }\n\n  public enabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ) {\n    return controlEnabledWhile(this, observable, options);\n  }\n\n  public mergeValidators(validators: Validator) {\n    mergeControlValidators(this, validators);\n  }\n\n  public mergeAsyncValidators(validators: AsyncValidator) {\n    this.setAsyncValidators([\n      ...coerceArray(this.asyncValidator),\n      ...coerceArray(validators),\n    ]);\n    this.updateValueAndValidity();\n  }\n\n  public markAllAsDirty(): void {\n    markAllDirty(this);\n  }\n\n  public markAllAsPristine(): void {\n    markAllPristine(this);\n  }\n\n  public override setValue(\n    valueOrObservable: T[] | Observable<T[]>,\n    options?: ControlEventOptions,\n  ): Subscription | void {\n    if (isObservable(valueOrObservable)) {\n      return valueOrObservable.subscribe((value) => {\n          super.setValue(value, options);\n        },\n      );\n    }\n\n    super.setValue(valueOrObservable, options);\n  }\n\n  public markAllAsUntouched(): void {\n    markAllUntouched(this);\n  }\n\n  public validateOn(observableValidation: Observable<null | object>) {\n    return observableValidation.subscribe((maybeError) => {\n      this.setErrors(maybeError);\n    });\n  }\n\n  public hasErrorAndTouched(\n    errorCode: ExtractStrings<E>,\n    path?: ControlPath,\n  ): boolean {\n    return hasErrorAndTouched(this, errorCode, path);\n  }\n\n  private _patchValue(value: T[], options?: ControlEventOptions) {\n    // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n    // `patchValue` can be called recursively and inner data structures might have these values, so\n    // we just ignore such cases when a field containing FormArray instance receives `null` or\n    // `undefined` as a value.\n    if (value == null /* both `null` and `undefined` */) {\n      return;\n    }\n    if (options?.strict) {\n      if (this.length > value.length) {\n        for (let index = this.length - 1; index >= value.length; index--) {\n          this.removeAt(index);\n        }\n      }\n    }\n    value.forEach((newValue, index) => {\n      if (this.at(index)) {\n        this.at(index)\n            .patchValue(\n              newValue,\n              {\n                ...(options ?? {}),\n                onlySelf: true,\n              },\n            );\n      } else if (options?.coerce) {\n        this.insertAt(index, value[index]);\n      }\n    });\n    this.updateValueAndValidity(options);\n  }\n\n  public override patchValue(\n    valueOrObservable: any,\n    options?: ControlEventOptions,\n  ): Subscription | void {\n    if (isObservable(valueOrObservable)) {\n      return (valueOrObservable as Observable<T[]>).subscribe((value: T[]) => {\n        this._patchValue(value, options);\n      });\n    }\n\n    this._patchValue(valueOrObservable as T[], options);\n  }\n\n  public hasErrorAndDirty(\n    errorCode: ExtractStrings<E>,\n    path?: ControlPath,\n  ): boolean {\n    return hasErrorAndDirty(this, errorCode, path);\n  }\n\n  public override removeAt(index: number, opts?: ControlEventOptions) {\n    if (isDevMode()) {\n      console.warn('It is not recommend to use the FormArray.removeAt method');\n    }\n    const length = this.controls.length;\n    this._controlRemovedFn(index);\n    if (length === this.controls.length) {\n      super.removeAt(index);\n    } else {\n      this.updateValueAndValidity({ emitEvent: opts?.emitEvent });\n    }\n  }\n\n  public setEnable(enable = true, opts?: ControlEventOptions) {\n    enableControl(this, enable, opts);\n  }\n\n  public override push(control: AbstractControl<T>, options?: ControlEventOptions): void {\n    if (isDevMode()) {\n      console.warn('It is not recommend to use the FormArray.push method');\n    }\n    return super.push(control, options);\n  }\n\n  public setDisable(disable = true, opts?: ControlEventOptions) {\n    disableControl(this, disable, opts);\n  }\n\n  public override setControl(index: number, control: AbstractControl<T>, options?: ControlEventOptions): void {\n    if (isDevMode()) {\n      console.warn('It is not recommend to use the FormArray.setControl method');\n    }\n    return super.setControl(index, control, options);\n  }\n\n  public override markAsTouched(opts?: OnlySelf): void {\n    super.markAsTouched(opts);\n    this.touchChanges.next(true);\n  }\n\n  public override markAsUntouched(opts?: OnlySelf): void {\n    super.markAsUntouched(opts);\n    this.touchChanges.next(false);\n  }\n\n  public override markAsPristine(opts?: OnlySelf): void {\n    super.markAsPristine(opts);\n    this.dirtyChanges.next(false);\n  }\n\n  public override markAsDirty(opts?: OnlySelf): void {\n    super.markAsDirty(opts);\n    this.dirtyChanges.next(true);\n  }\n\n  public override reset(value?: T[], options?: ControlEventOptions): void {\n    super.reset(value, options);\n  }\n\n  public override setValidators(\n    newValidator: Validator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public override setAsyncValidators(\n    newValidator: AsyncValidator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setAsyncValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public override hasError(errorCode: ExtractStrings<E>, path?: ControlPath) {\n    return super.hasError(errorCode, path);\n  }\n\n  public override setErrors(errors: Partial<E> | null, opts: EmitEvent = {}) {\n    return super.setErrors(errors, opts);\n  }\n\n  public override getError<K extends ExtractStrings<E>>(\n    errorCode: K,\n    path?: ControlPath,\n  ) {\n    return super.getError(errorCode, path) as E[K] | null;\n  }\n}\n","import {\n  isObservable,\n  Observable,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport { UntypedFormGroup } from '@angular/forms';\nimport {\n  AbstractControl,\n  AsyncValidator,\n  ControlEventOptions,\n  ControlOptions,\n  ControlState,\n  EmitEvent,\n  ExtractAbstractControl,\n  ExtractStrings,\n  KeyValueControls,\n  OnlySelf,\n  ValidationErrors,\n  Validator,\n} from './types';\nimport {\n  controlDisabled$,\n  controlDisabledWhile,\n  controlEnabled$,\n  controlEnabledWhile,\n  controlErrorChanges$,\n  controlStatusChanges$,\n  controlValueChanges$,\n  disableControl,\n  enableControl,\n  hasErrorAndDirty,\n  hasErrorAndTouched,\n  markAllDirty,\n  markAllPristine,\n  markAllUntouched,\n  mergeControlValidators,\n  selectControlValue$,\n  validateControlOn,\n} from './control-actions';\nimport { coerceArray } from '@rxap/utilities';\nimport {\n  FormDefinition,\n  FormGroupOptions,\n  FormType,\n} from './model';\n\nexport class RxapFormGroup<\n  T = any,\n  E extends ValidationErrors = any\n> extends UntypedFormGroup {\n  /**\n   * @internal\n   */\n  public get rxapFormDefinition():\n    | (FormType<T> & FormDefinition<T>)\n    | undefined {\n    if (!this.parent) {\n      return this._rxapFormDefinition;\n    }\n    if (this._rxapFormDefinition) {\n      return this._rxapFormDefinition;\n    }\n    return (this.parent as any).rxapFormDefinition;\n  }\n\n  private _readonly = false;\n\n  public get readonly(): boolean {\n    return (this.parent as any)?.readonly ?? this._readonly;\n  }\n\n  public set readonly(value: boolean) {\n    this._readonly = value;\n    Object.values(this.controls ?? {}).forEach(control => (control as any).stateChanges?.next());\n  }\n\n  /**\n   * @internal\n   */\n  private _rxapFormDefinition?: FormType<T> & FormDefinition<T>;\n\n  override readonly value!: T;\n  override readonly errors!: E | null;\n  override readonly valueChanges!: Observable<T>;\n  // @ts-expect-error overwrite the public type\n  override readonly status!: ControlState;\n  override readonly statusChanges!: Observable<ControlState>;\n\n  private touchChanges = new Subject<boolean>();\n  private dirtyChanges = new Subject<boolean>();\n\n  touch$ = this.touchChanges.asObservable().pipe(distinctUntilChanged());\n  dirty$ = this.dirtyChanges.asObservable().pipe(distinctUntilChanged());\n\n  readonly value$: Observable<T> = controlValueChanges$<T>(this);\n  readonly disabled$ = controlDisabled$<T>(this);\n  readonly enabled$ = controlEnabled$<T>(this);\n  readonly status$ = controlStatusChanges$<T>(this);\n  readonly errors$ = controlErrorChanges$<E>(this);\n\n  readonly controlId: string;\n\n  public get controlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.controlPath) {\n        if (parent === this.root) {\n          return this.controlId;\n        } else {\n          return [ parent.controlPath, this.controlId ].join('.');\n        }\n      }\n    }\n    return '';\n  }\n\n  public get fullControlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.fullControlPath) {\n        return [ parent.fullControlPath, this.controlId ].join('.');\n      }\n    }\n    return this.controlId;\n  }\n\n  constructor(\n    public override controls: ExtractAbstractControl<KeyValueControls<T>, T>,\n    options: FormGroupOptions,\n  ) {\n    super(controls, options);\n    this.controlId = options.controlId;\n  }\n\n  public select<R>(mapFn: (state: T) => R): Observable<R> {\n    return selectControlValue$<T, R>(this, mapFn);\n  }\n\n  public override getRawValue(): T {\n    return super.getRawValue();\n  }\n\n  public override get<K1 extends keyof T>(path: [ K1 ]): AbstractControl<T[K1]>;\n  public override get<K1 extends keyof T, K2 extends keyof T[K1]>(\n    path: [ K1, K2 ],\n  ): AbstractControl<T[K1][K2]>;\n  public override get<\n    K1 extends keyof T,\n    K2 extends keyof T[K1],\n    K3 extends keyof T[K1][K2]\n  >(path: [ K1, K2, K3 ]): AbstractControl<T[K1][K2][K3]>;\n  public override get(path: string): AbstractControl;\n  public override get(path: any): AbstractControl | null {\n    return super.get(path);\n  }\n\n  public getControl<P1 extends keyof T>(prop1: P1): AbstractControl<T[P1]>;\n  public getControl<P1 extends keyof T, P2 extends keyof T[P1]>(\n    prop1: P1,\n    prop2: P2,\n  ): AbstractControl<T[P1][P2]>;\n  public getControl<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2]\n  >(prop1: P1, prop2: P2, prop3: P3): AbstractControl<T[P1][P2][P3]>;\n  public getControl<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3]\n  >(\n    prop1: P1,\n    prop2: P2,\n    prop3: P3,\n    prop4: P4,\n  ): AbstractControl<T[P1][P2][P3][P4]>;\n  public getControl(...names: any): AbstractControl<any> {\n    return this.get(names.join('.'));\n  }\n\n  public override addControl<K extends ExtractStrings<T>>(\n    name: K,\n    control: AbstractControl<T[K]>,\n  ): void {\n    super.addControl(name, control);\n  }\n\n  public override removeControl(name: ExtractStrings<T>): void {\n    super.removeControl(name);\n  }\n\n  public override contains(controlName: ExtractStrings<T>): boolean {\n    return super.contains(controlName);\n  }\n\n  public override setControl<K extends ExtractStrings<T>>(\n    name: K,\n    control: AbstractControl<T[K]>,\n  ): void {\n    super.setControl(name, control);\n  }\n\n  public override setValue(\n    valueOrObservable: Observable<T>,\n    options?: ControlEventOptions,\n  ): Subscription;\n  public override setValue(valueOrObservable: T, options?: ControlEventOptions): void;\n  public override setValue(valueOrObservable: any, options?: ControlEventOptions): any {\n    if (isObservable(valueOrObservable)) {\n      return (valueOrObservable as Observable<T>).subscribe((value) =>\n        // TODO : refactor RxapFormGroup to typed FormGroup\n        super.setValue(value as any, options),\n      );\n    }\n\n    super.setValue(valueOrObservable, options);\n  }\n\n  private _patchValue(value: T, options?: ControlEventOptions) {\n    // Even though the `value` argument type doesn't allow `null` and `undefined` values, the\n    // `patchValue` can be called recursively and inner data structures might have these values, so\n    // we just ignore such cases when a field containing FormGroup instance receives `null` or\n    // `undefined` as a value.\n    if (value == null /* both `null` and `undefined` */) {\n      return;\n    }\n    Object.keys(value).forEach(name => {\n      // TODO : resolve type issue\n      const controls = this.controls as any;\n      if (controls[name]) {\n        controls[name].patchValue(\n          (value as any)[name],\n          {\n            ...(options ?? {}),\n            onlySelf: true,\n          },\n        );\n      }\n    });\n    this.updateValueAndValidity(options);\n  }\n\n  public override patchValue(\n    valueOrObservable: Observable<Partial<T>>,\n    options?: ControlEventOptions,\n  ): Subscription;\n  public override patchValue(\n    valueOrObservable: Partial<T>,\n    options?: ControlEventOptions,\n  ): void;\n  public override patchValue(\n    valueOrObservable: any,\n    options?: ControlEventOptions,\n  ): Subscription | void {\n    if (isObservable(valueOrObservable)) {\n      return (valueOrObservable as Observable<T>).subscribe((value) =>\n        // TODO : refactor RxapFormGroup to typed FormGroup\n        super.patchValue(value as any, options),\n      );\n    }\n\n    this._patchValue(valueOrObservable, options);\n  }\n\n  public disabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ): Subscription {\n    return controlDisabledWhile(this, observable, options);\n  }\n\n  public enabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ): Subscription {\n    return controlEnabledWhile(this, observable, options);\n  }\n\n  public mergeValidators(validators: Validator) {\n    mergeControlValidators(this, validators);\n  }\n\n  public mergeAsyncValidators(validators: AsyncValidator) {\n    this.setAsyncValidators([\n      ...coerceArray(this.asyncValidator),\n      ...coerceArray(validators),\n    ]);\n    this.updateValueAndValidity();\n  }\n\n  public override markAsTouched(opts?: OnlySelf): void {\n    super.markAsTouched(opts);\n    this.touchChanges.next(true);\n  }\n\n  public override markAsUntouched(opts?: OnlySelf): void {\n    super.markAsUntouched(opts);\n    this.touchChanges.next(false);\n  }\n\n  public override markAsPristine(opts?: OnlySelf): void {\n    super.markAsPristine(opts);\n    this.dirtyChanges.next(false);\n  }\n\n  public override markAsDirty(opts?: OnlySelf): void {\n    super.markAsDirty(opts);\n    this.dirtyChanges.next(true);\n  }\n\n  public markAllAsDirty(): void {\n    markAllDirty(this);\n  }\n\n  public markAllAsPristine(): void {\n    markAllPristine(this);\n  }\n\n  public markAllAsUntouched(): void {\n    markAllUntouched(this);\n  }\n\n  public override reset(formState?: Partial<T>, options?: ControlEventOptions): void {\n    super.reset(formState, options);\n  }\n\n  public override setValidators(\n    newValidator: Validator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public override setAsyncValidators(\n    newValidator: AsyncValidator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setAsyncValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public validateOn(observableValidation: Observable<null | object>) {\n    return validateControlOn(this, observableValidation);\n  }\n\n  public override hasError<K1 extends keyof T>(\n    errorCode: ExtractStrings<E>,\n    path?: [ K1 ],\n  ): boolean;\n  public override hasError<K1 extends keyof T, K2 extends keyof T[K1]>(\n    errorCode: ExtractStrings<E>,\n    path?: [ K1, K2 ],\n  ): boolean;\n  public override hasError<\n    K1 extends keyof T,\n    K2 extends keyof T[K1],\n    K3 extends keyof T[K1][K2]\n  >(errorCode: ExtractStrings<E>, path?: [ K1, K2, K3 ]): boolean;\n  public override hasError(errorCode: ExtractStrings<E>, path?: string): boolean;\n  public override hasError(errorCode: ExtractStrings<E>, path?: any): boolean {\n    return super.hasError(errorCode, path);\n  }\n\n  public override setErrors(errors: Partial<E> | null, opts: EmitEvent = {}) {\n    return super.setErrors(errors, opts);\n  }\n\n  public override getError<K extends keyof E, K1 extends keyof T>(\n    errorCode: K,\n    path?: [ K1 ],\n  ): E[K] | null;\n  public override getError<\n    K extends keyof E,\n    K1 extends keyof T,\n    K2 extends keyof T[K1]\n  >(errorCode: K, path?: [ K1, K2 ]): E[K] | null;\n  public override getError<\n    K extends keyof E,\n    K1 extends keyof T,\n    K2 extends keyof T[K1],\n    K3 extends keyof T[K1][K2]\n  >(errorCode: K, path?: [ K1, K2, K3 ]): E[K] | null;\n  public override getError<K extends keyof E>(errorCode: K, path?: string): E[K] | null;\n  public override getError<K extends keyof E>(errorCode: K, path?: any): E[K] | null {\n    return super.getError(errorCode as any, path) as E[K] | null;\n  }\n\n  public hasErrorAndTouched<P1 extends keyof T>(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n  ): boolean;\n  public hasErrorAndTouched<P1 extends keyof T, P2 extends keyof T[P1]>(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n    prop2?: P2,\n  ): boolean;\n  public hasErrorAndTouched<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2]\n  >(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;\n  public hasErrorAndTouched<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3]\n  >(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n    prop2?: P2,\n    prop3?: P3,\n    prop4?: P4,\n  ): boolean;\n  public hasErrorAndTouched(error: any, ...path: any): boolean {\n    return hasErrorAndTouched(this, error, ...path);\n  }\n\n  public hasErrorAndDirty<P1 extends keyof T>(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n  ): boolean;\n  public hasErrorAndDirty<P1 extends keyof T, P2 extends keyof T[P1]>(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n    prop2?: P2,\n  ): boolean;\n  public hasErrorAndDirty<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2]\n  >(error: ExtractStrings<E>, prop1?: P1, prop2?: P2, prop3?: P3): boolean;\n  public hasErrorAndDirty<\n    P1 extends keyof T,\n    P2 extends keyof T[P1],\n    P3 extends keyof T[P1][P2],\n    P4 extends keyof T[P1][P2][P3]\n  >(\n    error: ExtractStrings<E>,\n    prop1?: P1,\n    prop2?: P2,\n    prop3?: P3,\n    prop4?: P4,\n  ): boolean;\n  public hasErrorAndDirty(error: any, ...path: any): boolean {\n    return hasErrorAndDirty(this, error, ...path);\n  }\n\n  public setEnable(enable = true, opts?: ControlEventOptions) {\n    enableControl(this, enable, opts);\n  }\n\n  public setDisable(disable = true, opts?: ControlEventOptions) {\n    disableControl(this, disable, opts);\n  }\n}\n","import { UntypedFormControl } from '@angular/forms';\nimport { coerceArray } from '@rxap/utilities';\nimport {\n  isObservable,\n  Observable,\n  Subject,\n  Subscription,\n} from 'rxjs';\nimport { distinctUntilChanged } from 'rxjs/operators';\nimport {\n  controlDisabled$,\n  controlDisabledWhile,\n  controlEnabled$,\n  controlEnabledWhile,\n  controlErrorChanges$,\n  controlReadonly$,\n  controlStatusChanges$,\n  controlValueChanges$,\n  disableControl,\n  enableControl,\n  hasErrorAndDirty,\n  hasErrorAndTouched,\n  mergeControlValidators,\n  validateControlOn,\n} from './control-actions';\nimport {\n  FormDefinition,\n  FormType,\n  RxapAbstractControlOptions,\n  SetValueFn,\n} from './model';\nimport {\n  AsyncValidator,\n  ControlEventOptions,\n  ControlOptions,\n  ControlState,\n  EmitEvent,\n  ExtractStrings,\n  OnlySelf,\n  OrBoxedValue,\n  Validator,\n} from './types';\n\nexport class RxapFormControl<\n  T = any,\n  E extends object = any,\n  Parent extends object = any\n> extends UntypedFormControl {\n  /**\n   * @internal\n   */\n  public get rxapFormDefinition():\n    | (FormType<Parent> & FormDefinition<Parent>)\n    | undefined {\n    return (this.parent as any).rxapFormDefinition;\n  }\n\n  override readonly value!: T;\n  override readonly errors!: E | null;\n  // TODO : find solution to only overwrite the type with out impl the getter or setter logic\n  // readonly asyncValidator!: AsyncValidatorFn<T>;\n  override readonly valueChanges!: Observable<T>;\n  // @ts-expect-error overwrite the public type\n  override readonly status!: ControlState;\n  override readonly statusChanges!: Observable<ControlState>;\n  readonly initialState!: OrBoxedValue<T>;\n  private _readonly = false;\n\n  private touchChanges = new Subject<boolean>();\n  private dirtyChanges = new Subject<boolean>();\n\n  readonly touch$ = this.touchChanges\n                        .asObservable()\n                        .pipe(distinctUntilChanged());\n  readonly dirty$ = this.dirtyChanges\n                        .asObservable()\n                        .pipe(distinctUntilChanged());\n\n  readonly value$: Observable<T> = controlValueChanges$<T>(this);\n  readonly disabled$ = controlDisabled$<T>(this);\n  readonly enabled$ = controlEnabled$<T>(this);\n\n  public get readonly(): boolean {\n    return (this.parent as any)?.readonly ?? this._readonly;\n  }\n\n  public set readonly(value: boolean) {\n    this._readonly = value;\n    this.stateChanges.next();\n  }\n\n  readonly status$ = controlStatusChanges$<T>(this);\n  readonly errors$ = controlErrorChanges$<E>(this);\n\n  readonly controlId: string;\n\n  private readonly _onSetValue: SetValueFn<T>[] = [];\n\n  readonly stateChanges = new Subject<void>();\n  readonly readonly$ = controlReadonly$<T>(this);\n\n  public get controlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.controlPath) {\n        if (parent === this.root) {\n          return this.controlId;\n        } else {\n          return [ parent.controlPath, this.controlId ].join('.');\n        }\n      }\n    }\n    return this.controlId;\n  }\n\n  public get fullControlPath(): string {\n    const parent: any = this.parent;\n    if (parent) {\n      if (parent.fullControlPath) {\n        return [ parent.fullControlPath, this.controlId ].join('.');\n      }\n    }\n    return this.controlId;\n  }\n\n  constructor(\n    formState: OrBoxedValue<T>,\n    options: RxapAbstractControlOptions & { controlId: string },\n  ) {\n    super(formState, options);\n    this.controlId = options.controlId;\n    if (options.disabled) {\n      this.disable({ emitEvent: false });\n    }\n    if (options.readonly) {\n      this.readonly = true;\n    }\n    this.initialState = formState;\n  }\n\n  public override setValue(\n    valueOrObservable: Observable<T>,\n    options?: ControlOptions,\n  ): Subscription;\n  public override setValue(valueOrObservable: T, options?: ControlOptions): void;\n  public override setValue(\n    valueOrObservable: any,\n    options?: ControlOptions,\n  ): Subscription | void {\n    if (isObservable(valueOrObservable)) {\n      return (valueOrObservable as Observable<T>).subscribe((value) => {\n        super.setValue(value, options);\n        this._onSetValue.forEach((setValueFn) => setValueFn(value, options));\n      });\n    }\n\n    super.setValue(valueOrObservable, options);\n    this._onSetValue.forEach((setValueFn) =>\n      setValueFn(valueOrObservable, options),\n    );\n  }\n\n  public override patchValue(\n    valueOrObservable: Observable<T>,\n    options?: ControlOptions,\n  ): Subscription;\n  public override patchValue(valueOrObservable: T, options?: ControlOptions): void;\n  public override patchValue(\n    valueOrObservable: any,\n    options?: ControlOptions,\n  ): Subscription | void {\n    if (isObservable(valueOrObservable)) {\n      return valueOrObservable.subscribe((value) =>\n        super.patchValue(value, options),\n      );\n    }\n\n    super.patchValue(valueOrObservable, options);\n  }\n\n  public disabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ) {\n    return controlDisabledWhile(this, observable, options);\n  }\n\n  public enabledWhile(\n    observable: Observable<boolean>,\n    options?: ControlOptions,\n  ) {\n    return controlEnabledWhile(this, observable, options);\n  }\n\n  public mergeValidators(validators: Validator) {\n    mergeControlValidators(this, validators);\n  }\n\n  public mergeAsyncValidators(validators: AsyncValidator) {\n    this.setAsyncValidators([\n      // TODO : remove 'as any' if solution for the type overwrite issue is found (above)\n      this.asyncValidator as any,\n      ...coerceArray(validators),\n    ]);\n    this.updateValueAndValidity();\n  }\n\n  public override markAsTouched(opts?: OnlySelf): void {\n    super.markAsTouched(opts);\n    this.touchChanges.next(true);\n  }\n\n  public override markAsUntouched(opts?: OnlySelf): void {\n    super.markAsUntouched(opts);\n    this.touchChanges.next(false);\n  }\n\n  public override markAsPristine(opts?: OnlySelf): void {\n    super.markAsPristine(opts);\n    this.dirtyChanges.next(false);\n  }\n\n  public override markAsDirty(opts?: OnlySelf): void {\n    super.markAsDirty(opts);\n    this.dirtyChanges.next(true);\n  }\n\n  public markAllAsDirty(): void {\n    this.markAsDirty({ onlySelf: true });\n  }\n\n  public override reset(\n    formState?: OrBoxedValue<T>,\n    options?: ControlEventOptions,\n  ): void {\n    const newState = formState ?? this.initialState;\n\n    if (typeof newState === 'function') {\n      super.reset((newState as any)(), options);\n    } else {\n      super.reset(newState, options);\n    }\n  }\n\n  public override setValidators(\n    newValidator: Validator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public override setAsyncValidators(\n    newValidator: AsyncValidator,\n    updateValueAndValidity = true,\n  ): void {\n    super.setAsyncValidators(newValidator);\n    if (updateValueAndValidity) {\n      super.updateValueAndValidity();\n    }\n  }\n\n  public validateOn(observableValidation: Observable<null | object>) {\n    return validateControlOn(this, observableValidation);\n  }\n\n  public override getError<K extends ExtractStrings<E>>(errorCode: K): E[K] | null {\n    return super.getError(errorCode) as E[K] | null;\n  }\n\n  public override hasError<K extends ExtractStrings<E>>(errorCode: K) {\n    return super.hasError(errorCode);\n  }\n\n  public override setErrors(errors: Partial<E> | null, opts: EmitEvent = {}) {\n    return super.setErrors(errors, opts);\n  }\n\n  public setError(key: string, value: any, opts: EmitEvent = {}): void {\n    super.setErrors({ [key]: value }, opts);\n  }\n\n  public hasErrorAndTouched(error: ExtractStrings<E>): boolean {\n    return hasErrorAndTouched(this, error);\n  }\n\n  public hasErrorAndDirty(error: ExtractStrings<E>): boolean {\n    return hasErrorAndDirty(this, error);\n  }\n\n  public setEnable(enable = true, opts?: ControlEventOptions) {\n    enableControl(this, enable, opts);\n  }\n\n  public setDisable(disable = true, opts?: ControlEventOptions) {\n    disableControl(this, disable, opts);\n  }\n\n  public registerOnSetValue(setValueFn: SetValueFn<T>) {\n    this._onSetValue.push(setValueFn);\n  }\n}\n","/* eslint-disable @typescript-eslint/ban-types */\nimport {\n  Injector,\n  isDevMode,\n  StaticProvider,\n} from '@angular/core';\nimport {\n  assertIsArray,\n  assertIsFunction,\n  assertIsObject,\n  Constructor,\n  HasRxapOnInitMethod,\n} from '@rxap/utilities';\nimport { MetadataKeys } from './decorators/metadata-keys';\nimport {\n  AbstractControl,\n  AsyncValidatorFn,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport {\n  ChangeFn,\n  FormDefinition,\n  FormDefinitionMetadata,\n  FormType,\n  RxapAbstractControlOptions,\n  RxapAbstractControlOptionsWithDefinition,\n  SetValueFn,\n} from './model';\nimport { RxapFormArray } from './form-array';\nimport { RxapFormGroup } from './form-group';\nimport { RxapFormControl } from './form-control';\nimport { GetDefinitionMetadata } from '@rxap/definition';\nimport { ControlSetValueOptions } from './decorators/control-set-value';\nimport { getMetadata } from '@rxap/reflect-metadata';\n\nexport class FormArrayControlManager<T extends FormDefinition> {\n  constructor(private readonly form: T, private readonly controlId: keyof T) {\n  }\n\n  public inserted(\n    index: number,\n    controlOrDefinition: AbstractControl | FormDefinition,\n  ): void {\n    const controlContainer = this.form[this.controlId];\n    if (Array.isArray(controlContainer)) {\n      controlContainer.splice(index, 0, controlOrDefinition);\n    } else {\n      throw new Error(\n        'Could not register inserted control or definition. The control id does not points to an array of control or definition instance!',\n      );\n    }\n  }\n\n  public removed(index: number): void {\n    const controlContainer = this.form[this.controlId];\n    if (Array.isArray(controlContainer)) {\n      controlContainer.splice(index, 1);\n    } else {\n      throw new Error(\n        'Could not register inserted control or definition. The control id does not points to an array of control or definition instance!',\n      );\n    }\n  }\n}\n\nexport class RxapFormBuilder<\n  Data extends Record<string, any> = any,\n  Form extends FormType<Data> = FormType<Data>\n> {\n  private readonly formArrayGroups: Map<\n    string,\n    RxapAbstractControlOptionsWithDefinition\n  >;\n  private readonly formArrayControls: Map<string, RxapAbstractControlOptions>;\n  private readonly formControls: Map<string, RxapAbstractControlOptions>;\n  private readonly formGroups: Map<\n    string,\n    RxapAbstractControlOptionsWithDefinition\n  >;\n  private readonly formOptions: FormDefinitionMetadata;\n  private readonly validators: Map<string, Set<string>>;\n  private readonly asyncValidators: Map<string, Set<string>>;\n  private readonly controlChanges: Map<string, Set<string>>;\n  private readonly controlSetValue: Map<string, Set<ControlSetValueOptions>>;\n\n  private readonly providers: StaticProvider[];\n\n  constructor(\n    private readonly definition: Constructor<Form>,\n    private readonly injector: Injector = Injector.NULL,\n    providers: StaticProvider[] = [],\n  ) {\n    this.formArrayGroups = this.extractArrayGroups();\n    this.formArrayControls = this.extractArrayControls();\n    this.formControls = this.extractControls();\n    this.formGroups = this.extractGroups();\n    this.validators = this.extractValidators();\n    this.asyncValidators = this.extractAsyncValidators();\n    this.controlChanges = this.extractControlChanges();\n    this.controlSetValue = this.extractControlSetValue();\n    const formOptions = (this.formOptions = this.extractFormOptions());\n\n    // merge the providers from the from options with the providers from the\n    // constructor. If the provider is defined in the form options and constructor\n    // then the provider from the constructor will be used.\n    this.providers = [ ...providers, ...(formOptions.providers ?? []) ].filter(\n      (provider: any, index, self) =>\n        provider['provide'] &&\n        self.findIndex(\n          (selfProvider: any) =>\n            selfProvider.provide &&\n            selfProvider.provide === provider.provide,\n        ) === index,\n    );\n  }\n\n  public build<T extends (FormDefinition<Data> | FormType<Data>)>(\n    state: Readonly<any> = {},\n    options: Partial<FormDefinitionMetadata & { controlId?: string }> = {},\n  ): T {\n    const injector = Injector.create({\n      name: `rxap/form-builder/${ this.formOptions.id }`,\n      parent: this.injector,\n      providers: this.providers,\n    });\n\n    let form: Record<string, Function> & FormDefinition;\n\n    // don't use the notFoundValue feature of the injector.\n    // if used for each call of the get method an \"empty\" or \"fallback\"\n    // instance is created\n\n    try {\n      form = injector.get(this.definition);\n    } catch (e: any) {\n      if (e.name === 'NullInjectorError') {\n        if (e.message.includes(`No provider for ${ this.definition.name }`)) {\n          if (isDevMode()) {\n            console.warn(\n              `Could not inject the definition instance. Fallback and call the constructor of the definition class: ${ e.message }`);\n          }\n          form = new this.definition() as any;\n        } else {\n          throw e;\n        }\n      } else {\n        throw new Error(`Could not inject the definition instance: ${ e.message }`);\n      }\n    }\n\n    const controls: Record<string, AbstractControl> = {};\n\n    this.buildControls(state, form, controls);\n    this.buildGroups(state, form, controls);\n    this.buildArrayGroups(state, form, controls);\n    this.buildArrayControls(state, form, controls);\n\n    const formOptions = {\n      ...this.formOptions,\n      controlId:\n        options.controlId ?? (options.id ? options.id : this.formOptions.id),\n      ...options,\n    };\n\n    form.rxapFormGroup = new RxapFormGroup(controls, formOptions);\n\n    Reflect.set(form.rxapFormGroup, '_rxapFormDefinition', form);\n\n    form.rxapMetadata = this.formOptions;\n\n    if (HasRxapOnInitMethod(form)) {\n      form.rxapOnInit();\n    }\n\n    for (const control of Object.values(form.rxapFormGroup.controls)) {\n      if (control.controlId) {\n        const controlSetValueOnInit = Array.from(\n          this.controlSetValue.get(control.controlId) ?? [],\n        ).filter((controlSetValueOptions) => controlSetValueOptions.initial);\n        for (const onSetValue of this.coerceToFnArray<SetValueFn>(\n          form,\n          controlSetValueOnInit,\n        )) {\n          onSetValue(control.value, { initial: true });\n        }\n      }\n    }\n\n    return form as any;\n  }\n\n  private buildArrayControls(\n    builderFormState: any,\n    form: FormDefinition & Record<string, Function>,\n    controls: Record<string, AbstractControl>,\n  ): void {\n    for (const [ controlId, options ] of this.formArrayControls.entries()) {\n      const formState = this.coerceToArrayFormState(\n        controlId,\n        [],\n        builderFormState,\n        options.state,\n      );\n\n      assertIsArray(formState);\n\n      const formControls: any = formState.map(\n        (fs, index) => new RxapFormControl(fs, { controlId: index.toFixed(0) }),\n      );\n\n      const manager = new FormArrayControlManager(form, controlId);\n\n      const formArray =\n        (formControls.rxapFormArray =\n          controls[controlId] =\n            new RxapFormArray(\n              // TODO : add the formControlOptions property. To definition the form control options\n              formControls,\n              {\n                ...options,\n                controlId,\n                validators: [],\n                asyncValidators: [],\n                controlInsertedFn: manager.inserted.bind(manager),\n                controlRemovedFn: manager.removed.bind(manager),\n                builder: (state, controlOptions) =>\n                  new RxapFormControl(state, controlOptions),\n              },\n            ));\n\n      // TODO : add support for injectable validators\n\n      formArray.setValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.validators,\n          this.validators.get(controlId),\n        ),\n        false,\n      );\n      formArray.setAsyncValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.asyncValidators,\n          this.asyncValidators.get(controlId),\n        ),\n        false,\n      );\n\n      Reflect.set(form, controlId, formControls);\n    }\n  }\n\n  private buildArrayGroups(\n    builderFormState: any,\n    form: FormDefinition & Record<string, Function>,\n    controls: Record<string, AbstractControl>,\n  ): void {\n    for (const [ controlId, options ] of this.formArrayGroups.entries()) {\n      const formState = this.coerceToArrayFormState(\n        controlId,\n        [],\n        builderFormState,\n        options.state,\n      );\n\n      assertIsArray(formState);\n\n      const formGroupBuilder = new RxapFormBuilder(\n        options.definition,\n        this.injector,\n        this.providers,\n      );\n\n      // TODO : add the formGroupOptions property. To definition of the form group options\n      const formGroupDefinitions: any = formState.map((fs, index) =>\n        formGroupBuilder.build(fs, { id: index.toFixed(0) }),\n      );\n\n      const manager = new FormArrayControlManager(form, controlId);\n\n      const formArray =\n        (formGroupDefinitions.rxapFormArray =\n          controls[controlId] =\n            new RxapFormArray(\n              formGroupDefinitions.map(\n                (fgd: FormDefinition) => fgd.rxapFormGroup,\n              ),\n              {\n                ...options,\n                builder: formGroupBuilder.build.bind(formGroupBuilder) as any,\n                controlId,\n                validators: [],\n                asyncValidators: [],\n                controlInsertedFn: manager.inserted.bind(manager),\n                controlRemovedFn: manager.removed.bind(manager),\n              },\n            ));\n\n      // TODO : add support for injectable validators\n\n      formArray.setValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.validators,\n          this.validators.get(controlId),\n        ),\n        false,\n      );\n      formArray.setAsyncValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.asyncValidators,\n          this.asyncValidators.get(controlId),\n        ),\n        false,\n      );\n\n      Reflect.set(form, controlId, formGroupDefinitions);\n    }\n  }\n\n  private buildGroups(\n    builderFormState: any,\n    form: Record<string, Function>,\n    controls: Record<string, AbstractControl>,\n  ): void {\n    for (const [ controlId, options ] of this.formGroups.entries()) {\n      const formState = this.coerceToGroupFormState(\n        controlId,\n        {},\n        builderFormState,\n        options.state,\n      );\n\n      assertIsObject(formState);\n\n      const formGroupDefinition: FormDefinition = new RxapFormBuilder(\n        options.definition,\n        this.injector,\n        this.providers,\n      ).build(formState, {\n        ...options,\n        validators: [],\n        asyncValidators: [],\n      });\n\n      controls[controlId] = formGroupDefinition.rxapFormGroup!;\n\n      const formGroup = formGroupDefinition.rxapFormGroup;\n\n      // TODO : add support for injectable validators\n\n      formGroup.setValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.validators,\n          this.validators.get(controlId),\n        ),\n        false,\n      );\n      formGroup.setAsyncValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.asyncValidators,\n          this.asyncValidators.get(controlId),\n        ),\n        false,\n      );\n\n      // set the form group definition instance to the form definition instance\n      Reflect.set(form, controlId, formGroupDefinition);\n    }\n  }\n\n  private buildControls(\n    builderFormState: any,\n    form: Record<string, Function>,\n    controls: Record<string, AbstractControl>,\n  ): void {\n    for (const [ controlId, options ] of this.formControls.entries()) {\n      const control = (controls[controlId] = new (options.controlType ??\n        RxapFormControl)(\n        this.coerceToControlFormState(\n          controlId,\n          null,\n          builderFormState,\n          options.state,\n        ),\n        {\n          ...options,\n          controlId,\n          validators: [],\n          asyncValidators: [],\n        },\n      ));\n\n      const injectValidators: ValidatorFn[] = [];\n      const injectAsyncValidators: AsyncValidatorFn[] = [];\n\n      for (const injectValidator of options.injectValidators ?? []) {\n        const injectableValidator = this.injector.get(injectValidator);\n        if (injectableValidator.validate) {\n          injectValidators.push(\n            injectableValidator.validate.bind(injectableValidator),\n          );\n        }\n        if (injectableValidator.asyncValidate) {\n          injectAsyncValidators.push(\n            injectableValidator.asyncValidate.bind(injectableValidator),\n          );\n        }\n      }\n\n      control.setValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.validators,\n          this.validators.get(controlId),\n          injectValidators,\n        ),\n        false,\n      );\n      control.setAsyncValidators(\n        this.coerceToValidatorArray(\n          form,\n          options.asyncValidators,\n          this.asyncValidators.get(controlId),\n          injectAsyncValidators,\n        ),\n        false,\n      );\n\n      // register all control on change function with the form control\n      this.coerceToFnArray<ChangeFn>(\n        form,\n        this.controlChanges.get(controlId),\n      ).forEach((changeFn) => control.registerOnChange(changeFn));\n\n      // register all control on set value function with the form control\n      this.coerceToFnArray<SetValueFn>(\n        form,\n        this.controlSetValue.get(controlId),\n      ).forEach((setValueFn) => control.registerOnSetValue(setValueFn));\n\n      if (Array.isArray(options.validators)) {\n        if (\n          options.validators.includes(Validators.required) ||\n          options.validators.includes(Validators.requiredTrue)\n        ) {\n          Reflect.set(control, 'hasRequiredValidator', true);\n        }\n      }\n\n      // set the form control instance to the form definition instance\n      Reflect.set(form, controlId, control);\n    }\n  }\n\n  /**\n   * Coerce to a function array.\n   *\n   * @param form the current form definition instance\n   * @param methodKeys A set of propertyKeys that points to form\n   * definition instance methods\n   */\n  private coerceToFnArray<T extends Function>(\n    form: Record<string, Function>,\n    methodKeys?: Iterable<string | { propertyKey: string }>,\n  ): Array<T> {\n    const changes: Array<T> = [];\n\n    if (methodKeys) {\n      for (const propertyKeyOrOptions of methodKeys) {\n        const propertyKey =\n          typeof propertyKeyOrOptions === 'string'\n            ? propertyKeyOrOptions\n            : propertyKeyOrOptions.propertyKey;\n        assertIsFunction(form[propertyKey]);\n        changes.push((form[propertyKey] as T).bind(form));\n      }\n    }\n\n    return changes;\n  }\n\n  /**\n   * Coerce to a validator function array.\n   *\n   * @param form the current form definition instance\n   * @param optionsValidators The options validator functions\n   * @param validatorMethodKeys A set of propertyKeys that points to form\n   * definition instance methods\n   * @param injectValidators Injected validator functions\n   */\n  private coerceToValidatorArray<VF extends ValidatorFn | AsyncValidatorFn>(\n    form: Record<string, Function>,\n    optionsValidators?: Array<VF> | VF | null,\n    validatorMethodKeys?: Set<string>,\n    injectValidators?: Array<VF>,\n  ): Array<VF> {\n    const validators: Array<VF> = (\n      optionsValidators ? Array.isArray(optionsValidators) ? optionsValidators : [ optionsValidators ] : []\n    ).slice();\n\n    if (validatorMethodKeys) {\n      validatorMethodKeys.forEach((propertyKey) => {\n        assertIsFunction(form[propertyKey]);\n\n        validators.push(form[propertyKey].bind(form) as VF);\n      });\n    }\n\n    if (injectValidators) {\n      validators.push(...injectValidators);\n    }\n\n    return validators;\n  }\n\n  /**\n   * Coerce to the form state for the specified controlId. If none form state is\n   * found the default form state will be returned.\n   *\n   * @param controlId A control id\n   * @param defaultFormState The default form state\n   * @param builderFormState The form state provides as build state parameter\n   * @param optionsFormState The form state set by the decorator in the form definition\n   */\n  private coerceToControlFormState(\n    controlId: string,\n    defaultFormState: any,\n    builderFormState: Record<string, any>,\n    optionsFormState?: any,\n  ): any {\n    let formState = defaultFormState;\n\n    if (builderFormState && builderFormState[controlId] !== undefined) {\n      formState = builderFormState[controlId];\n    } else if (optionsFormState !== undefined) {\n      formState = optionsFormState ?? null;\n    }\n\n    if (typeof formState === 'function') {\n      formState = formState();\n    }\n\n    return formState;\n  }\n\n  /**\n   * Coerce to the form state for the specified controlId. If none form state is\n   * found the default form state will be returned.\n   *\n   * The difference to the method coerceToControlFormState is that null will be\n   * handled as undefined and the defaultFormState is used\n   *\n   * @param controlId A control id\n   * @param defaultFormState The default form state\n   * @param builderFormState The form state provides as build state parameter\n   * @param optionsFormState The form state set by the decorator in the form definition\n   */\n  private coerceToGroupFormState(\n    controlId: string,\n    defaultFormState: any,\n    builderFormState: Record<string, any>,\n    optionsFormState?: any,\n  ): any {\n    let formState = defaultFormState;\n\n    if (builderFormState && builderFormState[controlId]) {\n      formState = builderFormState[controlId];\n    } else if (optionsFormState) {\n      formState = optionsFormState;\n    }\n\n    if (typeof formState === 'function') {\n      formState = formState();\n      if (!formState) {\n        throw new Error(`The form state function for the form group '${ controlId }' returns a empty value (null/undefined)`);\n      }\n      if (typeof formState !== 'object') {\n        throw new Error(`The form state function for the form group '${ controlId }' returns a non object like value instead '${ typeof formState }'`);\n      }\n    }\n\n    return formState;\n  }\n\n  /**\n   * Coerce to the form state for the specified controlId. If none form state is\n   * found the default form state will be returned.\n   *\n   * The difference to the method coerceToControlFormState is that null will be\n   * handled as undefined and the defaultFormState is used\n   *\n   * @param controlId A control id\n   * @param defaultFormState The default form state\n   * @param builderFormState The form state provides as build state parameter\n   * @param optionsFormState The form state set by the decorator in the form definition\n   */\n  private coerceToArrayFormState(\n    controlId: string,\n    defaultFormState: any[] | (() => any[]),\n    builderFormState: Record<string, any>,\n    optionsFormState?: any,\n  ): any[] {\n    let formState = defaultFormState;\n\n    if (builderFormState && builderFormState[controlId] && Array.isArray(builderFormState[controlId])) {\n      formState = builderFormState[controlId];\n    } else if (optionsFormState && Array.isArray(optionsFormState)) {\n      formState = optionsFormState;\n    }\n\n    if (typeof formState === 'function') {\n      formState = formState();\n      if (!formState) {\n        throw new Error(`The form state function for the form array '${ controlId }' returns a empty value (null/undefined)`);\n      }\n      if (!Array.isArray(formState)) {\n        throw new Error(`The form state function for the form array '${ controlId }' returns a non array like value instead '${ typeof formState }'`);\n      }\n    }\n\n    return formState;\n  }\n\n  private extractControlChanges(): Map<string, Set<string>> {\n    return (\n      getMetadata(MetadataKeys.CONTROL_CHANGES, this.definition.prototype) ??\n      new Map<string, Set<string>>()\n    );\n  }\n\n  private extractControlSetValue(): Map<string, Set<ControlSetValueOptions>> {\n    return (\n      getMetadata(MetadataKeys.CONTROL_SET_VALUE, this.definition.prototype) ??\n      new Map<string, Set<ControlSetValueOptions>>()\n    );\n  }\n\n  private extractValidators(): Map<string, Set<string>> {\n    return (\n      getMetadata(MetadataKeys.CONTROL_VALIDATORS, this.definition.prototype) ??\n      new Map<string, Set<string>>()\n    );\n  }\n\n  private extractAsyncValidators(): Map<string, Set<string>> {\n    return (\n      getMetadata(\n        MetadataKeys.CONTROL_ASYNC_VALIDATORS,\n        this.definition.prototype,\n      ) ?? new Map<string, Set<string>>()\n    );\n  }\n\n  private extractArrayGroups(): Map<\n    string,\n    RxapAbstractControlOptionsWithDefinition\n  > {\n    return (\n      getMetadata(MetadataKeys.FORM_ARRAY_GROUPS, this.definition.prototype) ??\n      new Map<string, RxapAbstractControlOptionsWithDefinition>()\n    );\n  }\n\n  private extractArrayControls(): Map<string, RxapAbstractControlOptions> {\n    return (\n      getMetadata(\n        MetadataKeys.FORM_ARRAY_CONTROLS,\n        this.definition.prototype,\n      ) ?? new Map<string, RxapAbstractControlOptions>()\n    );\n  }\n\n  private extractGroups(): Map<\n    string,\n    RxapAbstractControlOptionsWithDefinition\n  > {\n    return (\n      getMetadata(MetadataKeys.FORM_GROUPS, this.definition.prototype) ??\n      new Map<string, RxapAbstractControlOptionsWithDefinition>()\n    );\n  }\n\n  private extractControls(): Map<string, RxapAbstractControlOptions> {\n    return (\n      getMetadata(MetadataKeys.FORM_CONTROLS, this.definition.prototype) ??\n      new Map<string, RxapAbstractControlOptions>()\n    );\n  }\n\n  private extractFormOptions(): FormDefinitionMetadata {\n    const options = GetDefinitionMetadata(this.definition);\n    if (!options || !options['id']) {\n      throw new Error('Ensure that the @UseForm decorator is used.');\n    }\n    if (!options['providers']) {\n      options['providers'] = [];\n    }\n    return options;\n  }\n}\n","import {\n  ChangeDetectorRef,\n  Directive,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  Inject,\n  input,\n  Input,\n  isDevMode,\n  model,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Optional,\n  Output,\n  SimpleChanges,\n  SkipSelf,\n} from '@angular/core';\nimport {\n  ControlContainer,\n  FormGroupDirective,\n} from '@angular/forms';\nimport { ToggleSubject } from '@rxap/rxjs';\nimport { LoadingIndicatorService } from '@rxap/services';\nimport {\n  clone,\n  isObject,\n  isPromise,\n} from '@rxap/utilities';\nimport {\n  BehaviorSubject,\n  Subscription,\n} from 'rxjs';\nimport {\n  debounceTime,\n  filter,\n  tap,\n} from 'rxjs/operators';\nimport { RxapFormBuilder } from '../form-builder';\nimport { RxapFormGroup } from '../form-group';\nimport { FormDefinition } from '../model';\nimport {\n  RXAP_FORM_CONTEXT,\n  RXAP_FORM_INITIAL_STATE,\n} from '../tokens';\nimport {\n  FormLoadFailedMethod,\n  FormLoadMethod,\n  FormLoadSuccessfulMethod,\n  FormSubmitFailedMethod,\n  FormSubmitMethod,\n  FormSubmitSuccessfulMethod,\n} from './models';\nimport {\n  RXAP_FORM_DEFINITION,\n  RXAP_FORM_DEFINITION_BUILDER,\n  RXAP_FORM_LOAD_FAILED_METHOD,\n  RXAP_FORM_LOAD_METHOD,\n  RXAP_FORM_LOAD_SUCCESSFUL_METHOD,\n  RXAP_FORM_SUBMIT_FAILED_METHOD,\n  RXAP_FORM_SUBMIT_METHOD,\n  RXAP_FORM_SUBMIT_SUCCESSFUL_METHOD,\n} from './tokens';\n\n@Directive({\n  selector: 'form[rxapForm]:not([formGroup]):not([ngForm]),rxap-form,form[rxapForm]',\n  providers: [\n    {\n      provide: ControlContainer,\n      // ignore coverage\n      useExisting: forwardRef(() => FormDirective),\n    },\n    // region form provider clear\n    // form provider that are directly associated with the current form\n    // are cleared to prevent that inner forms can access this providers\n    // Example: The parent form has a submit method provider and the inner should\n    // not have a submit method provider. If the parent submit method provider is\n    // not cleared then the inner form uses the parent submit method provider on\n    // submit\n    {\n      provide: RXAP_FORM_SUBMIT_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_LOAD_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_LOAD_FAILED_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_LOAD_SUCCESSFUL_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_SUBMIT_FAILED_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_SUBMIT_SUCCESSFUL_METHOD,\n      useValue: null,\n    },\n    {\n      provide: RXAP_FORM_DEFINITION_BUILDER,\n      useValue: null,\n    },\n    // endregion\n  ],\n\n  host: { '(reset)': 'onReset()' },\n  // eslint-disable-next-line @angular-eslint/no-outputs-metadata-property\n  outputs: [ 'ngSubmit' ],\n  exportAs: 'rxapForm',\n  standalone: true,\n})\nexport class FormDirective<T = any>\n  extends FormGroupDirective\n  implements OnInit, OnChanges, OnDestroy {\n  public override form!: RxapFormGroup<T>;\n\n  public readonly initial = model<T | null>(null);\n\n  public readonly context = model<unknown | null>(null);\n\n  /**\n   * Emits when the submit method is executed without errors. The result of the\n   * submit method is passed as event object.\n   *\n   * If no submit method is defined then emit after the submit button\n   * is clicked.\n   */\n  @Output()\n  public rxapSubmit = new EventEmitter();\n\n  @Output()\n  public invalidSubmit = new EventEmitter<Record<string, any>>();\n\n  // eslint-disable-next-line @angular-eslint/no-output-rename\n  @Output('submitSuccessful')\n  public submitSuccessful$ = new EventEmitter();\n\n  @HostBinding('class.rxap-submitting')\n  public get submitting(): boolean {\n    return this.submitting$.value;\n  }\n\n  @HostBinding('class.rxap-submit-error')\n  public get submitError(): Error | null {\n    return this.submitError$.value;\n  }\n\n  @HostBinding('class.rxap-loading')\n  public get loading(): boolean {\n    return this.loading$.value;\n  }\n\n  @HostBinding('class.rxap-loaded')\n  public get loaded(): boolean {\n    return this.loaded$.value;\n  }\n\n  @HostBinding('class.rxap-loading-error')\n  public get loadingError(): Error | null {\n    return this.loadingError$.value;\n  }\n\n  @Input('rxapForm')\n  public set useFormDefinition(value: FormDefinition<T> | '') {\n    if (value) {\n      this._formDefinition = value as any;\n      this.form = value.rxapFormGroup;\n    }\n  }\n\n  public get formDefinition(): FormDefinition<T> {\n    return this._formDefinition;\n  }\n\n  public readonly submitting$ = new ToggleSubject();\n  public readonly submitError$ = new BehaviorSubject<Error | null>(null);\n  public readonly loading$ = new ToggleSubject();\n  public readonly loaded$ = new ToggleSubject();\n  public readonly loadingError$ = new BehaviorSubject<Error | null>(null);\n\n  protected _formDefinition!: FormDefinition<T>;\n\n  @Input()\n  public submitMethod: FormSubmitMethod<any> | null = null;\n\n  @Input()\n  public loadMethod: FormLoadMethod | null = null;\n\n  @Input()\n  public loadFailedMethod: FormLoadFailedMethod | null = null;\n\n  @Input()\n  public loadSuccessfulMethod: FormLoadSuccessfulMethod | null = null;\n\n  @Input()\n  public submitFailedMethod: FormSubmitFailedMethod | null = null;\n\n  @Input()\n  public submitSuccessfulMethod: FormSubmitSuccessfulMethod | null = null;\n\n  private _autoSubmitSubscription = new Subscription();\n\n  constructor(\n    @Inject(ChangeDetectorRef) public readonly cdr: ChangeDetectorRef,\n    @Optional()\n    @Inject(RXAP_FORM_DEFINITION)\n    formDefinition: FormDefinition | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_SUBMIT_METHOD)\n    submitMethod: FormSubmitMethod<any> | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_LOAD_METHOD)\n    loadMethod: FormLoadMethod | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_LOAD_FAILED_METHOD)\n    loadFailedMethod: FormLoadFailedMethod | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_LOAD_SUCCESSFUL_METHOD)\n    loadSuccessfulMethod: FormLoadSuccessfulMethod | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_SUBMIT_FAILED_METHOD)\n    submitFailedMethod: FormSubmitFailedMethod | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_SUBMIT_SUCCESSFUL_METHOD)\n    submitSuccessfulMethod: FormSubmitSuccessfulMethod | null = null,\n    // skip self, bc the token is set to null\n    @SkipSelf()\n    @Optional()\n    @Inject(RXAP_FORM_DEFINITION_BUILDER)\n    protected readonly formDefinitionBuilder: RxapFormBuilder | null = null,\n    @Optional()\n    @Inject(LoadingIndicatorService)\n    protected readonly loadingIndicatorService: LoadingIndicatorService | null = null,\n    @Optional()\n    @Inject(RXAP_FORM_CONTEXT)\n    context: unknown = null,\n    @Optional()\n    @Inject(RXAP_FORM_INITIAL_STATE)\n    initial: T | null = null,\n  ) {\n    super([], []);\n    this.submitMethod = submitMethod ?? this.submitMethod;\n    this.loadMethod = loadMethod ?? this.loadMethod;\n    this.loadFailedMethod = loadFailedMethod ?? this.loadFailedMethod;\n    this.loadSuccessfulMethod = loadSuccessfulMethod ?? this.loadSuccessfulMethod;\n    this.submitFailedMethod = submitFailedMethod ?? this.submitFailedMethod;\n    this.submitSuccessfulMethod = submitSuccessfulMethod ?? this.submitSuccessfulMethod;\n    if (!formDefinition && formDefinitionBuilder) {\n      formDefinition = formDefinitionBuilder.build<FormDefinition>();\n    }\n    if (formDefinition) {\n      this._formDefinition = formDefinition;\n      this.form = formDefinition.rxapFormGroup;\n    }\n    this.loadingIndicatorService?.attachLoading(this.loading$);\n    this.loadingIndicatorService?.attachLoading(this.submitting$);\n    if (context) {\n      this.context.set(context);\n    }\n    if (initial && typeof initial === 'object' && !Array.isArray(initial)) {\n      this.initial.set(initial);\n    }\n  }\n\n  public override ngOnChanges(changes: SimpleChanges) {\n    super.ngOnChanges(changes);\n\n    const formChange = changes['form'];\n\n    if (formChange && !formChange.firstChange) {\n      this.loadInitialState(formChange.currentValue);\n    }\n  }\n\n  public ngOnInit() {\n    if (!this._formDefinition) {\n      // TODO : replace with rxap error\n      throw new Error('The form definition instance is not defined');\n    }\n    if (!this.form) {\n      // TODO : replace with rxap error\n      throw new Error('The form instance is not defined');\n    }\n    this.loadInitialState(this.form);\n\n    function HasNgOnInitMethod(obj: any): obj is OnInit {\n      return obj && typeof obj.ngOnInit === 'function';\n    }\n\n    if (HasNgOnInitMethod(this._formDefinition)) {\n      this._formDefinition.ngOnInit();\n    }\n\n    if (this._formDefinition.rxapMetadata.autoSubmit) {\n      const debounce =\n        typeof this._formDefinition.rxapMetadata.autoSubmit === 'number'\n          ? this._formDefinition.rxapMetadata.autoSubmit\n          : 5000;\n      this._autoSubmitSubscription = this\n        .form\n        .valueChanges\n        .pipe(\n          debounceTime(debounce),\n          filter(() => this.form.valid),\n          tap((value) => {\n              if (isDevMode()) {\n                console.debug(\n                  `Auto submit form '${ this._formDefinition.rxapMetadata.id }'`,\n                  value,\n                );\n              }\n            },\n          ),\n          tap(() => this.submit()),\n        )\n        .subscribe();\n    }\n  }\n\n  public override onSubmit($event: Event): boolean {\n    $event.preventDefault();\n    super.onSubmit($event);\n    if (this.form.valid) {\n      this.submit();\n    } else {\n\n      // eslint-disable-next-line no-inner-declarations\n      function reduceErrors(control: any, errors: Record<string, any> = {}): Record<string, any> {\n\n        if (control.invalid) {\n          if (control.controls) {\n            if (Array.isArray(control.controls)) {\n              const errorList = [];\n              for (const item of control.controls) {\n                errorList.push(reduceErrors(item));\n              }\n              errors[control.controlId] = errorList;\n            } else {\n              const innerErrors = {};\n              for (const child of Object.values(control.controls)) {\n                reduceErrors(child, innerErrors);\n              }\n              errors[control.controlId] = innerErrors;\n            }\n          } else {\n            if (control.errors) {\n              errors[control.controlId] = control.errors;\n            }\n          }\n        }\n\n        return errors;\n      }\n\n      if (isDevMode()) {\n        console.log(\n          'Form submit is not valid for: ' + this.form.controlId,\n          this.form.errors,\n        );\n\n        // eslint-disable-next-line no-inner-declarations\n        function printErrorControls(control: any) {\n          if (!control.valid) {\n            console.group(control.controlId);\n            if (control.controls) {\n              if (Array.isArray(control.controls)) {\n                for (let i = 0; i < control.controls.length; i++) {\n                  const child = control.controls[i];\n                  if (!child.valid) {\n                    console.group(`index: ${ i }`);\n                    printErrorControls(child);\n                    console.groupEnd();\n                  }\n                }\n              } else {\n                for (const child of Object.values(control.controls)) {\n                  printErrorControls(child);\n                }\n              }\n            } else {\n              if (control.errors) {\n                for (const [ key, value ] of Object.entries(control.errors)) {\n                  console.group(key);\n                  console.log(value);\n                  console.groupEnd();\n                }\n              }\n              console.log('value: ', control.value);\n            }\n            console.groupEnd();\n          }\n        }\n\n        printErrorControls(this.form);\n      }\n      this.invalidSubmit.emit(reduceErrors(this.form));\n    }\n\n    return false;\n  }\n\n  protected loadInitialState(form: RxapFormGroup): void {\n    const initial = this.initial();\n    if (initial && typeof initial === 'object' && !Array.isArray(initial)) {\n      if (isDevMode()) {\n        console.log('use the value from input initial');\n      }\n      form.patchValue(initial);\n    } else {\n      if (this.loadMethod) {\n        this.loading$.enable();\n\n        try {\n          const resultOrPromise = this.loadMethod.call({ context: this.context(), initial: this.initial() });\n          if (isPromise(resultOrPromise)) {\n            resultOrPromise\n              .then((value) => {\n                form.patchValue(value);\n                this.loaded$.enable();\n                this.loadSuccessful(value);\n              })\n              .catch((error) => {\n                this.loadingError$.next(error);\n                this.loadFailed(error);\n              })\n              .finally(() => {\n                this.loading$.disable();\n                this.cdr.detectChanges();\n              });\n          } else if (isObject(resultOrPromise)) {\n            form.patchValue(resultOrPromise);\n            this.loaded$.enable();\n            this.loadSuccessful(resultOrPromise);\n            this.loading$.disable();\n          }\n        } catch (error: any) {\n          this.loaded$.disable();\n          this.loadingError$.next(error);\n          this.loadFailed(error);\n          this.loading$.disable();\n        }\n      } else {\n        if (isDevMode()) {\n          console.warn(\n            'The form loading method is not defined for: ' + this.form.controlId,\n          );\n        }\n        this.loaded$.enable();\n      }\n    }\n  }\n\n  protected loadSuccessful(value: any) {\n    if (this.loadSuccessfulMethod) {\n      this.loadSuccessfulMethod.call(value);\n    } else if (isDevMode()) {\n      console.warn(\n        'The load successful is not defined for: ' + this.form.controlId,\n      );\n    }\n  }\n\n  protected loadFailed(error: Error) {\n    console.debug('Load Error:', error);\n    console.error('Load Error:', error.message);\n    if (this.loadFailedMethod) {\n      this.loadFailedMethod?.call(error);\n    } else if (isDevMode()) {\n      console.warn('The form loading failed for: ' + this.form.controlId);\n    }\n  }\n\n  protected getSubmitValue(): T {\n    let value: T = undefined as any;\n\n    if (typeof this._formDefinition['getSubmitValue'] === 'function') {\n      value = this._formDefinition.getSubmitValue();\n    } else if (typeof this._formDefinition['toJSON'] === 'function') {\n      value = this._formDefinition.toJSON();\n    }\n\n    value = value ?? clone(this.form.value);\n\n    return value;\n  }\n\n  protected submit() {\n    const value = this.getSubmitValue();\n    if (this.submitMethod) {\n      Reflect.set(this, 'submitted', false);\n      this.submitting$.enable();\n      this.submitError$.next(null);\n      try {\n        const resultOrPromise = this.submitMethod.call(value, this.context(), this.initial());\n        if (isPromise(resultOrPromise)) {\n          resultOrPromise\n            .then((result) => {\n              Reflect.set(this, 'submitted', true);\n              this.rxapSubmit.emit(result);\n              this.submitSuccessful(result);\n            })\n            .catch((error) => {\n              this.submitError$.next(error);\n              this.submitFailed(error);\n            })\n            .finally(() => {\n              this.submitting$.disable();\n              this.cdr.detectChanges();\n            });\n        } else {\n          Reflect.set(this, 'submitted', true);\n          this.rxapSubmit.emit(resultOrPromise);\n          this.submitSuccessful(resultOrPromise);\n          this.submitting$.disable();\n        }\n      } catch (error: any) {\n        this.submitting$.disable();\n        this.submitError$.next(error);\n        this.submitFailed(error);\n      }\n    } else {\n      if (isDevMode()) {\n        console.warn(\n          'The form submit method is not defined for: ' + this.form.controlId,\n        );\n      }\n\n      this.rxapSubmit.emit(value);\n      this.submitSuccessful(value);\n    }\n  }\n\n  protected submitFailed(error: Error) {\n    console.debug('Submit Error:', error);\n    console.error('Submit Error:', error.message);\n    if (this.submitFailedMethod) {\n      this.submitFailedMethod.call(error);\n    } else if (isDevMode()) {\n      console.warn(\n        'The form submit failed method is not defined for: ' +\n        this.form.controlId,\n      );\n    }\n  }\n\n  protected submitSuccessful(value: any) {\n    this.submitSuccessful$.next(value);\n    if (this.submitSuccessfulMethod) {\n      this.submitSuccessfulMethod.call(value);\n    } else if (isDevMode()) {\n      console.warn(\n        'The form submit successful method is not defined for: ' +\n        this.form.controlId,\n      );\n    }\n  }\n\n  public override ngOnDestroy() {\n    super.ngOnDestroy();\n    this._autoSubmitSubscription?.unsubscribe();\n\n    function HasNgOnDestroyMethod(obj: any): obj is OnDestroy {\n      return obj && typeof obj.ngOnDestroy === 'function';\n    }\n\n    if (HasNgOnDestroyMethod(this._formDefinition)) {\n      this._formDefinition.ngOnDestroy();\n    }\n\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  tap,\n} from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormLoaded]',\n  standalone: true,\n})\nexport class FormLoadedDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<void>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.loaded$.pipe(\n      distinctUntilChanged(),\n      tap(loading => {\n        this.viewContainerRef.clear();\n        if (loading) {\n          this.viewContainerRef.createEmbeddedView(this.template);\n        }\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormLoadingError]',\n  standalone: true,\n})\nexport class FormLoadingErrorDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<{ $implicit: Error }>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.loadingError$.pipe(\n      tap(error => {\n        this.viewContainerRef.clear();\n        if (error !== null) {\n          this.viewContainerRef.createEmbeddedView(this.template, { $implicit: error });\n        }\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  tap,\n} from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormLoading]',\n  standalone: true,\n})\nexport class FormLoadingDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<void>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.loading$.pipe(\n      distinctUntilChanged(),\n      tap(loading => {\n        this.viewContainerRef.clear();\n        if (loading) {\n          this.viewContainerRef.createEmbeddedView(this.template);\n        }\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  Directive,\n  HostBinding,\n  Inject,\n  Input,\n} from '@angular/core';\nimport { ConfirmClick } from '@rxap/directives';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormReset]',\n  host: {\n    '(click)': 'onClick()',\n    '(confirmed)': 'onConfirm()',\n  },\n  standalone: true,\n})\nexport class FormResetDirective extends ConfirmClick {\n\n  @HostBinding('type')\n  @Input()\n  public type = 'button';\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n  ) {\n    super();\n  }\n\n  protected execute() {\n    this.formDirective.reset();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormSubmitFailed]',\n  standalone: true,\n})\nexport class FormSubmitFailedDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<{ $implicit: Error }>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.submitError$.pipe(\n      tap(error => {\n        this.viewContainerRef.clear();\n        if (error !== null) {\n          this.viewContainerRef.createEmbeddedView(this.template, { $implicit: error });\n        }\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormSubmitInvalid]',\n  standalone: true,\n})\nexport class FormSubmitInvalidDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<{ $implicit: any }>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.invalidSubmit.pipe(\n      tap(result => {\n        this.viewContainerRef.clear();\n        this.viewContainerRef.createEmbeddedView(this.template, { $implicit: result });\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { tap } from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormSubmitSuccessful]',\n  standalone: true,\n})\nexport class FormSubmitSuccessfulDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<{ $implicit: any }>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.submitSuccessful$.pipe(\n      tap(result => {\n        this.viewContainerRef.clear();\n        this.viewContainerRef.createEmbeddedView(this.template, { $implicit: result });\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  computed,\n  Directive,\n  Inject,\n  input,\n  OnDestroy,\n  Optional,\n  output,\n} from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { Router } from '@angular/router';\nimport { ConfirmClick } from '@rxap/directives';\nimport {\n  clone,\n  coerceBoolean,\n} from '@rxap/utilities';\nimport { Subscription } from 'rxjs';\nimport {\n  take,\n  tap,\n} from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormSubmit]',\n\n  host: {\n    '(click)': 'onClick()',\n    '(confirmed)': 'onConfirm()',\n    '[disabled]': 'disabled()',\n    '[type]': 'type()',\n  },\n  standalone: true,\n  exportAs: 'rxapFormSubmit',\n})\nexport class FormSubmitDirective extends ConfirmClick implements OnDestroy {\n\n  public type = input<'button' | 'submit' | 'reset'>('button');\n\n  resetAfterSubmit = input<boolean | '', boolean>(false, { transform: coerceBoolean });\n\n  public navigateAfterSubmit = input<string[]>();\n\n  public afterSubmit = output<any>();\n\n  disableWhileSubmitting = input(true);\n\n  submitting = toSignal(this.formDirective.submitting$, { initialValue: false });\n\n  disabled = computed(() => this.disableWhileSubmitting() && this.submitting())\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Optional()\n    @Inject(Router)\n    private readonly router: Router | null = null,\n  ) {\n    super();\n  }\n\n  protected execute() {\n    this.formDirective.form.markAllAsDirty();\n    this.formDirective.form.markAllAsTouched();\n    this.formDirective.cdr.markForCheck();\n    this.subscription = this.formDirective.rxapSubmit.pipe(\n      take(1),\n      tap(value => {\n        const clonedValue = clone(value);\n        this.afterSubmit.emit(clonedValue);\n        if (this.resetAfterSubmit()) {\n          this.formDirective.reset();\n        }\n        const navigateAfterSubmit = this.navigateAfterSubmit();\n        if (Array.isArray(navigateAfterSubmit)) {\n\n          if (!this.router) {\n            throw new Error('Could not resolve the router!');\n          }\n\n          return this.router.navigate(navigateAfterSubmit);\n        }\n        return Promise.resolve();\n      }),\n    ).subscribe();\n    this.formDirective.onSubmit(new Event('submit'));\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Inject,\n  OnDestroy,\n  TemplateRef,\n  ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n  distinctUntilChanged,\n  tap,\n} from 'rxjs/operators';\nimport { FormDirective } from './form.directive';\n\n@Directive({\n  selector: '[rxapFormSubmitting]',\n  standalone: true,\n})\nexport class FormSubmittingDirective implements AfterViewInit, OnDestroy {\n\n  private subscription?: Subscription;\n\n  constructor(\n    @Inject(FormDirective) private readonly formDirective: FormDirective,\n    @Inject(TemplateRef) private readonly template: TemplateRef<void>,\n    @Inject(ViewContainerRef) private readonly viewContainerRef: ViewContainerRef,\n  ) {\n  }\n\n  public ngAfterViewInit() {\n    this.subscription = this.formDirective.submitting$.pipe(\n      distinctUntilChanged(),\n      tap(loading => {\n        this.viewContainerRef.clear();\n        if (loading) {\n          this.viewContainerRef.createEmbeddedView(this.template);\n        }\n      }),\n    ).subscribe();\n  }\n\n  public ngOnDestroy() {\n    this.subscription?.unsubscribe();\n  }\n\n}\n","import { Directive } from '@angular/core';\nimport { ControlContainer } from '@angular/forms';\n\n@Directive({\n  // eslint-disable-next-line @angular-eslint/directive-selector\n  selector: '[formControlName][parentControlContainer],[formControlGroup][parentControlContainer]',\n  providers: [\n    {\n      provide: ControlContainer,\n      useExisting: ControlContainer,\n    },\n  ],\n  standalone: true,\n})\nexport class ParentControlContainerDirective {\n}\n","import { NgModule } from '@angular/core';\nimport { FormControlErrorDirective } from './form-control-error.directive';\nimport { FormControlMarkDirtyDirective } from './form-control-mark-dirty.directive';\nimport { FormControlMarkPristineDirective } from './form-control-mark-pristine.directive';\nimport { FormControlMarkTouchedDirective } from './form-control-mark-touched.directive';\nimport { FormControlMarkUntouchedDirective } from './form-control-mark-untouched.directive';\nimport { FormControlNameDirective } from './form-control-name.directive';\nimport { FormGroupNameDirective } from './form-group-name.directive';\nimport { FormLoadedDirective } from './form-loaded.directive';\nimport { FormLoadingErrorDirective } from './form-loading-error.directive';\nimport { FormLoadingDirective } from './form-loading.directive';\nimport { FormSubmitFailedDirective } from './form-submit-failed.directive';\nimport { FormSubmitInvalidDirective } from './form-submit-invalid.directive';\nimport { FormSubmitSuccessfulDirective } from './form-submit-successful.directive';\nimport { FormSubmitDirective } from './form-submit.directive';\nimport { FormSubmittingDirective } from './form-submitting.directive';\nimport { FormDirective } from './form.directive';\nimport { ParentControlContainerDirective } from './parent-control-container.directive';\n\n\n@NgModule({\n  imports: [\n    FormDirective,\n    FormSubmitFailedDirective,\n    FormLoadingDirective,\n    FormSubmittingDirective,\n    FormLoadingErrorDirective,\n    FormLoadedDirective,\n    FormControlErrorDirective,\n    FormControlMarkDirtyDirective,\n    FormControlMarkTouchedDirective,\n    FormControlMarkUntouchedDirective,\n    FormControlMarkPristineDirective,\n    FormSubmitDirective,\n    FormGroupNameDirective,\n    FormControlNameDirective,\n    ParentControlContainerDirective,\n    FormSubmitSuccessfulDirective,\n    FormSubmitInvalidDirective,\n  ],\n  exports: [\n    FormDirective,\n    FormSubmitFailedDirective,\n    FormLoadingDirective,\n    FormSubmittingDirective,\n    FormLoadingErrorDirective,\n    FormLoadedDirective,\n    FormControlErrorDirective,\n    FormControlMarkDirtyDirective,\n    FormControlMarkTouchedDirective,\n    FormControlMarkUntouchedDirective,\n    FormControlMarkPristineDirective,\n    FormSubmitDirective,\n    FormGroupNameDirective,\n    FormControlNameDirective,\n    ParentControlContainerDirective,\n    FormSubmitSuccessfulDirective,\n    FormSubmitInvalidDirective,\n  ],\n})\nexport class RxapFormsModule {\n}\n","import {\n  Method,\n  MethodWithParameters,\n} from '@rxap/pattern';\n\nexport interface FormSubmitMethod<FormSate = any, Context = any, Initial = any> extends MethodWithParameters<any, FormSate> {\n  call(parameters: FormSate, context?: Context | null, initial?: Initial | null): any | Promise<any>;\n}\n\nexport interface FormLoadMethod<FormState = any, Context = any, Initial = any> extends Method<FormState> {\n  call(data: { context: Context | null, initial: Initial | null }): FormState | Promise<FormState>;\n}\n\nexport interface FormLoadFailedMethod extends MethodWithParameters {\n  call(error: Error): Promise<any> | any;\n}\n\nexport interface FormLoadSuccessfulMethod<T = any> extends Method {\n  call(value: T): Promise<any> | any;\n}\n\nexport interface FormSubmitFailedMethod extends MethodWithParameters {\n  call(error: Error): Promise<any> | any;\n}\n\nexport interface FormSubmitSuccessfulMethod<T = any> extends Method {\n  call(result: T): Promise<any> | any;\n}\n\nexport function ToFormMethod<T, FormMethod extends Method<R, P>, R, P>(call: (value: P) => R | Promise<R>): Method<R, P> {\n  return { call };\n}\n\n/**\n * @deprecated use ToFormMethod instead\n *\n * @param call the call method implementation\n */\nexport function ToFormSubmitMethod<T>(call: (value: T) => boolean): FormSubmitMethod<T> {\n  return ToFormMethod(call);\n}\n","import { setMetadataMapSet } from '@rxap/reflect-metadata';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function ControlAsyncValidator(...controlIds: string[]) {\n\n  return function (target: any, propertyKey: string) {\n\n    for (const controlId of controlIds) {\n      setMetadataMapSet(controlId, propertyKey, MetadataKeys.CONTROL_ASYNC_VALIDATORS, target);\n    }\n\n  };\n\n}\n","import { setMetadataMapSet } from '@rxap/reflect-metadata';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function ControlChange(...controlIds: string[]) {\n\n  return function (target: any, propertyKey: string) {\n\n    for (const controlId of controlIds) {\n      setMetadataMapSet(controlId, propertyKey, MetadataKeys.CONTROL_CHANGES, target);\n    }\n\n  };\n\n}\n","import { setMetadataMapSet } from '@rxap/reflect-metadata';\nimport { MetadataKeys } from './metadata-keys';\n\nexport interface ControlSetValueOptions {\n  propertyKey: string;\n  initial?: boolean;\n}\n\nexport function ControlSetValue(controlId: string, options: Omit<ControlSetValueOptions, 'propertyKey'> = {}) {\n\n  return function (target: any, propertyKey: string) {\n\n    setMetadataMapSet(controlId, {\n      ...options,\n      propertyKey,\n    }, MetadataKeys.CONTROL_SET_VALUE, target);\n\n  };\n\n}\n","import { setMetadataMapSet } from '@rxap/reflect-metadata';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function ControlValidator(...controlIds: string[]) {\n\n  return function (target: any, propertyKey: string) {\n\n    for (const controlId of controlIds) {\n      setMetadataMapSet(controlId, propertyKey, MetadataKeys.CONTROL_VALIDATORS, target);\n    }\n\n  };\n\n}\n","import { DefinitionMetadata } from '@rxap/definition';\nimport { FormDefinitionMetadata } from '../model';\n\nexport function RxapForm(\n  optionsOrId: FormDefinitionMetadata | string,\n  className = 'FormDefinition',\n  packageName = '@rxap/forms',\n) {\n\n  return function (target: any) {\n\n    DefinitionMetadata(optionsOrId, className, packageName)(target);\n\n  };\n}\n","import { setMetadataMap } from '@rxap/reflect-metadata';\nimport { Constructor } from '@rxap/utilities';\nimport { RxapAbstractControlOptions } from '../model';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function UseFormArrayGroup(definition: Constructor, options: RxapAbstractControlOptions = {}) {\n\n  return function (target: any, propertyKey: string) {\n\n    setMetadataMap(\n      propertyKey,\n      {\n        ...options,\n        definition,\n      },\n      MetadataKeys.FORM_ARRAY_GROUPS,\n      target,\n    );\n\n  };\n\n}\n\nexport function UseFormArrayControl(options: RxapAbstractControlOptions = {}) {\n\n  return function (target: any, propertyKey: string) {\n\n    setMetadataMap(propertyKey, options, MetadataKeys.FORM_ARRAY_CONTROLS, target);\n\n  };\n\n}\n","import { setMetadataMap } from '@rxap/reflect-metadata';\nimport { RxapAbstractControlOptions } from '../model';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function UseFormControl(options: RxapAbstractControlOptions = {}) {\n\n  return function (target: any, propertyKey: string) {\n\n    setMetadataMap(propertyKey, options, MetadataKeys.FORM_CONTROLS, target);\n\n  };\n\n}\n\n","import { setMetadataMap } from '@rxap/reflect-metadata';\nimport { Constructor } from '@rxap/utilities';\nimport { RxapAbstractControlOptions } from '../model';\nimport { MetadataKeys } from './metadata-keys';\n\nexport function UseFormGroup(definition: Constructor, options: RxapAbstractControlOptions = {}) {\n\n  return function (target: any, propertyKey: string) {\n\n    setMetadataMap(\n      propertyKey,\n      {\n        ...options,\n        definition,\n      },\n      MetadataKeys.FORM_GROUPS,\n      target,\n    );\n\n  };\n\n}\n","import { ControlValueAccessor as NgControlValueAccessor } from '@angular/forms';\n\nexport abstract class ControlValueAccessor<T = any> implements NgControlValueAccessor {\n  abstract writeValue(value: T): void;\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onChange? = (value: T | null) => {\n  };\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  onTouched? = () => {\n  };\n\n  registerOnChange(fn: (value: T | null) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-empty-function\n  setDisabledState? = (isDisabled: boolean) => {\n  };\n\n}\n","// region validators\nexport * from './lib/validators/index';\nexport * from './lib/validators/is-array';\nexport * from './lib/validators/is-boolean';\nexport * from './lib/validators/is-complex';\nexport * from './lib/validators/is-date';\nexport * from './lib/validators/is-email';\nexport * from './lib/validators/is-enum';\nexport * from './lib/validators/is-int';\nexport * from './lib/validators/is-ip';\nexport * from './lib/validators/is-number';\nexport * from './lib/validators/is-object';\nexport * from './lib/validators/is-phone-number';\nexport * from './lib/validators/is-port';\nexport * from './lib/validators/is-string';\nexport * from './lib/validators/is-url';\nexport * from './lib/validators/is-uuid';\n// endregion\n\n// region directives\nexport * from './lib/directives/form-control-error.directive';\nexport * from './lib/directives/form-control-mark-dirty.directive';\nexport * from './lib/directives/form-control-mark-pristine.directive';\nexport * from './lib/directives/form-control-mark-touched.directive';\nexport * from './lib/directives/form-control-mark-untouched.directive';\nexport * from './lib/directives/form-control-name.directive';\nexport * from './lib/directives/form-group-name.directive';\nexport * from './lib/directives/form-loaded.directive';\nexport * from './lib/directives/form-loading-error.directive';\nexport * from './lib/directives/form-loading.directive';\nexport * from './lib/directives/form-reset.directive';\nexport * from './lib/directives/form-submit-failed.directive';\nexport * from './lib/directives/form-submit-invalid.directive';\nexport * from './lib/directives/form-submit-successful.directive';\nexport * from './lib/directives/form-submit.directive';\nexport * from './lib/directives/form-submitting.directive';\nexport * from './lib/directives/form.directive';\nexport * from './lib/directives/forms.module';\nexport * from './lib/directives/models';\nexport * from './lib/directives/parent-control-container.directive';\nexport * from './lib/directives/tokens';\n// endregion\n\n// region decorators\nexport * from './lib/decorators/control-async-validator';\nexport * from './lib/decorators/control-change';\nexport * from './lib/decorators/control-set-value';\nexport * from './lib/decorators/control-validator';\nexport * from './lib/decorators/form';\nexport * from './lib/decorators/metadata-keys';\nexport * from './lib/decorators/use-form-array';\nexport * from './lib/decorators/use-form-control';\nexport * from './lib/decorators/use-form-group';\n// endregion\n\n// region \nexport * from './lib/control-actions';\nexport * from './lib/control-value-accessor';\nexport * from './lib/form-array';\nexport * from './lib/form-builder';\nexport * from './lib/form-control';\nexport * from './lib/form-group';\nexport * from './lib/model';\nexport * from './lib/tokens';\nexport * from './lib/types';\n// endregion\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["IsNumber","NgAbstractControl"],"mappings":"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"}