{"version":3,"file":"axulus-uikit-inputmask.mjs","sources":["../../src/app/components/inputmask/inputmask.ts","../../src/app/components/inputmask/axulus-uikit-inputmask.ts"],"sourcesContent":["/*\n    Port of jQuery MaskedInput by DigitalBush as a Native Angular2 Component in Typescript without jQuery\n    https://github.com/digitalBush/jquery.maskedinput/\n\n    Copyright (c) 2007-2014 Josh Bush (digitalbush.com)\n\n    Permission is hereby granted, free of charge, to any person\n    obtaining a copy of this software and associated documentation\n    files (the \"Software\"), to deal in the Software without\n    restriction, including without limitation the rights to use,\n    copy, modify, merge, publish, distribute, sublicense, and/or sell\n    copies of the Software, and to permit persons to whom the\n    Software is furnished to do so, subject to the following\n    conditions:\n\n    The above copyright notice and this permission notice shall be\n    included in all copies or substantial portions of the Software.\n\n    THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\n    OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\n    HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\n    WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\n    OTHER DEALINGS IN THE SOFTWARE.\n*/\nimport { CommonModule } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Input,\n  NgModule,\n  OnInit,\n  Output,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { AutoFocusModule } from '@axulus/uikit/autofocus';\nimport { DomHandler } from '@axulus/uikit/dom';\nimport { InputTextModule } from '@axulus/uikit/inputtext';\n\nexport const INPUTMASK_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => InputMask),\n  multi: true\n};\n\n@Component({\n  selector: 'p-inputMask',\n  template: `\n    <input\n      #input\n      pInputText\n      class=\"p-inputmask\"\n      [attr.id]=\"inputId\"\n      [attr.type]=\"type\"\n      [attr.name]=\"name\"\n      [ngStyle]=\"style\"\n      [ngClass]=\"styleClass\"\n      [attr.placeholder]=\"placeholder\"\n      [attr.title]=\"title\"\n      [attr.size]=\"size\"\n      [attr.autocomplete]=\"autocomplete\"\n      [attr.maxlength]=\"maxlength\"\n      [attr.tabindex]=\"tabindex\"\n      [attr.aria-label]=\"ariaLabel\"\n      [attr.aria-required]=\"ariaRequired\"\n      [disabled]=\"disabled\"\n      [readonly]=\"readonly\"\n      [attr.required]=\"required\"\n      (focus)=\"onInputFocus($event)\"\n      (blur)=\"onInputBlur($event)\"\n      (keydown)=\"onInputKeydown($event)\"\n      (keypress)=\"onKeyPress($event)\"\n      pAutoFocus\n      [autofocus]=\"autoFocus\"\n      (input)=\"onInputChange($event)\"\n      (paste)=\"handleInputChange($event)\"\n    />\n    <i *ngIf=\"value != null && filled && showClear && !disabled\" class=\"p-inputmask-clear-icon pi pi-times\" (click)=\"clear()\"></i>\n  `,\n  host: {\n    class: 'p-element',\n    '[class.p-inputwrapper-filled]': 'filled',\n    '[class.p-inputwrapper-focus]': 'focused',\n    '[class.p-inputmask-clearable]': 'showClear && !disabled'\n  },\n  providers: [INPUTMASK_VALUE_ACCESSOR],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  styleUrls: ['./inputmask.css']\n})\nexport class InputMask implements OnInit, ControlValueAccessor {\n  @Input() type: string = 'text';\n\n  @Input() slotChar: string = '_';\n\n  @Input() autoClear: boolean = true;\n\n  @Input() showClear: boolean = false;\n\n  @Input() style: any;\n\n  @Input() inputId: string;\n\n  @Input() styleClass: string;\n\n  @Input() placeholder: string;\n\n  @Input() size: number;\n\n  @Input() maxlength: number;\n\n  @Input() tabindex: string;\n\n  @Input() title: string;\n\n  @Input() ariaLabel: string;\n\n  @Input() ariaRequired: boolean;\n\n  @Input() disabled: boolean;\n\n  @Input() readonly: boolean;\n\n  @Input() unmask: boolean;\n\n  @Input() name: string;\n\n  @Input() required: boolean;\n\n  @Input() characterPattern: string = '[A-Za-z]';\n\n  @Input() autoFocus: boolean;\n\n  @Input() autocomplete: string;\n\n  @ViewChild('input', { static: true }) inputViewChild: ElementRef;\n\n  @Output() onComplete: EventEmitter<any> = new EventEmitter();\n\n  @Output() onFocus: EventEmitter<any> = new EventEmitter();\n\n  @Output() onBlur: EventEmitter<any> = new EventEmitter();\n\n  @Output() onInput: EventEmitter<any> = new EventEmitter();\n\n  @Output() onKeydown: EventEmitter<any> = new EventEmitter();\n\n  @Output() onClear: EventEmitter<any> = new EventEmitter();\n\n  value: any;\n\n  _mask: string;\n\n  onModelChange: Function = () => {};\n\n  onModelTouched: Function = () => {};\n\n  input: HTMLInputElement;\n\n  filled: boolean;\n\n  defs: any;\n\n  tests: any[];\n\n  partialPosition: any;\n\n  firstNonMaskPos: number;\n\n  lastRequiredNonMaskPos: any;\n\n  len: number;\n\n  oldVal: string;\n\n  buffer: any;\n\n  defaultBuffer: string;\n\n  focusText: string;\n\n  caretTimeoutId: any;\n\n  androidChrome: boolean;\n\n  focused: boolean;\n\n  constructor(public el: ElementRef, public cd: ChangeDetectorRef) {}\n\n  ngOnInit() {\n    let ua = DomHandler.getUserAgent();\n    this.androidChrome = /chrome/i.test(ua) && /android/i.test(ua);\n\n    this.initMask();\n  }\n\n  @Input() get mask(): string {\n    return this._mask;\n  }\n\n  set mask(val: string) {\n    this._mask = val;\n\n    this.initMask();\n    this.writeValue('');\n    this.onModelChange(this.value);\n  }\n\n  initMask() {\n    this.tests = [];\n    this.partialPosition = this.mask.length;\n    this.len = this.mask.length;\n    this.firstNonMaskPos = null;\n    this.defs = {\n      '9': '[0-9]',\n      a: this.characterPattern,\n      '*': `${this.characterPattern}|[0-9]`\n    };\n\n    let maskTokens = this.mask.split('');\n    for (let i = 0; i < maskTokens.length; i++) {\n      let c = maskTokens[i];\n      if (c == '?') {\n        this.len--;\n        this.partialPosition = i;\n      } else if (this.defs[c]) {\n        this.tests.push(new RegExp(this.defs[c]));\n        if (this.firstNonMaskPos === null) {\n          this.firstNonMaskPos = this.tests.length - 1;\n        }\n        if (i < this.partialPosition) {\n          this.lastRequiredNonMaskPos = this.tests.length - 1;\n        }\n      } else {\n        this.tests.push(null);\n      }\n    }\n\n    this.buffer = [];\n    for (let i = 0; i < maskTokens.length; i++) {\n      let c = maskTokens[i];\n      if (c != '?') {\n        if (this.defs[c]) this.buffer.push(this.getPlaceholder(i));\n        else this.buffer.push(c);\n      }\n    }\n    this.defaultBuffer = this.buffer.join('');\n  }\n\n  writeValue(value: any): void {\n    this.value = value;\n\n    if (this.inputViewChild && this.inputViewChild.nativeElement) {\n      if (this.value == undefined || this.value == null) this.inputViewChild.nativeElement.value = '';\n      else this.inputViewChild.nativeElement.value = this.value;\n\n      this.checkVal();\n      this.focusText = this.inputViewChild.nativeElement.value;\n      this.updateFilledState();\n    }\n  }\n\n  registerOnChange(fn: Function): void {\n    this.onModelChange = fn;\n  }\n\n  registerOnTouched(fn: Function): void {\n    this.onModelTouched = fn;\n  }\n\n  setDisabledState(val: boolean): void {\n    this.disabled = val;\n    this.cd.markForCheck();\n  }\n\n  caret(first?: number, last?: number) {\n    let range, begin, end;\n\n    if (\n      !this.inputViewChild.nativeElement.offsetParent ||\n      this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement\n    ) {\n      return;\n    }\n\n    if (typeof first == 'number') {\n      begin = first;\n      end = typeof last === 'number' ? last : begin;\n      if (this.inputViewChild.nativeElement.setSelectionRange) {\n        this.inputViewChild.nativeElement.setSelectionRange(begin, end);\n      } else if (this.inputViewChild.nativeElement['createTextRange']) {\n        range = this.inputViewChild.nativeElement['createTextRange']();\n        range.collapse(true);\n        range.moveEnd('character', end);\n        range.moveStart('character', begin);\n        range.select();\n      }\n    } else {\n      if (this.inputViewChild.nativeElement.setSelectionRange) {\n        begin = this.inputViewChild.nativeElement.selectionStart;\n        end = this.inputViewChild.nativeElement.selectionEnd;\n      } else if (document['selection'] && document['selection'].createRange) {\n        range = document['selection'].createRange();\n        begin = 0 - range.duplicate().moveStart('character', -100000);\n        end = begin + range.text.length;\n      }\n\n      return { begin: begin, end: end };\n    }\n  }\n\n  isCompleted(): boolean {\n    let completed: boolean;\n    for (let i = this.firstNonMaskPos; i <= this.lastRequiredNonMaskPos; i++) {\n      if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  getPlaceholder(i: number) {\n    if (i < this.slotChar.length) {\n      return this.slotChar.charAt(i);\n    }\n    return this.slotChar.charAt(0);\n  }\n\n  seekNext(pos) {\n    while (++pos < this.len && !this.tests[pos]);\n    return pos;\n  }\n\n  seekPrev(pos) {\n    while (--pos >= 0 && !this.tests[pos]);\n    return pos;\n  }\n\n  shiftL(begin: number, end: number) {\n    let i, j;\n\n    if (begin < 0) {\n      return;\n    }\n\n    for (i = begin, j = this.seekNext(end); i < this.len; i++) {\n      if (this.tests[i]) {\n        if (j < this.len && this.tests[i].test(this.buffer[j])) {\n          this.buffer[i] = this.buffer[j];\n          this.buffer[j] = this.getPlaceholder(j);\n        } else {\n          break;\n        }\n\n        j = this.seekNext(j);\n      }\n    }\n    this.writeBuffer();\n    this.caret(Math.max(this.firstNonMaskPos, begin));\n  }\n\n  shiftR(pos) {\n    let i, c, j, t;\n\n    for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\n      if (this.tests[i]) {\n        j = this.seekNext(i);\n        t = this.buffer[i];\n        this.buffer[i] = c;\n        if (j < this.len && this.tests[j].test(t)) {\n          c = t;\n        } else {\n          break;\n        }\n      }\n    }\n  }\n\n  handleAndroidInput(e) {\n    var curVal = this.inputViewChild.nativeElement.value;\n    var pos = this.caret();\n    if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {\n      // a deletion or backspace happened\n      this.checkVal(true);\n      while (pos.begin > 0 && !this.tests[pos.begin - 1]) pos.begin--;\n      if (pos.begin === 0) {\n        while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin]) pos.begin++;\n      }\n\n      setTimeout(() => {\n        this.caret(pos.begin, pos.begin);\n        this.updateModel(e);\n        if (this.isCompleted()) {\n          this.onComplete.emit();\n        }\n      }, 0);\n    } else {\n      this.checkVal(true);\n      while (pos.begin < this.len && !this.tests[pos.begin]) pos.begin++;\n\n      setTimeout(() => {\n        this.caret(pos.begin, pos.begin);\n        this.updateModel(e);\n        if (this.isCompleted()) {\n          this.onComplete.emit();\n        }\n      }, 0);\n    }\n  }\n\n  onInputBlur(e) {\n    this.focused = false;\n    this.onModelTouched();\n    this.checkVal();\n    this.updateFilledState();\n    this.onBlur.emit(e);\n\n    if (this.inputViewChild.nativeElement.value != this.focusText || this.inputViewChild.nativeElement.value != this.value) {\n      this.updateModel(e);\n      let event = document.createEvent('HTMLEvents');\n      event.initEvent('change', true, false);\n      this.inputViewChild.nativeElement.dispatchEvent(event);\n    }\n  }\n\n  onInputKeydown(e) {\n    if (this.readonly) {\n      return;\n    }\n\n    let k = e.which || e.keyCode,\n      pos,\n      begin,\n      end;\n    let iPhone = /iphone/i.test(DomHandler.getUserAgent());\n    this.oldVal = this.inputViewChild.nativeElement.value;\n\n    this.onKeydown.emit(e);\n\n    //backspace, delete, and escape get special treatment\n    if (k === 8 || k === 46 || (iPhone && k === 127)) {\n      pos = this.caret();\n      begin = pos.begin;\n      end = pos.end;\n\n      if (end - begin === 0) {\n        begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\n        end = k === 46 ? this.seekNext(end) : end;\n      }\n\n      this.clearBuffer(begin, end);\n      this.shiftL(begin, end - 1);\n      this.updateModel(e);\n      this.onInput.emit(e);\n\n      e.preventDefault();\n    } else if (k === 13) {\n      // enter\n      this.onInputBlur(e);\n      this.updateModel(e);\n    } else if (k === 27) {\n      // escape\n      this.inputViewChild.nativeElement.value = this.focusText;\n      this.caret(0, this.checkVal());\n      this.updateModel(e);\n\n      e.preventDefault();\n    }\n  }\n\n  onKeyPress(e) {\n    if (this.readonly) {\n      return;\n    }\n\n    var k = e.which || e.keyCode,\n      pos = this.caret(),\n      p,\n      c,\n      next,\n      completed;\n\n    if (e.ctrlKey || e.altKey || e.metaKey || k < 32 || (k > 34 && k < 41)) {\n      //Ignore\n      return;\n    } else if (k && k !== 13) {\n      if (pos.end - pos.begin !== 0) {\n        this.clearBuffer(pos.begin, pos.end);\n        this.shiftL(pos.begin, pos.end - 1);\n      }\n\n      p = this.seekNext(pos.begin - 1);\n      if (p < this.len) {\n        c = String.fromCharCode(k);\n        if (this.tests[p].test(c)) {\n          this.shiftR(p);\n\n          this.buffer[p] = c;\n          this.writeBuffer();\n          next = this.seekNext(p);\n\n          if (/android/i.test(DomHandler.getUserAgent())) {\n            //Path for CSP Violation on FireFox OS 1.1\n            let proxy = () => {\n              this.caret(next);\n            };\n\n            setTimeout(proxy, 0);\n          } else {\n            this.caret(next);\n          }\n\n          if (pos.begin <= this.lastRequiredNonMaskPos) {\n            completed = this.isCompleted();\n          }\n\n          this.onInput.emit(e);\n        }\n      }\n      e.preventDefault();\n    }\n\n    this.updateModel(e);\n\n    this.updateFilledState();\n\n    if (completed) {\n      this.onComplete.emit();\n    }\n  }\n\n  clearBuffer(start, end) {\n    let i;\n    for (i = start; i < end && i < this.len; i++) {\n      if (this.tests[i]) {\n        this.buffer[i] = this.getPlaceholder(i);\n      }\n    }\n  }\n\n  writeBuffer() {\n    this.inputViewChild.nativeElement.value = this.buffer.join('');\n  }\n\n  checkVal(allow?: boolean) {\n    //try to place characters where they belong\n    let test = this.inputViewChild.nativeElement.value,\n      lastMatch = -1,\n      i,\n      c,\n      pos;\n\n    for (i = 0, pos = 0; i < this.len; i++) {\n      if (this.tests[i]) {\n        this.buffer[i] = this.getPlaceholder(i);\n        while (pos++ < test.length) {\n          c = test.charAt(pos - 1);\n          if (this.tests[i].test(c)) {\n            this.buffer[i] = c;\n            lastMatch = i;\n            break;\n          }\n        }\n        if (pos > test.length) {\n          this.clearBuffer(i + 1, this.len);\n          break;\n        }\n      } else {\n        if (this.buffer[i] === test.charAt(pos)) {\n          pos++;\n        }\n        if (i < this.partialPosition) {\n          lastMatch = i;\n        }\n      }\n    }\n    if (allow) {\n      this.writeBuffer();\n    } else if (lastMatch + 1 < this.partialPosition) {\n      if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\n        // Invalid value. Remove it and replace it with the\n        // mask, which is the default behavior.\n        if (this.inputViewChild.nativeElement.value) this.inputViewChild.nativeElement.value = '';\n        this.clearBuffer(0, this.len);\n      } else {\n        // Invalid value, but we opt to show the value to the\n        // user and allow them to correct their mistake.\n        this.writeBuffer();\n      }\n    } else {\n      this.writeBuffer();\n      this.inputViewChild.nativeElement.value = this.inputViewChild.nativeElement.value.substring(0, lastMatch + 1);\n    }\n    return this.partialPosition ? i : this.firstNonMaskPos;\n  }\n\n  onInputFocus(event) {\n    if (this.readonly) {\n      return;\n    }\n\n    this.focused = true;\n\n    clearTimeout(this.caretTimeoutId);\n    let pos;\n\n    this.focusText = this.inputViewChild.nativeElement.value;\n\n    pos = this.checkVal();\n\n    this.caretTimeoutId = setTimeout(() => {\n      if (this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {\n        return;\n      }\n      this.writeBuffer();\n      if (pos == this.mask.replace('?', '').length) {\n        this.caret(0, pos);\n      } else {\n        this.caret(pos);\n      }\n    }, 10);\n\n    this.onFocus.emit(event);\n  }\n\n  onInputChange(event) {\n    if (this.androidChrome) this.handleAndroidInput(event);\n    else this.handleInputChange(event);\n\n    this.onInput.emit(event);\n  }\n\n  handleInputChange(event) {\n    if (this.readonly) {\n      return;\n    }\n\n    setTimeout(() => {\n      var pos = this.checkVal(true);\n      this.caret(pos);\n      this.updateModel(event);\n      if (this.isCompleted()) {\n        this.onComplete.emit();\n      }\n    }, 0);\n  }\n\n  getUnmaskedValue() {\n    let unmaskedBuffer = [];\n    for (let i = 0; i < this.buffer.length; i++) {\n      let c = this.buffer[i];\n      if (this.tests[i] && c != this.getPlaceholder(i)) {\n        unmaskedBuffer.push(c);\n      }\n    }\n\n    return unmaskedBuffer.join('');\n  }\n\n  updateModel(e) {\n    const updatedValue = this.unmask ? this.getUnmaskedValue() : e.target.value;\n    if (updatedValue !== null || updatedValue !== undefined) {\n      this.value = updatedValue;\n      this.onModelChange(this.value);\n    }\n  }\n\n  updateFilledState() {\n    this.filled = this.inputViewChild.nativeElement && this.inputViewChild.nativeElement.value != '';\n  }\n\n  focus() {\n    this.inputViewChild.nativeElement.focus();\n  }\n\n  clear() {\n    this.inputViewChild.nativeElement.value = '';\n    this.value = null;\n    this.onModelChange(this.value);\n    this.onClear.emit();\n  }\n}\n\n@NgModule({\n  imports: [CommonModule, InputTextModule, AutoFocusModule],\n  exports: [InputMask],\n  declarations: [InputMask]\n})\nexport class InputMaskModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}