{"version":3,"file":"zarlex-ngx-accessor.mjs","sources":["../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/checkbox-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/default-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/number-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/radio-control-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/range-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/select-control-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessors/select-multiple-control-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/utils.ts","../../../../../src/libs/ngx-accessor/src/lib/accessor/get-property.ts","../../../../../src/libs/ngx-accessor/src/lib/accessor/set-property.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validator-error.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/max-length.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/max.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/min-length.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/min.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/required.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/email.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/invalid-nested-property.ts","../../../../../src/libs/ngx-accessor/src/lib/errors/validation-errors/pattern.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validation.ts","../../../../../src/libs/ngx-accessor/src/lib/accessors/abstract-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/interface.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/max.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/max-length.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/min.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/min-length.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/required.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/email.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/validators/pattern.ts","../../../../../src/libs/ngx-accessor/src/lib/validation/value-validation.ts","../../../../../src/libs/ngx-accessor/src/lib/accessors/signal/signal-value-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/accessors/signal/utils/computed-previous.ts","../../../../../src/libs/ngx-accessor/src/lib/accessors/signal/signal-accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/accessor.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/checkbox-required-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/email-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/max-length-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/max-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/min-length-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/min-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/pattern-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/validators/required-validator.directive.ts","../../../../../src/libs/ngx-accessor/src/lib/directives/module.ts","../../../../../src/libs/ngx-accessor/src/lib/type-utils/array.types.ts","../../../../../src/libs/ngx-accessor/src/lib/abstract-input.ts","../../../../../src/libs/ngx-accessor/src/lib/index.ts","../../../../../src/libs/ngx-accessor/src/zarlex-ngx-accessor.ts"],"sourcesContent":["import {Directive, forwardRef} from '@angular/core';\nimport {CheckboxControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=checkbox][ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => CheckboxValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class CheckboxValueAccessorDirective extends CheckboxControlValueAccessor {\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {DefaultValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\n@Directive({\n    selector: 'input:not([type=checkbox])[ngxAccessor],textarea[ngxAccessor]',\n    providers: [\n        {\n            provide: NG_VALUE_ACCESSOR,\n            useExisting: forwardRef(() => DefaultValueAccessorDirective),\n            multi: true\n        }\n    ],\n    standalone: true\n})\nexport class DefaultValueAccessorDirective extends DefaultValueAccessor {\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, NumberValueAccessor} from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=number][ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NumberValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class NumberValueAccessorDirective extends NumberValueAccessor {\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, RadioControlValueAccessor} from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=radio][ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RadioControlValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class RadioControlValueAccessorDirective extends RadioControlValueAccessor {\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, RangeValueAccessor} from '@angular/forms';\n\n@Directive({\n  selector: 'input[type=range][ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => RangeValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class RangeValueAccessorDirective extends RangeValueAccessor {\n}\n","import {Directive, forwardRef} from '@angular/core';\nimport {NG_VALUE_ACCESSOR, SelectControlValueAccessor} from '@angular/forms';\n\n@Directive({\n  selector: 'select:not([multiple])[ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectControlValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class SelectControlValueAccessorDirective extends SelectControlValueAccessor {\n}\n","import {Directive, ElementRef, forwardRef, Host, Input, OnDestroy, Optional, Renderer2} from '@angular/core';\nimport { NG_VALUE_ACCESSOR, SelectMultipleControlValueAccessor } from '@angular/forms';\n\n@Directive({\n  selector: 'select[multiple][ngxAccessor]',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => SelectMultipleControlValueAccessorDirective),\n      multi: true\n    }\n  ],\n    standalone: true\n})\nexport class SelectMultipleControlValueAccessorDirective extends SelectMultipleControlValueAccessor {\n}\n\nfunction _buildValueString(id: string, value: any): string {\n  if (id == null) return `${value}`;\n  if (typeof value === 'string') value = `'${value}'`;\n  if (value && typeof value === 'object') value = 'Object';\n  return `${id}: ${value}`.slice(0, 50);\n}\n\n/**\n * Adapted code from Angular https://github.com/angular/angular/blob/main/packages/forms/src/directives/select_multiple_control_value_accessor.ts\n * This code defines SelectMultipleControlValueAccessorDirective as select\n *\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n@Directive({\n  selector: 'option',\n})\nexport class SelectMultipleOption implements OnDestroy {\n  // TODO(issue/24571): remove '!'.\n  id!: string;\n  /** @internal */\n  _value: any;\n\n  constructor(\n    private _element: ElementRef,\n    private _renderer: Renderer2,\n    @Optional() @Host() private _select: SelectMultipleControlValueAccessorDirective) {\n    if (this._select) {\n      // @ts-ignore\n      this.id = this._select._registerOption(this);\n    }\n  }\n\n  /**\n   * @description\n   * Tracks the value bound to the option element. Unlike the value binding,\n   * ngValue supports binding to objects.\n   */\n  @Input('ngValue')\n  set ngValue(value: any) {\n    if (this._select == null) return;\n    this._value = value;\n    this._setElementValue(_buildValueString(this.id, value));\n    this._select.writeValue(this._select.value);\n  }\n\n  /**\n   * @description\n   * Tracks simple string values bound to the option element.\n   * For objects, use the `ngValue` input binding.\n   */\n  @Input('value')\n  set value(value: any) {\n    if (this._select) {\n      this._value = value;\n      this._setElementValue(_buildValueString(this.id, value));\n      this._select.writeValue(this._select.value);\n    } else {\n      this._setElementValue(value);\n    }\n  }\n\n  /** @internal */\n  _setElementValue(value: string): void {\n    this._renderer.setProperty(this._element.nativeElement, 'value', value);\n  }\n\n  /** @internal */\n  _setSelected(selected: boolean) {\n    this._renderer.setProperty(this._element.nativeElement, 'selected', selected);\n  }\n\n  /** @nodoc */\n  ngOnDestroy(): void {\n    if (this._select) {\n      // @ts-ignore\n      this._select._optionMap.delete(this.id);\n      this._select.writeValue(this._select.value);\n    }\n  }\n}\n","import {AbstractControlDirective, ControlValueAccessor, NgControl} from '@angular/forms';\nimport { AccessorConfig, AccessorPropertyConfig } from './accessors/abstract-accessor';\nimport {ValidatorError} from './errors/validator-error';\nimport { SimplePath } from './type-utils';\nimport {IValidator} from './validation/interface';\nimport {\n    CheckboxValueAccessorDirective,\n    DefaultValueAccessorDirective,\n    NumberValueAccessorDirective,\n    RadioControlValueAccessorDirective,\n    RangeValueAccessorDirective,\n    SelectControlValueAccessorDirective,\n    SelectMultipleControlValueAccessorDirective\n} from './directives/accessors';\n\nfunction _throwError(dir: AbstractControlDirective, message: string): void {\n    let messageEnd: string;\n    if (dir.path.length > 1) {\n        messageEnd = `path: '${dir.path.join(' -> ')}'`;\n    } else if (dir.path[0]) {\n        messageEnd = `name: '${dir.path}'`;\n    } else {\n        messageEnd = 'unspecified name attribute';\n    }\n    throw new Error(`${message} ${messageEnd}`);\n}\n\nexport const BUILTIN_ACCESSORS = [\n    CheckboxValueAccessorDirective,\n    RangeValueAccessorDirective,\n    NumberValueAccessorDirective,\n    SelectControlValueAccessorDirective,\n    SelectMultipleControlValueAccessorDirective,\n    RadioControlValueAccessorDirective,\n];\n\n/**\n * Adapted code from https://github.com/angular/angular/blob/6789c7ef947952551d7598fe37a3d86093b75720/packages/forms/src/directives/shared.ts#L367\n *\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nexport function isBuiltInAccessor(valueAccessor: ControlValueAccessor): boolean {\n    return BUILTIN_ACCESSORS.some(a => valueAccessor.constructor === a);\n}\n\n\n/**\n * Adapted code from https://github.com/angular/angular/blob/6789c7ef947952551d7598fe37a3d86093b75720/packages/forms/src/directives/shared.ts#L388\n *\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\nexport function selectValueAccessor(\n    dir: NgControl, valueAccessors: ControlValueAccessor[]): ControlValueAccessor | null {\n    if (!valueAccessors) {\n        return null;\n    }\n\n    let defaultAccessor: ControlValueAccessor | undefined = undefined;\n    let builtinAccessor: ControlValueAccessor | undefined = undefined;\n    let customAccessor: ControlValueAccessor | undefined = undefined;\n\n    valueAccessors.forEach((v: ControlValueAccessor) => {\n        if (v.constructor === DefaultValueAccessorDirective) {\n            defaultAccessor = v;\n        } else if (isBuiltInAccessor(v)) {\n            builtinAccessor = v;\n        } else {\n            customAccessor = v;\n        }\n    });\n\n    if (customAccessor) {\n        return customAccessor;\n    }\n    if (builtinAccessor) {\n        return builtinAccessor;\n    }\n    if (defaultAccessor) {\n        return defaultAccessor;\n    }\n\n    _throwError(dir, 'No valid value accessor for form control with');\n\n    return null;\n}\n\nexport function getValidatorError(key: any, value: any, validator: IValidator): { [key: string]: ValidatorError } {\n    const result: any = {};\n    result[key] = validator.error(value);\n    return result;\n}\n\nexport function keyValidatorsFromAccessorConfig<TProperties extends object>(config: AccessorConfig<TProperties>): { [key in SimplePath<TProperties>]?: Array<IValidator> } {\n  return Object.entries(config || {}).reduce((previousValue, [key, propertyAccessorConfig]: [SimplePath<TProperties>, AccessorPropertyConfig]) => {\n    if(propertyAccessorConfig?.validators?.length){\n      previousValue[key] = propertyAccessorConfig.validators\n    }\n    return previousValue;\n  }, {} as { [key in SimplePath<TProperties>]?: Array<IValidator> })\n}\n\n\nexport function isEqual(val1: unknown, val2: unknown): boolean {\n  switch (typeof val1) {\n    case 'number':\n    case 'string':\n    case 'boolean':\n      return val1 === val2;\n    default:\n      return JSON.stringify(val1) === JSON.stringify(val2);\n  }\n}\n","import {GetProperty} from '../type-utils/get.types';\n\nexport const getProperty: GetProperty = (object, path) => {\n    if (path === undefined || path === null) {\n        return object;\n    }\n\n    return path.toString().split('.').reduce((previous, current) => {\n        if (previous && current.length) {\n            return previous[current];\n        } else {\n            return previous;\n        }\n    }, object as any);\n};\n","/**\n * Set property of object by path in dot notation\n */\nimport {SetProperty} from '../type-utils/set.types';\n\nexport const setProperty: SetProperty = (obj, path, value) => {\n    if (path === undefined || path === null) {\n        return;\n    }\n\n    const pathArray = path.toString().split('.');\n    pathArray.reduce(\n        (previous, current, index) => {\n            if (index === pathArray.length - 1) {\n                if (current.length) {\n                    previous[current] = value;\n                } else {\n                    Object.assign(previous, value);\n                }\n            } else {\n                if (!previous || !previous[current]) {\n                    // Check if the next index is a number in order to determine whether empty object should be an object or array\n                    if (Number.isFinite(parseInt(pathArray[index + 1], 10))) {\n                        previous[current] = [];\n                    } else {\n                        previous[current] = {};\n                    }\n                }\n            }\n            return previous[current];\n        }, obj as any\n    );\n};\n","export class ValidatorError<TParams = any> extends Error {\n  public override message: string;\n  public params: TParams;\n  public id: string;\n\n  constructor(options: { id: string, message: string, params: TParams }) {\n    super(options.message);\n    this.id = options.id;\n    this.message = options.message;\n    this.params = options.params;\n  }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class MaxLengthValidationError extends ValidatorError<{ maxLength: number, currentLength: number }> {\n    constructor(params: { maxLength: number, currentLength: number }) {\n        super({\n            params,\n            id: 'maxlength',\n            message: `Invalid length! Has to be smaller than ${params.maxLength}. Current length is ${params.currentLength}`\n        });\n    }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class MaxValidationError extends ValidatorError<{ max: number, current: number }> {\n    constructor(params: { max: number, current: number }) {\n        super({\n            params,\n            id: 'max',\n            message: `Invalid number! Has to be smaller than ${params.max}. Current number is ${params.current}`\n        });\n    }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class MinLengthValidationError extends ValidatorError<{ minLength: number, currentLength: number }> {\n    constructor(params: { minLength: number, currentLength: number }) {\n        super({\n            params,\n            id: 'minlength',\n            message: `Invalid length! Has to be larger than ${params.minLength}. Current length is ${params.currentLength}`\n        });\n    }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class MinValidationError extends ValidatorError< { min: number, current: number }> {\n    constructor(params: { min: number, current: number }) {\n        super({\n            params,\n            id: 'min',\n            message: `Invalid number! Has to be bigger than ${params.min}. Current number is ${params.current}`\n        });\n    }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class RequiredValidationError extends ValidatorError {\n    constructor() {\n        super({\n            params: {},\n            id: 'required',\n            message: `Required field`\n        });\n    }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class EmailValidationError extends ValidatorError<{ value: string }> {\n    constructor(params: { value: string }) {\n        super({\n            id: 'email',\n            message: `Not an e-mail! ${params.value} seems not to be a valid e-mail address`,\n            params\n        });\n    }\n}\n","import { ValidatorError } from '../validator-error';\n\nexport class InvalidNestedPropertyError extends ValidatorError<{\n  errors: { [key: string]: Array<ValidatorError> }\n}> {\n  constructor(errors: { [key: string]: Array<ValidatorError> }) {\n    super({\n      params: {errors},\n      id: 'invalidNestedProperty',\n      message: `${Object.keys(errors).length} invalid properties`\n    });\n  }\n}\n","import {ValidatorError} from '../validator-error';\n\nexport class PatternValidationError extends ValidatorError<{ value: string, pattern: RegExp }> {\n    constructor(params: { value: string, pattern: RegExp }) {\n        super({\n            id: 'pattern',\n            message: `Does not match pattern! ${params.value} does not match the required pattern ${params.pattern.toString()}`,\n            params\n        });\n    }\n}\n","import { Signal, signal, WritableSignal } from '@angular/core';\nimport { InvalidNestedPropertyError, ValidatorError } from '../errors';\nimport { SimplePath } from '../type-utils';\nimport { IValidator, ValidationUpdate } from \"./interface\";\n\nexport class Validation<TProperties extends object> {\n  public readonly isValid: Signal<boolean>;\n  public readonly errors: Signal<Array<ValidatorError>>;\n  public isValidating: Signal<boolean>;\n\n  protected errorMap: Map<string, ValidationUpdate> = new Map();\n  protected writableErrors: WritableSignal<Array<ValidatorError>> = signal([]);\n  protected writableIsValid: WritableSignal<boolean> = signal(false);\n  protected writableIsValidating: WritableSignal<boolean> = signal(false);\n\n  constructor(public readonly validators: { [key in SimplePath<TProperties>]?: Array<IValidator> }) {\n    this.errors = this.writableErrors.asReadonly();\n    this.isValid = this.writableIsValid.asReadonly();\n    this.isValidating = this.writableIsValidating.asReadonly();\n  }\n\n  public update(key: string, update: ValidationUpdate): void {\n    if (!update.isValid) {\n      this.errorMap.set(key, update);\n    } else {\n      this.errorMap.delete(key);\n    }\n\n    const updates = Array.from(this.errorMap.values());\n    const nestedErrors: { [key: string]: Array<ValidatorError> } = Array\n      .from(this.errorMap.entries())\n      .reduce((previous, [key, value]) => {\n        if (value.errors.length) {\n          previous[key] = value.errors\n        }\n        return previous;\n      }, {})\n    if (Object.keys(nestedErrors).length) {\n      this.writableErrors.set([\n        new InvalidNestedPropertyError(nestedErrors),\n      ])\n    } else {\n      this.writableErrors.set([]);\n    }\n    this.writableIsValidating.set(updates.find(update => update.isValidating) !== undefined);\n    if(updates.find(update => !update.isValid)){\n      this.writableIsValid.set(false);\n    } else {\n      this.writableIsValid.set(true);\n    }\n  }\n}\n","import { Signal, signal, WritableSignal } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { Accessor } from '../accessor/interface';\nimport { ArrayAccessors, IsValidAccessorKey } from '../type-utils/accessor.types';\nimport { GetPropertyType, SimplePath } from '../type-utils/get.types';\nimport { keyValidatorsFromAccessorConfig } from '../utils';\nimport { IValidator, ValidationUpdate } from '../validation/interface';\nimport { Validation } from '../validation/validation';\n\nexport interface AccessorCreateOptions {\n  isEqual: (val1: unknown, val2: unknown) => boolean;\n  validators: { [key: string]: Array<IValidator> },\n  onValidationChange: (update: ValidationUpdate) => void;\n}\n\nexport interface IAccessorOptions<TProperties extends object> {\n  validators: { [key in SimplePath<TProperties>]?: Array<IValidator> };\n}\n\nexport interface AccessorPropertyConfig {\n  validators?: Array<IValidator>;\n  isEqual?:(val1: unknown, val2: unknown) => boolean;\n}\n\nexport type AccessorConfig<TProperties extends object> = { [property in SimplePath<TProperties>]?: AccessorPropertyConfig };\n\nexport abstract class AbstractAccessor<TProperties extends object> {\n  public readonly validation: Validation<TProperties>;\n  public readonly isDirty: Signal<boolean>;\n  protected dirtyKeys: Map<string, boolean> = new Map<string, boolean>();\n  protected writableIsDirty: WritableSignal<boolean> = signal(false);\n  protected accessorMap: Map<string, Accessor<any, any>> = new Map();\n  protected accessorSubscriptionsMap: Map<string, Subscription> = new Map();\n\n  constructor(public config: AccessorConfig<TProperties> = {}) {\n    this.validation = new Validation<TProperties>(keyValidatorsFromAccessorConfig(config));\n    this.isDirty = this.writableIsDirty.asReadonly();\n  }\n\n  public access<TKey extends string | undefined = undefined>(\n    key?: IsValidAccessorKey<TKey, TProperties>\n  ): [TKey] extends [undefined] ? Accessor<TProperties, TProperties> : Accessor<TProperties, GetPropertyType<TProperties, TKey>> {\n    if (key) {\n      return this.accessProperty(key);\n    } else {\n      return this.accessRoot() as any;\n    }\n  }\n\n  public getAccessors(): ArrayAccessors<any> {\n    return this.access().getAccessors() as ArrayAccessors<any>;\n  }\n\n  public removeAccess<TKey extends string>(\n    key: IsValidAccessorKey<TKey, TProperties>\n  ): void {\n    this.accessorSubscriptionsMap.get(key as string)?.unsubscribe();\n    this.accessorMap.delete(key as string);\n    this.accessorSubscriptionsMap.delete(key as string);\n  }\n\n  public destroy(): void {\n    Array.from(this.accessorMap.values()).forEach(accesor => accesor.destroy());\n    Array.from(this.accessorSubscriptionsMap.values()).forEach(subscription => subscription.unsubscribe());\n    this.accessorMap.clear();\n    this.accessorSubscriptionsMap.clear();\n  }\n\n  public setPristine(): void {\n    this.writableIsDirty.set(false);\n    this.accessorMap.forEach((accessor) => accessor.setPristine());\n  }\n\n  protected accessRoot(): Accessor<TProperties, TProperties> {\n    let existing: Accessor<any, any> = this.accessorMap.get('root');\n    if (!existing) {\n      existing = this.createRootAccessor({\n        isEqual: this.config['']?.isEqual,\n        validators: this.validation.validators,\n        onValidationChange: (update) => {\n          this.validation.update('', update);\n        }\n      });\n      this.accessorMap.set('root', existing);\n      this.accessorSubscriptionsMap.set('root', new Subscription());\n    }\n    return existing;\n  }\n\n  protected accessProperty<TKey extends string>(\n    key: IsValidAccessorKey<TKey, TProperties>\n  ): Accessor<TProperties, GetPropertyType<TProperties, TKey>> {\n    let existing: Accessor<any, any> = this.accessorMap.get(key as string);\n    if (!existing) {\n      existing = this.createAccessor(key, {\n        isEqual: this.config[key as string]?.isEqual,\n        validators: this.validation.validators,\n        onValidationChange: (update) => {\n          this.validation.update(key as string, update);\n        },\n      });\n      this.accessorMap.set(key as string, existing);\n      this.accessorSubscriptionsMap.set(key as string, new Subscription());\n\n    }\n    return existing;\n  }\n\n  protected abstract createAccessor<TKey extends keyof TProperties>(key: TKey, options: AccessorCreateOptions): Accessor<any, any>;\n\n  protected abstract createRootAccessor(options: AccessorCreateOptions): Accessor<any, any>;\n}\n","import { Observable } from 'rxjs';\nimport { ValidatorError } from '../errors/validator-error';\n\nexport type ValidatorFn = (value: any) => (boolean);\nexport type AsyncValidatorFn = (value: any) => (Promise<boolean> | Observable<boolean>);\n\nexport enum ValidatorId{\n  required = 'required',\n  minLength = 'minLength',\n  maxLength = 'maxLength',\n  min = 'min',\n  max = 'max',\n  pattern = 'pattern',\n  email = 'email',\n}\n\nexport interface IValidator {\n  id?: string;\n  isValid: AsyncValidatorFn  | ValidatorFn,\n  async: boolean;\n  error: (value: any) => ValidatorError;\n  setupElement?: (el: HTMLElement) => void;\n}\n\nexport type ValidationErrors<TProperties> = {\n  [key in keyof TProperties]: Array<ValidatorError>;\n};\n\nexport interface ValidationUpdate{\n  isValid: boolean;\n  isValidating: boolean;\n  errors: Array<ValidatorError>;\n}\n","import { MaxValidationError } from '../../errors/validation-errors/max';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function maxValidator(max: number): IValidator {\n  return {\n    id: ValidatorId.max,\n    isValid: (value) => {\n      return !Number.isFinite(value) || value <= max;\n    },\n    async: false,\n    error: (value) => new MaxValidationError({\n      max: max,\n      current: value\n    }),\n    setupElement: (el: HTMLInputElement) => {\n      el.setAttribute('max', max.toString());\n    }\n  }\n}\n\n","import { MaxLengthValidationError } from '../../errors/validation-errors/max-length';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function maxLengthValidator(maxLength: number): IValidator {\n  return {\n    id: ValidatorId.maxLength,\n    isValid: (value) => {\n      return !value || value && value.length <= maxLength;\n    },\n    async: false,\n    error: (value) => new MaxLengthValidationError({maxLength: maxLength, currentLength: value.length}),\n    setupElement: (el: HTMLElement) => el.setAttribute('maxLength', maxLength.toString())\n  }\n}\n\n","import { MinValidationError } from '../../errors/validation-errors/min';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function minValidator(min: number): IValidator {\n  return {\n    id: ValidatorId.min,\n    isValid: (value) => {\n      return !Number.isFinite(value) || value >= min;\n    },\n    async: false,\n    error: (value) => {\n      return new MinValidationError({\n        min: min,\n        current: value\n      })\n    },\n    setupElement: (el: HTMLInputElement) => {\n      el.setAttribute('min', min.toString());\n    }\n  }\n}\n\n","import { MinLengthValidationError } from '../../errors/validation-errors/min-length';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function minLengthValidator(minLength: number): IValidator {\n  return {\n    id: ValidatorId.minLength,\n    isValid: (value) => {\n      return !value || value.length >= minLength;\n    },\n    async: false,\n    error: (value) => new MinLengthValidationError({\n      minLength: minLength,\n      currentLength: value.length\n    }),\n    setupElement: (el: HTMLElement) => el.setAttribute('minLength', minLength.toString())\n  }\n}\n\n","import { RequiredValidationError } from '../../errors/validation-errors/required';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function requiredValidator(): IValidator {\n  return {\n    id: ValidatorId.required,\n    isValid: (value) => {\n      let valid;\n      switch (typeof value) {\n        case 'boolean':\n          valid = value === true;\n          break;\n        case 'number':\n          valid = Number.isFinite(value);\n          break;\n        case 'string':\n          valid = value && value.length > 0;\n          break;\n        default:\n          valid = !!value;\n      }\n      return valid;\n    },\n    async: false,\n    error: (value) => new RequiredValidationError(),\n    setupElement: (el: HTMLInputElement) => {\n      el.setAttribute('required', 'required');\n    }\n  }\n}\n\n","import { EmailValidationError } from '../../errors/validation-errors/email';\nimport { IValidator, ValidatorId } from '../interface';\n\nconst EMAIL_REGEXP =\n  /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n\nexport function emailValidator(): IValidator {\n  return {\n    id: ValidatorId.email,\n    isValid: (value) => {\n      return !value || EMAIL_REGEXP.test(value)\n    },\n    async: false,\n    error: (value) => new EmailValidationError({value: value})\n  }\n}\n\n","import { PatternValidationError } from '../../errors/validation-errors/pattern';\nimport { IValidator, ValidatorId } from '../interface';\n\nexport function patternValidator(pattern: string | RegExp): IValidator {\n  let regex: RegExp;\n  let regexStr: string;\n  if (typeof pattern === 'string') {\n    regexStr = '';\n    if (pattern.charAt(0) !== '^') {\n      regexStr += '^';\n    }\n    regexStr += pattern;\n    if (pattern.charAt(pattern.length - 1) !== '$') {\n      regexStr += '$';\n    }\n    regex = new RegExp(regexStr);\n  } else {\n    regex = pattern;\n  }\n  return {\n    id: ValidatorId.pattern,\n    isValid: (value) => {\n      if (!value) {\n        return true;\n      }\n      return regex.test(value);\n    },\n    async: false,\n    error: (value) => new PatternValidationError({value: value, pattern: regex}),\n    setupElement: (el: HTMLInputElement) => {\n      el.setAttribute('pattern', pattern.toString());\n    }\n  }\n}\n\n","import { computed, Signal, signal, WritableSignal } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { ValidatorError } from '../errors/validator-error';\nimport { IValidator, ValidationUpdate } from \"./interface\";\n\nexport class ValueValidation<TValue> {\n  public isValidating: Signal<boolean>;\n  public errors: Signal<Array<ValidatorError>>;\n  public isValid: Signal<boolean> = computed(() => {\n    return !this.isValidating() && this.errors().length === 0;\n  })\n  public update: Subject<ValidationUpdate> = new Subject();\n  public nestedErrors: Map<string, Array<ValidatorError>> = new Map();\n  public nestedValidating: Map<string, boolean> = new Map();\n  protected writableIsValidating: WritableSignal<boolean> = signal(false);\n  protected writableErrors: WritableSignal<Array<ValidatorError>> = signal([]);\n\n  constructor(public readonly validators: Array<IValidator>) {\n    this.isValidating = this.writableIsValidating.asReadonly();\n    this.errors = this.writableErrors.asReadonly();\n  }\n\n  public setErrors(errors: ValidatorError[]): void {\n    this.writableErrors.set(errors);\n    this.update.next({\n      isValid: this.isValid(),\n      errors: errors,\n      isValidating: this.isValidating()\n    })\n  }\n\n  public setIsValidating(isValidating: boolean): void {\n    if (this.isValidating() !== isValidating) {\n      this.writableIsValidating.set(isValidating);\n      this.update.next({\n        isValid: this.isValid(),\n        errors: this.errors(),\n        isValidating: isValidating\n      });\n    }\n  }\n}\n","import { computed, signal, Signal, WritableSignal } from '@angular/core';\nimport { filter, map, Observable } from 'rxjs';\nimport { getProperty } from '../../accessor/get-property';\nimport { Accessor } from '../../accessor/interface';\nimport { setProperty } from '../../accessor/set-property';\nimport { InvalidNestedPropertyError } from '../../errors';\nimport { ValidatorError } from '../../errors/validator-error';\nimport { ArrayAccessors, ArrayItemAccessor } from '../../type-utils';\nimport { GetPropertyType } from '../../type-utils/get.types';\nimport { isEqual } from '../../utils';\nimport { IValidator, ValidationUpdate, ValidatorId } from '../../validation';\nimport { ValueValidation } from '../../validation/value-validation';\nimport { SignalProperties } from './interface';\n\nexport class SignalValueAccessor<\n  TSignal extends WritableSignal<any>,\n  TProperties extends SignalProperties<TSignal>,\n  TProperty extends keyof TProperties\n> implements Accessor<TProperties, TProperties[TProperty]> {\n  public readonly id: string = Math.random().toString(36).substr(2);\n  public readonly isDirty: WritableSignal<boolean> = signal(false);\n  public readonly validation: ValueValidation<TProperties[TProperty]>;\n  public readonly isRequired: Signal<boolean> = computed(() => {\n    return this.validation.validators?.find(validator => validator.id === ValidatorId.required) !== undefined;\n  });\n  public readonly arrayAccessors: ArrayAccessors<TProperties[TProperty]> = [] as ArrayAccessors<TProperties[TProperty]>;\n  public readonly get: Signal<TProperties[TProperty]>;\n  public readonly errors: WritableSignal<Array<ValidatorError>> = signal([]);\n\n  protected readonly accessorMap: Map<string, Accessor<any, any>> = new Map();\n  protected readonly dirtyMap: Map<string, boolean> = new Map();\n\n  constructor(\n    protected signalValue: TSignal,\n    public property: TProperty,\n    public options: {\n      validators: { [key: string]: Array<IValidator> },\n      parentKeys: Array<string>,\n      onDestroy: () => void,\n      onIsDirty: (isDirty: boolean) => void,\n      onValidationChange: (update: ValidationUpdate) => void,\n      observable: Observable<{ new: TProperties[TProperty], previous: TProperties[TProperty] }>,\n      isEqual: (val1: unknown, val2: unknown) => boolean\n    },\n  ) {\n    this.validation = new ValueValidation(options.validators[this.getValidatorKey()]);\n    this.validation.update.subscribe(update => {\n      options.onValidationChange(update);\n    });\n    this.setArrayAccessors();\n    this\n      .get$()\n      .subscribe((newValue) => {\n        if (Array.isArray(newValue) && this.arrayAccessorsHaveChanged()) {\n          this.setArrayAccessors();\n          this.updateValidation();\n        }\n      });\n    this.get = computed(() => {\n      return this.getValue();\n    })\n  }\n\n  getAccessors(): TProperties[TProperty] extends Array<any> ? Array<Accessor<TProperties[TProperty], GetPropertyType<TProperties[TProperty], '0'>>> : never {\n    return this.arrayAccessors as any;\n  }\n\n  getAccessKey(): string {\n    return this.options.parentKeys.length ?\n      `${this.options.parentKeys.join('.')}.${this.property as string}` : this.property as string;\n  }\n\n  getValidatorKey(): string {\n    const parentKeys = this.options.parentKeys.filter(key => typeof key !== 'number');\n    return parentKeys.length ?\n      `${parentKeys.join('.')}.${this.property as string}` : this.property as string;\n  }\n\n  get$(): Observable<TProperties[TProperty]> {\n    return this.options.observable.pipe(\n      filter(change => {\n        const key: string = this.getAccessKey();\n        return !this.isEqual(getProperty(change.new, key), getProperty(change.previous, key));\n      }),\n      map(() => this.getValue())\n    );\n  }\n\n  set(value: TProperties[TProperty]): void {\n    const key: string = this.getAccessKey();\n    this.signalValue.update(state => {\n      if (key !== undefined && key !== null) {\n        const clone = structuredClone(state || {});\n        setProperty(clone, key as any, value);\n        return clone;\n      } else {\n        return value;\n      }\n    });\n  }\n\n  access<Property extends keyof TProperties[TProperty]>(\n    key: Property | number\n  ): Accessor<TProperties[TProperty], TProperties[TProperty][Property]> {\n    let existing: Accessor<any, any> = this.accessorMap.get(key as string);\n    if (!existing) {\n      existing = this.createItemAccessor(key as string);\n      this.accessorMap.set(key as string, existing);\n    }\n    return existing as Accessor<any, any>;\n  }\n\n  setDirty(isDirty: boolean): void {\n    this.isDirty.set(isDirty);\n    this.options.onIsDirty(isDirty);\n  }\n\n  setPristine(): void {\n    this.isDirty.set(false);\n    for (const entry of this.accessorMap.values()) {\n      entry.setPristine();\n    }\n    this.arrayAccessors.forEach(accessor => {\n      accessor.setPristine();\n    });\n  }\n\n  destroy(): void {\n    Array.from(this.accessorMap.values()).forEach(accesor => accesor.destroy());\n    this.accessorMap.clear();\n    this.validation.setErrors([]);\n    this.validation.setIsValidating(false);\n    this.options.onDestroy();\n  }\n\n  public getValue(): TProperties[TProperty] {\n    const key: string = this.getAccessKey();\n    if (key !== undefined && key !== null) {\n      return getProperty(this.signalValue(), key);\n    } else {\n      return this.signalValue();\n    }\n  }\n\n  protected setArrayAccessors(): void {\n    if (Array.isArray(this.getValue())) {\n      const items: Array<any> = this.getValue();\n\n      if (this.arrayAccessors.length > items.length) {\n        const findDeleteIndexes = this.arrayAccessors.reduce((previousValue, currentValue, currentIndex, array) => {\n          if (this.findItemIndexForAccessor(currentValue) === -1) {\n            previousValue.push(currentIndex);\n          }\n          return previousValue;\n        }, []);\n\n        findDeleteIndexes.sort().reverse().forEach(deleteIndex => {\n          this.arrayAccessors[deleteIndex].destroy();\n          this.arrayAccessors.splice(deleteIndex, 1);\n        });\n      }\n\n      items.forEach((item, index) => {\n        const accessorIndex = this.findItemAccessorIndex(item);\n        if (accessorIndex === -1) {\n          this.arrayAccessors[index] = this.createItemAccessor(index);\n        } else if (accessorIndex !== index) {\n          if (!this.arrayAccessors[index] || this.isEqual(items[index], this.arrayAccessors[index].getValue())) {\n            this.arrayAccessors[index] = this.createItemAccessor(index);\n          } else {\n            const accessor = this.arrayAccessors[accessorIndex];\n            this.arrayAccessors[accessorIndex] = this.arrayAccessors[index];\n            this.arrayAccessors[index] = accessor;\n          }\n        }\n      });\n    }\n  }\n\n  protected updateValidation(): void {\n    let errors = [];\n    if (this.validation.nestedErrors.get('')?.length) {\n      errors = errors.concat(this.validation.nestedErrors.get(''));\n    }\n    const nestedErrors = Array\n      .from(this.validation.nestedErrors)\n      .filter(([key, value]) => key !== '' && value?.length > 0)\n      .reduce((previous, current) => {\n        previous[current[0]] = current[1];\n        return previous;\n      }, {});\n    if (Object.keys(nestedErrors).length > 0) {\n      errors.push(new InvalidNestedPropertyError(nestedErrors));\n    }\n    this.validation.setErrors(errors);\n\n    const nestedValidating: boolean = Array.from(this.validation.nestedValidating.values()).find(value => value === true);\n    this.validation.setIsValidating(nestedValidating);\n  }\n\n  protected arrayAccessorsHaveChanged(): boolean {\n    const newValue = this.getValue() as Array<any>;\n    let changed = false;\n    if (this.arrayAccessors.length !== (newValue as Array<any>)?.length) {\n      changed = true;\n    } else {\n      this.arrayAccessors.forEach((accessor, index) => {\n        if (!changed) {\n          changed = accessor.getValue() !== newValue[index];\n        }\n      });\n    }\n    return changed;\n  }\n\n  protected createItemAccessor(key: number | string): Accessor<TSignal, TProperties> {\n    return new SignalValueAccessor(this.signalValue, key as any, {\n      ...this.options,\n      parentKeys: (this.property !== undefined && this.property !== null)\n        ? this.options.parentKeys.concat(this.property as any) : this.options.parentKeys,\n      onValidationChange: (update) => {\n        this.validation.nestedErrors.set(key.toString(), update.errors);\n        this.validation.nestedValidating.set(key.toString(), update.isValidating);\n        this.updateValidation();\n      },\n      onDestroy: () => {\n        this.dirtyMap.delete(key as string);\n        this.validation.nestedErrors.set(key.toString(), []);\n        this.validation.nestedValidating.set(key.toString(), false);\n        this.validation.setErrors([]);\n        this.validation.setIsValidating(false);\n        this.accessorMap.delete(key as string);\n        if(this.accessorMap.size === 0 && this.arrayAccessors.length === 0){\n          this.destroy();\n        }\n      },\n      onIsDirty: (isDirty: boolean) => {\n        this.dirtyMap.set(key as string, isDirty);\n        const isSomethingDirty = Array.from(this.dirtyMap.values()).find(isDirty => isDirty);\n        if (this.isDirty() !== isSomethingDirty) {\n          this.setDirty(isSomethingDirty);\n        }\n      }\n    });\n  }\n\n  protected findItemAccessorIndex(item: any): number {\n    return this\n      .arrayAccessors\n      .findIndex(accessor => accessor && this.isEqual(accessor.getValue(), item));\n  }\n\n  protected findItemIndexForAccessor(accessor: ArrayItemAccessor<TProperties>): number {\n    const items: Array<any> = this.getValue();\n    return items\n      .findIndex(item => this.isEqual(accessor.getValue(), item));\n  }\n\n  protected isEqual(val1: unknown, val2: unknown): boolean {\n    return typeof this.options.isEqual === 'function' ? this.options.isEqual(val1, val2) : isEqual(val1, val2);\n  }\n}\n","import {computed, Signal, untracked} from '@angular/core';\n\nexport function computedPrevious<T>(s: Signal<T>): Signal<T> {\n    let current = null as T;\n    let previous = untracked(() => s()); // initial value is the current value\n\n    return computed(() => {\n        current = s();\n        const result = previous;\n        previous =  structuredClone(current);\n        return result;\n    });\n}\n","import { effect, signal, Signal, WritableSignal } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Accessor } from '../../accessor/interface';\nimport { ArrayAccessors } from '../../type-utils';\nimport { AbstractAccessor, AccessorConfig, AccessorCreateOptions } from '../abstract-accessor';\nimport { SignalProperties } from './interface';\nimport { SignalValueAccessor } from './signal-value-accessor';\nimport { computedPrevious } from './utils/computed-previous';\n\n\nexport class SignalAccessor<TSignal extends WritableSignal<any> = WritableSignal<any>>\n  extends AbstractAccessor<SignalProperties<TSignal>> {\n  public arrayAccessors: WritableSignal<Array<Accessor<SignalProperties<TSignal>, SignalProperties<TSignal>>>>;\n  protected signalObservable: Subject<{ new: SignalProperties<TSignal>, previous: SignalProperties<TSignal> }>;\n  protected previous: Signal<SignalProperties<TSignal>>;\n\n  constructor(\n    private valueSignal: TSignal,\n    options?: AccessorConfig<SignalProperties<TSignal>>\n  ) {\n    super(options);\n    this.arrayAccessors = signal([]);\n    this.previous = computedPrevious(this.valueSignal);\n    effect(() => {\n      const newValue: SignalProperties<TSignal> = this.valueSignal();\n      const previousValue: SignalProperties<TSignal> = this.previous();\n      this.signalObservable.next({\n        new: newValue,\n        previous: previousValue\n      });\n      this.arrayAccessors.set(this.access().getAccessors());\n    });\n\n    this.signalObservable = new Subject();\n  }\n\n  public override getAccessors(): ArrayAccessors<any> {\n    return this.access().getAccessors() as ArrayAccessors<any>;\n  }\n\n  protected createAccessor<TKey extends keyof SignalProperties<TSignal>>(\n    key: TKey,\n    options: AccessorCreateOptions\n  ): Accessor<SignalProperties<TSignal>, SignalProperties<TSignal>[TKey]> {\n    return new SignalValueAccessor(this.valueSignal, key, {\n      isEqual: options.isEqual,\n      validators: options.validators,\n      onValidationChange: (update) => {\n        options.onValidationChange(update);\n      },\n      onIsDirty: (isDirty) => {\n        this.dirtyKeys.set(key as string, isDirty);\n        const somethingIsDirty = Array.from(this.dirtyKeys.values()).find(isDirty => isDirty);\n        this.writableIsDirty.set(somethingIsDirty);\n      },\n      onDestroy: () => {\n        this.accessorMap.delete(key as string);\n        this.accessorSubscriptionsMap.get(key as string)?.unsubscribe();\n        this.accessorSubscriptionsMap.delete(key as string);\n        this.dirtyKeys.delete(key as string);\n      },\n      parentKeys: [],\n      observable: this.signalObservable\n    });\n  }\n\n  protected override createRootAccessor(\n    options: AccessorCreateOptions\n  ): Accessor<SignalProperties<TSignal>, any> {\n    return new SignalValueAccessor(this.valueSignal, undefined, {\n      isEqual: options.isEqual,\n      validators: {},\n      onValidationChange: (update) => {\n        options?.onValidationChange(update);\n      },\n      onIsDirty: (isDirty) => {\n        this.dirtyKeys.set('', isDirty);\n        const somethingIsDirty = Array.from(this.dirtyKeys.values()).find(isDirty => isDirty);\n        this.writableIsDirty.set(somethingIsDirty);\n      },\n      onDestroy: () => {\n        this.accessorMap.delete('');\n        this.accessorSubscriptionsMap.get('')?.unsubscribe();\n        this.accessorSubscriptionsMap.delete('');\n        this.dirtyKeys.delete('');\n      },\n      parentKeys: [],\n      observable: this.signalObservable\n    });\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  effect,\n  ElementRef,\n  forwardRef,\n  inject,\n  Inject, Injectable,\n  InjectionToken,\n  input,\n  InputSignal,\n  OnDestroy,\n  Optional,\n  output,\n  OutputEmitterRef,\n  Self, signal, WritableSignal\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport {\n  AsyncValidator,\n  AsyncValidatorFn,\n  ControlValueAccessor,\n  FormControlStatus,\n  NG_ASYNC_VALIDATORS,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  NgControl,\n  NgModel, PristineChangeEvent,\n  UntypedFormControl,\n  Validator,\n  ValidatorFn\n} from '@angular/forms';\nimport { firstValueFrom, Observable, Subscription } from 'rxjs';\nimport { Accessor } from '../accessor/interface';\nimport { ValidatorError } from '../errors';\nimport { selectValueAccessor } from '../utils';\n\nexport interface AccessorHost {\n  accessor: InputSignal<Accessor<any, any>>;\n  required: InputSignal<boolean>;\n}\n\nexport const ngxAccessorHost = new InjectionToken<AccessorHost>('AccessorHost');\n\nexport type AccessorValueType<TAccessor extends Accessor<any, any>> = TAccessor extends Accessor<any, infer TValueType> ? TValueType : any;\n\nexport const ACCESSOR = new InjectionToken<AccessorService>('Accessor');\n\n@Injectable()\nexport class AccessorService{\n  accessor: WritableSignal<Accessor<any, any>> = signal(undefined);\n}\n\n@Directive({\n  selector: '[ngxAccessor]',\n  providers: [\n    {\n      provide: NgControl,\n      useExisting: forwardRef(() => AccessorDirective)\n    },\n    {\n      provide: ngxAccessorHost,\n      useExisting: forwardRef(() => AccessorDirective)\n    },\n    {\n      provide: ACCESSOR,\n      useClass: AccessorService,\n      multi: false\n    }\n  ],\n  standalone: false\n})\nexport class AccessorDirective<TAccessor extends Accessor<any, any>, TValue = AccessorValueType<TAccessor>> extends NgModel implements OnDestroy, AfterViewInit, AccessorHost {\n  public valueChange: OutputEmitterRef<TValue> = output({alias: 'ngxAccessorValueChange'});\n  protected accessorValueChange: OutputEmitterRef<any> = output();\n  protected element: ElementRef = inject(ElementRef, {optional: true});\n  private subscriptions: Subscription = new Subscription();\n  public accessor: InputSignal<TAccessor> = input.required({alias: 'ngxAccessor'});\n  public required: InputSignal<boolean> = input();\n  public override readonly control: UntypedFormControl = new UntypedFormControl();\n  public accessorService: AccessorService = inject(ACCESSOR);\n\n  constructor(\n    @Optional() @Self() @Inject(NG_VALIDATORS) validators: (Validator | ValidatorFn)[],\n    @Optional() @Self() @Inject(NG_ASYNC_VALIDATORS) asyncValidators:\n    (AsyncValidator | AsyncValidatorFn)[],\n    @Optional() @Self() @Inject(NG_VALUE_ACCESSOR) valueAccessors: ControlValueAccessor[]\n  ) {\n    if(!valueAccessors){\n      throw new Error('Accessor directive is applied on incompatible object. Make sure to provide the angular ControlValueAccessor');\n    }\n\n    super(null, validators, asyncValidators, [valueAccessors[0]]);\n    this.valueAccessor = selectValueAccessor(this, valueAccessors);\n    toObservable(this.accessor)\n      .subscribe((accessor) => {\n        this.subscriptions.unsubscribe();\n        this.subscriptions = new Subscription();\n        this.modelToControlUpdate();\n        this.observeModelChanges();\n        this.observeValidationErrors();\n        accessor.validation.setIsValidating(this.control.status === 'PENDING');\n\n        if (this.element) {\n          accessor.validation.validators?.forEach((validator) => {\n            if (typeof validator.setupElement === 'function') {\n              validator.setupElement(this.element.nativeElement);\n            }\n          });\n        }\n\n        this.accessorService.accessor.set(accessor);\n      });\n\n    effect(() => {\n      if (!this.accessor().isDirty()) {\n        this.control.markAsPristine({});\n      }\n    });\n\n    this.control.statusChanges.subscribe((status: FormControlStatus) => {\n      if (status === 'PENDING') {\n        this.accessor().validation.setIsValidating(true);\n      } else {\n        this.accessor().validation.setIsValidating(false);\n      }\n    })\n\n    this.control.events.subscribe((event) => {\n      if (event instanceof PristineChangeEvent) {\n        if (this.control.dirty) {\n          this.accessor().setDirty(this.control.dirty);\n        }\n      }\n    })\n  }\n\n  public ngAfterViewInit(): void {\n    this.control.markAsPristine();\n    this.control.updateValueAndValidity({onlySelf: true});\n  }\n\n  public override ngOnDestroy(): void {\n    this.subscriptions.unsubscribe();\n    super.ngOnDestroy();\n    this.accessor()?.destroy();\n  }\n\n  public override viewToModelUpdate(newValue: any): void {\n    if (newValue !== this.accessor()?.getValue()) {\n      this.accessor()?.set(newValue);\n      this.accessorValueChange.emit(newValue);\n      this.valueChange.emit(newValue);\n    }\n  }\n\n  protected modelToControlUpdate(): void {\n    if (this.accessor()) {\n      this.control.setValue(this.accessor().getValue());\n      this.setValidationErrorsOnModel();\n    }\n  }\n\n  protected setValidationErrorsOnModel(): void {\n    if (!this.accessor()) {\n      return;\n    }\n\n    if (this.control.valid) {\n      this.accessor().validation.setErrors([]);\n    } else if (this.control.errors) {\n      const validationErrors: Array<ValidatorError> = [];\n      Object.entries(this.control.errors).forEach(([key, value]) => {\n        if (value instanceof ValidatorError) {\n          validationErrors.push(value);\n        } else {\n          validationErrors.push(new ValidatorError({\n            id: key,\n            message: `Invalid value (${key})`,\n            params: value\n          }));\n        }\n      });\n      this.accessor().validation.setErrors(validationErrors);\n    }\n  }\n\n  protected observeModelChanges(): void {\n    if (!this.accessor()) {\n      return;\n    }\n    this.subscriptions.add(\n      this\n        .accessor()\n        .get$()\n        .subscribe(value => {\n          this.modelToControlUpdate();\n        })\n    );\n  }\n\n  protected observeValidationErrors(): void {\n    this.subscriptions.add(\n      this.control.statusChanges.subscribe(ev => {\n        this.setValidationErrorsOnModel();\n      })\n    );\n\n    if (this.accessor().validation.validators?.length > 0) {\n      this.control.clearValidators();\n      this.accessor().validation.validators?.forEach(validator => {\n        if (validator.async) {\n          this.control.addAsyncValidators((control) => {\n            const result = validator.isValid(control.value);\n            let validationPromise: Promise<boolean>;\n            if (result instanceof Promise) {\n              validationPromise = result;\n            } else if (result instanceof Observable) {\n              validationPromise = firstValueFrom(result);\n            } else {\n              throw new Error('Validator is marked as async but does not return async value!');\n            }\n            return validationPromise.then(isValid => {\n              if (!isValid) {\n                return [validator.error(control.value)];\n              } else {\n                return undefined;\n              }\n            })\n          })\n        } else {\n          this.control.addValidators((control) => {\n            if (!validator.isValid(control.value)) {\n              return [validator.error(control.value)];\n            } else {\n              return undefined;\n            }\n          })\n        }\n      });\n    }\n  }\n}\n","import {Directive, forwardRef, StaticProvider} from '@angular/core';\nimport {AbstractControl, CheckboxRequiredValidator as NgCheckboxRequiredValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {getValidatorError} from '../../utils';\nimport {requiredValidator} from '../../validation/validators/required';\n\nexport const CHECKBOX_REQUIRED_VALIDATOR: StaticProvider = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => CheckboxRequiredValidator),\n    multi: true\n};\n\n@Directive({\n    selector:\n        'input[type=checkbox][required][ngxAccessor]',\n    providers: [CHECKBOX_REQUIRED_VALIDATOR],\n    host: {'[attr.required]': 'required ? \"\" : null'},\n    standalone: true\n})\nexport class CheckboxRequiredValidator extends NgCheckboxRequiredValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'required',\n                control.value,\n                requiredValidator()\n            ) : null;\n    }\n}\n","import {AbstractControl, EmailValidator as NgEmailValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {Directive, forwardRef} from '@angular/core';\nimport {getValidatorError} from '../../utils';\nimport {emailValidator} from '../../validation/validators/email';\n\nexport const EMAIL_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => EmailValidator),\n    multi: true\n};\n\n@Directive({\n    selector: '[ngxAccessor][email]',\n    providers: [EMAIL_VALIDATOR],\n    standalone: true\n})\nexport class EmailValidator extends NgEmailValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'email',\n                control.value,\n                emailValidator()\n            ) : null;\n    }\n}\n","import {AbstractControl, MaxLengthValidator as NgMaxLengthValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {Directive, forwardRef} from '@angular/core';\nimport {getValidatorError} from '../../utils';\nimport {maxLengthValidator} from '../../validation/validators/max-length';\n\nexport const MAXLENGTH_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => MaxLengthValidator),\n    multi: true\n};\n\n@Directive({\n    selector: '[ngxAccessor][maxlength]',\n    providers: [MAXLENGTH_VALIDATOR],\n    host: {'[attr.maxlength]': 'maxlength ? maxlength : null'},\n    standalone: true\n})\nexport class MaxLengthValidator extends NgMaxLengthValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'maxlength',\n                control.value,\n                maxLengthValidator(typeof this.maxlength === 'number' ? this.maxlength : parseInt(this.maxlength, 10))\n            ) : null;\n    }\n}\n","import {AbstractControl, MaxValidator as NgMaxValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {Directive, forwardRef} from '@angular/core';\nimport {getValidatorError} from '../../utils';\nimport {maxValidator} from '../../validation/validators/max';\n\nexport const MAX_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => MaxValidator),\n    multi: true\n};\n\n@Directive({\n    selector: '[ngxAccessor][max]',\n    providers: [MAX_VALIDATOR],\n    host: {'[attr.max]': 'max ? max : null'},\n    standalone: true\n})\nexport class MaxValidator extends NgMaxValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'max',\n                control.value,\n                maxValidator(typeof this.max === 'string' ? parseInt(this.max, 10) : this.max)\n            ) : null;\n    }\n}\n","import {AbstractControl, MinLengthValidator as NgMinLengthValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {Directive, forwardRef} from '@angular/core';\nimport {getValidatorError} from '../../utils';\nimport {minLengthValidator} from '../../validation/validators/min-length';\n\nexport const MINLENGTH_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => MinLengthValidator),\n    multi: true\n};\n\n@Directive({\n    selector: '[ngxAccessor][minlength]',\n    providers: [MINLENGTH_VALIDATOR],\n    host: {'[attr.minlength]': 'minlength ? minlength : null'},\n    standalone: true\n})\nexport class MinLengthValidator extends NgMinLengthValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'minlength',\n                control.value,\n                minLengthValidator(typeof this.minlength === 'number' ? this.minlength : parseInt(this.minlength, 10))\n            ) : null;\n    }\n}\n","import {AbstractControl, MinValidator as NgMinValidator, NG_VALIDATORS, ValidationErrors} from '@angular/forms';\nimport {Directive, forwardRef} from '@angular/core';\nimport {getValidatorError} from '../../utils';\nimport {minValidator} from '../../validation/validators/min';\n\nexport const MIN_VALIDATOR: any = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => MinValidator),\n    multi: true\n};\n\n@Directive({\n    selector: '[ngxAccessor][min]',\n    providers: [MIN_VALIDATOR],\n    host: {'[attr.min]': 'min ? min : null'},\n    standalone: true\n})\nexport class MinValidator extends NgMinValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'min',\n                control.value,\n                minValidator(typeof this.min === 'string' ? parseInt(this.min, 10) : this.min)\n            ) : null;\n    }\n}\n","import {Directive, forwardRef, StaticProvider} from '@angular/core';\nimport {AbstractControl, NG_VALIDATORS, PatternValidator as NgPatternValidator, ValidationErrors} from '@angular/forms';\nimport {getValidatorError} from '../../utils';\nimport {patternValidator} from '../../validation/validators/pattern';\n\nexport const PATTERN_VALIDATOR: StaticProvider = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => PatternValidator),\n    multi: true\n};\n\n@Directive({\n    selector:\n        '[pattern][ngxAccessor]',\n    providers: [PATTERN_VALIDATOR],\n    host: {'[attr.pattern]': 'pattern ? pattern : null'},\n    standalone: true\n})\nexport class PatternValidator extends NgPatternValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'required',\n                control.value,\n                patternValidator(this.pattern)\n            ) : null;\n    }\n}\n","import {Directive, forwardRef, StaticProvider} from '@angular/core';\nimport {AbstractControl, NG_VALIDATORS, RequiredValidator as NgRequiredValidator, ValidationErrors} from '@angular/forms';\nimport {getValidatorError} from '../../utils';\nimport {requiredValidator} from '../../validation/validators/required';\n\nexport const REQUIRED_VALIDATOR: StaticProvider = {\n    provide: NG_VALIDATORS,\n    useExisting: forwardRef(() => RequiredValidator),\n    multi: true\n};\n\n@Directive({\n    selector:\n        ':not([type=checkbox])[required][ngxAccessor]',\n    providers: [REQUIRED_VALIDATOR],\n    host: {'[attr.required]': 'required ? \"\" : null'},\n    standalone: true\n})\nexport class RequiredValidator extends NgRequiredValidator {\n    public override validate(control: AbstractControl): ValidationErrors | null {\n        return super.validate(control) !== null ?\n            getValidatorError(\n                'required',\n                control.value,\n                requiredValidator()\n            ) : null;\n    }\n}\n","import { NgModule } from '@angular/core';\nimport { AccessorDirective } from './accessor';\nimport { CheckboxValueAccessorDirective } from './accessors/checkbox-value-accessor';\nimport { DefaultValueAccessorDirective } from './accessors/default-value-accessor';\nimport { NumberValueAccessorDirective } from './accessors/number-value-accessor';\nimport { RadioControlValueAccessorDirective } from './accessors/radio-control-value-accessor';\nimport { RangeValueAccessorDirective } from './accessors/range-value-accessor';\nimport { SelectControlValueAccessorDirective } from './accessors/select-control-value-accessor';\nimport {\n  SelectMultipleControlValueAccessorDirective,\n  SelectMultipleOption\n} from './accessors/select-multiple-control-value-accessor';\nimport { MaxValidator } from './validators';\nimport { CheckboxRequiredValidator } from './validators/checkbox-required-validator.directive';\nimport { EmailValidator } from './validators/email-validator.directive';\nimport { MaxLengthValidator } from './validators/max-length-validator.directive';\nimport { MinLengthValidator } from './validators/min-length-validator.directive';\nimport { MinValidator } from './validators/min-validator.directive';\nimport { PatternValidator } from './validators/pattern-validator.directive';\nimport { RequiredValidator } from './validators/required-validator.directive';\n\n@NgModule({\n  declarations: [\n    AccessorDirective,\n  ],\n  imports: [\n    CheckboxValueAccessorDirective,\n    DefaultValueAccessorDirective,\n    NumberValueAccessorDirective,\n    RadioControlValueAccessorDirective,\n    RangeValueAccessorDirective,\n    SelectControlValueAccessorDirective,\n    SelectMultipleControlValueAccessorDirective,\n    SelectMultipleOption,\n\n    CheckboxRequiredValidator,\n    EmailValidator,\n    MaxValidator,\n    MaxLengthValidator,\n    MinLengthValidator,\n    MinValidator,\n    PatternValidator,\n    RequiredValidator\n  ],\n  exports: [\n    AccessorDirective,\n\n    CheckboxValueAccessorDirective,\n    DefaultValueAccessorDirective,\n    NumberValueAccessorDirective,\n    RadioControlValueAccessorDirective,\n    RangeValueAccessorDirective,\n    SelectControlValueAccessorDirective,\n    SelectMultipleControlValueAccessorDirective,\n    SelectMultipleOption,\n\n    CheckboxRequiredValidator,\n    EmailValidator,\n    MaxValidator,\n    MaxLengthValidator,\n    MinLengthValidator,\n    MinValidator,\n    PatternValidator,\n    RequiredValidator\n  ],\n  providers: []\n})\nexport class NgxAccessorModule {\n}\n","// https://stackoverflow.com/a/59187769\n\n/** Type of the elements in an array */\nexport type ElementOf<T> = T extends (infer E)[] ? E : T extends readonly (infer E)[] ? E : never;\n/** Used internally for `Tail`. */\ntype AsFunctionWithArgsOf<T extends unknown[] | readonly unknown[]> = (...args: T) => any;\n/** Used internally for `Tail` */\ntype TailArgs<T> = T extends (x: any, ...args: infer T) => any ? T : never;\n/** Elements of an array after the first. */\ntype Tail<T extends unknown[] | readonly unknown[]> = TailArgs<AsFunctionWithArgsOf<T>>;\n/** Used internally for `IndicesOf`; probably useless outside of that. */\ntype AsDescendingLengths<T extends unknown[] | readonly unknown[]> =\n    [] extends T ? [0] :\n        [ElementOf<ElementOf<AsDescendingLengths<Tail<T>>[]>>, T['length']];\n/** Union of numerical literals corresponding to a tuple's possible indices */\nexport type IndicesOf<T extends unknown[] | readonly unknown[]> =\n    number extends T['length'] ? number :\n        [] extends T ? never :\n            ElementOf<AsDescendingLengths<Tail<T>>>;\n","import { Directive, forwardRef, InjectionToken, input, InputSignal, model, ModelSignal, Type } from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator\n} from '@angular/forms';\nimport { ValidatorError } from './errors';\n\nexport function inputProviders(cls: Type<AbstractInput<any>>): ({\n  provide: InjectionToken<readonly ControlValueAccessor[]>;\n  useExisting: Type<any>;\n  multi: true\n} | { provide: InjectionToken<readonly (Validator)[]>; useExisting: Type<any>; multi: true })[] {\n  return [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => cls),\n      multi: true\n    },\n    {\n      provide: NG_VALIDATORS,\n      useExisting: forwardRef(() => cls),\n      multi: true\n    }\n  ];\n}\n\n@Directive()\nexport abstract class AbstractInput<TValue> implements ControlValueAccessor, Validator {\n  public required: InputSignal<boolean> = input(false);\n  public disabled: ModelSignal<boolean> = model(false);\n\n  private onChange: (value: TValue) => void;\n  private onTouch: () => void;\n  private validator: () => void;\n  private currentValue: TValue;\n\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled.set(isDisabled);\n  }\n\n  registerOnChange(fn: any): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any): void {\n    this.onTouch = fn;\n  }\n\n  writeValue(value: TValue): void {\n    if (this.valueHasChanged(this.currentValue, value)) {\n      this.setValue(value);\n      this.currentValue = value;\n    }\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this.validator = fn;\n  }\n\n  validate(control: AbstractControl): ValidationErrors | null {\n    const errors = this.validateValue();\n    return errors.reduce((previous, currentValue) => {\n      previous[currentValue.id] = currentValue;\n      return previous;\n    }, {});\n  }\n\n  public runValidation(): void {\n    if (typeof this.validator === 'function') {\n      this.validator();\n    }\n  }\n\n  public updateValue(value: TValue): void {\n    if (!this.valueHasChanged(this.currentValue, value)) {\n      return;\n    }\n\n    this.runValidation();\n\n    if (typeof this.onChange === 'function') {\n      this.currentValue = value;\n      this.onChange(value);\n    }\n\n    if (typeof this.onTouch === 'function') {\n      this.onTouch();\n    }\n  }\n\n  protected abstract setValue(value: TValue): void;\n\n  protected abstract validateValue(): Array<ValidatorError>;\n\n  protected abstract valueHasChanged(currentValue: TValue, newValue: TValue): boolean;\n}\n","/*\n * Public API Surface of zx-spine-form\n */\n\nexport * from './utils';\nexport * from './accessor/index';\nexport * from './accessors/index';\nexport * from './directives/index';\nexport * from './errors/index';\nexport * from './validation/index';\nexport * from './type-utils/index';\nexport * from './abstract-input';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["NgCheckboxRequiredValidator","NgEmailValidator","NgMaxLengthValidator","NgMaxValidator","NgMinLengthValidator","NgMinValidator","NgPatternValidator","NgRequiredValidator"],"mappings":"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"}