{"version":3,"file":"angular-reactive-validation.mjs","sources":["../../../projects/angular-reactive-validation/src/lib/form/form.directive.ts","../../../projects/angular-reactive-validation/src/lib/get-form-control-from-container.ts","../../../projects/angular-reactive-validation/src/lib/validation-message/validation-message.component.ts","../../../projects/angular-reactive-validation/src/lib/validation-message/validation-message.component.html","../../../projects/angular-reactive-validation/src/lib/validation-error.ts","../../../projects/angular-reactive-validation/src/lib/reactive-validation-module-configuration-token.ts","../../../projects/angular-reactive-validation/src/lib/get-control-path.ts","../../../projects/angular-reactive-validation/src/lib/validation-messages/validation-messages.component.ts","../../../projects/angular-reactive-validation/src/lib/validation-messages/validation-messages.component.html","../../../projects/angular-reactive-validation/src/lib/reactive-validation.module.ts","../../../projects/angular-reactive-validation/src/lib/validator-declaration.ts","../../../projects/angular-reactive-validation/src/lib/validators.ts","../../../projects/angular-reactive-validation/src/angular-reactive-validation.ts"],"sourcesContent":["import { Directive } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\nimport { Observable } from 'rxjs';\n\n@Directive({\n    // eslint-disable-next-line @angular-eslint/directive-selector\n    selector: 'form[formGroup]',\n    standalone: false\n})\n/**\n * Encapsulates properties and events of the form and makes them available for child components.\n */\nexport class FormDirective {\n  /**\n   * Observable which emits when the form is submitted.\n   */\n  submitted: Observable<any>;\n\n  constructor(formGroupDirective: FormGroupDirective) {\n    this.submitted = formGroupDirective.ngSubmit.asObservable();\n  }\n}\n","import { UntypedFormGroup, UntypedFormControl, ControlContainer, FormGroupDirective } from '@angular/forms';\n\nexport const getFormControlFromContainer = (name: string, controlContainer: ControlContainer | undefined): UntypedFormControl => {\n  if (controlContainer) {\n    const control = (controlContainer.control as UntypedFormGroup).controls[name];\n    if (!control) {\n      throw new Error(`There is no control named '${name}'` +\n        (getPath(controlContainer).length > 0 ? ` within '${getPath(controlContainer).join('.')}'` : '') + '.');\n    }\n    if (!(control instanceof UntypedFormControl)) {\n      throw new Error(`The control named '${name}' ` +\n        (getPath(controlContainer).length > 0 ? `within '${getPath(controlContainer).join('.')}' ` : '') +\n        `is not a FormControl. Maybe you accidentally referenced a FormGroup or FormArray?`);\n    }\n\n    return control;\n  } else {\n    throw new Error(`You can't pass a string to arv-validation-messages's for attribute, when the ` +\n      `arv-validation-messages element is not a child of an element with a formGroupName or formGroup declaration.`);\n  }\n};\n\nexport const isControlContainerVoidOrInitialized = (controlContainer: ControlContainer | undefined) =>\n!!(!controlContainer || (controlContainer as FormGroupDirective).form ||\n    (controlContainer.formDirective && (controlContainer.formDirective as FormGroupDirective).form));\n\nconst getPath = (controlContainer: ControlContainer): string[] => controlContainer.path || [];\n","import { Component, Input, ViewEncapsulation, Optional, OnInit } from '@angular/core';\nimport { UntypedFormControl, ValidationErrors, ControlContainer } from '@angular/forms';\n\nimport { ValidationError } from '../validation-error';\nimport { getFormControlFromContainer, isControlContainerVoidOrInitialized } from '../get-form-control-from-container';\n\n@Component({\n    selector: 'arv-validation-message',\n    templateUrl: './validation-message.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\n/**\n * The ValidationMessageComponent lets the developer specify a custom visual style and custom error message\n * for edge-cases where the standard style or message capabilities do not suffice.\n *\n * TODO: Trigger revalidation by parent whenever [for] changes.\n */\nexport class ValidationMessageComponent implements OnInit {\n\n  @Input()\n  /**\n   * The FormControl for which a custom validation message should be shown. This is only required when the parent\n   * ValidationMessagesComponent has multiple FormControls specified.\n   */\n  set for(control: UntypedFormControl | string | undefined) {\n    if (!isControlContainerVoidOrInitialized(this.controlContainer)) {\n      this.initializeForOnInit = () => this.for = control;\n      return;\n    }\n    this._for = typeof control === 'string' ? getFormControlFromContainer(control, this.controlContainer) : control;\n  }\n  get for(): UntypedFormControl | string | undefined {\n    return this._for;\n  }\n\n  @Input()\n  /**\n   * The name of the returned validation object property for which the custom validation message should be shown.\n   */\n  key: string | undefined;\n\n  private _context: ValidationErrors | undefined;\n  private _for: UntypedFormControl | undefined;\n\n  constructor(@Optional() private controlContainer: ControlContainer) { }\n\n  ngOnInit() {\n    this.initializeForOnInit();\n  }\n\n  canHandle(error: ValidationError) {\n    return (!this.for || error.control === this.for) && error.key === this.key;\n  }\n\n  show(error: ValidationError) {\n    this._context = error.errorObject;\n  }\n\n  reset() {\n    this._context = undefined;\n  }\n\n  private initializeForOnInit = () => {};\n\n  /**\n   * The ValidationErrors object that contains contextual information about the error, which can be used for\n   * displaying, e.g. the minimum length within the error message.\n   */\n  get context(): any {\n    return this._context;\n  }\n}\n","<div *ngIf=\"context\">\n  <ng-content></ng-content>\n</div>\n","import { UntypedFormControl, ValidationErrors } from '@angular/forms';\n\nexport class ValidationError {\n  control: UntypedFormControl;\n  key: string;\n  errorObject: ValidationErrors;\n\n  constructor(control: UntypedFormControl, key: string, errorObject: ValidationErrors) {\n    this.control = control;\n    this.key = key;\n    this.errorObject = errorObject;\n  }\n\n  static fromFirstError(control: UntypedFormControl): ValidationError | undefined {\n    if (!control.errors) {\n      return undefined;\n    }\n\n    return new ValidationError(control, Object.keys(control.errors)[0], control.errors[Object.keys(control.errors)[0]]);\n  }\n\n  hasMessage(): boolean {\n    return !!this.getMessage();\n  }\n\n  getMessage() {\n    return this.errorObject['message'];\n  }\n}\n","import { InjectionToken } from '@angular/core';\n\nimport { ReactiveValidationModuleConfiguration } from './reactive-validation-module-configuration';\n\nexport const REACTIVE_VALIDATION_MODULE_CONFIGURATION_TOKEN =\n  new InjectionToken<ReactiveValidationModuleConfiguration>('ReactiveValidationModuleConfiguration');\n","import { AbstractControl } from '@angular/forms';\n\n/**\n * Given a control, returns a string representation of the property path to\n * this control. Thus, for a FormControl 'firstName', that is part of a\n * FormGroup named 'name', this function will return: 'name.firstName'.\n *\n * Note that FormArray indexes are also put in the path, e.g.: 'person.0.name.firstName'.\n */\nexport const getControlPath = (control: AbstractControl): string => {\n  const parentControl = control.parent;\n  if (parentControl) {\n    let path = getControlPath(parentControl);\n    if (path) {\n      path += '.';\n    }\n    return path + Object.keys(parentControl.controls).find(key => {\n      const controls = parentControl.controls;\n      if (Array.isArray(controls)) {\n        return controls[Number(key)] === control;\n      } else {\n        return controls[key] === control;\n      }\n    });\n  }\n\n  return '';\n};\n","import { Component, ContentChildren, QueryList, Input, ViewEncapsulation, AfterContentInit,\n  OnDestroy, Optional, Inject, OnInit } from '@angular/core';\nimport { UntypedFormControl, ControlContainer } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { ValidationMessageComponent } from '../validation-message/validation-message.component';\nimport { ValidationError } from '../validation-error';\nimport { getFormControlFromContainer, isControlContainerVoidOrInitialized } from '../get-form-control-from-container';\nimport { FormDirective } from '../form/form.directive';\nimport { ReactiveValidationModuleConfiguration } from '../reactive-validation-module-configuration';\nimport { REACTIVE_VALIDATION_MODULE_CONFIGURATION_TOKEN } from '../reactive-validation-module-configuration-token';\nimport { getControlPath } from '../get-control-path';\n\n@Component({\n    selector: 'arv-validation-messages',\n    templateUrl: './validation-messages.component.html',\n    encapsulation: ViewEncapsulation.None,\n    standalone: false\n})\n/**\n * The ValidationMessagesComponent shows validation messages for one to many FormControls. It either shows\n * messages specified within the reactive form model, or shows custom messages declared using the\n * ValidationMessageComponent.\n */\nexport class ValidationMessagesComponent implements AfterContentInit, OnDestroy, OnInit {\n  @ContentChildren(ValidationMessageComponent) private messageComponents: QueryList<ValidationMessageComponent> | undefined;\n\n  private _for: UntypedFormControl[] = [];\n  private messageComponentsChangesSubscription = new Subscription();\n  private controlStatusChangesSubscription = new Subscription();\n\n  private formSubmitted: boolean | undefined = undefined;\n  private formSubmittedSubscription = new Subscription();\n\n  constructor(@Optional() private controlContainer: ControlContainer, @Optional() formSubmitDirective: FormDirective,\n    @Optional() @Inject(REACTIVE_VALIDATION_MODULE_CONFIGURATION_TOKEN) private configuration: ReactiveValidationModuleConfiguration) {\n      if (formSubmitDirective) {\n        this.formSubmitted = false;\n        this.formSubmittedSubscription.add(formSubmitDirective.submitted.subscribe(() => {\n          this.formSubmitted = true;\n        }));\n      }\n  }\n\n  ngOnInit() {\n    this.initializeForOnInit();\n  }\n\n  ngAfterContentInit() {\n    this.messageComponentsChangesSubscription.add(this.messageComponents?.changes.subscribe(this.validateChildren));\n    this.validateChildren();\n\n    this._for.forEach(control => {\n      this.handleControlStatusChange(control);\n    });\n  }\n\n  ngOnDestroy() {\n    this.messageComponentsChangesSubscription.unsubscribe();\n    this.formSubmittedSubscription.unsubscribe();\n    this.controlStatusChangesSubscription.unsubscribe();\n  }\n\n  isValid(): boolean {\n    return this.getFirstErrorPerControl().length === 0;\n  }\n\n  getErrorMessages(): string[] {\n    return this.getFirstErrorPerControl().filter(error => error.hasMessage())\n      .map(error => error.getMessage());\n  }\n\n  private initializeForOnInit = () => {};\n\n  @Input()\n  set for(controls: UntypedFormControl | (UntypedFormControl|string)[] | string) {\n    if (!isControlContainerVoidOrInitialized(this.controlContainer)) {\n      this.initializeForOnInit = () => this.for = controls;\n      return;\n    }\n\n    if (!Array.isArray(controls)) {\n      controls = controls !== undefined ? [controls] : [];\n    }\n\n    if (controls.length === 0) {\n      throw new Error(`arv-validation-messages doesn't allow declaring an empty array as input to the 'for' attribute.`);\n    }\n\n    this._for = controls.map(control => typeof control === 'string' ?\n      getFormControlFromContainer(control, this.controlContainer) : control);\n\n    this.validateChildren();\n\n    this.controlStatusChangesSubscription.unsubscribe();\n    this.controlStatusChangesSubscription = new Subscription();\n    this._for.forEach(control => {\n      this.controlStatusChangesSubscription.add(control.statusChanges.subscribe(() => {\n        this.handleControlStatusChange(control);\n      }));\n    });\n  }\n\n\n\n  private getFirstErrorPerControl() {\n    return this._for.filter(control => this.configuration && this.configuration.displayValidationMessageWhen ?\n      this.configuration.displayValidationMessageWhen(control, this.formSubmitted) : control.touched || this.formSubmitted\n    ).map(ValidationError.fromFirstError).filter(value => value !== undefined) as ValidationError[];\n  }\n\n  /**\n   * Validates that the child ValidationMessageComponents declare what FormControl they specify a message for (when needed); and\n   * that the declared FormControl is actually part of the parent ValidationMessagesComponent 'for' collection (when specified).\n   */\n  private validateChildren() {\n    if (!this.messageComponents) {\n      return;\n    }\n\n    this.messageComponents.forEach(component => {\n      if (this._for.length > 1 && component.for === undefined) {\n        throw new Error(`Specify the FormControl for which the arv-validation-message element with key '${component.key}' ` +\n          `should show messages.`);\n      }\n      if (component.for && this._for.indexOf(component.for as UntypedFormControl) === -1) {\n        throw new Error(`A arv-validation-messages element with key '${component.key}' attempts to show messages ` +\n          `for a FormControl that is not declared in the parent arv-validation-messages element.`);\n      }\n    });\n  }\n\n  private handleControlStatusChange(control: UntypedFormControl) {\n    if (!this.messageComponents) {\n      return;\n    }\n\n    this.messageComponents.filter(component => component.for === control || component.for === undefined)\n      .forEach(component => component.reset());\n\n    const error = ValidationError.fromFirstError(control);\n    if (!error || error.hasMessage()) {\n      return;\n    }\n\n    const messageComponent = this.messageComponents.find(component => component.canHandle(error));\n\n    if (messageComponent) {\n      messageComponent.show(error);\n    } else {\n      throw new Error(`There is no suitable arv-validation-message element to show the '${error.key}' ` +\n        `error of '${getControlPath(error.control)}'`);\n    }\n  }\n}\n","<div *ngIf=\"!isValid()\">\n  <div class=\"invalid-feedback\">\n    <p *ngFor=\"let message of getErrorMessages()\">{{message}}</p>\n  </div>\n  <ng-content></ng-content>\n</div>\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { ValidationMessagesComponent } from './validation-messages/validation-messages.component';\nimport { ValidationMessageComponent } from './validation-message/validation-message.component';\nimport { FormDirective } from './form/form.directive';\nimport { ReactiveValidationModuleConfiguration } from './reactive-validation-module-configuration';\nimport { REACTIVE_VALIDATION_MODULE_CONFIGURATION_TOKEN } from './reactive-validation-module-configuration-token';\n\n@NgModule({\n  imports: [\n    CommonModule\n  ],\n  declarations: [\n    ValidationMessagesComponent,\n    ValidationMessageComponent,\n    FormDirective\n  ],\n  exports: [\n    ValidationMessagesComponent,\n    ValidationMessageComponent,\n    FormDirective\n  ]\n})\nexport class ReactiveValidationModule {\n  static forRoot(configuration?: ReactiveValidationModuleConfiguration): ModuleWithProviders<ReactiveValidationModule> {\n    return {\n      ngModule: ReactiveValidationModule,\n      providers: [{\n        provide: REACTIVE_VALIDATION_MODULE_CONFIGURATION_TOKEN, useValue: configuration\n      }]\n    };\n  }\n}\n","import { ValidatorFn, ValidationErrors, AbstractControl } from '@angular/forms';\n\n/**\n * @dynamic\n */\nexport class ValidatorDeclaration {\n  /**\n   * Wraps your own validator functions for use with the angular-reactive-validation library.\n   *\n   * @param validatorFn A function you want to wrap which can validate a control.\n   * @param resultKey The error key used for indicating an error result as returned from the ValidatorFn.\n   */\n  static wrapNoArgumentValidator(validatorFn: ValidatorFn, resultKey: string):\n    (message?: string | (() => string)) => ValidatorFn {\n      return (message?: string | (() => string)): ValidatorFn => (control: AbstractControl): ValidationErrors | null =>\n      ValidatorDeclaration.validateAndSetMessageIfInvalid(control, () => validatorFn, resultKey, message);\n  }\n\n  /**\n   * Wraps your own validator functions for use with the angular-reactive-validation library.\n   *\n   * @param validatorFactoryFn A function which accepts a single argument and returns a ValidatorFn.\n   * @param resultKey The error key used for indicating an error result as returned from the ValidatorFn.\n   */\n  static wrapSingleArgumentValidator<TInput>(validatorFactoryFn: ((arg1: TInput) => ValidatorFn), resultKey: string):\n    (arg1: TInput | (() => TInput), message?: string | ((arg1: TInput) => string)) => ValidatorFn {\n\n      return (arg1: TInput | (() => TInput), message?: string | ((arg1: TInput) => string)): ValidatorFn =>\n      (control: AbstractControl): ValidationErrors | null => {\n          const unwrappedArg1 = ValidatorDeclaration.unwrapArgument(arg1);\n\n          return ValidatorDeclaration.validateAndSetMessageIfInvalid(control, validatorFactoryFn, resultKey, message, unwrappedArg1);\n        };\n  }\n\n  /**\n   * Wraps your own validator functions for use with the angular-reactive-validation library.\n   *\n   * @param validatorFactoryFn A function which accepts two arguments and returns a ValidatorFn.\n   * @param resultKey The error key used for indicating an error result as returned from the ValidatorFn.\n   */\n  static wrapTwoArgumentValidator<TInput1, TInput2>(validatorFactoryFn: ((arg1: TInput1, arg2: TInput2) => ValidatorFn), resultKey: string):\n    (arg1: TInput1 | (() => TInput1), arg2: TInput2 | (() => TInput2), message?: string | ((arg1: TInput1, arg2: TInput2) => string)) =>\n    ValidatorFn {\n\n      return (arg1: TInput1 | (() => TInput1), arg2: TInput2 | (() => TInput2),\n        message?: string | ((arg1: TInput1, arg2: TInput2) => string)): ValidatorFn =>\n        (control: AbstractControl): ValidationErrors | null => {\n          const unwrappedArg1 = ValidatorDeclaration.unwrapArgument(arg1);\n          const unwrappedArg2 = ValidatorDeclaration.unwrapArgument(arg2);\n\n          return ValidatorDeclaration.validateAndSetMessageIfInvalid(control, validatorFactoryFn, resultKey, message,\n            unwrappedArg1, unwrappedArg2);\n        };\n  }\n\n  private static unwrapArgument<T>(arg: T | (() => T)): T {\n    if (arg instanceof Function) {\n      arg = arg();\n    }\n\n    return arg;\n  }\n\n  private static validateAndSetMessageIfInvalid(control: AbstractControl,\n    // eslint-disable-next-line @typescript-eslint/no-shadow\n    validatorFactoryFn: (...args: any[]) => ValidatorFn, resultKey: string,\n    // eslint-disable-next-line @typescript-eslint/no-shadow\n    message?: string | ((...args: any[]) => string), ...args: any[]): ValidationErrors | null {\n\n      const validationResult = ValidatorDeclaration.validate(control, validatorFactoryFn, ...args);\n      ValidatorDeclaration.setMessageIfInvalid(control, resultKey, validationResult, message, ...args);\n\n      return validationResult;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-shadow\n  private static validate(control: AbstractControl, validatorFactoryFn: (...args: any[]) => ValidatorFn, ...args: any[]):\n    ValidationErrors | null {\n\n      const wrappedValidatorFn = validatorFactoryFn(...args);\n      return wrappedValidatorFn(control);\n  }\n\n  private static setMessageIfInvalid(control: AbstractControl, resultKey: string,\n    // eslint-disable-next-line @typescript-eslint/no-shadow\n    validationResult: ValidationErrors | null, message?: string | ((...args: any[]) => string), ...args: any[]) {\n    if (message) {\n      if (validationResult && validationResult[resultKey]) {\n        if (typeof message === 'function') {\n          message = message(...args);\n        }\n\n        // Not all validators set an object. Often they'll simply set a property to true.\n        // Here, we replace any non-object (or array) to be an object on which we can set a message.\n        if (!ValidatorDeclaration.isObject(validationResult[resultKey])) {\n          validationResult[resultKey] = {};\n        }\n\n        validationResult[resultKey]['message'] = message;\n      }\n    }\n  }\n\n  private static isObject(arg: any) {\n    return arg !== null && typeof arg === 'object' && !Array.isArray(arg);\n  }\n}\n","import { Validators as AngularValidators, ValidatorFn } from '@angular/forms';\n\nimport { ValidatorDeclaration } from './validator-declaration';\n\n/**\n * Provides a set of validators used by form controls.\n *\n * Code comments have been copied from the Angular source code.\n */\nexport class Validators {\n/**\n * No-op validator.\n */\n  static nullValidator = AngularValidators.nullValidator;\n  static composeAsync = AngularValidators.composeAsync;\n\n  private static minValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.min, 'min');\n  private static maxValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.max, 'max');\n  private static minLengthValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.minLength, 'minlength');\n  private static maxLengthValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.maxLength, 'maxlength');\n  private static patternValidator = ValidatorDeclaration.wrapSingleArgumentValidator(AngularValidators.pattern, 'pattern');\n  private static requiredValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.required, 'required');\n  private static requiredTrueValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.requiredTrue, 'required');\n  private static emailValidator = ValidatorDeclaration.wrapNoArgumentValidator(AngularValidators.email, 'email');\n\n  /**\n   * Compose multiple validators into a single function that returns the union\n   * of the individual error maps.\n   */\n  static compose(validators: null): null;\n  /**\n   * Compose multiple validators into a single function that returns the union\n   * of the individual error maps.\n   */\n  static compose(validators: (ValidatorFn|null|undefined)[]): ValidatorFn|null;\n  static compose(validators: (ValidatorFn|null|undefined)[]|null): ValidatorFn|null {\n    return validators === null ? AngularValidators.compose(validators) : AngularValidators.compose(validators);\n  }\n\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static min(min: number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   */\n  static min(min: number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static min(min: () => number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   */\n  static min(min: () => number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   */\n  static min(min: number, messageFunc: ((min: number) => string)): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value greater than or equal to a number.\n   */\n  static min(min: () => number, messageFunc: ((min: number) => string)): ValidatorFn;\n  static min(min: number | (() => number), message?: string | ((min: number) => string)): ValidatorFn {\n    return Validators.minValidator(min, message);\n  }\n\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static max(max: number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   */\n  static max(max: number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static max(max: () => number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   */\n  static max(max: () => number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   */\n  static max(max: number, messageFunc: ((max: number) => string)): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value less than or equal to a number.\n   */\n  static max(max: () => number, messageFunc: ((max: number) => string)): ValidatorFn;\n  static max(max: number | (() => number), message?: string | ((max: number) => string)): ValidatorFn {\n    return Validators.maxValidator(max, message);\n  }\n\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static minLength(minLength: number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   */\n  static minLength(minLength: number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static minLength(minLength: () => number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   */\n  static minLength(minLength: () => number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   */\n  static minLength(minLength: number, messageFunc: ((minLength: number) => string)): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a minimum length.\n   */\n  static minLength(minLength: () => number, messageFunc: ((minLength: number) => string)): ValidatorFn;\n  static minLength(minLength: number | (() => number), message?: string | ((minLength: number) => string)): ValidatorFn {\n    return Validators.minLengthValidator(minLength, message);\n  }\n\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static maxLength(maxLength: number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   */\n  static maxLength(maxLength: number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static maxLength(maxLength: () => number): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   */\n  static maxLength(maxLength: () => number, message: string): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   */\n  static maxLength(maxLength: number, messageFunc: ((maxLength: number) => string)): ValidatorFn;\n  /**\n   * Validator that requires controls to have a value of a maximum length.\n   */\n  static maxLength(maxLength: () => number, messageFunc: ((maxLength: number) => string)): ValidatorFn;\n  static maxLength(maxLength: number | (() => number), message?: string | ((maxLength: number) => string)): ValidatorFn {\n    return Validators.maxLengthValidator(maxLength, message);\n  }\n\n  /**\n   * Validator that requires a control to match a regex to its value.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static pattern(pattern: string|RegExp): ValidatorFn;\n  /**\n   * Validator that requires a control to match a regex to its value.\n   */\n  static pattern(pattern: string|RegExp, message: string): ValidatorFn;\n  /**\n   * Validator that requires a control to match a regex to its value.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static pattern(pattern: () => string|RegExp): ValidatorFn;\n  /**\n   * Validator that requires a control to match a regex to its value.\n   */\n  static pattern(pattern: () => string|RegExp, message: string): ValidatorFn;\n  static pattern(pattern: (string|RegExp) | (() => string|RegExp), message?: string): ValidatorFn {\n    return Validators.patternValidator(pattern, message);\n  }\n\n  /**\n   * Validator that requires controls to have a non-empty value.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static required(): ValidatorFn;\n  /**\n   * Validator that requires controls to have a non-empty value.\n   */\n  static required(message: string): ValidatorFn;\n  static required(message?: string): ValidatorFn {\n    return Validators.requiredValidator(message);\n  }\n\n  /**\n   * Validator that requires control value to be true.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static requiredTrue(): ValidatorFn;\n  /**\n   * Validator that requires control value to be true.\n   */\n  static requiredTrue(message: string): ValidatorFn;\n  static requiredTrue(message?: string): ValidatorFn {\n    return Validators.requiredTrueValidator(message);\n  }\n\n  /**\n   * Validator that performs email validation.\n   * Note: when using this function without specifying a message, you have to declare an\n   * arv-validation-message element in the HTML with a custom message.\n   */\n  static email(): ValidatorFn;\n  /**\n   * Validator that performs email validation.\n   */\n  static email(message: string): ValidatorFn;\n  static email(message?: string): ValidatorFn {\n    return Validators.emailValidator(message);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","AngularValidators"],"mappings":"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"}