{"version":3,"file":"primeng-inputmask.umd.js","sources":["../../src/app/components/inputmask/inputmask.ts","../../src/app/components/inputmask/primeng-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 {NgModule,Component,ElementRef,OnInit,OnDestroy,Input,forwardRef,Output,EventEmitter,ViewChild,ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {DomHandler} from 'primeng/dom';\nimport {InputTextModule} from 'primeng/inputtext';\nimport {NG_VALUE_ACCESSOR, ControlValueAccessor} from '@angular/forms';\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: `<input #input pInputText class=\"p-inputmask\" [attr.id]=\"inputId\" [attr.type]=\"type\" [attr.name]=\"name\" [ngStyle]=\"style\" [ngClass]=\"styleClass\" [attr.placeholder]=\"placeholder\" [attr.title]=\"title\"\n        [attr.size]=\"size\" [attr.autocomplete]=\"autocomplete\" [attr.maxlength]=\"maxlength\" [attr.tabindex]=\"tabindex\" [attr.aria-label]=\"ariaLabel\" [attr.aria-required]=\"ariaRequired\" [disabled]=\"disabled\" [readonly]=\"readonly\" [attr.required]=\"required\"\n        (focus)=\"onInputFocus($event)\" (blur)=\"onInputBlur($event)\" (keydown)=\"onInputKeydown($event)\" (keypress)=\"onKeyPress($event)\" [attr.autofocus]=\"autoFocus\"\n        (input)=\"onInputChange($event)\" (paste)=\"handleInputChange($event)\">`,\n    host: {\n        '[class.p-inputwrapper-filled]': 'filled',\n        '[class.p-inputwrapper-focus]': 'focused'\n    },\n    providers: [INPUTMASK_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None\n})\nexport class InputMask implements OnInit,OnDestroy,ControlValueAccessor {\n\n    @Input() type: string = 'text';\n\n    @Input() slotChar: string = '_';\n\n    @Input() autoClear: boolean = true;\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    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, private 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\t\t\t\tthis.len--;\n\t\t\t\tthis.partialPosition = i;\n\t\t\t}\n            else if (this.defs[c]) {\n\t\t\t\tthis.tests.push(new RegExp(this.defs[c]));\n\t\t\t\tif (this.firstNonMaskPos === null) {\n\t                this.firstNonMaskPos = this.tests.length - 1;\n\t\t\t\t}\n                if (i < this.partialPosition){\n                    this.lastRequiredNonMaskPos = this.tests.length - 1;\n                }\n\t\t\t}\n            else {\n\t\t\t\tthis.tests.push(null);\n\t\t\t}\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])\n                    this.buffer.push(this.getPlaceholder(i));\n                else\n                    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)\n                this.inputViewChild.nativeElement.value = '';\n            else\n                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 (!this.inputViewChild.nativeElement.offsetParent||this.inputViewChild.nativeElement !== this.inputViewChild.nativeElement.ownerDocument.activeElement) {\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            }\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        }\n        else {\n            if (this.inputViewChild.nativeElement.setSelectionRange) {\n    \t\t\tbegin = this.inputViewChild.nativeElement.selectionStart;\n    \t\t\tend = this.inputViewChild.nativeElement.selectionEnd;\n    \t\t}\n            else if (document['selection'] && document['selection'].createRange) {\n    \t\t\trange = document['selection'].createRange();\n    \t\t\tbegin = 0 - range.duplicate().moveStart('character', -100000);\n    \t\t\tend = begin + range.text.length;\n    \t\t}\n\n    \t\treturn {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])\n                  pos.begin--;\n            if (pos.begin === 0)\n            {\n               while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])\n                  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        }\n        else {\n            this.checkVal(true);\n            while (pos.begin < this.len && !this.tests[pos.begin])\n                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\t\t\tthis.shiftL(begin, end - 1);\n            this.updateModel(e);\n            this.onInput.emit(e);\n\n            e.preventDefault();\n        }\n        else if ( k === 13 ) { // enter\n            this.onInputBlur(e);\n            this.updateModel(e);\n        }\n        else if (k === 27) { // 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)) {//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                    }\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)\n            this.handleAndroidInput(event);\n        else\n            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    ngOnDestroy() {\n\n    }\n}\n\n@NgModule({\n    imports: [CommonModule,InputTextModule],\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":["NG_VALUE_ACCESSOR","forwardRef","EventEmitter","DomHandler","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","ViewChild","Output","CommonModule","InputTextModule","NgModule"],"mappings":"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"}