{"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})\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})\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})\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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"}