{"version":3,"file":"alessiobianchini-ng-pattern-mask.mjs","sources":["../../../projects/ng-pattern-mask/src/lib/ng-pattern-mask.directive.ts","../../../projects/ng-pattern-mask/src/lib/ng-pattern-mask.module.ts","../../../projects/ng-pattern-mask/src/public-api.ts","../../../projects/ng-pattern-mask/src/alessiobianchini-ng-pattern-mask.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, Input } from '@angular/core';\n\n@Directive({\n  selector: '[ngPatternMask]'\n})\nexport class NgPatternMaskDirective {\n  private _inputElement!: HTMLInputElement;\n\n  @Input()\n  public ngpmPattern!: string;\n  @Input()\n  public ngpmDigitPlaceholders!: string;\n  @Input()\n  public ngpmCharPlaceholders!: string;\n\n  private options = {\n    digitPlaceholders: this.ngpmDigitPlaceholders || 'dDmMyYhH09',\n    charPlaceholders: this.ngpmCharPlaceholders || '_'\n  }\n\n  constructor(private el: ElementRef) { }\n\n  ngOnInit() {\n    this._inputElement = this.el.nativeElement.hasChildNodes()\n      ? this.el.nativeElement.getElementsByTagName('input')[0]\n      : this.el.nativeElement;\n\n    if (!this._inputElement) {\n      throw('NgPatternMask directive must be used with an input element!');\n    }\n  }\n\n  @HostListener('keyup', ['$event'])\n  keyUp(event: any) {\n    this.handleValueChange()\n  }\n\n  @HostListener('onkeyup', ['$event'])\n  onKeyUp(event: any) {\n    this.handleValueChange()\n  }\n\n  private handleValueChange() {\n    this._inputElement.value = this.validate();\n  }\n\n  private validate() {\n    let newValue = '';\n\n    let clearedValue = this._inputElement.value.replace(/\\W/g, '');\n\n    for (let i = 0, j = 0; i < this.ngpmPattern.length; i++) {\n      const current = clearedValue[j];\n      const isDigit = !isNaN(parseInt(current));\n      const isChar = clearedValue[j]?.match(/[A-Z]/i) || null;\n      const matchesNumber = this.options.digitPlaceholders.indexOf(this.ngpmPattern[i]) >= 0;\n      const matchesLetter = this.options.charPlaceholders.indexOf(this.ngpmPattern[i]) >= 0;\n      if ((matchesNumber && isDigit) || (this.ngpmPattern && matchesLetter && isChar)) {\n        newValue += clearedValue[j++];\n      } else if ((!this.ngpmPattern && !isDigit && matchesNumber) || (this.ngpmPattern && ((matchesLetter && !isChar) || (matchesNumber && !isDigit)))) {\n        return newValue;\n      } else {\n        newValue += this.ngpmPattern[i];\n      }\n\n      if (!current) {\n        break;\n      }\n    }\n\n    return newValue;\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { NgPatternMaskDirective } from './ng-pattern-mask.directive';\n\n@NgModule({\n  declarations: [\n    NgPatternMaskDirective\n  ],\n  imports: [\n  ],\n  exports: [\n    NgPatternMaskDirective\n  ]\n})\nexport class NgPatternMaskModule { }\n","/*\n * Public API Surface of ng-pattern-mask\n */\n\nexport * from './lib/ng-pattern-mask.directive';\nexport * from './lib/ng-pattern-mask.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}