{"version":3,"file":"axulus-uikit-keyfilter.mjs","sources":["../../src/app/components/keyfilter/keyfilter.ts","../../src/app/components/keyfilter/axulus-uikit-keyfilter.ts"],"sourcesContent":["import { NgModule, Directive, ElementRef, HostListener, Input, forwardRef, Output, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { Validator, AbstractControl, NG_VALIDATORS } from '@angular/forms';\n\nexport const KEYFILTER_VALIDATOR: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => KeyFilter),\n  multi: true\n};\n\nconst DEFAULT_MASKS = {\n  pint: /[\\d]/,\n  int: /[\\d\\-]/,\n  pnum: /[\\d\\.]/,\n  money: /[\\d\\.\\s,]/,\n  num: /[\\d\\-\\.]/,\n  hex: /[0-9a-f]/i,\n  email: /[a-z0-9_\\.\\-@]/i,\n  alpha: /[a-z_]/i,\n  alphanum: /[a-z0-9_]/i\n};\n\nconst KEYS = {\n  TAB: 9,\n  RETURN: 13,\n  ESC: 27,\n  BACKSPACE: 8,\n  DELETE: 46\n};\n\nconst SAFARI_KEYS = {\n  63234: 37, // left\n  63235: 39, // right\n  63232: 38, // up\n  63233: 40, // down\n  63276: 33, // page up\n  63277: 34, // page down\n  63272: 46, // delete\n  63273: 36, // home\n  63275: 35 // end\n};\n\n@Directive({\n  selector: '[pKeyFilter]',\n  providers: [KEYFILTER_VALIDATOR],\n  host: {\n    class: 'p-element'\n  }\n})\nexport class KeyFilter implements Validator {\n  @Input() pValidateOnly: boolean;\n\n  @Output() ngModelChange: EventEmitter<any> = new EventEmitter();\n\n  regex: RegExp;\n\n  _pattern: any;\n\n  isAndroid: boolean;\n\n  lastValue: any;\n\n  constructor(public el: ElementRef) {\n    this.isAndroid = DomHandler.isAndroid();\n  }\n\n  get pattern(): any {\n    return this._pattern;\n  }\n\n  @Input('pKeyFilter') set pattern(_pattern: any) {\n    this._pattern = _pattern;\n    this.regex = DEFAULT_MASKS[this._pattern] || this._pattern;\n  }\n\n  isNavKeyPress(e: KeyboardEvent) {\n    let k = e.keyCode;\n    k = DomHandler.getBrowser().safari ? SAFARI_KEYS[k] || k : k;\n\n    return (k >= 33 && k <= 40) || k == KEYS.RETURN || k == KEYS.TAB || k == KEYS.ESC;\n  }\n\n  isSpecialKey(e: KeyboardEvent) {\n    let k = e.keyCode || e.charCode;\n\n    return (\n      k == 9 ||\n      k == 13 ||\n      k == 27 ||\n      k == 16 ||\n      k == 17 ||\n      (k >= 18 && k <= 20) ||\n      (DomHandler.getBrowser().opera && !e.shiftKey && (k == 8 || (k >= 33 && k <= 35) || (k >= 36 && k <= 39) || (k >= 44 && k <= 45)))\n    );\n  }\n\n  getKey(e: KeyboardEvent) {\n    let k = e.keyCode || e.charCode;\n    return DomHandler.getBrowser().safari ? SAFARI_KEYS[k] || k : k;\n  }\n\n  getCharCode(e: KeyboardEvent) {\n    return e.charCode || e.keyCode || e.which;\n  }\n\n  findDelta(value: string, prevValue: string) {\n    let delta = '';\n\n    for (let i = 0; i < value.length; i++) {\n      let str = value.substr(0, i) + value.substr(i + value.length - prevValue.length);\n\n      if (str === prevValue) delta = value.substr(i, value.length - prevValue.length);\n    }\n\n    return delta;\n  }\n\n  isValidChar(c: string) {\n    return this.regex.test(c);\n  }\n\n  isValidString(str: string) {\n    for (let i = 0; i < str.length; i++) {\n      if (!this.isValidChar(str.substr(i, 1))) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  @HostListener('input', ['$event'])\n  onInput(e: KeyboardEvent) {\n    if (this.isAndroid && !this.pValidateOnly) {\n      let val = this.el.nativeElement.value;\n      let lastVal = this.lastValue || '';\n\n      let inserted = this.findDelta(val, lastVal);\n      let removed = this.findDelta(lastVal, val);\n      let pasted = inserted.length > 1 || (!inserted && !removed);\n\n      if (pasted) {\n        if (!this.isValidString(val)) {\n          this.el.nativeElement.value = lastVal;\n          this.ngModelChange.emit(lastVal);\n        }\n      } else if (!removed) {\n        if (!this.isValidChar(inserted)) {\n          this.el.nativeElement.value = lastVal;\n          this.ngModelChange.emit(lastVal);\n        }\n      }\n\n      val = this.el.nativeElement.value;\n      if (this.isValidString(val)) {\n        this.lastValue = val;\n      }\n    }\n  }\n\n  @HostListener('keypress', ['$event'])\n  onKeyPress(e: KeyboardEvent) {\n    if (this.isAndroid || this.pValidateOnly) {\n      return;\n    }\n\n    let browser = DomHandler.getBrowser();\n    let k = this.getKey(e);\n\n    if (browser.mozilla && (e.ctrlKey || e.altKey)) {\n      return;\n    } else if (k == 17 || k == 18) {\n      return;\n    }\n\n    let c = this.getCharCode(e);\n    let cc = String.fromCharCode(c);\n    let ok = true;\n\n    if (!browser.mozilla && (this.isSpecialKey(e) || !cc)) {\n      return;\n    }\n\n    ok = this.regex.test(cc);\n\n    if (!ok) {\n      e.preventDefault();\n    }\n  }\n\n  @HostListener('paste', ['$event'])\n  onPaste(e) {\n    const clipboardData = e.clipboardData || (<any>window).clipboardData.getData('text');\n    if (clipboardData) {\n      const pastedText = clipboardData.getData('text');\n      for (let char of pastedText.toString()) {\n        if (!this.regex.test(char)) {\n          e.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n\n  validate(c: AbstractControl): { [key: string]: any } {\n    if (this.pValidateOnly) {\n      let value = this.el.nativeElement.value;\n      if (value && !this.regex.test(value)) {\n        return {\n          validatePattern: false\n        };\n      }\n    }\n  }\n}\n\n@NgModule({\n  imports: [CommonModule],\n  exports: [KeyFilter],\n  declarations: [KeyFilter]\n})\nexport class KeyFilterModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}