{"version":3,"file":"tableau-ui-angular-form.mjs","sources":["../../../projects/component-library/form/src/models/abstract-control/hierarchy/impl.ts","../../../projects/component-library/form/src/models/abstract-control/meta/impl.ts","../../../projects/component-library/form/src/models/abstract-control/impl.ts","../../../projects/component-library/form/src/models/abstract-control/validation/impl.ts","../../../projects/component-library/form/src/models/abstract-control/register/impl.ts","../../../projects/component-library/form/src/models/form-control/register/impl.ts","../../../projects/component-library/form/src/models/form-control/impl.ts","../../../projects/component-library/form/src/models/form-group/register/impl.ts","../../../projects/component-library/form/src/models/form-group/impl.ts","../../../projects/component-library/form/src/models/form-array/register/impl.ts","../../../projects/component-library/form/src/models/form-array/impl.ts","../../../projects/component-library/form/src/models/fb.ts","../../../projects/component-library/form/src/pipes/meta/form-error.pipe.ts","../../../projects/component-library/form/src/pipes/meta/form-has-error.pipe.ts","../../../projects/component-library/form/src/pipes/meta/form-meta.pipe.ts","../../../projects/component-library/form/src/pipes/raw-controls/form-array.pipe.ts","../../../projects/component-library/form/src/pipes/raw-controls/form-control.pipe.ts","../../../projects/component-library/form/src/pipes/raw-controls/form-group.pipe.ts","../../../projects/component-library/form/src/pipes/value/form-array-value.pipe.ts","../../../projects/component-library/form/src/pipes/value/form-control-value.pipe.ts","../../../projects/component-library/form/src/pipes/value/form-group-value.pipe.ts","../../../projects/component-library/form/src/pipes/form-array-controls.pipe.ts","../../../projects/component-library/form/src/tableau-ui-form.module.ts","../../../projects/component-library/form/src/tableau-ui-angular-form.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { AC } from '../interfaces';\nimport type { Hierarchy, HierarchyData } from './interfaces';\nimport type { Subscription } from 'rxjs';\nimport { BehaviorSubject } from 'rxjs';\nimport type { WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport type { FA } from '../../form-array/interaces';\nimport type { FG } from '../../form-group/interfaces';\nimport type { FC } from '../../form-control/interfaces';\n\nexport class HierarchyImpl implements Hierarchy {\n  constructor(\n    private readonly ctrl: AC,\n    initialChildren: AC[],\n    subscriptions: Subscription[] = [],\n  ) {\n    this.childList$ = new BehaviorSubject<AC[]>(initialChildren);\n    subscriptions.push(\n      this.childList$.subscribe(c => {\n        this.$childList.set(c);\n      }),\n    );\n  }\n\n  /**\n   *  The parent of this control\n   */\n  parent: AC | undefined;\n  /**\n   * The root of this control. This is the top level control in the tree.\n   */\n  get root(): AC | undefined {\n    let { parent } = this;\n    while (parent) {\n      if (parent.hierarchy.parent) {\n        parent = parent.hierarchy.parent;\n      } else {\n        return parent;\n      }\n    }\n    return undefined;\n  }\n  readonly childList$: BehaviorSubject<AC[]>;\n  readonly $childList: WritableSignal<AC[]> = signal<AC[]>([]);\n\n  public getChild(path?: string[] | string): AC | undefined {\n    if (path === undefined) {\n      return HierarchyImpl._getChild$(this.ctrl, []);\n    }\n    if (typeof path === 'string') {\n      path = path.split('.').filter(p => p !== '');\n    }\n    return HierarchyImpl._getChild$(this.ctrl, path);\n  }\n  private static _getChild$(form: AC, parts: string[]): AC | undefined {\n    const key = parts.shift();\n    if (key === undefined) {\n      return form;\n    }\n\n    if (form.type === 'array') {\n      const index = parseInt(key, 10);\n      if (isNaN(parseInt(key, 10))) {\n        return undefined;\n      }\n      return this._getChild$((form as FA<any>).$controls()[index], parts);\n    }\n    if (form.type === 'group') {\n      const control = (form as FG<any>).controls[key];\n      if (control === undefined) {\n        return undefined;\n      }\n      return this._getChild$(control, parts);\n    }\n    return undefined;\n  }\n  get hierarchyData() {\n    return HierarchyImpl._getHierarchyData(this.ctrl);\n  }\n\n  private static _getHierarchyData(control: AC, name = ''): HierarchyData {\n    const ret = {\n      name: name,\n      status: control.$meta().validity,\n      value: undefined,\n      meta: control.$meta(),\n    } as HierarchyData;\n    if (control.type === 'control') {\n      const c = control as FC<any>;\n      ret.value = c.$value();\n    }\n    if (control.type === 'group') {\n      const group = control as FG<any>;\n      ret.value = group.$value();\n      ret.children = Object.keys(group.controls).reduce<Record<string, HierarchyData>>((acc, key) => {\n        const child = group.controls[key];\n        if (child !== undefined) {\n          acc[key] = this._getHierarchyData(child, key);\n        }\n        return acc;\n      }, {});\n    }\n    if (control.type === 'array') {\n      const arr = control as FA<any>;\n      ret.children = arr.$controls().reduce<Record<string, HierarchyData>>((acc, child, index) => {\n        if (child !== undefined) {\n          acc[index] = this._getHierarchyData(child, index.toString());\n        }\n        return acc;\n      }, {});\n    }\n\n    return ret;\n  }\n}\n","import type { AbstractControl, FormControlStatus } from '@angular/forms';\nimport type { Meta, MetaFns } from './interfaces';\nimport type { AC } from '../interfaces';\nimport type { ValidationErrors } from '../validation/interfaces';\nimport type { ACImpl } from '../impl';\nimport type { Primitive } from 'tableau-ui-angular/types';\nimport { FCImpl } from '../../form-control/impl';\n\nexport class MetaImpl implements Meta {\n  private constructor(\n    public readonly untouched: boolean,\n    public readonly touched: boolean,\n    public readonly validity: FormControlStatus,\n    public readonly pristine: boolean,\n    public readonly dirty: boolean,\n    public readonly enabled: boolean,\n    public readonly disabled: boolean,\n    public readonly valueIsDefault: boolean,\n    public readonly updateOn: 'blur' | 'change' | 'submit',\n    public readonly errors: ValidationErrors | null,\n    public readonly childControls: readonly Meta[] | undefined,\n  ) {}\n\n  static fromControl(control: ACImpl<unknown>): Meta {\n    const c = control.control;\n    // valueIsDefault is true if:\n    // - the control is a FC<any> and the value is equal to the default value\n    // - the control is an FG<any> and the value\n    return new MetaImpl(\n      c.untouched,\n      c.touched,\n      c.status,\n      c.pristine,\n      c.dirty,\n      c.enabled,\n      c.disabled,\n      this.isValueDefault(control),\n      c.updateOn,\n      c.errors,\n      control.hierarchy.childList$.value.map(ca => MetaImpl.fromControl(ca as ACImpl<unknown>)),\n    );\n  }\n\n  hasError(errorCode?: string, requireTouched = true): boolean {\n    return MetaImpl._hasError(this, errorCode, requireTouched);\n  }\n  getErrorValue(errorCode: string, requireTouched = true): Primitive {\n    return MetaImpl._getErrorValue(this, errorCode, requireTouched);\n  }\n\n  private static _hasError(meta?: MetaImpl, errorCode?: string, requireTouched = true): boolean {\n    if (!meta) {\n      return false;\n    }\n    if ((!requireTouched || meta.touched) && meta.validity === 'INVALID' && meta.errors && (errorCode === undefined ? Object.keys(meta.errors).length > 0 : errorCode in meta.errors)) {\n      return true;\n    }\n    if (meta.childControls) {\n      return meta.childControls.some(c => this._hasError(c, errorCode, requireTouched));\n    }\n    return false;\n  }\n  private static _getErrorValue(meta: MetaImpl, errorCode: string, requireTouched = true): Primitive {\n    if (meta === undefined) {\n      return null;\n    }\n    if ((!requireTouched || meta.touched) && meta.validity === 'INVALID' && meta.errors && errorCode in meta.errors) {\n      return meta.errors[errorCode];\n    }\n    if (meta.childControls) {\n      for (const c of meta.childControls) {\n        const value = this._getErrorValue(c, errorCode, requireTouched);\n        if (value !== undefined) {\n          return value;\n        }\n      }\n    }\n    return null;\n  }\n\n  public static compare(a: Meta, b: Meta): boolean {\n    const baseEqual =\n      a.untouched === b.untouched &&\n      a.touched === b.touched &&\n      a.validity === b.validity &&\n      a.pristine === b.pristine &&\n      a.dirty === b.dirty &&\n      a.enabled === b.enabled &&\n      a.disabled === b.disabled &&\n      a.valueIsDefault === b.valueIsDefault &&\n      a.updateOn === b.updateOn &&\n      this.validationErrorsEqual(a.errors, b.errors);\n    if (!baseEqual) {\n      return false;\n    }\n    if (!a.childControls && !b.childControls) {\n      return true;\n    }\n    if (!a.childControls || !b.childControls) {\n      return false;\n    }\n    if (a.childControls.length !== b.childControls.length) {\n      return false;\n    }\n    for (let i = 0; i < a.childControls.length; i++) {\n      if (!this.compare(a.childControls[i], b.childControls[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n  private static validationErrorsEqual(a: ValidationErrors | null, b: ValidationErrors | null): boolean {\n    if (a === b) {\n      return true;\n    }\n\n    if (!a || !b) {\n      return false;\n    }\n    const aKeys = Object.keys(a);\n    const bKeys = Object.keys(b);\n    if (aKeys.length !== bKeys.length) {\n      return false;\n    }\n    for (const key of aKeys) {\n      if (!(key in b)) {\n        return false;\n      }\n      if (typeof a[key] !== typeof b[key]) {\n        return false;\n      }\n\n      if (a[key] !== b[key]) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private static isValueDefault(control: AC) {\n    // valueIsDefault is true if:\n    // - the control is a FC<any> and the value is equal to the default value. If value is an array, it checks if all items are in the default value array\n    if (control instanceof FCImpl) {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n      const val = control.control.value;\n      if (Array.isArray(val) && Array.isArray(control.defaultValue)) {\n        if (val.length !== control.defaultValue.length) {\n          return false;\n        }\n        for (const valItem of val) {\n          if (!control.defaultValue.includes(valItem)) {\n            return false;\n          }\n        }\n        return true;\n      } else {\n        return val === control.defaultValue;\n      }\n    } else {\n      // if the control is a non-FC control, we check if all child controls have their value equal to the default value\n      for (const child of control.hierarchy.$childList()) {\n        if (!this.isValueDefault(child)) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n}\n\nexport class MetaFnsImpl<TChild> implements MetaFns<TChild> {\n  constructor(\n    private readonly control: AbstractControl,\n    private readonly ctrl: AC,\n  ) {}\n  /**\n   * Sets errors on a form control when running validations manually, rather than automatically.\n   *\n   * Calling `setErrors` also updates the validity of the parent control.\n   *\n   * @param opts Configuration options that determine how the control propagates\n   * changes and emits events after the control errors are set.\n   * * `emitEvent`: When true or not supplied (the default), the `statusChanges`\n   * observable emits an event after the errors are set.\n   *\n   * @usageNotes\n   *\n   * ### Manually set the errors for a control\n   *\n   * ```ts\n   * const login = new FormControl('someLogin');\n   * login.setErrors({\n   *   notUnique: true\n   * });\n   *\n   * expect(login.valid).toEqual(false);\n   * expect(login.errors).toEqual({ notUnique: true });\n   *\n   * login.setValue('someOtherLogin');\n   *\n   * expect(login.valid).toEqual(true);\n   * ```\n   */\n  public setErrors(errors: ValidationErrors | null, emitEvent = true): TChild {\n    this.control.setErrors(errors, { emitEvent });\n    return this.ctrl as unknown as TChild;\n  }\n\n  /**\n   * Marks the control as `touched`. A control is touched by focus and\n   * blur events that do not change the value.\n   *\n   *\n   * @see {@link markAsUntouched()}\n   * @see {@link markAsDirty()}\n   * @see {@link markAsPristine()}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, marks all ancestors of the control as well\n   */\n  markAsTouched(markAncestors = false, emitEvent = true): TChild {\n    if (!markAncestors && this.control.touched) {\n      return this.ctrl as unknown as TChild;\n    }\n    this.control.markAsTouched({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n  /**\n   * Marks the control and all its descendant controls as `touched`.\n   * @see {@link markAsTouched()}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   */\n  markAllAsTouched(emitEvent = true): TChild {\n    this.control.markAllAsTouched({\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n  /**\n   * Marks the control as `untouched`.\n   *\n   * If the control has any children, also marks all children as `untouched`\n   * and recalculates the `touched` status of all parent controls.\n   *\n   * @see {@link markAsTouched()}\n   * @see {@link markAsDirty()}\n   * @see {@link markAsPristine()}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, mark only this control. When false or not supplied,\n   * marks all direct ancestors. Default is false.\n   */\n  markAsUntouched(emitEvent = true, markAncestors = false): TChild {\n    this.control.markAsUntouched({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n  /**\n   * Marks the control as `dirty`. A control becomes dirty when\n   * the control's value is changed through the UI; compare `markAsTouched`.\n   *\n   * If the control is already dirty this does nothing\n   *\n   * @see {@link markAsTouched()}\n   * @see {@link markAsUntouched()}\n   * @see {@link markAsPristine()}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, mark only this control. When false or not supplied,\n   * marks all direct ancestors. Default is false.\n   */\n  markAsDirty(emitEvent = true, markAncestors = false): TChild {\n    if (this.ctrl.meta$.value.dirty) {\n      return this.ctrl as unknown as TChild;\n    }\n    this.control.markAsDirty({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n  /**\n   * Marks the control as `pristine`.\n   *\n   * If the control has any children, marks all children as `pristine`,\n   * and recalculates the `pristine` status of all parent\n   * controls.\n   *\n   * If the control is already pristine, this does nothing\n   *\n   * @see {@link markAsTouched()}\n   * @see {@link markAsUntouched()}\n   * @see {@link markAsDirty()}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, mark only this control. When false or not supplied,\n   * marks all direct ancestors. Default is false.\n   */\n  markAsPristine(emitEvent = true, markAncestors = false): TChild {\n    if (this.ctrl.meta$.value.pristine) {\n      return this.ctrl as unknown as TChild;\n    }\n    this.control.markAsPristine({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n\n  /**\n   * Disables the control. This means the control is exempt from validation checks and\n   * excluded from the aggregate value of any parent. Its validity is `DISABLED`.\n   *\n   * If the control has children, all children are also disabled.\n   *\n   * If the control is already disabled, this does nothing.\n   *\n   * @see {@link AbstractControlMeta.validity}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, mark only this control. When false or not supplied,\n   * marks all direct ancestors. Default is false.\n   */\n  disable(emitEvent = true, markAncestors = false): TChild {\n    if (!this.control.enabled) {\n      return this.ctrl as unknown as TChild;\n    }\n    this.control.disable({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    this.control.disable({ onlySelf: !markAncestors });\n    return this.ctrl as unknown as TChild;\n  }\n  /**\n   * Enables the control. This means the control is included in validation checks and\n   * the aggregate value of its parent. Its status recalculates based on its value and\n   * its validators.\n   *\n   * By default, if the control has children, all children are enabled.\n   *\n   * If the control is already enabled, this does nothing.\n   *\n   * @see {@link AbstractControl.status}\n   *\n   * @param emitEvent When true, the meta$ observable emits an event. Default is true.\n   * @param markAncestors When true, mark only this control. When false or not supplied,\n   * marks all direct ancestors. Default is false.\n   */\n  enable(emitEvent = true, markAncestors = false): TChild {\n    if (this.control.enabled) {\n      return this.ctrl as unknown as TChild;\n    }\n    this.control.enable({\n      onlySelf: !markAncestors,\n      emitEvent: emitEvent,\n    });\n    return this.ctrl as unknown as TChild;\n  }\n}\n","import type { WritableSignal } from '@angular/core';\nimport { signal, type Signal } from '@angular/core';\nimport { BehaviorSubject, distinctUntilChanged, filter, firstValueFrom, map, type Observable, type Subscription } from 'rxjs';\nimport type { Hierarchy } from './hierarchy/interfaces';\nimport type { AC } from './interfaces';\nimport type { Meta, MetaFns } from './meta/interfaces';\nimport type { RegisterFns } from './register/interfaces';\nimport type { ValidatorFns } from './validation/interfaces';\nimport type { AbstractControl } from '@angular/forms';\nimport { HierarchyImpl } from './hierarchy/impl';\nimport { MetaImpl } from './meta/impl';\n\nexport abstract class ACImpl<TValue> implements AC {\n  readonly type: 'array' | 'control' | 'group';\n  readonly control: AbstractControl;\n  protected subscriptions: Subscription[] = [];\n\n  readonly meta$: BehaviorSubject<Meta>;\n  readonly $meta: WritableSignal<Meta>;\n\n  public abstract readonly value$: Observable<unknown>;\n  public abstract readonly $value: Signal<unknown>;\n  public abstract readonly defaultValue: unknown;\n\n  public abstract submitted$: Observable<unknown>;\n  public abstract reset$: Observable<unknown>;\n  // readonly rawValue$: ReadonlyBehaviorSubject<unknown>;\n  // readonly $rawValue: Signal<unknown>;\n\n  readonly hierarchy: Hierarchy;\n  public abstract readonly validatorFn: ValidatorFns;\n  public abstract readonly metaFn: MetaFns;\n  public abstract readonly registerFn: RegisterFns;\n  constructor(type: 'array' | 'control' | 'group', control: AbstractControl, childList: AC[] = []) {\n    this.control = control;\n    this.hierarchy = new HierarchyImpl(this, childList);\n\n    this.subscriptions.push(\n      this.hierarchy.childList$.subscribe(ch => {\n        ch.forEach(c => {\n          (c.hierarchy as HierarchyImpl).parent = this;\n        });\n      }),\n    );\n    this.type = type;\n    const initialMeta = MetaImpl.fromControl(this);\n    this.meta$ = new BehaviorSubject<Meta>(initialMeta);\n    this.$meta = signal<Meta>(initialMeta);\n    this.subscriptions.push(\n      this.control.events\n        .pipe(\n          map(() => MetaImpl.fromControl(this)),\n          distinctUntilChanged((a, b) => MetaImpl.compare(a, b)),\n        )\n        .subscribe(meta => {\n          this.meta$.next(meta);\n          this.$meta.set(meta);\n        }),\n    );\n  }\n\n  public getRawValue(): TValue {\n    return this.control.getRawValue() as TValue;\n  }\n  // public setValue(\n  //     value: TValue,\n  //     options?: {\n  //         onlySelf?: boolean;\n  //         emitEvent?: boolean;\n  //         emitModelToViewChange?: boolean;\n  //         emitViewToModelChange?: boolean;\n  //     },\n  // ) {\n  //     this.control.setValue(value, options);\n  // }\n  public async isInvalid() {\n    return firstValueFrom(\n      this.meta$.pipe(\n        map(e => {\n          if (e.validity === 'INVALID') {\n            return true;\n          } else if (e.validity !== 'PENDING') {\n            return false;\n          }\n          return undefined;\n        }),\n        filter(e => e !== undefined),\n      ),\n    );\n  }\n\n  public updateValueAndValidity(includeAncestors: boolean, includeDescendants: boolean, markAsTouched: boolean, markAsDirty: boolean, emitEvent: boolean = true): void {\n    ACImpl._updateValueAndValidity(this, includeAncestors, includeDescendants, markAsTouched, markAsDirty, emitEvent);\n  }\n  private static _updateValueAndValidity(f: ACImpl<unknown>, includeAncestors: boolean, includeDescendants: boolean, markAsTouched: boolean, markAsDirty: boolean, emitEvent: boolean) {\n    if (includeDescendants) {\n      for (const child of f.hierarchy.childList$.value) {\n        this._updateValueAndValidity(child as ACImpl<unknown>, false, includeDescendants, markAsTouched, markAsDirty, emitEvent);\n      }\n    }\n\n    if (markAsTouched) {\n      f.control.markAsTouched({ onlySelf: true, emitEvent: false });\n    }\n    if (markAsDirty) {\n      f.control.markAsDirty({ onlySelf: true, emitEvent: false });\n    }\n    f.control.updateValueAndValidity({ onlySelf: true, emitEvent });\n    if (includeAncestors) {\n      let { parent } = f.hierarchy;\n      while (parent) {\n        this._updateValueAndValidity(parent as ACImpl<unknown>, false, false, markAsTouched, markAsDirty, emitEvent);\n        parent = parent.hierarchy.parent;\n      }\n    }\n  }\n  destroy(): void {\n    this.subscriptions.forEach(sub => {\n      sub.unsubscribe();\n    });\n    this.subscriptions.length = 0;\n    this.hierarchy.childList$.value.forEach(child => {\n      child.destroy();\n    });\n  }\n}\n","import type { AbstractControl } from '@angular/forms';\nimport type { AsyncValidatorFn, ValidatorFn, ValidatorFns } from './interfaces';\n\nexport class ValidatorFnsImpl<TChild> implements ValidatorFns<TChild> {\n  constructor(private readonly control: AbstractControl) {}\n  /**\n   * Returns the function that is used to determine the validity of this control synchronously.\n   * If multiple validators have been added, this will be a single composed function.\n   * See `Validators.compose()` for additional information.\n   */\n  get validator(): ValidatorFn | null {\n    return this.control.validator;\n  }\n  /**\n   * Sets the function that is used to determine the validity of this control synchronously.\n   * It's recommended to use 'setValidators' or 'addValidators' instead, which will compose this function\n   */\n  set validator(validator: ValidatorFn | null) {\n    this.control.validator = validator;\n  }\n  /**\n   * Returns the function that is used to determine the validity of this control asynchronously.\n   * If multiple validators have been added, this will be a single composed function.\n   * See `Validators.compose()` for additional information.\n   */\n  get asyncValidator(): AsyncValidatorFn | null {\n    return this.control.asyncValidator;\n  }\n  /**\n   * Sets the function that is used to determine the validity of this control asynchronously.\n   * It's recommended to use 'setAsyncValidators' or 'addAsyncValidators' instead, which will compose this function\n   */\n  set asyncValidator(asyncValidatorFn: AsyncValidatorFn | null) {\n    this.control.asyncValidator = asyncValidatorFn;\n  }\n\n  /**\n   * Sets the synchronous validators that are active on this control.  Calling\n   * this overwrites any existing synchronous validators.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * If you want to add a new validator without affecting existing ones, consider\n   * using `addValidators()` method instead.\n   */\n  setValidators(validators: ValidatorFn | ValidatorFn[] | null): TChild {\n    this.control.setValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Sets the asynchronous validators that are active on this control. Calling this\n   * overwrites any existing asynchronous validators.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * If you want to add a new validator without affecting existing ones, consider\n   * using `addAsyncValidators()` method instead.\n   */\n  setAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[] | null): TChild {\n    this.control.setAsyncValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Add a synchronous validator or validators to this control, without affecting other validators.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * Adding a validator that already exists will have no effect. If duplicate validator functions\n   * are present in the `validators` array, only the first instance would be added to a form\n   * control.\n   *\n   * @param validators The new validator function or functions to add to this control.\n   */\n  addValidators(validators: ValidatorFn | ValidatorFn[]): TChild {\n    this.control.addValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Add an asynchronous validator or validators to this control, without affecting other\n   * validators.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * Adding a validator that already exists will have no effect.\n   *\n   * @param validators The new asynchronous validator function or functions to add to this control.\n   */\n  addAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): TChild {\n    this.control.addAsyncValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Remove a synchronous validator from this control, without affecting other validators.\n   * Validators are compared by function reference; you must pass a reference to the exact same\n   * validator function as the one that was originally set. If a provided validator is not found,\n   * it is ignored.\n   *\n   * @usageNotes\n   *\n   * ### Reference to a ValidatorFn\n   *\n   * ```\n   * // Reference to the RequiredValidator\n   * const ctrl = new FormControl<string | null>('', Validators.required);\n   * ctrl.removeValidators(Validators.required);\n   *\n   * // Reference to anonymous function inside MinValidator\n   * const minValidator = Validators.min(3);\n   * const ctrl = new FormControl<string | null>('', minValidator);\n   * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n   * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n   *\n   * ctrl.removeValidators(minValidator);\n   * ```\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * @param validators The validator or validators to remove.\n   */\n  removeValidators(validators: ValidatorFn | ValidatorFn[]): TChild {\n    this.control.removeValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Remove an asynchronous validator from this control, without affecting other validators.\n   * Validators are compared by function reference; you must pass a reference to the exact same\n   * validator function as the one that was originally set. If a provided validator is not found, it\n   * is ignored.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   * @param validators The asynchronous validator or validators to remove.\n   */\n  removeAsyncValidators(validators: AsyncValidatorFn | AsyncValidatorFn[]): TChild {\n    this.control.removeAsyncValidators(validators);\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Check whether a synchronous validator function is present on this control. The provided\n   * validator must be a reference to the exact same function that was provided.\n   *\n   * @usageNotes\n   *\n   * ### Reference to a ValidatorFn\n   *\n   * ```\n   * // Reference to the RequiredValidator\n   * const ctrl = new FormControl<number | null>(0, Validators.required);\n   * expect(ctrl.hasValidator(Validators.required)).toEqual(true)\n   *\n   * // Reference to anonymous function inside MinValidator\n   * const minValidator = Validators.min(3);\n   * const ctrl = new FormControl<number | null>(0, minValidator);\n   * expect(ctrl.hasValidator(minValidator)).toEqual(true)\n   * expect(ctrl.hasValidator(Validators.min(3))).toEqual(false)\n   * ```\n   *\n   * @param validator The validator to check for presence. Compared by function reference.\n   * @returns Whether the provided validator was found on this control.\n   */\n  hasValidator(validator: ValidatorFn): boolean {\n    return this.control.hasValidator(validator);\n  }\n  /**\n   * Check whether an asynchronous validator function is present on this control. The provided\n   * validator must be a reference to the exact same function that was provided.\n   *\n   * @param validator The asynchronous validator to check for presence. Compared by function\n   *     reference.\n   * @returns Whether the provided asynchronous validator was found on this control.\n   */\n  hasAsyncValidator(validator: AsyncValidatorFn): boolean {\n    return this.control.hasAsyncValidator(validator);\n  }\n  /**\n   * Empties out the synchronous validator list.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   */\n  clearValidators(): TChild {\n    this.control.clearValidators();\n    return this.control as unknown as TChild;\n  }\n  /**\n   * Empties out the async validator list.\n   *\n   * When you add or remove a validator at run time, you must call\n   * `updateValueAndValidity()` for the new validation to take effect.\n   *\n   */\n  clearAsyncValidators(): TChild {\n    this.control.clearAsyncValidators();\n    return this.control as unknown as TChild;\n  }\n}\n","import type { Subscription } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs';\nimport type { AC } from '../interfaces';\nimport type { RegisterFns } from './interfaces';\nimport type { Meta } from '../meta/interfaces';\n\nexport class RegisterFnsImpl<TChild> implements RegisterFns<TChild> {\n  constructor(\n    private readonly fgControl: AC,\n    protected subscriptions: Subscription[],\n  ) {}\n\n  enableChange(callback: (enabled: boolean) => void): TChild {\n    this.subscriptions.push(\n      this.fgControl.meta$\n        .pipe(\n          map(e => e.enabled),\n          distinctUntilChanged(),\n        )\n        .subscribe(e => {\n          callback(e);\n        }),\n    );\n    return this.fgControl as unknown as TChild;\n  }\n\n  metaChange(callback: (meta: Meta) => void): TChild {\n    this.subscriptions.push(\n      this.fgControl.meta$.subscribe(meta => {\n        callback(meta);\n      }),\n    );\n    return this.fgControl as unknown as TChild;\n  }\n  alwaysDisabled(): TChild {\n    this.fgControl.metaFn.disable();\n    this.subscriptions.push(\n      this.fgControl.meta$.subscribe(meta => {\n        if (meta.enabled) {\n          this.fgControl.metaFn.disable();\n        }\n      }),\n    );\n    return this.fgControl as unknown as TChild;\n  }\n}\n","import type { Observable, Subscription } from 'rxjs';\nimport { startWith, pairwise, map, filter, combineLatest } from 'rxjs';\nimport { RegisterFnsImpl } from '../../abstract-control/register/impl';\nimport type { FC } from '../interfaces';\nimport type { FcRegisterFns } from './interfaces';\nimport type { FCImpl } from '../impl';\nimport type { PrimitiveWithUndefined } from '../types';\n\nexport class FcRegisterFnsImpl<T extends PrimitiveWithUndefined | PrimitiveWithUndefined[]> extends RegisterFnsImpl<FC<T>> implements FcRegisterFns<T> {\n  constructor(\n    private readonly fcControl: FCImpl<T>,\n    subscriptions: Subscription[] = [],\n  ) {\n    super(fcControl, subscriptions);\n  }\n  valueChange(callback: (value: T, oldValue: T | undefined, control: FC<T>) => void, alsoRunOnEnabled: boolean = false, alsoRunOnDisabled: boolean = false): FC<T> {\n    const subs: [Observable<[T | undefined, T]>, Observable<boolean>?] = [\n      this.fcControl.value$.pipe(\n        startWith(undefined as unknown as T),\n        pairwise(),\n        map(v => [v[0] as T | undefined, v[1] ?? v[0]]),\n      ),\n    ];\n    if (alsoRunOnEnabled || alsoRunOnDisabled) {\n      subs.push(\n        this.fcControl.meta$.pipe(\n          map(e => e.enabled),\n          filter(enabled => {\n            if (enabled && alsoRunOnEnabled) {\n              return true;\n            } else if (!enabled && alsoRunOnDisabled) {\n              return true;\n            }\n            return false;\n          }),\n        ),\n      );\n    }\n    this.subscriptions.push(\n      combineLatest(subs).subscribe(([v]) => {\n        callback(v[1], v[0], this.fcControl);\n      }),\n    );\n    return this.fcControl;\n  }\n}\n","import type { Signal, WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport type { Observable } from 'rxjs';\nimport { BehaviorSubject, distinctUntilChanged, filter, map, startWith } from 'rxjs';\nimport { ACImpl } from '../abstract-control/impl';\nimport type { MetaFns } from '../abstract-control/meta/interfaces';\nimport type { AsyncValidatorFn, ValidatorFn, ValidatorFns } from '../abstract-control/validation/interfaces';\nimport type { FC } from './interfaces';\nimport type { FcRegisterFns } from './register/interfaces';\nimport { FormControl, FormResetEvent } from '@angular/forms';\nimport { ValidatorFnsImpl as ValidatorFnsImpl } from '../abstract-control/validation/impl';\nimport { MetaFnsImpl as MetaFnsImpl } from '../abstract-control/meta/impl';\nimport { FcRegisterFnsImpl } from './register/impl';\nimport type { PrimitiveWithUndefined } from './types';\n\nexport class FCImpl<T extends PrimitiveWithUndefined | PrimitiveWithUndefined[]> extends ACImpl<T> implements FC<T> {\n  private readonly _value$: BehaviorSubject<T>;\n  private readonly $_value: WritableSignal<T>;\n\n  public override get value$(): Observable<T> {\n    return this._value$.asObservable();\n  }\n  public override get $value(): Signal<T> {\n    return this.$_value;\n  }\n  public override readonly submitted$: Observable<T>;\n  public override readonly reset$: Observable<T>;\n  public override readonly validatorFn: ValidatorFns<FC<T>>;\n  public override readonly metaFn: MetaFns<FC<T>>;\n  public override readonly registerFn: FcRegisterFns<T>;\n  private readonly _defaultValue: T;\n  public override get defaultValue(): T {\n    return this._defaultValue;\n  }\n  private readonly _control: FormControl<T>;\n  constructor(params: {\n    defaultValue: T;\n    initialDisabled?: boolean;\n    validators?: ValidatorFn | ValidatorFn[];\n    asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[];\n    updateOn?: 'blur' | 'change' | 'submit';\n  }) {\n    const control = new FormControl<T>(\n      {\n        value: params.defaultValue,\n        disabled: params.initialDisabled ?? false,\n      },\n      {\n        nonNullable: true,\n        updateOn: params.updateOn,\n        asyncValidators: params.asyncValidators,\n        validators: params.validators,\n      },\n    );\n    super('control', control, []);\n    this._control = control;\n    this._defaultValue = params.defaultValue;\n    this._value$ = new BehaviorSubject<T>(params.defaultValue);\n    this.$_value = signal<T>(this._value$.value);\n    this.subscriptions.push(\n      control.valueChanges\n        .pipe(\n          startWith(control.value),\n          distinctUntilChanged((a, b) => {\n            // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n            if (!a && !b) {\n              return true;\n            }\n            // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n            if (!a || !b) {\n              return false;\n            }\n            if (Array.isArray(a) && Array.isArray(b)) {\n              if (a.length !== b.length) {\n                return false;\n              }\n              for (let i = 0; i < a.length; i++) {\n                if (a[i] !== b[i]) {\n                  return false;\n                }\n              }\n              return true;\n            }\n            return a === b;\n          }),\n        )\n        .subscribe(v => {\n          this._value$.next(v);\n        }),\n    );\n    this.subscriptions.push(\n      this._value$.subscribe(v => {\n        this.$_value.set(v);\n      }),\n    );\n    this.submitted$ = this.control.events.pipe(\n      filter(e => e instanceof SubmitEvent),\n      map(() => this._value$.value),\n    );\n    this.reset$ = this.control.events.pipe(\n      filter(e => e instanceof FormResetEvent),\n      map(() => this._value$.value),\n    );\n    this.registerFn = new FcRegisterFnsImpl<T>(this, this.subscriptions);\n    this.validatorFn = new ValidatorFnsImpl<FC<T>>(this.control);\n    this.metaFn = new MetaFnsImpl<FC<T>>(this.control, this);\n  }\n\n  setValue(value: T, options?: { onlySelf?: boolean; emitEvent?: boolean; emitModelToViewChange?: boolean; emitViewToModelChange?: boolean }) {\n    this.control.setValue(value, {\n      onlySelf: options?.onlySelf ?? false,\n      emitEvent: options?.emitEvent ?? true,\n      emitModelToViewChange: options?.emitModelToViewChange ?? true,\n      emitViewToModelChange: options?.emitViewToModelChange ?? true,\n    });\n  }\n\n  resetWithDefaultValue(updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    this._control.reset(this.defaultValue, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n  reset(value: T, updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    this._control.reset(value, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n}\n","import type { Observable, Subscription } from 'rxjs';\nimport { combineLatest, filter, map, pairwise, startWith } from 'rxjs';\nimport { RegisterFnsImpl } from '../../abstract-control/register/impl';\nimport type { FC } from '../../form-control/interfaces';\n\nimport type { FG } from '../interfaces';\nimport type { FgRegisterFns } from './interfaces';\nimport type { FGImpl } from '../impl';\nimport type { DeepPartial, Primitive } from 'tableau-ui-angular/types';\nimport type { FormReferencesOf } from '../../../types/form-references-of';\n\nexport class FgRegisterFnsImpl<TSource extends Record<string, unknown>> extends RegisterFnsImpl<FG<TSource>> implements FgRegisterFns<TSource> {\n  constructor(\n    private readonly fg: FGImpl<TSource>,\n    subscriptions: Subscription[] = [],\n  ) {\n    super(fg, subscriptions);\n  }\n\n  valueChange(\n    callback: (value: DeepPartial<TSource>, oldValue: DeepPartial<TSource> | undefined, control: FG<TSource>) => void,\n    alsoRunOnEnabled: boolean = false,\n    alsoRunOnDisabled: boolean = false,\n  ): FG<TSource> {\n    const subs: [Observable<[DeepPartial<TSource> | undefined, DeepPartial<TSource>]>, Observable<boolean>?] = [\n      this.fg.value$.pipe(\n        startWith(undefined as unknown as DeepPartial<TSource>),\n        pairwise(),\n        map(v => [v[0] as DeepPartial<TSource> | undefined, v[1] ?? v[0]]),\n      ),\n    ];\n    if (alsoRunOnEnabled || alsoRunOnDisabled) {\n      subs.push(\n        this.fg.meta$.pipe(\n          map(e => e.enabled),\n          filter(enabled => {\n            if (enabled && alsoRunOnEnabled) {\n              return true;\n            } else if (!enabled && alsoRunOnDisabled) {\n              return true;\n            }\n            return false;\n          }),\n        ),\n      );\n    }\n    this.subscriptions.push(\n      combineLatest(subs).subscribe(([v]) => {\n        callback(v[1], v[0], this.fg);\n      }),\n    );\n    return this.fg;\n  }\n  childChange<T extends Primitive | Primitive[]>(\n    formControlSelector: (children: FormReferencesOf<TSource>) => FC<T>,\n    callback: (group: FG<TSource>, control: FC<T>, value: T) => void,\n    alsoRunOnEnabled: boolean = false,\n    alsoRunOnDisabled: boolean = false,\n  ): FG<TSource> {\n    const ctrl = formControlSelector(this.fg.controls);\n\n    const subs: [Observable<T>, Observable<boolean>?] = [\n      ctrl.value$.pipe(\n        map(v => {\n          return v;\n        }),\n      ),\n    ];\n    if (alsoRunOnEnabled || alsoRunOnDisabled) {\n      subs.push(\n        this.fg.meta$.pipe(\n          map(e => e.enabled),\n          filter(enabled => {\n            if (enabled && alsoRunOnEnabled) {\n              return true;\n            } else if (!enabled && alsoRunOnDisabled) {\n              return true;\n            }\n            return false;\n          }),\n        ),\n      );\n    }\n    this.subscriptions.push(\n      combineLatest(subs).subscribe(([v]) => {\n        callback(this.fg, ctrl, v);\n      }),\n    );\n    return this.fg;\n  }\n\n  childGroupChange<T extends Record<string, unknown>>(\n    formControlSelector: (children: FormReferencesOf<TSource>) => FG<T>,\n    callback: (group: FG<TSource>, control: FG<T>, value: DeepPartial<T>) => void,\n    alsoRunOnEnabled: boolean = false,\n    alsoRunOnDisabled: boolean = false,\n  ): FG<TSource> {\n    const ctrl = formControlSelector(this.fg.controls);\n    const subs: [Observable<DeepPartial<T>>, Observable<boolean>?] = [ctrl.value$];\n    if (alsoRunOnEnabled || alsoRunOnDisabled) {\n      subs.push(\n        this.fg.meta$.pipe(\n          map(e => e.enabled),\n          filter(enabled => {\n            if (enabled && alsoRunOnEnabled) {\n              return true;\n            } else if (!enabled && alsoRunOnDisabled) {\n              return true;\n            }\n            return false;\n          }),\n        ),\n      );\n    }\n    this.subscriptions.push(\n      combineLatest(subs).subscribe(([v]) => {\n        callback(this.fg, ctrl, v);\n      }),\n    );\n    return this.fg;\n  }\n}\n","import type { Signal, WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport type { Observable } from 'rxjs';\nimport { BehaviorSubject, filter, map, startWith } from 'rxjs';\nimport { ACImpl } from '../abstract-control/impl';\nimport type { AC } from '../abstract-control/interfaces';\nimport type { MetaFns } from '../abstract-control/meta/interfaces';\nimport type { AsyncValidatorFn, ValidatorFn, ValidatorFns } from '../abstract-control/validation/interfaces';\nimport type { FG } from './interfaces';\nimport type { FgRegisterFns } from './register/interfaces';\nimport { FormGroup, FormResetEvent } from '@angular/forms';\nimport type { ControlsOf } from '../../types/controls-of';\nimport type { FormReferencesOf } from '../../types/form-references-of';\nimport { FgRegisterFnsImpl } from './register/impl';\nimport { ValidatorFnsImpl } from '../abstract-control/validation/impl';\nimport { MetaFnsImpl } from '../abstract-control/meta/impl';\nimport type { DeepPartial } from 'tableau-ui-angular/types';\n\nexport class FGImpl<T extends Record<string, unknown>> extends ACImpl<T> implements FG<T> {\n  private readonly _value$: BehaviorSubject<DeepPartial<T>>;\n  private readonly $_value: WritableSignal<DeepPartial<T>>;\n  private readonly _rawValue$: BehaviorSubject<T>;\n  private readonly $_rawValue: WritableSignal<T>;\n  public override get value$(): Observable<DeepPartial<T>> {\n    return this._value$.asObservable();\n  }\n  public override get $value(): Signal<DeepPartial<T>> {\n    return this.$_value;\n  }\n  public get rawValue$(): Observable<T> {\n    return this._rawValue$.asObservable();\n  }\n  public get $rawValue(): Signal<T> {\n    return this.$_rawValue;\n  }\n\n  readonly controls: FormReferencesOf<T>;\n\n  public override readonly submitted$: Observable<DeepPartial<T>>;\n  public override readonly reset$: Observable<DeepPartial<T>>;\n  public override readonly validatorFn: ValidatorFns<FG<T>>;\n  public override readonly metaFn: MetaFns<FG<T>>;\n  public override readonly registerFn: FgRegisterFns<T>;\n\n  private readonly _control: FormGroup<ControlsOf<T>>;\n  private readonly _defaultValue: T;\n  public override get defaultValue(): T {\n    return this._defaultValue;\n  }\n  constructor(params: { controls: FormReferencesOf<T>; validators?: ValidatorFn | ValidatorFn[]; asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[]; updateOn?: 'blur' | 'change' | 'submit' }) {\n    const controls = Object.entries(params.controls).reduce<Partial<ControlsOf<T>>>((acc, [key, child]) => {\n      const c = (child as ACImpl<unknown>).control;\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment\n      acc[key as keyof T] = c as any;\n      return acc;\n    }, {});\n\n    const control = new FormGroup<ControlsOf<T>>(controls as ControlsOf<T>, {\n      validators: params.validators,\n      asyncValidators: params.asyncValidators,\n      updateOn: params.updateOn,\n    });\n\n    const childList = Object.entries(params.controls).map(([, child]) => child as AC);\n    super('group', control, childList);\n    this._control = control;\n    this._defaultValue = control.getRawValue() as T;\n\n    this.controls = params.controls;\n    this._value$ = new BehaviorSubject<DeepPartial<T>>(control.value);\n    this.$_value = signal<DeepPartial<T>>(this._value$.value);\n    this._rawValue$ = new BehaviorSubject<T>(this._defaultValue);\n    this.$_rawValue = signal<T>(this._rawValue$.value);\n    this.subscriptions.push(\n      control.valueChanges.pipe(startWith(control.value as DeepPartial<T>)).subscribe(v => {\n        this._value$.next(v);\n      }),\n    );\n    this.subscriptions.push(\n      this._value$.subscribe(v => {\n        this.$_value.set(v);\n        const rawValue = control.getRawValue() as T;\n        this._rawValue$.next(rawValue);\n        this.$_rawValue.set(rawValue);\n      }),\n    );\n    this.submitted$ = this.control.events.pipe(\n      filter(e => e instanceof SubmitEvent),\n      map(() => this._value$.value),\n    );\n    this.reset$ = this.control.events.pipe(\n      filter(e => e instanceof FormResetEvent),\n      map(() => this._value$.value),\n    );\n    this.registerFn = new FgRegisterFnsImpl<T>(this, this.subscriptions);\n    this.validatorFn = new ValidatorFnsImpl<FG<T>>(this.control);\n    this.metaFn = new MetaFnsImpl<FG<T>>(this.control, this);\n  }\n\n  setValue(value: T, options?: { onlySelf?: boolean; emitEvent?: boolean; emitModelToViewChange?: boolean; emitViewToModelChange?: boolean }) {\n    this.control.setValue(value, {\n      onlySelf: options?.onlySelf ?? false,\n      emitEvent: options?.emitEvent ?? true,\n      emitModelToViewChange: options?.emitModelToViewChange ?? true,\n      emitViewToModelChange: options?.emitViewToModelChange ?? true,\n    });\n  }\n\n  resetWithDefaultValue(updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n    this._control.reset(this._defaultValue as any, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n  reset(value: T, updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n    this._control.reset(value as any, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n}\n","import type { DeepPartial } from 'tableau-ui-angular/types';\nimport { RegisterFnsImpl } from '../../abstract-control/register/impl';\nimport type { FG } from '../../form-group/interfaces';\nimport type { FA } from '../interaces';\nimport type { FaRegisterFns } from './interfaces';\nimport type { Observable, Subscription } from 'rxjs';\nimport { combineLatest, filter, map, pairwise, startWith } from 'rxjs';\n\nexport class FaRegisterFnsImpl<TItem extends Record<string, unknown>> extends RegisterFnsImpl<FA<TItem>> implements FaRegisterFns<TItem> {\n  constructor(\n    private readonly fa: FA<TItem>,\n    subscriptions: Subscription[] = [],\n  ) {\n    super(fa, subscriptions);\n  }\n\n  /**\n   * Registers a callback to be called when the value of the array changes.\n   * The callback is always called initially.\n   * @param callback\n   * @param alsoRunOnEnabled Whether to also run the callback when the control is enabled.\n   * @param alsoRunOnDisabled Whether to also run the callback when the control is disabled.\n   */\n  valueChange(\n    callback: (value: DeepPartial<TItem>[], oldValue: DeepPartial<TItem>[] | undefined, controls: FG<TItem>[], control: FA<TItem>) => void,\n    alsoRunOnEnabled: boolean = false,\n    alsoRunOnDisabled: boolean = false,\n  ): FA<TItem> {\n    const subs: [Observable<[DeepPartial<TItem>[] | undefined, DeepPartial<TItem>[]]>, Observable<boolean>?] = [\n      this.fa.value$.pipe(\n        startWith(undefined as unknown as DeepPartial<TItem[]>),\n        pairwise(),\n        map(v => [v[0] as DeepPartial<TItem>[] | undefined, (v[1] ?? v[0]) as DeepPartial<TItem>[]]),\n      ),\n    ];\n    if (alsoRunOnEnabled || alsoRunOnDisabled) {\n      subs.push(\n        this.fa.meta$.pipe(\n          map(e => e.enabled),\n          filter(enabled => {\n            if (enabled && alsoRunOnEnabled) {\n              return true;\n            } else if (!enabled && alsoRunOnDisabled) {\n              return true;\n            }\n            return false;\n          }),\n        ),\n      );\n    }\n    this.subscriptions.push(\n      combineLatest(subs).subscribe(([v]) => {\n        callback(v[1], v[0], this.fa.$controls(), this.fa);\n      }),\n    );\n    return this.fa;\n  }\n}\n","import type { Signal, WritableSignal } from '@angular/core';\nimport { signal } from '@angular/core';\nimport type { Observable } from 'rxjs';\nimport { BehaviorSubject, filter, map, startWith } from 'rxjs';\nimport { ACImpl } from '../abstract-control/impl';\nimport type { MetaFns } from '../abstract-control/meta/interfaces';\nimport type { AsyncValidatorFn, ValidatorFn, ValidatorFns } from '../abstract-control/validation/interfaces';\nimport type { FA } from './interaces';\nimport { FaRegisterFnsImpl } from './register/impl';\nimport type { FG } from '../form-group/interfaces';\nimport type { FormGroup } from '@angular/forms';\nimport { FormArray, FormResetEvent } from '@angular/forms';\nimport type { ControlsOf } from '../../types/controls-of';\nimport { ValidatorFnsImpl } from '../abstract-control/validation/impl';\nimport { MetaFnsImpl } from '../abstract-control/meta/impl';\nimport type { FGImpl } from '../form-group/impl';\nimport type { DeepPartial, ReadonlyBehaviorSubject } from 'tableau-ui-angular/types';\n\nexport class FAImpl<T extends Record<string, unknown>> extends ACImpl<T[]> implements FA<T> {\n  protected readonly $_value: WritableSignal<DeepPartial<T>[]>;\n  protected readonly _value$: BehaviorSubject<DeepPartial<T>[]>;\n  private readonly _rawValue$: BehaviorSubject<T[]>;\n  private readonly $_rawValue: WritableSignal<T[]>;\n  public override get value$(): Observable<DeepPartial<T>[]> {\n    return this._value$.asObservable();\n  }\n  public override get $value(): Signal<DeepPartial<T>[]> {\n    return this.$_value;\n  }\n  public get rawValue$(): Observable<T[]> {\n    return this._rawValue$.asObservable();\n  }\n  public get $rawValue(): Signal<T[]> {\n    return this.$_rawValue;\n  }\n  private get _controls$(): ReadonlyBehaviorSubject<FG<T>[]> {\n    return this.hierarchy.childList$ as unknown as ReadonlyBehaviorSubject<FG<T>[]>;\n  }\n  get controls$(): Observable<FG<T>[]> {\n    return this._controls$;\n  }\n  private readonly $_controls: WritableSignal<FG<T>[]>;\n  get $controls(): Signal<FG<T>[]> {\n    return this.$_controls;\n  }\n\n  public override submitted$: Observable<DeepPartial<T>[]>;\n  public override reset$: Observable<DeepPartial<T>[]>;\n  public override validatorFn: ValidatorFns<FA<T>>;\n  public override metaFn: MetaFns<FA<T>>;\n  public override registerFn: FaRegisterFnsImpl<T>;\n\n  private readonly _control: FormArray<FormGroup<ControlsOf<T>>>;\n  private readonly _defaultValue: T[];\n  public override get defaultValue(): T[] {\n    return this._defaultValue;\n  }\n  constructor(params: { controls: FG<T>[]; validators?: ValidatorFn | ValidatorFn[]; asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[]; updateOn?: 'blur' | 'change' | 'submit' }) {\n    const controlsArray = params.controls.map(child => {\n      const c = (child as unknown as ACImpl<unknown>).control;\n      return c as FormGroup<ControlsOf<T>>;\n    });\n\n    const control = new FormArray(controlsArray, {\n      validators: params.validators,\n      asyncValidators: params.asyncValidators,\n      updateOn: params.updateOn,\n    });\n\n    super('array', control, params.controls);\n    this._control = control;\n    this._defaultValue = control.getRawValue() as T[];\n\n    this.$_controls = signal(this._controls$.value);\n\n    this._value$ = new BehaviorSubject<DeepPartial<T>[]>(control.value);\n    this.$_value = signal(control.value);\n    this._rawValue$ = new BehaviorSubject<T[]>(this._defaultValue);\n    this.$_rawValue = signal<T[]>(this._rawValue$.value);\n    this.subscriptions.push(\n      control.valueChanges.pipe(startWith(control.value)).subscribe(v => {\n        this._value$.next(v);\n      }),\n    );\n    this.subscriptions.push(\n      this._value$.subscribe(v => {\n        this.$_value.set(v);\n      }),\n    );\n    this.subscriptions.push(\n      this._controls$.subscribe(v => {\n        this.$_controls.set(v);\n        const rawValue = control.getRawValue() as T[];\n        this._rawValue$.next(rawValue);\n        this.$_rawValue.set(rawValue);\n      }),\n    );\n    this.submitted$ = this.control.events.pipe(\n      filter(e => e instanceof SubmitEvent),\n      map(() => this._value$.value),\n    );\n    this.reset$ = this.control.events.pipe(\n      filter(e => e instanceof FormResetEvent),\n      map(() => this._value$.value),\n    );\n    this.registerFn = new FaRegisterFnsImpl<T>(this, this.subscriptions);\n    this.validatorFn = new ValidatorFnsImpl<FA<T>>(this.control);\n    this.metaFn = new MetaFnsImpl<FA<T>>(this.control, this);\n  }\n\n  private get formArray() {\n    return this.control as FormArray<FormGroup<ControlsOf<T>>>;\n  }\n  push(\n    control: FG<T>,\n    options?: {\n      emitEvent?: boolean;\n    },\n  ) {\n    const c = (control as FGImpl<T>).control;\n    this.formArray.push(c as FormGroup<ControlsOf<T>>, options);\n    const childList = this.hierarchy.childList$.value;\n    childList.push(control);\n    this.hierarchy.childList$.next(childList);\n  }\n\n  removeAt(index: number, destroyControl: boolean, options?: { emitEvent?: boolean }) {\n    this.formArray.removeAt(index, options);\n    const childList = this.hierarchy.childList$.value;\n    const control = childList.splice(index, 1)[0];\n    if (control !== undefined && destroyControl) {\n      control.destroy();\n    }\n    this.hierarchy.childList$.next(childList);\n  }\n  insert(\n    index: number,\n    control: FG<T>,\n    options?: {\n      emitEvent?: boolean;\n    },\n  ) {\n    const c = (control as FGImpl<T>).control;\n\n    this.formArray.insert(index, c as FormGroup<ControlsOf<T>>, options);\n    const childList = this.hierarchy.childList$.value;\n    childList.splice(index, 0, control);\n    this.hierarchy.childList$.next(childList);\n  }\n  clear(destroyControls: boolean, options?: { emitEvent?: boolean }) {\n    this.formArray.clear(options);\n    const childList = this.hierarchy.childList$.value;\n    if (destroyControls) {\n      childList.forEach(child => {\n        child.destroy();\n      });\n    }\n    this.hierarchy.childList$.next([]);\n  }\n  at(index: number): FG<T> | undefined {\n    return this._controls$.value[index];\n  }\n\n  resetWithDefaultValue(updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n    this._control.reset(this._defaultValue as any, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n  reset(value: T[], updateParentsValue: boolean = true, emitEvent: boolean = true) {\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument, @typescript-eslint/no-explicit-any\n    this._control.reset(value as any, { onlySelf: !updateParentsValue, emitEvent: emitEvent });\n  }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { FormReferencesOf } from '../types/form-references-of';\nimport { Injectable } from '@angular/core';\nimport type { AsyncValidatorFn, ValidatorFn } from './abstract-control/validation/interfaces';\nimport type { FC } from './form-control/interfaces';\nimport { FCImpl } from './form-control/impl';\nimport type { FG } from './form-group/interfaces';\nimport { FGImpl } from './form-group/impl';\nimport type { FA } from './form-array/interaces';\nimport { FAImpl } from './form-array/impl';\nimport type { PrimitiveWithUndefined } from './form-control/types';\n\n@Injectable({\n  providedIn: 'any',\n})\nexport class FB {\n  control<T extends PrimitiveWithUndefined | PrimitiveWithUndefined[]>(\n    value: T,\n    validators?: ValidatorFn | ValidatorFn[],\n    asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[],\n    initialDisabled?: boolean,\n    updateOn?: 'blur' | 'change' | 'submit',\n  ): FC<T> {\n    return new FCImpl<T>({\n      defaultValue: value,\n      validators: validators,\n      asyncValidators: asyncValidators,\n      initialDisabled: initialDisabled,\n      updateOn: updateOn,\n    });\n  }\n  group<T extends Record<string, any>>(\n    controls: FormReferencesOf<T>,\n    validators?: ValidatorFn | ValidatorFn[],\n    asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[],\n    updateOn?: 'blur' | 'change' | 'submit',\n  ): FG<T> {\n    return new FGImpl<T>({\n      controls: controls,\n      validators: validators,\n      asyncValidators: asyncValidators,\n      updateOn: updateOn,\n    });\n  }\n  array<TItem extends Record<string, any>>(\n    controls: FG<TItem>[],\n    validators?: ValidatorFn | ValidatorFn[],\n    asyncValidators?: AsyncValidatorFn | AsyncValidatorFn[],\n    updateOn?: 'blur' | 'change' | 'submit',\n  ): FA<TItem> {\n    return new FAImpl<TItem>({\n      controls: controls,\n      validators: validators,\n      asyncValidators: asyncValidators,\n      updateOn: updateOn,\n    });\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { Meta } from '../../models/abstract-control/meta/interfaces';\nimport type { Primitive } from 'tableau-ui-angular/types';\n\n@Pipe({\n  name: 'formError',\n  standalone: false,\n  pure: true,\n})\nexport class FormErrorPipe implements PipeTransform {\n  transform(meta: Meta | null | undefined, specificError: string, requireTouched: boolean = true, log = false): Primitive {\n    const ret = meta?.getErrorValue(specificError, requireTouched);\n    if (log) {\n      console.log('getFormError', meta, specificError, requireTouched, ret);\n    }\n    return ret === undefined ? null : ret;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { Meta } from '../../models/abstract-control/meta/interfaces';\n\n@Pipe({\n  name: 'formHasError',\n  standalone: false,\n  pure: true,\n})\nexport class FormHasErrorPipe implements PipeTransform {\n  transform(meta: Meta | null | undefined, specificError?: string, requireTouched: boolean = true, log = false): boolean {\n    const ret = meta?.hasError(specificError, requireTouched) ?? false;\n    if (log) {\n      console.log('hasFormError', meta, specificError, requireTouched, ret);\n    }\n    return ret;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { Observable } from 'rxjs';\nimport { of } from 'rxjs';\nimport type { Meta } from '../../models/abstract-control/meta/interfaces';\nimport type { AC } from '../../models/abstract-control/interfaces';\n\n@Pipe({\n  name: 'formMeta',\n  standalone: false,\n  pure: true,\n})\nexport class FormMetaPipe implements PipeTransform {\n  transform(form: AC | null | undefined, path?: string): Observable<Meta | null> {\n    if (!form) {\n      return of(null);\n    }\n    return form.hierarchy.getChild(path)?.meta$ ?? of(null);\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { AC } from '../../models/abstract-control/interfaces';\nimport type { FormArray } from '@angular/forms';\nimport type { FAImpl } from '../../models/form-array/impl';\n\n@Pipe({\n  name: 'formArray',\n  standalone: false,\n})\nexport class FormArrayPipe implements PipeTransform {\n  transform(form: AC, path?: string): FormArray {\n    const ret = form.hierarchy.getChild(path);\n    if (!ret) {\n      throw new Error(`formArray: No child found at path \"${path}\"`);\n    }\n    if (ret.type !== 'array') {\n      throw new Error(`formArray: Expected a FormArray at path \"${path}\", but got \"${ret.type}\"`);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (ret as FAImpl<any>).control as FormArray;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { AC } from '../../models/abstract-control/interfaces';\nimport type { FCImpl } from '../../models/form-control/impl';\nimport type { FormControl } from '@angular/forms';\n\n@Pipe({\n  name: 'formControl',\n  standalone: false,\n})\nexport class FormControlPipe implements PipeTransform {\n  transform(form: AC, path?: string): FormControl {\n    const ret = form.hierarchy.getChild(path);\n    if (!ret) {\n      throw new Error(`formControl: No child found at path \"${path}\"`);\n    }\n    if (ret.type !== 'control') {\n      throw new Error(`formControl: Expected a FormControl at path \"${path}\", but got \"${ret.type}\"`);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (ret as FCImpl<any>).control as FormControl;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { AC } from '../../models/abstract-control/interfaces';\nimport type { FormGroup } from '@angular/forms';\nimport type { FGImpl } from '../../models/form-group/impl';\n\n@Pipe({\n  name: 'formGroup',\n  standalone: false,\n})\nexport class FormGroupPipe implements PipeTransform {\n  transform(form: AC, path?: string): FormGroup {\n    const ret = form.hierarchy.getChild(path);\n    if (!ret) {\n      throw new Error(`formGroup: No child found at path \"${path}\"`);\n    }\n    if (ret.type !== 'group') {\n      throw new Error(`formGroup: Expected a FormGroup at path \"${path}\", but got \"${ret.type}\"`);\n    }\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    console.log((ret as FGImpl<any>).control as FormGroup);\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    return (ret as FGImpl<any>).control as FormGroup;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { FA } from '../../models/form-array/interaces';\nimport type { Observable } from 'rxjs';\nimport type { DeepPartial } from 'tableau-ui-angular/types';\n\n@Pipe({\n  name: 'formArrayValue',\n  standalone: false,\n  pure: true,\n})\nexport class FormArrayValuePipe implements PipeTransform {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  transform<TKind extends 'standard' | 'raw' = 'standard', TItem extends Record<string, any> = any>(\n    formRef: FA<TItem> | null | undefined,\n    kind?: TKind,\n  ): Observable<TKind extends 'standard' ? DeepPartial<TItem[]> : TItem[]> {\n    if (!formRef) {\n      throw new Error('FormArrayValuePipe: formRef is null or undefined');\n    }\n    let ret;\n    if (kind === 'standard') {\n      ret = formRef.value$;\n    } else {\n      ret = formRef.rawValue$;\n    }\n    return ret as unknown as Observable<TKind extends 'standard' ? DeepPartial<TItem[]> : TItem[]>;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { FC } from '../../models/form-control/interfaces';\nimport type { Primitive } from 'tableau-ui-angular/types';\n\n@Pipe({\n  name: 'formControlValue',\n  standalone: false,\n  pure: true,\n})\nexport class FormControlValuePipe implements PipeTransform {\n  transform<T extends Primitive>(group: FC<T> | null | undefined) {\n    if (!group) {\n      throw new Error('FormControlValuePipe: control is null or undefined');\n    }\n    return group.value$;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { FG } from '../../models/form-group/interfaces';\nimport type { Observable } from 'rxjs';\nimport type { DeepPartial } from 'tableau-ui-angular/types';\n\n@Pipe({\n  name: 'formGroupValue',\n  standalone: false,\n  pure: true,\n})\nexport class FormGroupValuePipe implements PipeTransform {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  transform<TKind extends 'standard' | 'raw' = 'standard', T extends Record<string, any> = any>(\n    group: FG<T> | null | undefined,\n    kind?: TKind,\n  ): Observable<TKind extends 'standard' ? DeepPartial<T> : T> {\n    if (!group) {\n      throw new Error('FormGroupValuePipe: group is null or undefined');\n    }\n    let ret;\n    if (kind === 'standard') {\n      ret = group.value$;\n    } else {\n      ret = group.rawValue$;\n    }\n    return ret as unknown as Observable<TKind extends 'standard' ? DeepPartial<T> : T>;\n  }\n}\n","import type { PipeTransform } from '@angular/core';\nimport { Pipe } from '@angular/core';\nimport type { FA } from '../models/form-array/interaces';\n\n@Pipe({\n  name: 'formArrayControls',\n  standalone: false,\n})\nexport class FormArrayControlsPipe implements PipeTransform {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  transform(form: FA<any>) {\n    return form.controls$;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\n\nimport { FB } from './models/fb';\nimport { FormErrorPipe } from './pipes/meta/form-error.pipe';\nimport { FormHasErrorPipe } from './pipes/meta/form-has-error.pipe';\nimport { FormArrayPipe } from './pipes/raw-controls/form-array.pipe';\nimport { FormMetaPipe } from './pipes/meta/form-meta.pipe';\nimport { FormControlPipe } from './pipes/raw-controls/form-control.pipe';\nimport { FormGroupPipe } from './pipes/raw-controls/form-group.pipe';\nimport { FormArrayValuePipe } from './pipes/value/form-array-value.pipe';\nimport { FormControlValuePipe } from './pipes/value/form-control-value.pipe';\nimport { FormGroupValuePipe } from './pipes/value/form-group-value.pipe';\nimport { FormArrayControlsPipe } from './pipes/form-array-controls.pipe';\n@NgModule({\n  imports: [ReactiveFormsModule, CommonModule],\n  declarations: [FormErrorPipe, FormHasErrorPipe, FormMetaPipe, FormArrayPipe, FormControlPipe, FormGroupPipe, FormArrayValuePipe, FormControlValuePipe, FormGroupValuePipe, FormArrayControlsPipe],\n  providers: [FB],\n  exports: [FormErrorPipe, FormHasErrorPipe, FormMetaPipe, FormArrayPipe, FormControlPipe, FormGroupPipe, FormArrayValuePipe, FormControlValuePipe, FormGroupValuePipe, FormArrayControlsPipe],\n})\nexport class TableauUiFormModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}