{"version":3,"file":"dynamize-ngx-validator-pack.mjs","sources":["../../../projects/ngx-validator-pack/src/lib/components/base/base.component.ts","../../../projects/ngx-validator-pack/src/lib/components/validation-error/validation-error.component.ts","../../../projects/ngx-validator-pack/src/lib/components/validation-error/validation-error.component.html","../../../projects/ngx-validator-pack/src/lib/directives/show-validation.directive.ts","../../../projects/ngx-validator-pack/src/lib/pipes/checked.pipe.ts","../../../projects/ngx-validator-pack/src/lib/pipes/object-values.pipe.ts","../../../projects/ngx-validator-pack/src/lib/components/checks/checks.component.ts","../../../projects/ngx-validator-pack/src/lib/components/checks/checks.component.html","../../../projects/ngx-validator-pack/src/lib/directives/checks.directive.ts","../../../projects/ngx-validator-pack/src/lib/interfaces/validation-config.interface.ts","../../../projects/ngx-validator-pack/src/lib/helpers/errors.ts","../../../projects/ngx-validator-pack/src/lib/validations/cross-field-validations.ts","../../../projects/ngx-validator-pack/src/lib/validators/reactive-forms/cross-field-validators.ts","../../../projects/ngx-validator-pack/src/lib/constant/regex.ts","../../../projects/ngx-validator-pack/src/lib/helpers/numbers.ts","../../../projects/ngx-validator-pack/src/lib/helpers/date.ts","../../../projects/ngx-validator-pack/src/lib/helpers/regexp.ts","../../../projects/ngx-validator-pack/src/lib/validations/validations.ts","../../../projects/ngx-validator-pack/src/lib/validators/reactive-forms/prebuilt-validators.ts","../../../projects/ngx-validator-pack/src/lib/validators/reactive-forms/reactive-forms-validators.ts","../../../projects/ngx-validator-pack/src/lib/validators/template-driven-forms/cross-field-td-validators.ts","../../../projects/ngx-validator-pack/src/lib/validators/template-driven-forms/template-driven-form-validators.ts","../../../projects/ngx-validator-pack/src/lib/decorators/validator-input.ts","../../../projects/ngx-validator-pack/src/lib/validators/template-driven-forms/prebuilt-tdf-validators.ts","../../../projects/ngx-validator-pack/src/lib/helpers/check-factory.ts","../../../projects/ngx-validator-pack/src/lib/checks/password-checks.ts","../../../projects/ngx-validator-pack/src/lib/checks/word-count-checks.ts","../../../projects/ngx-validator-pack/src/lib/checks/address-checks.ts","../../../projects/ngx-validator-pack/src/public-api.ts","../../../projects/ngx-validator-pack/src/dynamize-ngx-validator-pack.ts"],"sourcesContent":["/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  Input,\r\n  Renderer2,\r\n  ViewChild,\r\n  AfterViewInit,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n  selector: '',\r\n  standalone: true,\r\n  imports: [],\r\n  template: '',\r\n  styles: '',\r\n})\r\nexport class BaseComponent implements AfterViewInit {\r\n  content!: HTMLDivElement;\r\n  _class!: string;\r\n  defaultClass!: string;\r\n  @Input() zIndex!: string | number;\r\n  @Input() style!: string;\r\n  @Input() set class(css: string | undefined | null) {\r\n    this._class = css ? css : this.defaultClass;\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n\r\n  @ViewChild('validationContent') contentRef!: ElementRef;\r\n\r\n  constructor(\r\n    readonly renderer: Renderer2,\r\n    readonly changeDetectorRef: ChangeDetectorRef\r\n  ) {}\r\n\r\n  ngAfterViewInit(): void {\r\n    this.changeDetectorRef.detectChanges();\r\n    this.content = this.contentRef.nativeElement;\r\n    this.renderer.setStyle(this.content, 'zIndex', `${this.zIndex}`);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  ChangeDetectorRef,\r\n  Component,\r\n  Input,\r\n  Renderer2,\r\n} from '@angular/core';\r\nimport { BaseComponent } from '../base/base.component';\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A component showing the validation error to the user\r\n */\r\n@Component({\r\n  selector: '',\r\n  standalone: true,\r\n  imports: [],\r\n  templateUrl: './validation-error.component.html',\r\n  styleUrl: './validation-error.component.css',\r\n})\r\nexport class ValidationErrorComponent extends BaseComponent {\r\n  override defaultClass: string = 'show-validation-content';\r\n  @Input() error!: string;\r\n\r\n  constructor(\r\n    override readonly renderer: Renderer2,\r\n    override readonly changeDetectorRef: ChangeDetectorRef\r\n  ) {\r\n    super(renderer, changeDetectorRef);\r\n  }\r\n}\r\n","<div #validationContent [class]=\"_class\" [style]=\"style\">\r\n  <span>{{ error }}</span>\r\n</div>\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  OnDestroy,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl, ValidationErrors } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { ValidationErrorComponent } from '../components/validation-error/validation-error.component';\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A directive which will show a validation error message to the\r\n * user.\r\n * @implementation\r\n * <input\r\n *  type=\"text\"\r\n *  formControlName=\"demoControlName\"\r\n *  showValidation\r\n *  [vClass]=\"customClass\"            - Optional param of a custom class\r\n * />\r\n */\r\n@Directive({\r\n  selector: '[showValidation]',\r\n  standalone: true,\r\n})\r\nexport class ShowValidationDirective implements OnInit, OnDestroy {\r\n  controlSub: Subscription = new Subscription();\r\n  self!: HTMLElement;\r\n  retrievedStyles!: CSSStyleDeclaration;\r\n\r\n  @Input() vClass!: string;\r\n  @Input() vStyle!: string;\r\n\r\n  constructor(\r\n    private readonly viewContainerRef: ViewContainerRef,\r\n    private readonly elementRef: ElementRef,\r\n    private readonly renderer: Renderer2,\r\n    private readonly control: NgControl\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    const formControl = this.control.control as FormControl;\r\n    this.self = this.elementRef.nativeElement;\r\n    this.retrievedStyles = getComputedStyle(this.self);\r\n\r\n    this.controlSub.add(\r\n      formControl.statusChanges.subscribe((status): void => {\r\n        this.hideError();\r\n        if (status === 'INVALID') {\r\n          this.showError(formControl.errors);\r\n        }\r\n      })\r\n    );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.controlSub.unsubscribe();\r\n  }\r\n\r\n  showError(errors: ValidationErrors | null): void {\r\n    const valErrorComponentRef = this.viewContainerRef.createComponent(\r\n      ValidationErrorComponent\r\n    );\r\n    valErrorComponentRef.setInput('error', this.getValidationMessage(errors));\r\n    const indexNum = Number.parseInt(this.retrievedStyles.zIndex);\r\n    const zIndex = Number.isNaN(indexNum) ? 1 : indexNum;\r\n    this.renderer.setStyle(this.self, 'zIndex', `${zIndex}`);\r\n    valErrorComponentRef.setInput('zIndex', `${zIndex - 1}`);\r\n    valErrorComponentRef.setInput('class', this.vClass);\r\n    valErrorComponentRef.setInput('style', this.vStyle);\r\n  }\r\n\r\n  hideError(): void {\r\n    this.viewContainerRef.clear();\r\n  }\r\n\r\n  getValidationMessage(errors: ValidationErrors | null): string {\r\n    return errors ? Object.values(errors)[0] : 'Invalid Input.';\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * @internal\r\n */\r\n@Pipe({\r\n  name: 'checked',\r\n  standalone: true,\r\n})\r\nexport class CheckedPipe implements PipeTransform {\r\n  transform(value: boolean | null | undefined): string {\r\n    return value ? '✗' : '✔';\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'objectValues',\r\n  standalone: true\r\n})\r\nexport class ObjectValuesPipe implements PipeTransform {\r\n  transform(value: {[key: string]: any}): any[] {\r\n    return Object.values(value);\r\n  }\r\n\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { NgClass, NgFor } from '@angular/common';\r\nimport { ChangeDetectorRef, Component, Input, Renderer2 } from '@angular/core';\r\nimport { CheckedPipe } from '../../pipes/checked.pipe';\r\nimport { BaseComponent } from '../base/base.component';\r\nimport { Check } from '../../interfaces/check-config.interface';\r\nimport { ObjectValuesPipe } from '../../pipes/object-values.pipe';\r\n\r\n@Component({\r\n  selector: '',\r\n  standalone: true,\r\n  imports: [NgClass, NgFor, CheckedPipe, ObjectValuesPipe],\r\n  templateUrl: './checks.component.html',\r\n  styleUrl: './checks.component.css',\r\n})\r\nexport class ChecksComponent extends BaseComponent {\r\n  override defaultClass: string = 'checks-validation-content';\r\n  _checks: Check = {};\r\n\r\n  @Input() hasValue!: boolean;\r\n  @Input() set checks(checkObj: { [key: string]: string }) {\r\n    Object.entries(checkObj).forEach((entry) => {\r\n      this._checks[entry[0]] = {\r\n        msg: entry[1],\r\n        hasError: false,\r\n      };\r\n    });\r\n    this.changeDetectorRef.detectChanges();\r\n  }\r\n  @Input() set errors(errArr: string[] | null) {\r\n    if (!errArr?.length) {\r\n      Object.keys(this._checks).forEach((key: string) => {\r\n        this._checks[key].hasError = false;\r\n      });\r\n      return;\r\n    }\r\n    errArr.forEach((error: string) => {\r\n      if (this._checks[error]) {\r\n        this._checks[error].hasError = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  constructor(\r\n    override readonly renderer: Renderer2,\r\n    override readonly changeDetectorRef: ChangeDetectorRef\r\n  ) {\r\n    super(renderer, changeDetectorRef);\r\n  }\r\n}\r\n","<div id=\"checks\" #validationContent [class]=\"_class\" [style]=\"style\">\r\n    <span *ngFor=\"let check of _checks | objectValues; let i = index\">\r\n        <span id=\"{{'check' + i}}\" [ngClass]=\"{\r\n        checked: hasValue && !check.hasError,\r\n        failed: check.hasError,\r\n        }\">{{check.hasError | checked }}</span> - {{ check.msg }}\r\n    </span>\r\n</div>\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  AfterViewInit,\r\n  ComponentRef,\r\n  Directive,\r\n  ElementRef,\r\n  Input,\r\n  OnInit,\r\n  Renderer2,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { ChecksComponent } from '../components/checks/checks.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Directive({\r\n  selector: '[checks]',\r\n  standalone: true,\r\n})\r\nexport class ChecksDirective implements OnInit, AfterViewInit {\r\n  checkComponentRef!: ComponentRef<ChecksComponent>;\r\n  controlSub: Subscription = new Subscription();\r\n  self!: HTMLElement;\r\n  retrievedStyles!: CSSStyleDeclaration;\r\n\r\n  @Input('checks') checks!: { [key: string]: string };\r\n  @Input() vClass!: string;\r\n  @Input() vStyle!: string;\r\n\r\n  constructor(\r\n    private readonly viewContainerRef: ViewContainerRef,\r\n    private readonly elementRef: ElementRef,\r\n    private readonly renderer: Renderer2,\r\n    private readonly control: NgControl\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.self = this.elementRef.nativeElement;\r\n    this.retrievedStyles = getComputedStyle(this.self);\r\n    \r\n    const formControl = this.control.control as FormControl;\r\n    this.controlSub.add(\r\n      formControl.valueChanges.subscribe((data) => {\r\n        this.checkComponentRef.setInput('hasValue', !!data);\r\n        this.resetErrors(formControl);\r\n      })\r\n    );\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    this.checkComponentRef = this.viewContainerRef.createComponent(ChecksComponent);\r\n    this.checkComponentRef.setInput('checks', this.checks);\r\n    const indexNum = Number.parseInt(this.retrievedStyles.zIndex);\r\n    const zIndex = Number.isNaN(indexNum) ? 1 : indexNum;\r\n    this.renderer.setStyle(this.self, 'zIndex', `${zIndex}`);\r\n    this.checkComponentRef.setInput('zIndex', `${zIndex - 1}`);\r\n    this.checkComponentRef.setInput('class', this.vClass);\r\n    this.checkComponentRef.setInput('style', this.vStyle);\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.controlSub.unsubscribe();\r\n  }\r\n\r\n  resetErrors(formControl: FormControl): void {\r\n    this.checkComponentRef.setInput('errors', null);\r\n    this.checkComponentRef.setInput('errors', formControl.errors ? Object.keys(formControl.errors) : null);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { ComparisonOperations, RegExpLogicalOperations } from \"../types\";\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * An interface representing the base of the value which can be\r\n * passed to Template Form Validator Directives.\r\n */\r\nexport interface BaseValidationConfig {\r\n  error?: string;\r\n  errorName?: string;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * regexpValidation Directive\r\n * {@link RegExpValidatorDirective}\r\n */\r\nexport interface RegExpValidationConfig extends BaseValidationConfig {\r\n  regExp: RegExp;\r\n  logic?: RegExpLogicalOperations;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * date comparison directives.\r\n * {@link EarlierThenValidatorDirective}\r\n * {@link LaterThenValidatorDirective}\r\n */\r\nexport interface DateValidationConfig extends BaseValidationConfig {\r\n  date: Date;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * compareToValidation Directive\r\n * {@link compareToValidation}\r\n */\r\nexport interface CompareValidationConfig extends BaseValidationConfig {\r\n  fieldName: string;\r\n  comparison: ComparisonOperations;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * requiredWhenValidation Directive\r\n * {@link  RequiredWhenValidatorDirective}\r\n */\r\nexport interface ConditionalValidationConfig extends BaseValidationConfig {\r\n  conditional: (() => boolean) | boolean;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * date link directives.\r\n * {@link LinkToValidatorDirective}\r\n * {@link LinkedToValidatorDirective}\r\n */\r\nexport interface LinkValidationConfig extends BaseValidationConfig {\r\n  link: string;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * lengthValidation Directive\r\n * {@link LengthValidatorDirective}\r\n */\r\nexport interface LengthValidationConfig extends BaseValidationConfig {\r\n  length: number;\r\n  comparison: ComparisonOperations;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * wordCountValidation Directive\r\n * {@link }\r\n */\r\nexport interface CountValidationConfig extends BaseValidationConfig {\r\n  count: number;\r\n  comparison: ComparisonOperations;\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * An interface representing the value which can be passed to\r\n * rangeValidation Directive\r\n * {@link RangeValidatorDirective}\r\n */\r\nexport interface RangeValidationConfig extends BaseValidationConfig {\r\n  start: number;\r\n  end: number;\r\n}","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * Sets an error on a given control\r\n *\r\n * @param control                     - FromControl / AbstractControl to set the error to\r\n * @param error                       - error content { [key: string]: unknown }\r\n */\r\nexport const setErrors = (\r\n  control: AbstractControl,\r\n  error: ValidationErrors\r\n): void => {\r\n  control.setErrors({ ...control.errors, ...error });\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * Removes errors on a given control\r\n *\r\n * @param control                     - FromControl / AbstractControl from which\r\n *                                      to remove error\r\n * @param keys                        - array of error names\r\n */\r\nexport const removeErrors = (\r\n  control: AbstractControl,\r\n  keys: string[]\r\n): void => {\r\n  const remainingErrors: ValidationErrors = keys.reduce(\r\n    (errors: ValidationErrors, key: string): ValidationErrors => {\r\n      delete errors[key];\r\n      return errors;\r\n    },\r\n    { ...control.errors }\r\n  );\r\n\r\n  control.setErrors(\r\n    Object.keys(remainingErrors).length > 0 ? remainingErrors : null\r\n  );\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\r\nimport { removeErrors, setErrors } from \"../helpers/errors\";\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which assigns a required error to the controls with a name that \r\n * was specified in the requiredControlName filed of the config parameter if the control \r\n * with a name specified in the controlToCheckName parameter has no value.\r\n *\r\n * @param control                      - form group\r\n * @param config                       - config parameter, consists of a\r\n *                                       required field name, a field name to check and optional \r\n *                                       error string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const requiredIfValidation = (\r\n  control: AbstractControl,\r\n  config: {\r\n    required: string;\r\n    check: string;\r\n    error?: string;\r\n  }\r\n): ValidationErrors | null => {\r\n  const required = control?.get(config.required) as AbstractControl;\r\n  const toCheck = control?.get(config.check) as AbstractControl;\r\n  if (required?.value || !toCheck?.value) {\r\n    removeErrors(required, [\"required\"]);\r\n    return null;\r\n  } else {\r\n    const errorVal =\r\n      config.error ??\r\n      `Required is ${config.required} when having ${config.check}.`;\r\n    setErrors(required, { required: errorVal });\r\n    return { [errorVal]: true };\r\n  }\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which assigns a required error to the controls with a name that \r\n * was specified in the requiredControlName field of the config parameter if the control \r\n * with a name specified in the controlToCheckName parameter has a value.\r\n *\r\n * @param control                      - form group\r\n * @param config                       - config parameter, consists of a\r\n *                                       required field name, a field name to check and optional \r\n *                                       error string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const requiredIfNotValidation = (\r\n  control: AbstractControl,\r\n  config: {\r\n    required: string;\r\n    check: string;\r\n    error?: string;\r\n  }\r\n): ValidationErrors | null => {\r\n  const required = control?.get(config.required) as AbstractControl;\r\n  const toCheck = control?.get(config.check) as AbstractControl;\r\n  if (required?.value || toCheck?.value) {\r\n    removeErrors(required, [\"required\"]);\r\n    return null;\r\n  } else {\r\n    const errorVal =\r\n      config.error ??\r\n      `Required is ${config.required} when not having ${config.check}.`;\r\n    setErrors(required, { required: errorVal });\r\n    return { [errorVal]: true };\r\n  }\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which assigns a required error to the controls with a name that \r\n * was specified in the requiredControlName field of the config parameter nether that control\r\n * or the control with a name specified in the controlToCheckName parameter has a value.\r\n *\r\n * @param control                      - form group\r\n * @param config                       - config parameter, consists of a\r\n *                                       required field name, a field name to check and optional \r\n *                                       error string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const requiredEtherValidation = (\r\n  control: AbstractControl,\r\n  config: {\r\n    required: string;\r\n    check: string;\r\n    error?: string;\r\n  }\r\n): ValidationErrors | null => {\r\n  const required = control?.get(config.required) as AbstractControl;\r\n  const toCheck = control?.get(config.check) as AbstractControl;\r\n  if (required?.value || toCheck?.value) {\r\n    removeErrors(required, [\"required\"]);\r\n    removeErrors(toCheck, [\"required\"]);\r\n    return null;\r\n  } else {\r\n    const errorVal =\r\n      config.error ??\r\n      `Required either ${config.required} or ${config.check}.`;\r\n    setErrors(required, { required: errorVal });\r\n    setErrors(toCheck, { required: errorVal });\r\n    return { [errorVal]: true };\r\n  }\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport {\r\n  requiredEtherValidation,\r\n  requiredIfNotValidation,\r\n  requiredIfValidation,\r\n} from \"../../validations/cross-field-validations\";\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Assigns a required error to the controls with a name was specified in the\r\n * first parameter if the control with a name specified in the second parameter\r\n * has no value.\r\n *\r\n * @param required                    - control name to receive the required error\r\n * @param check                       - control name who's value needs to be checked\r\n * @param error                       - error message - optional parameter\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const requiredIf = (\r\n  required: string,\r\n  check: string,\r\n  error?: string\r\n): ValidatorFn => {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    return requiredIfValidation(control, { required, check, error });\r\n  };\r\n};\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Assigns a required error to the controls with a name was specified in the\r\n * first parameter if the control with a name specified in the second parameter\r\n * has a value.\r\n *\r\n * @param required                    - control name to receive the required error\r\n * @param check                       - control name who's value needs to be checked\r\n * @param error                       - error message - optional parameter\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const requiredIfNot = (\r\n  required: string,\r\n  check: string,\r\n  error?: string\r\n): ValidatorFn => {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    return requiredIfNotValidation(control, { required, check, error });\r\n  };\r\n};\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Assigns a required error to both controls who's names are specified if nether one\r\n * has a value.\r\n *\r\n * @param required                    - name of the first control\r\n * @param check                       - name of the second control\r\n * @param error                       - error message - optional parameter\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const requiredEther = (\r\n  required: string,\r\n  check: string,\r\n  error?: string\r\n): ValidatorFn => {\r\n  return (control: AbstractControl): ValidationErrors | null => {\r\n    return requiredEtherValidation(control, { required, check, error });\r\n  };\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\n// @internal Checks id an input in a format of Street number Street Name, City, State ZIP code\r\nexport const address =\r\n  /^(\\d{1,}) [a-zA-Z0-9\\s]+(\\,)? [a-zA-Z]+(\\,)? [A-Z]{2} [0-9]{5,6}$/;\r\n\r\n// @internal Checks for date format YYYY-MM-dd\r\nexport const dateYYYY_MM_DD =\r\n  /([12]\\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01]))/;\r\n\r\n// Checks for date format  dd-MM-YYYY or dd.MM.YYYY or dd/MM/YYYY\r\n// @internal with check for leap year\r\nexport const dateDD_MM_YYYY =\r\n  /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/;\r\n\r\n// @internal Checks if input is an email\r\nexport const email =\r\n  /^(([^<>()[\\]\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n\r\n// @internal Checks if input is an email\r\nexport const advancedEmail =\r\n  /^[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])?)*$/;\r\n\r\n// @internal Checks if input is in a IPv4 format\r\nexport const IPAddressV4 =\r\n  /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;\r\n\r\n// @internal Checks if input is in a IPv6 format\r\nexport const IPAddressV6 =\r\n  /(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))/;\r\n\r\n// @internal Checks if input is in a IPv4 or IPv6 format\r\nexport const IPAddressV4AndV6 =\r\n  /((^\\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\\s*$)|(^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$))/;\r\n\r\n// @internal Checks if input is in a ipv4 cidr address format\r\nexport const cidrV4 = /^(3[0-2]|[12]?[0-9])$/;\r\n\r\n// @internal Checks if input is in a ipv6 cidr address format\r\nexport const cidrV6 = /^(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\r\n\r\n// @internal Checks if an input consists of letters only\r\nexport const lettersOnly = /^[A-Za-z]+$/;\r\n\r\n// @internal Checks if an input has letters\r\nexport const hasLetters = /[a-zA-Z]/;\r\n\r\n// @internal Checks if an input has lowercase letters\r\nexport const hasLowercase = /[a-z]/;\r\n\r\n// @internal Checks if an input has uppercase letters\r\nexport const hasUppercase = /[A-Z]/;\r\n\r\n// @internal Checks if an input consists of letters and numbers\r\nexport const alphaNumeric = /^[0-9a-zA-Z]+$/;\r\n\r\n// @internal Checks if an input consists of letters, numbers and spaces\r\nexport const alphaNumericWithSpace = /^[0-9a-zA-Z\\s]+$/;\r\n\r\n// @internal Checks if the input consists of letters, periods, hyphens and spaces\r\nexport const lettersPeriodsHyphensAndSpaces = /^[a-zA-Z\\s.-]+$/;\r\n\r\n// @internal Checks if input contains < or >;\r\nexport const greaterOrLessThen = /(?=.*[<>])/;\r\n\r\n// @internal Checks if input does not contains any special characters\r\nexport const noSpecial = /^[A-Za-z0-9 ]+$/;\r\n\r\n// @internal Checks if input contains any special characters\r\nexport const hasSpecials = /[`~!@#$%^&*()_|+\\-=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/gi;\r\n\r\n// @internal Checks if an input consists of numbers only\r\nexport const numbersOnly = /^\\d+$/;\r\n\r\n// @internal Checks if an input has numbers\r\nexport const hasNumbers = /\\d/;\r\n\r\n// @internal Checks if input is in passport format\r\nexport const passport = /^[A-PR-WY][1-9]\\d\\s?\\d{4}[1-9]$/;\r\n\r\n// Checks if input consist of at least 1 lowercase letter, 1 uppercase letter,\r\n// @internal 1 number, 1 special character and has length of at least 8 characters\r\nexport const passwordStrength =\r\n  /(?=(.*[0-9]))(?=.*[\\!@#$%^&*()\\\\[\\]{}\\-_+=~`|:;\"'<>,./?])(?=.*[a-z])(?=(.*[A-Z]))(?=(.*)).{8,}/;\r\n\r\n// @internal Checks for a (000) 000 0000 phone format\r\nexport const phoneNumber = /^(\\()?[2-9]{1}\\d{2}(\\))?(-|\\s)?\\d{3}(-|\\s)\\d{4}$/;\r\n\r\n// @internal Checks for a single space character\r\nexport const space = /[\\s]/;\r\n\r\n// @internal Restrict only spaces, spaces at the beginning and end of the field\r\nexport const spaceRestriction = /^\\S$|^\\S[\\s\\S]*\\S$/;\r\n\r\n// @internal Checks if input is in an Social Security Number format\r\nexport const ssn =\r\n  /^((?!219-09-9999|078-05-1120)(?!666|000|9\\d{2})\\d{3}-(?!00)\\d{2}-(?!0{4})\\d{4})|((?!219 09 9999|078 05 1120)(?!666|000|9\\d{2})\\d{3} (?!00)\\d{2} (?!0{4})\\d{4})|((?!219099999|078051120)(?!666|000|9\\d{2})\\d{3}(?!00)\\d{2}(?!0{4})\\d{4})$/;\r\n\r\n// @internal Checks for Time Format HH:MM 12-hour with optional leading 0\r\nexport const timeHH_MM_12 = /((1[0-2]|0?[1-9]):([0-5][0-9]) ?([AaPp][Mm]))/;\r\n\r\n// @internal Checks for Time Format HH:MM 24-hour with optional leading 0\r\nexport const timeHH_MM_24 = /^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$/;\r\n\r\n// @internal Checks for Time Format HH:MM:SS 24-hour\r\nexport const timeHH_MM_SS_24 =\r\n  /(?:[01]\\d|2[0123]):(?:[012345]\\d):(?:[012345]\\d)/;\r\n\r\n// @internal Checks if input is a url\r\nexport const url =\r\n  /(http|ftp|https):\\/\\/[\\w-]+(\\.[\\w-]+)+([\\w.,@?^=%&amp;:\\/~+#-]*[\\w@?^=%&amp;\\/~+#-])?/;\r\n\r\n// @internal Checks if input is a localhost url\r\nexport const localhostUrl =\r\n  /^(https?:\\/\\/localhost\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|localhost\\::([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|https?:\\/\\/localhost\\::([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))$/;\r\n\r\n// @internal Checks if input is an internal url\r\nexport const interanetUrl =\r\n  /^(https?:\\/\\/[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9])$/;\r\n\r\n// @internal Checks if input is a data URI\r\nexport const dataUri =\r\n  /^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*?)$/i;\r\n\r\n// @internal Checks of a zip code in formats 00000 or 00000-0000\r\nexport const zipCode = /(^\\d{5}$)|(^\\d{5}-\\d{4}$)/;\r\n\r\n// @internal Checks if input is in a hex color format\r\nexport const hexColor = /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;\r\n\r\n// @internal Checks if input is in a hex color format\r\nexport const strictHexColor = /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i;\r\n\r\n// @internal Checks if input is in a cusip(Committee on Uniform Securities Identification Procedures) format\r\nexport const cusip = /^[0-9A-Z]{9}$/;\r\n\r\n// @internal Checks if input has ASCII charters\r\nexport const ascii = /^[\\x00-\\x7F]+$/;\r\n\r\n// @internal Checks if input is a float\r\nexport const float =\r\n  /^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$/;\r\n\r\n// @internal Checks if input is a decimal\r\nexport const decimal = /^[-+]?([0-9]+|\\.[0-9]+|[0-9]+\\.[0-9]+)$/;\r\n\r\n// @internal Checks if input is in a hexa decimal format\r\nexport const hexaDecimal = /^[0-9A-F]+$/i;\r\n\r\n// @internal Checks if input is a latitude value\r\nexport const latitude = /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/;\r\n\r\n// @internal Checks if input is a longitude value\r\nexport const longitude =\r\n  /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/;\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { ComparisonOperations } from \"../types\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const compare = (num1: number, num2: number, comparison: ComparisonOperations): boolean => {\r\n  const operations = {\r\n      '<': (a: number, b: number): boolean => a < b,\r\n      '>': (a: number, b: number): boolean => a > b,\r\n      '==': (a: number, b: number): boolean => a == b,\r\n      '===': (a: number, b: number): boolean => a === b,\r\n      '<=': (a: number, b: number): boolean => a <= b,\r\n      '>=': (a: number, b: number): boolean => a >= b,\r\n  }\r\n  return operations[comparison](num1, num2);\r\n}","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { ComparisonOperations } from \"../types\";\r\nimport { compare } from \"./numbers\";\r\n\r\n/**\r\n * @internal\r\n */\r\nconst prepareToCompare = (\r\n  date: Date | string | undefined | null,\r\n  bufferYears?: number\r\n): number => {\r\n  if (date) {\r\n    const p_Date = new Date(date);\r\n    const year = p_Date.getFullYear() + (bufferYears ?? 0);\r\n    const month = p_Date.getMonth() + 1;\r\n    const day = p_Date.getDate();\r\n    return Number.parseInt(\r\n      `${year}${month.toString().replace.length > 1 ? month : \"0\" + month}${\r\n        day.toString().length > 1 ? day : \"0\" + day\r\n      }`\r\n    );\r\n  } else {\r\n    return 0;\r\n  }\r\n};\r\n\r\n/**\r\n * @publicApi\r\n */\r\nexport const compareDates = (\r\n  date1: Date,\r\n  date2: Date,\r\n  operation: ComparisonOperations = \"===\"\r\n): boolean => {\r\n  return compare(prepareToCompare(date1), prepareToCompare(date2), operation);\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { RegExpLogicalOperations } from \"../types\";\r\n\r\n/**\r\n * @internal\r\n */\r\nexport const test = (regexp: RegExp, value: string, logic: RegExpLogicalOperations): boolean => {\r\n  const operations = {\r\n    '!': (): boolean => !regexp.test(value),\r\n    '!!': (): boolean => regexp.test(value),\r\n    'match': (): boolean => !!regexp.exec(value),\r\n    'noMatch': (): boolean => !regexp.exec(value)?.length,\r\n  };\r\n\r\n  return operations[logic]();\r\n}","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors } from \"@angular/forms\";\r\nimport { compareDates } from \"../helpers/date\";\r\nimport { compare } from \"../helpers/numbers\";\r\nimport { SequenceConfig } from \"../interfaces/sequence-config.interface\";\r\nimport {\r\n  CompareValidationConfig,\r\n  ConditionalValidationConfig,\r\n  CountValidationConfig,\r\n  DateValidationConfig,\r\n  LengthValidationConfig,\r\n  LinkValidationConfig,\r\n  RangeValidationConfig,\r\n  RegExpValidationConfig,\r\n} from \"../interfaces/validation-config.interface\";\r\nimport { test } from \"../helpers/regexp\";\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which preforms a RegEx check on value in the\r\n * given FromControl / AbstractControl.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       regexp to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const regexpValidation = (\r\n  control: AbstractControl,\r\n  config: RegExpValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? \"This control did not match a given regular expression.\";\r\n  const errors: ValidationErrors = { [config.errorName ?? \"regexp\"]: error };\r\n\r\n  return !control.value ||\r\n    test(config.regExp, control.value, config?.logic ?? \"!!\")\r\n    ? null\r\n    : errors;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which checks if the date in the given\r\n * FromControl / AbstractControl is earlier then the value in the specified\r\n * FromControl / AbstractControl.\r\n *\r\n * @param {AbstractControl}                    - form control\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       date to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const earlierThenValidation = (\r\n  control: AbstractControl,\r\n  config: DateValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ??\r\n    `This control must have a value earlier then ${config.date}.`;\r\n  const errors: ValidationErrors = {\r\n    [config.errorName ?? \"earlierThen\"]: error,\r\n  };\r\n\r\n  return compareDates(control.value, config.date, \"<\") ? null : errors;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which checks if the date in the given\r\n * FromControl / AbstractControl is greater then the value in the specified\r\n * FromControl / AbstractControl.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       date to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}     - Validation error\r\n */\r\nexport const laterThenValidation = (\r\n  control: AbstractControl,\r\n  config: DateValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? `This control must have a value later then ${config.date}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"laterThen\"]: error };\r\n\r\n  return compareDates(control.value, config.date, \">\") ? null : errors;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which compares the date values of the given\r\n * FromControl / AbstractControl and specified FromControl / AbstractControl.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       field name to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const compareToValidation = (\r\n  control: AbstractControl,\r\n  config: CompareValidationConfig\r\n): ValidationErrors | null => {\r\n  const date = control.parent?.get(config.fieldName)?.value;\r\n  if (date) {\r\n    const error = config.error ?? `Value comparison with ${date} failed.`;\r\n    const errors: ValidationErrors = {\r\n      [config.errorName ?? \"dateComparison\"]: error,\r\n    };\r\n    \r\n    return control.value && compareDates(control.value, date, config.comparison)\r\n      ? null\r\n      : errors;\r\n  }\r\n  return null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a condition is met.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       conditional function or boolean to check\r\n *                                       and optional error and error name string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const requiredWhenValidation = (\r\n  control: AbstractControl,\r\n  config: ConditionalValidationConfig\r\n): ValidationErrors | null => {\r\n  const error = config.error ?? \"This control has a conditional set on it.\";\r\n  const errors: ValidationErrors = {\r\n    [config.errorName ?? \"required\"]: error,\r\n  };\r\n\r\n  const outcome =\r\n    typeof config.conditional === \"function\"\r\n      ? config.conditional()\r\n      : config.conditional;\r\n  return !control.value && outcome ? errors : null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl has no value and specified\r\n * FromControl / AbstractControl has it.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       field name to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}   - Validation error\r\n */\r\nexport const linkToValidation = (\r\n  control: AbstractControl,\r\n  config: LinkValidationConfig\r\n): ValidationErrors | null => {\r\n  const error = config.error ?? `This control has a link to ${config.link}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"linkTo\"]: error };\r\n  const linkedTo = control.parent?.get(config.link);\r\n\r\n  return !control?.value && !!linkedTo?.value ? errors : null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl has a value and specified\r\n * FromControl / AbstractControl does not.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       field name to check and optional error and\r\n *                                       error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const linkedToValidation = (\r\n  control: AbstractControl,\r\n  config: LinkValidationConfig\r\n): ValidationErrors | null => {\r\n  const error = config.error ?? `This control is linked to ${config.link}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"linkTo\"]: error };\r\n  const link = control.parent?.get(config.link);\r\n\r\n  return !!control?.value && !link?.value ? errors : null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl has a value that fails a given\r\n * length comparison.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       length to check, comparison to preform \r\n *                                       and optional error and error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const lengthValidation = (\r\n  control: AbstractControl,\r\n  config: LengthValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? `The required length should be ${config.comparison} ${config.length}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"length\"]: error };\r\n\r\n  return !!control?.value &&\r\n    compare(control?.value?.length, config.length, config.comparison ?? \"===\")\r\n    ? errors\r\n    : null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl value is not in a given range.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       start value to check and end value to check\r\n *                                       as well as optional error and error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const rangeValidation = (\r\n  control: AbstractControl,\r\n  config: RangeValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? `Value must be in the range between ${config.start} and ${config.end}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"range\"]: error };\r\n\r\n  return !!control?.value &&\r\n    compare(control.value.length, config.start, \">=\") &&\r\n    compare(control.value.length, config.end, '<=' )\r\n    ? errors\r\n    : null;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl has a value that fails a given\r\n * word count comparison.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       word count to check, comparison to preform \r\n *                                       and optional error and error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const wordCountValidation = (\r\n  control: AbstractControl,\r\n  config: CountValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? `The required word count should be ${config.comparison} ${config.count}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"wordCount\"]: error };\r\n\r\n  const valueCount = control?.value?.split(' ').length;\r\n  return control?.value &&\r\n    compare(valueCount, config.count, config.comparison ?? \"===\")\r\n    ? null\r\n    : errors;\r\n}\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if a given\r\n * FromControl / AbstractControl value is not in a given word count range.\r\n *\r\n * @param control                      - form control\r\n * @param config                       - config parameter, consists of a\r\n *                                       start value to check and end value to check\r\n *                                       as well as optional error and error name string\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const wordCountRangeValidation = (\r\n  control: AbstractControl,\r\n  config: RangeValidationConfig\r\n): ValidationErrors | null => {\r\n  const error =\r\n    config.error ?? `The word count must be in the range between ${config.start} and ${config.end}.`;\r\n  const errors: ValidationErrors = { [config.errorName ?? \"wordCountRange\"]: error };\r\n  const valueCount = control?.value?.split(' ').length;\r\n\r\n  return !!control?.value &&\r\n    compare(valueCount, config.start, \">=\") &&\r\n    compare(valueCount, config.end, '<=' )\r\n    ? null\r\n    : errors;\r\n};\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * A validation function which returns a validation error if any\r\n * of the validations from the given sequence return an error.\r\n * The sequence order meters as the first fail will be returned.\r\n *\r\n * @param control                      - form control\r\n * @param sequence                     - sequence of configs that consists of\r\n *                                       validation functions and configs for those \r\n *                                       functions.\r\n * @returns {ValidationErrors | null}  - Validation error\r\n */\r\nexport const sequentialValidation = (\r\n  control: AbstractControl,\r\n  sequence: SequenceConfig[]\r\n): ValidationErrors | null => {\r\n  let validationError!: ValidationErrors;\r\n  const hasError = sequence.some((validation): boolean => {\r\n    const error = validation.validationFun(control, {\r\n      ...validation.validationFunConfig,\r\n    });\r\n    if (error) {\r\n      validationError = error;\r\n      return true;\r\n    }\r\n    return false;\r\n  });\r\n  return hasError ? validationError : null;\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport {\r\n  IPAddressV4,\r\n  IPAddressV4AndV6,\r\n  IPAddressV6,\r\n  address,\r\n  dateDD_MM_YYYY,\r\n  dateYYYY_MM_DD,\r\n  email,\r\n  lettersOnly,\r\n  noSpecial,\r\n  numbersOnly,\r\n  passport,\r\n  passwordStrength,\r\n  phoneNumber,\r\n  space,\r\n  spaceRestriction,\r\n  ssn,\r\n  timeHH_MM_12,\r\n  timeHH_MM_24,\r\n  timeHH_MM_SS_24,\r\n  url,\r\n  zipCode,\r\n} from \"../../constant/regex\";\r\nimport { regexpValidation } from \"../../validations/validations\";\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a proper address format\r\n * (Street number Street Name, City, State ZIP code)\r\n * Example: 3344 W Alameda Avenue, Lakewood, CO 80222\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const addressValidator =\r\n  (\r\n    errorName: string = \"address\",\r\n    error: string = \"Please input a value in a format of: Street number Street Name, City, State ZIP code.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: address,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl consists of only\r\n * alphabetic characters.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const alphabetOnlyValidator =\r\n  (\r\n    errorName: string = \"alphabetOnly\",\r\n    error: string = \"Only alphabetic characters are allowed.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: lettersOnly,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in one of the\r\n * following formats: dd-MM-YYYY, dd.MM.YYYY or dd/MM/YYYY.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const dateDD_MM_YYYYValidator =\r\n  (\r\n    errorName: string = \"dateDD_MM_YYYY\",\r\n    error: string = \"Please input a value one of the following formats: dd-MM-YYYY or dd.MM.YYYY or dd/MM/YYYY.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: dateDD_MM_YYYY,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a following format:\r\n * YYYY-MM-dd.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const dateYYYY_MM_DDValidator =\r\n  (\r\n    errorName: string = \"dateYYYY_MM_DD\",\r\n    error: string = \"Please input a value in a format: YYYY-MM-dd.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: dateYYYY_MM_DD,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a following format:\r\n * local-part@domain.com.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const emailValidator =\r\n  (\r\n    errorName: string = \"email\",\r\n    error: string = \"Please input a value in a format: local-part@domain.com.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: email,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in one of the\r\n * following formats: x.x.x.x or y:y:y:y:y:y:y:y.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const ipAddressValidator =\r\n  (\r\n    errorName: string = \"ipAddress\",\r\n    error: string = \"Please input a value one of the following formats: x.x.x.x or y:y:y:y:y:y:y:y.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: IPAddressV4AndV6,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a following format:\r\n * x.x.x.x.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const iPv4Validator =\r\n  (\r\n    errorName: string = \"iPv4\",\r\n    error: string = \"Please input a value in a format: x.x.x.x.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: IPAddressV4,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a following format:\r\n * y:y:y:y:y:y:y:y.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const iPv6Validator =\r\n  (\r\n    errorName: string = \"iPv6\",\r\n    error: string = \"Please input a value in a format: y:y:y:y:y:y:y:y.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: IPAddressV6,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl consists of only\r\n * numeric characters.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const numericsOnlyValidator =\r\n  (\r\n    errorName: string = \"numericsOnly\",\r\n    error: string = \"Only numeric characters are allowed.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: numbersOnly,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl has any special characters.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const noSpecialsValidator =\r\n  (\r\n    errorName: string = \"noSpecials\",\r\n    error: string = \"No special characters are allowed.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: noSpecial,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a proper passport format\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const passportValidator =\r\n  (\r\n    errorName: string = \"passport\",\r\n    error: string = \"Incorrect passport format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: passport,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a strong password format\r\n * (Has at least 1 lowercase letter, 1 uppercase letter, 1 number, 1 special character and has\r\n * length of at least 8 characters).\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const passwordValidator =\r\n  (\r\n    errorName: string = \"password\",\r\n    error: string = \"The value has to contain at least 1 lowercase letter, 1 uppercase letter, 1 special character and has a length of 8.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: passwordStrength,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a following format:\r\n * (000) 000 0000.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const phoneNumberValidator =\r\n  (\r\n    errorName: string = \"phoneNumber\",\r\n    error: string = \"Please input a value in a format: (000) 000 0000.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: phoneNumber,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl consists of a single space\r\n * character.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const spaceValidator =\r\n  (\r\n    errorName: string = \"space\",\r\n    error: string = \"Space character is not allowed.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: space,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl starts or ends with a\r\n * space character.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const spaceRestrictionValidator =\r\n  (\r\n    errorName: string = \"spaceRestriction\",\r\n    error: string = \"Value can not start or end with a space character.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: spaceRestriction,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in one of the\r\n * following formats: AAA-GGG-SSSS or AAAGGGSSSS.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const ssnValidator =\r\n  (\r\n    errorName: string = \"ssn\",\r\n    error: string = \"Please input a value one of the following formats: AAA-GGG-SSSS or AAAGGGSSSS.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: ssn,\r\n      error,\r\n      errorName,\r\n      logic: \"!!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a\r\n * Time Format HH:MM 12-hour with optional leading 0.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const timeHH_MM_12Validator =\r\n  (\r\n    errorName: string = \"timeHH_MM_12\",\r\n    error: string = \"Please input a value in a HH:MM 12-hour format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: timeHH_MM_12,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a\r\n * Time Format HH:MM 24-hour with optional leading 0.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const timeHH_MM_24Validator =\r\n  (\r\n    errorName: string = \"timeHH_MM_24\",\r\n    error: string = \"Please input a value in a HH:MM 24-hour format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: timeHH_MM_24,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a\r\n * Time Format HH:MM:SS 24-hour.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const timeHH_MM_SS_24Validator =\r\n  (\r\n    errorName: string = \"timeHH_MM_SS_24\",\r\n    error: string = \"Please input a value in a HH:MM:SS 24-hour format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: timeHH_MM_SS_24,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in a\r\n * correct url format.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const urlValidator =\r\n  (\r\n    errorName: string = \"url\",\r\n    error: string = \"Improper URL format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: url,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if a value in the given FromControl / AbstractControl is in one of the\r\n * following formats: 00000 or 00000-0000.\r\n *\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const zipCodeValidator =\r\n  (\r\n    errorName: string = \"zipCode\",\r\n    error: string = \"Improper zip code format.\"\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, {\r\n      regExp: zipCode,\r\n      error,\r\n      errorName,\r\n      logic: \"!\",\r\n    });\r\n  };\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  lengthValidation,\r\n  rangeValidation,\r\n  wordCountRangeValidation,\r\n  wordCountValidation,\r\n} from \"./../../validations/validations\";\r\n\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\nimport { ComparisonOperations, RegExpLogicalOperations } from \"../../types\";\r\nimport {\r\n  compareToValidation,\r\n  earlierThenValidation,\r\n  laterThenValidation,\r\n  linkToValidation,\r\n  linkedToValidation,\r\n  regexpValidation,\r\n  requiredWhenValidation,\r\n} from \"../../validations/validations\";\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Preforms a RegEx check on value in the given FromControl / AbstractControl.\r\n *\r\n * @param regExp                      - Regular expression to check\r\n * @param logic                       - what kind of logic to preform !! = match, ! = not a match\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const regexpValidator =\r\n  (\r\n    regExp: RegExp,\r\n    logic: RegExpLogicalOperations,\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return regexpValidation(control, { regExp, error, errorName, logic });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if the date in the given FromControl / AbstractControl is earlier then\r\n * the value in the specified FromControl / AbstractControl.\r\n *\r\n * @param date                        - Date to preform the check against\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const earlierThenValidator =\r\n  (date: Date, errorName?: string, error?: string): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return earlierThenValidation(control, { date, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Checks if the date in the given FromControl / AbstractControl is greater then\r\n * the value in the specified FromControl / AbstractControl.\r\n *\r\n * @param date                        - Date to preform the check against\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const laterThenValidator =\r\n  (date: Date, errorName?: string, error?: string): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return laterThenValidation(control, { date, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Compares the date values of the given FromControl / AbstractControl and\r\n * specified FromControl / AbstractControl.\r\n *\r\n * @param fieldName                   - name of the filed to compare against\r\n * @param comparison                  - comparison to preform\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const compareToValidator =\r\n  (\r\n    fieldName: string,\r\n    comparison: ComparisonOperations,\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return compareToValidation(control, {\r\n      fieldName,\r\n      comparison,\r\n      error,\r\n      errorName,\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a condition is met.\r\n *\r\n * @param conditional                 - conditional function or a boolean value\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const requiredWhenValidator =\r\n  (\r\n    conditional: (() => boolean) | boolean,\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return requiredWhenValidation(control, { conditional, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has no value\r\n * and specified FromControl / AbstractControl has it.\r\n *\r\n * @param link                        - name of the FromControl / AbstractControl to link to\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const linkToValidator =\r\n  (link: string, errorName?: string, error?: string): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return linkToValidation(control, { link, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has a value\r\n * and specified FromControl / AbstractControl does not.\r\n *\r\n * @param link                        - name of the FromControl / AbstractControl\r\n *                                      which a given FromControl / AbstractControl is linked to\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const linkedToValidator =\r\n  (link: string, errorName?: string, error?: string): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return linkedToValidation(control, { link, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has a value\r\n * that fails a given length comparison.\r\n *\r\n * @param length                      - numeric value of length to compere to\r\n * @param comparison                  - numeric value of a comparison to preform\r\n *                                      available options are:\r\n *                                        \"<\" , \">\" , \"==\" , \"===\" , \"<=\" and \">=\"\r\n *                                      default is: \"===\"\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const lengthValidator =\r\n  (\r\n    length: number,\r\n    comparison: ComparisonOperations = \"===\",\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return lengthValidation(control, { length, comparison, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has a value\r\n * that is not in a given range.\r\n *\r\n * @param start                       - a minimum length value\r\n * @param end                         - a maximum length value\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const rangeValidator =\r\n  (\r\n    start: number,\r\n    end: number,\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return rangeValidation(control, { start, end, error, errorName });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has a value\r\n * that fails a given word count comparison.\r\n *\r\n * @param count                       - numeric value of word count to compere to\r\n * @param comparison                  - numeric value of a comparison to preform\r\n *                                      available options are:\r\n *                                        \"<\" , \">\" , \"==\" , \"===\" , \"<=\" and \">=\"\r\n *                                      default is: \"===\"\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const wordCountValidator =\r\n  (\r\n    count: number,\r\n    comparison: ComparisonOperations = \"===\",\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return wordCountValidation(control, {\r\n      count,\r\n      comparison,\r\n      error,\r\n      errorName,\r\n    });\r\n  };\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * Returns a validation error if a given FromControl / AbstractControl has a value\r\n * whit a word count is not in a given range.\r\n *\r\n * @param start                       - a minimum word count value\r\n * @param end                         - a maximum word count value\r\n * @param errorName                   - optional parameter representing error name\r\n * @param error                       - optional parameter representing error value\r\n * @returns {ValidationErrors | null} - Validation error\r\n */\r\nexport const wordCountRangeValidator =\r\n  (\r\n    start: number,\r\n    end: number,\r\n    errorName?: string,\r\n    error?: string\r\n  ): ValidatorFn =>\r\n  (control: AbstractControl): ValidationErrors | null => {\r\n    return wordCountRangeValidation(control, { start, end, error, errorName });\r\n  };\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { Directive, Input } from \"@angular/core\";\r\nimport {\r\n  AbstractControl,\r\n  NG_VALIDATORS,\r\n  ValidationErrors,\r\n  Validator,\r\n} from \"@angular/forms\";\r\nimport {\r\n  requiredEtherValidation,\r\n  requiredIfNotValidation,\r\n  requiredIfValidation,\r\n} from \"../../validations/cross-field-validations\";\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that assigns a required error to the controls with a name was specified in the\r\n * first parameter if the control with a name specified in the second parameter\r\n * has no value.\r\n *\r\n * Has an input in which you specify the control which needs to receive the required error,\r\n * and the control which needs to be checked.\r\n *\r\n * @usageNotes\r\n * <form #exampleForm=\"ngForm\"\r\n *   [requiredIf]=\"{\r\n *      required: 'field_name',\r\n *      check: 'field_name'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[requiredIf]\",\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: RequiredIfValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n  standalone: true,\r\n})\r\nexport class RequiredIfValidatorDirective implements Validator {\r\n  @Input(\"requiredIf\") controls!: {\r\n    required: string;\r\n    check: string;\r\n  };\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    return requiredIfValidation(control, { ...this.controls });\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that assigns a required error to the controls with a name was specified in the\r\n * first parameter if the control with a name specified in the second parameter\r\n * has a value.\r\n *\r\n * Has an input in which you specify the control which needs to receive the required error,\r\n * and the control which needs to be checked.\r\n *\r\n * @usageNotes\r\n * <form #exampleForm=\"ngForm\"\r\n *   [requiredIfNot]=\"{\r\n *      required: 'field_name',\r\n *      check: 'field_name'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[requiredIfNot]\",\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: RequiredIfNotValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n  standalone: true,\r\n})\r\nexport class RequiredIfNotValidatorDirective implements Validator {\r\n  @Input(\"requiredIfNot\") controls!: {\r\n    required: string;\r\n    check: string;\r\n  };\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    return requiredIfNotValidation(control, { ...this.controls });\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that assigns a required error to both controls who's names are specified if nether one\r\n * has a value.\r\n *\r\n * Has an input in which you specify the control which needs to receive the required error,\r\n * and the control which needs to be checked.\r\n *\r\n * @usageNotes\r\n * <form #exampleForm=\"ngForm\"\r\n *   [requiredEther]=\"{\r\n *      required: 'field_name',\r\n *      check: 'field_name'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[requiredEther]\",\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: RequiredIfNotValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n  standalone: true,\r\n})\r\nexport class RequiredEtherValidatorDirective implements Validator {\r\n  @Input(\"requiredEther\") controls!: {\r\n    required: string;\r\n    check: string;\r\n  };\r\n  validate(control: AbstractControl): ValidationErrors | null {\r\n    return requiredEtherValidation(control, { ...this.controls });\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { Directive, Input } from '@angular/core'\r\nimport {\r\n    AbstractControl,\r\n    NG_VALIDATORS,\r\n    ValidationErrors,\r\n    Validator,\r\n} from '@angular/forms'\r\nimport {\r\n    CompareValidationConfig,\r\n    ConditionalValidationConfig,\r\n    CountValidationConfig,\r\n    DateValidationConfig,\r\n    LengthValidationConfig,\r\n    LinkValidationConfig,\r\n    RangeValidationConfig,\r\n    RegExpValidationConfig,\r\n} from '../../interfaces/validation-config.interface'\r\nimport {\r\n    compareToValidation,\r\n    earlierThenValidation,\r\n    laterThenValidation,\r\n    lengthValidation,\r\n    linkToValidation,\r\n    linkedToValidation,\r\n    rangeValidation,\r\n    regexpValidation,\r\n    requiredWhenValidation,\r\n    wordCountRangeValidation,\r\n    wordCountValidation,\r\n} from '../../validations/validations'\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a RegEx check on value in the given\r\n * FromControl / AbstractControl\r\n *\r\n * Has an input in which you specify the regular expression\r\n * and optionally you can give it a custom name and a custom\r\n * error content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"regexp\"\r\n *   [regExp]=\"{\r\n *      regExp: /(s|regexp)/,\r\n *      errorName: 'regexpCheck',\r\n *      error: 'Failed regexp check.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[regExp]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: RegExpValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class RegExpValidatorDirective implements Validator {\r\n    @Input('regExp') value!: RegExpValidationConfig\r\n\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return regexpValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a date comparison between a specified date\r\n * and a date in the given input and returns an error if the date in\r\n * the given input is later then the specified one.\r\n *\r\n * Has an input in which you specify the date to compare to\r\n * and optionally you can give it a custom name and a custom\r\n * error content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"earlierThen\"\r\n *   [earlierThen]=\"{\r\n *      date: date,                              -- a variable of type Date\r\n *      errorName: 'earlierThen',\r\n *      error: 'The date is not earlier then the specified one.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[earlierThen]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: EarlierThenValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class EarlierThenValidatorDirective implements Validator {\r\n    @Input('earlierThen') value!: DateValidationConfig\r\n\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return earlierThenValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a date comparison between a specified date\r\n * and a date in the given input and returns an error if the date in\r\n * the given input is earlier then the specified one.\r\n *\r\n * Has an input in which you specify the date to compare to\r\n * and optionally you can give it a custom name and a custom\r\n * error content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"laterThen\"\r\n *   [laterThen]=\"{\r\n *      date: date,                              -- a variable of type Date\r\n *      errorName: 'laterThen',\r\n *      error: 'The date is not later then the specified one.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[laterThen]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: LaterThenValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class LaterThenValidatorDirective implements Validator {\r\n    @Input('laterThen') value!: DateValidationConfig\r\n\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return laterThenValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a date comparison between a specified date\r\n * and a date in the given input and returns an error if chosen comparison\r\n * fails.\r\n *\r\n * Has an input in which you specify the date to compare to,\r\n * comparison to preform and optionally you can give it a custom name\r\n * and a custom error content / message.\r\n *\r\n * Available comparisons are: '<' , '>' , '==' , '===' , '<=' , '>='.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"compareTo\"\r\n *   [compareTo]=\"{\r\n *      date: date,                              -- a variable of type Date\r\n *      comparison: '==='\r\n *      errorName: 'compareTo',\r\n *      error: 'The dates are not the same.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[compareTo]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: CompareToValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class CompareToValidatorDirective implements Validator {\r\n    @Input('compareTo') value!: CompareValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return compareToValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a conditional check and if the condition\r\n * passes it will return an error.\r\n *\r\n * Has an input in which you specify the condition that is to be checked\r\n * and optionally you can give it a custom name and a custom error\r\n * content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"requiredWhen\"\r\n *   [requiredWhen]=\"{\r\n *      conditional: isTrue,                     - this can be ether a boolean\r\n *      errorName: 'requiredWhen',                     or a function that returns a boolean\r\n *      error: 'The condition is true.'\r\n *   }\"\r\n * />\r\n *\r\n * NOTE: It is not recommended to pass a function to be executed in the template,\r\n * as this function will be executed every change detection cycle.\r\n */\r\n@Directive({\r\n    selector: '[requiredWhen]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: RequiredWhenValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class RequiredWhenValidatorDirective implements Validator {\r\n    @Input('requiredWhen') value!: ConditionalValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return requiredWhenValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check if the specified FromControl / AbstractControl\r\n * has a value and a given input does not.\r\n *\r\n * Has an input in which you the name of the FromControl / AbstractControl to link\r\n * to and optionally you can give it a custom name and a custom error\r\n * content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"linkTo\"\r\n *   [linkTo]=\"{\r\n *      link: 'linkedTo,                      - a name of a form control we want\r\n *      errorName: 'linkTo',                     to link the input to\r\n *      error: 'The linked input has a value but this one does not'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[linkTo]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: LinkToValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class LinkToValidatorDirective implements Validator {\r\n    @Input('linkTo') value!: LinkValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return linkToValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check if the specified FromControl / AbstractControl\r\n * does not have a value and a given input does.\r\n *\r\n * Has an input in which you the name of the FromControl / AbstractControl to link\r\n * to and optionally you can give it a custom name and a custom error\r\n * content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"linkedTo\"\r\n *   [linkedTo]=\"{\r\n *      link: 'linkTo,                      - a name of a form control we want\r\n *      errorName: 'linkedTo',                     to link the input to\r\n *      error: 'The linked input does not have a value but this one does.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[linkedTo]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: LinkedToValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class LinkedToValidatorDirective implements Validator {\r\n    @Input('linkedTo') value!: LinkValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return linkedToValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check on a specified FromControl / AbstractControl's\r\n * value and returns an error if the given comparison fails.\r\n *\r\n * Has an input in which you specify the length to compere to and the comparison\r\n * to preform. Optionally you can give it a custom name and a custom error\r\n * content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"length\"\r\n *   [length]=\"{\r\n *      length: 8,\r\n *      comparison: \">\",\r\n *      errorName: 'length',\r\n *      error: 'Value is not long enough.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[length]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: LengthValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class LengthValidatorDirective implements Validator {\r\n    @Input('length') value!: LengthValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return lengthValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check on a specified FromControl / AbstractControl's\r\n * value and returns an error if the value is not in the specified range.\r\n *\r\n * Has an input in which you specify the range start value, range end value\r\n * and optionally you can give it a custom name and a custom error content / message.\r\n *\r\n * NOTE: The range is inclusive.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"range\"\r\n *   [range]=\"{\r\n *      start: 8,\r\n *      end: 14,\r\n *      errorName: 'range',\r\n *      error: 'Value is not in the specified range.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[range]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: RangeValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class RangeValidatorDirective implements Validator {\r\n    @Input('range') value!: RangeValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return rangeValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check on a specified FromControl / AbstractControl's\r\n * value and returns an error if it doesn't have a required word count.\r\n *\r\n * Has an input in which you specify the word count to compere to and the comparison\r\n * to preform. Optionally you can give it a custom name and a custom error\r\n * content / message.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"wordCount\"\r\n *   [wordCount]=\"{\r\n *      count: 8,\r\n *      comparison: \">\",\r\n *      errorName: 'wordCount',\r\n *      error: 'The minimum required word count is 8.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[wordCount]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: WordCountValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class WordCountValidatorDirective implements Validator {\r\n    @Input('wordCount') value!: CountValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return wordCountValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that preforms a check on a specified FromControl / AbstractControl's\r\n * value and returns an error if the value is not in the specified word count range.\r\n *\r\n * Has an input in which you specify the range start value, range end value\r\n * and optionally you can give it a custom name and a custom error content / message.\r\n *\r\n * NOTE: The range is inclusive.\r\n *\r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"wordCountRange\"\r\n *   [wordCountRange]=\"{\r\n *      start: 8,\r\n *      end: 14,\r\n *      errorName: 'wordCountRange',\r\n *      error: 'Value is not in the specified word count range.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n    selector: '[wordCountRange]',\r\n    standalone: true,\r\n    providers: [\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: WordCountRangeValidatorDirective,\r\n            multi: true,\r\n        },\r\n    ],\r\n})\r\nexport class WordCountRangeValidatorDirective implements Validator {\r\n    @Input('wordCountRange') value!: RangeValidationConfig\r\n    validate(control: AbstractControl): ValidationErrors | null {\r\n        return wordCountRangeValidation(control, { ...this.value })\r\n    }\r\n}\r\n\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport {\r\n  BaseValidationConfig,\r\n  RegExpValidationConfig,\r\n} from \"../interfaces/validation-config.interface\";\r\nimport { RegExpLogicalOperations } from \"../types\";\r\n\r\n/**\r\n * @internal\r\n * @description\r\n * An decorator which handles the input value in directives which extend the\r\n * {@link RegExpValidatorDirective} and have an expected input in the form of\r\n * {@link RegExpValidationConfig}.\r\n *\r\n * It will populate the error and the errorName values passed to it if it doesn't find\r\n * them in the input value.\r\n * @param regexp                      - Regular expression to check\r\n * @param errorName                   - parameter representing error name\r\n * @param error                       - parameter representing error value\r\n */\r\nexport function RegExpValidatorInput(\r\n  regexp: RegExp,\r\n  errorName: string,\r\n  error: string,\r\n  logic?: RegExpLogicalOperations,\r\n): (target: any, propertyKey: string) => void {\r\n  return function (target: any, propertyKey: string): void {\r\n    type ObjectKey = keyof typeof target;\r\n    let original: BaseValidationConfig = target[propertyKey as ObjectKey];\r\n\r\n    let newData: BaseValidationConfig = {\r\n      ...original,\r\n    };\r\n\r\n    const getter = function (): RegExpValidationConfig {\r\n      (newData as RegExpValidationConfig) = {\r\n        regExp: regexp,\r\n        logic: logic ?? '!!',\r\n        errorName: newData.errorName ?? errorName,\r\n        error: newData.error ?? error,\r\n      };\r\n      return newData as RegExpValidationConfig;\r\n    };\r\n\r\n    const setter = function (val: RegExpValidationConfig) {\r\n      newData = val;\r\n    };\r\n\r\n    Object.defineProperty(target, propertyKey, {\r\n      get: getter,\r\n      set: setter,\r\n    });\r\n  };\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { Directive, Input } from \"@angular/core\";\r\nimport {\r\n  AbstractControl,\r\n  NG_VALIDATORS,\r\n  ValidationErrors,\r\n} from \"@angular/forms\";\r\nimport { RegExpValidatorDirective } from \"./template-driven-form-validators\";\r\nimport { RegExpValidatorInput } from \"../../decorators/validator-input\";\r\nimport {\r\n  IPAddressV4,\r\n  IPAddressV4AndV6,\r\n  IPAddressV6,\r\n  address,\r\n  dateDD_MM_YYYY,\r\n  dateYYYY_MM_DD,\r\n  email,\r\n  lettersOnly,\r\n  noSpecial,\r\n  numbersOnly,\r\n  passport,\r\n  passwordStrength,\r\n  phoneNumber,\r\n  space,\r\n  spaceRestriction,\r\n  ssn,\r\n  timeHH_MM_12,\r\n  timeHH_MM_24,\r\n  timeHH_MM_SS_24,\r\n  url,\r\n  zipCode,\r\n} from \"../../constant/regex\";\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl is \r\n * in a proper address format (Street number Street Name, City, State ZIP code)\r\n * Example: 3344 W Alameda Avenue, Lakewood, CO 80222\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"address\"\r\n *   [address]=\"{\r\n *      errorName: 'address',\r\n *      error: 'Wrong address format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[address]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: AddressValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class AddressValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    address,\r\n    \"address\",\r\n    \"Please input a value in a format of: Street number Street Name, City, State ZIP code.\"\r\n  )\r\n  @Input(\"address\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that hecks if a value in the given FromControl / AbstractControl \r\n * consists of only alphabetic characters.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"alphabet\"\r\n *   [alphabetOnly]=\"{\r\n *      errorName: 'alphabet',\r\n *      error: 'Only letters please.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[alphabetOnly]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: AlphabetOnlyValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class AlphabetOnlyValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    lettersOnly,\r\n    \"alphabetOnly\",\r\n    \"Only alphabetic characters are allowed.\"\r\n  )\r\n  @Input(\"alphabetOnly\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in one of the following formats: dd-MM-YYYY, dd.MM.YYYY or dd/MM/YYYY.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"dateDD_MM_YYYY\"\r\n *   [dateDD_MM_YYYY]=\"{\r\n *      errorName: 'dateDD_MM_YYYY',\r\n *      error: 'Wrong date format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[dateDD_MM_YYYY]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: DateDD_MM_YYYYValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class DateDD_MM_YYYYValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    dateDD_MM_YYYY,\r\n    \"dateDD_MM_YYYY\",\r\n    \"Please input a value one of the following formats: dd-MM-YYYY or dd.MM.YYYY or dd/MM/YYYY.\"\r\n  )\r\n  @Input(\"dateDD_MM_YYYY\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is a following format: YYYY-MM-dd.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"dateYYYY_MM_DD\"\r\n *   [dateYYYY_MM_DD]=\"{\r\n *      errorName: 'dateYYYY_MM_DD',\r\n *      error: 'Wrong date format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[dateYYYY_MM_DD]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: DateYYYY_MM_DDValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class DateYYYY_MM_DDValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    dateYYYY_MM_DD,\r\n    \"dateYYYY_MM_DD\",\r\n    \"Please input a value in a format: YYYY-MM-dd.\"\r\n  )\r\n  @Input(\"dateYYYY_MM_DD\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is a following format: local-part@domain.com.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"email\"\r\n *   [email]=\"{\r\n *      errorName: 'email',\r\n *      error: 'Wrong email format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[email]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: EmailValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class EmailValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    email,\r\n    \"email\",\r\n    \"Please input a value in a format: local-part@domain.com.\"\r\n  )\r\n  @Input(\"email\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in one of the following formats: x.x.x.x or y:y:y:y:y:y:y:y.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"ipAddress\"\r\n *   [ipAddress]=\"{\r\n *      errorName: 'ipAddress',\r\n *      error: 'Wrong ip address format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[ipAddress]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: IPAddressValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class IPAddressValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    IPAddressV4AndV6,\r\n    \"ipAddress\",\r\n    \"Please input a value one of the following formats: x.x.x.x or y:y:y:y:y:y:y:y.\"\r\n  )\r\n  @Input(\"ipAddress\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a following format: x.x.x.x.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"iPv4\"\r\n *   [iPv4]=\"{\r\n *      errorName: 'iPv4',\r\n *      error: 'Wrong ip address format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[iPv4]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: IPv4ValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class IPv4ValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    IPAddressV4,\r\n    \"iPv4\",\r\n    \"Please input a value in a format: x.x.x.x.\"\r\n  )\r\n  @Input(\"iPv4\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a following format:  y:y:y:y:y:y:y:y.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"iPv6\"\r\n *   [iPv6]=\"{\r\n *      errorName: 'iPv6',\r\n *      error: 'Wrong ip address format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[iPv6]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: IPv6ValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class IPv6ValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    IPAddressV6,\r\n    \"iPv6\",\r\n    \"Please input a value in a format: y:y:y:y:y:y:y:y.\"\r\n  )\r\n  @Input(\"iPv6\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * consists of only numeric characters.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"numbers\"\r\n *   [numericsOnly]=\"{\r\n *      errorName: 'numbers',\r\n *      error: 'Numbers only please.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[numericsOnly]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: NumericsOnlyValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class NumericsOnlyValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    numbersOnly,\r\n    \"numbersOnly\",\r\n    \"Only numeric characters are allowed.\"\r\n  )\r\n  @Input(\"numericsOnly\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * has any special characters.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"noSpecials\"\r\n *   [noSpecials]=\"{\r\n *      errorName: 'noSpecials',\r\n *      error: 'Remove any special characters.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[noSpecials]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: NoSpecialsValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class NoSpecialsValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    noSpecial,\r\n    \"noSpecials\",\r\n    \"No special characters are allowed.\"\r\n  )\r\n  @Input(\"noSpecials\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a proper passport format.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"passport\"\r\n *   [passport]=\"{\r\n *      errorName: 'passport',\r\n *      error: 'Wrong passport format'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[passport]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: PassportValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class PassportValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(passport, \"passport\", \"Incorrect passport format.\")\r\n  @Input(\"passport\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a strong password format (Has at least 1 lowercase letter, 1 uppercase letter, \r\n * 1 number, 1 special character and has length of at least 8 characters).\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"password\"\r\n *   [password]=\"{\r\n *      errorName: 'password',\r\n *      error: 'Password is not strong enough.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[password]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: PasswordValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class PasswordValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    passwordStrength,\r\n    \"password\",\r\n    \"The value has to contain at least 1 lowercase letter, 1 uppercase letter, 1 special character and has a length of 8.\"\r\n  )\r\n  @Input(\"password\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a following format: (000) 000 0000.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"phoneNumber\"\r\n *   [phoneNumber]=\"{\r\n *      errorName: 'phoneNumber',\r\n *      error: 'Wrong phone number format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[phoneNumber]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: PhoneNumberValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class PhoneNumberValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    phoneNumber,\r\n    \"phoneNumber\",\r\n    \"Please input a value in a format: (000) 000 0000.\"\r\n  )\r\n  @Input(\"phoneNumber\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * consists of a single space character.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"singleSpace\"\r\n *   [singleSpace]=\"{\r\n *      errorName: 'singleSpace',\r\n *      error: 'Your input has only one space in it.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[space]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: SpaceValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class SpaceValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    space,\r\n    \"space\",\r\n    \"A single space character is not allowed.\",\r\n    '!'\r\n  )\r\n  @Input(\"singleSpace\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * starts or ends with a space character.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"spaceRestriction\"\r\n *   [spaceRestriction]=\"{\r\n *      errorName: 'spaceRestriction',\r\n *      error: 'No spaces on the start or the end of the value please.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[spaceRestriction]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: SpaceRestrictionValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class SpaceRestrictionValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    spaceRestriction,\r\n    \"spaceRestriction\",\r\n    \"Value can not start or end with a space character.\"\r\n  )\r\n  @Input(\"spaceRestrictionValidation\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in one of the following formats: AAA-GGG-SSSS or AAAGGGSSSS.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"ssn\"\r\n *   [ssn]=\"{\r\n *      errorName: 'ssn',\r\n *      error: 'Wrong ssn format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[ssn]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: SSNValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class SSNValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    ssn,\r\n    \"ssn\",\r\n    \"Please input a value one of the following formats: AAA-GGG-SSSS or AAAGGGSSSS.\"\r\n  )\r\n  @Input(\"ssn\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a Time Format HH:MM 12-hour with optional leading 0.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"timeHH_MM_12\"\r\n *   [timeHH_MM_12]=\"{\r\n *      errorName: 'timeHH_MM_12',\r\n *      error: 'Wrong time format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[timeHH_MM_12]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: TimeHH_MM_12ValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class TimeHH_MM_12ValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    timeHH_MM_12,\r\n    \"timeHH_MM_12\",\r\n    \"Please input a value in a HH:MM 12-hour format.\"\r\n  )\r\n  @Input(\"timeHH_MM_12\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a Time Format HH:MM 24-hour with optional leading 0.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"timeHH_MM_24\"\r\n *   [timeHH_MM_24]=\"{\r\n *      errorName: 'timeHH_MM_24',\r\n *      error: 'Wrong time format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[timeHH_MM_24]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: TimeHH_MM_24ValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class TimeHH_MM_24ValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    timeHH_MM_24,\r\n    \"timeHH_MM_24\",\r\n    \"Please input a value in a HH:MM 24-hour format.\"\r\n  )\r\n  @Input(\"timeHH_MM_24\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a Time Format HH:MM:SS 24-hour.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"timeHH_MM_SS_24\"\r\n *   [timeHH_MM_SS_24]=\"{\r\n *      errorName: 'timeHH_MM_SS_24',\r\n *      error: 'Wrong time format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[timeHH_MM_SS_24]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: TimeHH_MM_SS_24ValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class TimeHH_MM_SS_24ValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(\r\n    timeHH_MM_SS_24,\r\n    \"timeHH_MM_SS_24\",\r\n    \"Please input a value in a HH:MM:SS 24-hour format.\"\r\n  )\r\n  @Input(\"timeHH_MM_SS_24\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in a correct url format.\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"url\"\r\n *   [url]=\"{\r\n *      errorName: 'url',\r\n *      error: 'Wrong url format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[url]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: UrlValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class UrlValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(url, \"url\", \"Improper URL format.\")\r\n  @Input(\"url\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n\r\n/**\r\n * @publicApi\r\n * @description\r\n * A Directive that checks if a value in the given FromControl / AbstractControl \r\n * is in one of the following formats: 00000 or 00000-0000..\r\n * \r\n * Has an optional input in which you specify custom name and a custom \r\n * error content / message. \r\n * \r\n * @usageNotes\r\n *  <input\r\n *    type=\"text\"\r\n *    formControlName=\"zipCode\"\r\n *   [zipCode]=\"{\r\n *      errorName: 'zipCode',\r\n *      error: 'Wrong zip code format.'\r\n *   }\"\r\n * />\r\n */\r\n@Directive({\r\n  selector: \"[zipCode]\",\r\n  standalone: true,\r\n  providers: [\r\n    {\r\n      provide: NG_VALIDATORS,\r\n      useExisting: ZipCodeValidatorDirective,\r\n      multi: true,\r\n    },\r\n  ],\r\n})\r\nexport class ZipCodeValidatorDirective extends RegExpValidatorDirective {\r\n  @RegExpValidatorInput(zipCode, \"zipCode\", \"Improper zip code format.\")\r\n  @Input(\"zipCode\")\r\n  override value!: any;\r\n  override validate(control: AbstractControl): ValidationErrors | null {\r\n    return super.validate(control);\r\n  }\r\n}\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { ValidatorFn } from '@angular/forms';\r\nimport { CheckConfig, PreparedChecks } from '../interfaces/check-config.interface';\r\n\r\nexport const checkFactory = (configs: CheckConfig[]): PreparedChecks  => {\r\n  const validators: ValidatorFn[] = [];\r\n  const checks: { [key: string]: string } = {};\r\n  configs.forEach((config: CheckConfig) => {\r\n    validators.push(\r\n      config.validator(...config.args, config.errorName, config.errorMsg)\r\n    );\r\n    checks[config.errorName] = config.errorMsg;\r\n  });\r\n\r\n  return {\r\n    validators,\r\n    checks,\r\n  };\r\n};\r\n","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { checkFactory } from \"../helpers/check-factory\";\r\nimport { lengthValidator, regexpValidator } from \"../validators/reactive-forms/reactive-forms-validators\";\r\n\r\nexport const PasswordChecks = () => checkFactory([\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/[a-zA-Z]/, '!!'],\r\n      errorName: 'noAlpha',\r\n      errorMsg: 'A password must contain letters.',\r\n    },\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/[a-z]/, '!!'],\r\n      errorName: 'noLowercase',\r\n      errorMsg: 'A password must contain lowercase letters.',\r\n    },\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/[A-Z]/, '!!'],\r\n      errorName: 'noUppercase',\r\n      errorMsg: 'A password must contain uppercase letters.',\r\n    },\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/\\d/, '!!'],\r\n      errorName: 'noNumeric',\r\n      errorMsg: 'A password must contain numbers.',\r\n    },\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/^[A-Za-z0-9 ]+$/, '!'],\r\n      errorName: 'noSpecial',\r\n      errorMsg: 'A password must contain special characters.',\r\n    },\r\n    {\r\n      validator: regexpValidator,\r\n      args: [/(?=.*[<>])/, '!'],\r\n      errorName: 'greaterOrLessThen',\r\n      errorMsg: 'A password must not contain < or > characters.',\r\n    },\r\n    {\r\n      validator: lengthValidator,\r\n      args: [8, '<'],\r\n      errorName: 'minLength',\r\n      errorMsg: 'A password is not long enough.',\r\n    },\r\n  ]);","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { checkFactory } from \"../helpers/check-factory\";\r\nimport { wordCountValidator } from \"../validators/reactive-forms/reactive-forms-validators\";\r\n\r\nexport const WordCountChecks = (min: number, max: number) => checkFactory([\r\n    {\r\n        validator: wordCountValidator,\r\n        args: [min, '>'],\r\n        errorName: 'minWordCount',\r\n        errorMsg: `The minimum number of words is ${min}.`\r\n    },\r\n    {\r\n        validator: wordCountValidator,\r\n        args: [max, '<'],\r\n        errorName: 'maxWordCount',\r\n        errorMsg: `The maximum number of words is ${max}.`\r\n    }\r\n]);","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n */\r\n\r\nimport { checkFactory } from \"../helpers/check-factory\";\r\nimport { regexpValidator } from \"../validators/reactive-forms/reactive-forms-validators\";\r\n\r\n\r\n\r\nexport const AddressChecks = () => checkFactory([\r\n    {\r\n        validator: regexpValidator,\r\n        args: [/(\\d{1,})/, '!!'],\r\n        errorName: 'streetNumber',\r\n        errorMsg: 'Street number.',\r\n    },\r\n    {\r\n        validator: regexpValidator,\r\n        args: [/(\\d{1,}) [a-zA-Z0-9\\s]+(\\,)/, '!!'],\r\n        errorName: 'streetName',\r\n        errorMsg: 'Street name.',\r\n    },\r\n    {\r\n        validator: regexpValidator,\r\n        args: [/(\\d{1,}) [a-zA-Z0-9\\s]+(\\,)? [a-zA-Z]+(\\,)/, '!!'],\r\n        errorName: 'city',\r\n        errorMsg: 'City.',\r\n    },\r\n    {\r\n        validator: regexpValidator,\r\n        args: [/(\\d{1,}) [a-zA-Z0-9\\s]+(\\,)? [a-zA-Z]+(\\,)? [A-Z]{2}/, '!!'],\r\n        errorName: 'state',\r\n        errorMsg: 'State.',\r\n    },\r\n    {\r\n        validator: regexpValidator,\r\n        args: [/(\\d{1,}) [a-zA-Z0-9\\s]+(\\,)? [a-zA-Z]+(\\,)? [A-Z]{2} [0-9]{5,6}/, '!!'],\r\n        errorName: 'zip',\r\n        errorMsg: 'ZipCode.',\r\n    }\r\n]);","/**\r\n * @license\r\n * Copyright Slavko Mihajlovic All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an ISC-style license that can be\r\n * found at https://www.isc.org/licenses/\r\n *\r\n * Public API Surface of ngx-validator-pack\r\n */\r\n\r\nexport * from './lib/directives/show-validation.directive';\r\nexport * from './lib/directives/checks.directive';\r\nexport * from './lib/interfaces/validation-config.interface';\r\nexport * from './lib/validators/reactive-forms/cross-field-validators';\r\nexport * from './lib/validators/reactive-forms/prebuilt-validators';\r\nexport * from './lib/validators/reactive-forms/reactive-forms-validators';\r\nexport * from './lib/validators/template-driven-forms/cross-field-td-validators';\r\nexport * from './lib/validators/template-driven-forms/prebuilt-tdf-validators';\r\nexport * from './lib/validators/template-driven-forms/template-driven-form-validators';\r\nexport * from './lib/helpers/check-factory';\r\nexport * from './lib/checks/password-checks';\r\nexport * from './lib/checks/word-count-checks';\r\nexport * from './lib/checks/address-checks';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}