{"version":3,"sources":["kendo.maskedtextbox.js"],"names":["f","define","$","undefined","ns","name","NS","stringDiffStart","str1","str2","i","length","global","window","min","Math","kendo","caret","keys","ui","Widget","proxy","setTimeout","STATEDISABLED","STATEINVALID","DISABLED","READONLY","CHANGE","MOUSEUP","DROP","KEYDOWN","PASTE","INPUT","INPUT_EVENT_NAME","support","propertyChangeEvent","MaskedTextBox","extend","init","element","options","DOMElement","disabled","that","this","fn","call","_rules","rules","_wrapper","_tokenize","_form","addClass","attr","on","value","_togglePrompt","_old","_emptyMask","_oldValue","_timeoutId","_maskLength","val","clearTimeout","_change","is","parents","enable","readonly","_validationIcon","insertAfter","notify","clearPromptChar","unmaskOnPost","promptChar","culture","mask","events","0","9","#","L","?","&","C","A","a","setOptions","_unbindInput","_bindInput","destroy","off","_formElement","_resetHandler","_submitHandler","raw","unmasked","_unmask","replace","RegExp","emptyMask","_mask","_unmaskedValue","_activeElement","show","_editable","disable","version","$angular","_keydown","_drop","_trackChange","_inputHandler","browser","msie","join","_legacyIEInputHandler","wrapper","toggleClass","removeAttr","removeClass","trigger","__changing","inputChange","backward","contentStart","content","caretPos","endContent","old","selection","cursor","lengthDiff","mobile","mobileOS","__dropping","android","substring","_trimStartPromptChars","_findCaretPosBackwards","count","indexOf","pos","caretStart","_find","__backward","e","input","type","__pasting","formId","form","closest","key","keyCode","BACKSPACE","ENTER","idx","step","charAt","tokens","start","end","valueLength","chr","current","empty","chrIdx","split","token","tokenIdx","tokensLength","result","test","isFunction","_blinkInvalidState","wrap","parent","style","cssText","width","className","_invalidStateTimeout","_removeInvalidState","rule","l","maskChars","numberFormat","getCulture","currency","symbol","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.maskedtextbox.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.maskedtextbox', ['kendo.core'], f);\n}(function () {\n var __meta__ = {\n id: 'maskedtextbox',\n name: 'MaskedTextBox',\n category: 'web',\n description: 'The MaskedTextBox widget allows to specify a mask type on an input field.',\n depends: ['core']\n };\n (function ($, undefined) {\n var global = window;\n var min = global.Math.min;\n var kendo = global.kendo;\n var caret = kendo.caret;\n var keys = kendo.keys;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var NS = '.kendoMaskedTextBox';\n var proxy = $.proxy;\n var setTimeout = window.setTimeout;\n var STATEDISABLED = 'k-state-disabled';\n var STATEINVALID = 'k-state-invalid';\n var DISABLED = 'disabled';\n var READONLY = 'readonly';\n var CHANGE = 'change';\n var MOUSEUP = 'mouseup';\n var DROP = 'drop';\n var KEYDOWN = 'keydown';\n var PASTE = 'paste';\n var INPUT = 'input';\n function ns(name) {\n return name + NS;\n }\n var INPUT_EVENT_NAME = ns(kendo.support.propertyChangeEvent ? 'propertychange' : INPUT);\n function stringDiffStart(str1, str2) {\n var i = 0;\n while (i < str2.length) {\n if (str1[i] !== str2[i]) {\n break;\n }\n i++;\n }\n return i;\n }\n var MaskedTextBox = Widget.extend({\n init: function (element, options) {\n var that = this;\n var DOMElement;\n Widget.fn.init.call(that, element, options);\n that._rules = $.extend({}, that.rules, that.options.rules);\n element = that.element;\n DOMElement = element[0];\n that._wrapper();\n that._tokenize();\n that._form();\n that.element.addClass('k-textbox').attr('autocomplete', 'off').on('focus' + NS, function () {\n var value = DOMElement.value;\n if (!value) {\n DOMElement.value = that._old = that._emptyMask;\n } else {\n that._togglePrompt(true);\n }\n that._oldValue = value;\n that._timeoutId = setTimeout(function () {\n caret(element, 0, value ? that._maskLength : 0);\n });\n }).on('focusout' + NS, function () {\n var value = element.val();\n clearTimeout(that._timeoutId);\n DOMElement.value = that._old = '';\n if (value !== that._emptyMask) {\n DOMElement.value = that._old = value;\n }\n that._change();\n that._togglePrompt();\n });\n var disabled = element.is('[disabled]') || $(that.element).parents('fieldset').is(':disabled');\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is('[readonly]'));\n }\n that.value(that.options.value || element.val());\n that._validationIcon = $('').insertAfter(element);\n kendo.notify(that);\n },\n options: {\n name: 'MaskedTextBox',\n clearPromptChar: false,\n unmaskOnPost: false,\n promptChar: '_',\n culture: '',\n rules: {},\n value: '',\n mask: ''\n },\n events: [CHANGE],\n rules: {\n '0': /\\d/,\n '9': /\\d|\\s/,\n '#': /\\d|\\s|\\+|\\-/,\n 'L': /[a-zA-Z]/,\n '?': /[a-zA-Z]|\\s/,\n '&': /\\S/,\n 'C': /./,\n 'A': /[a-zA-Z0-9]/,\n 'a': /[a-zA-Z0-9]|\\s/\n },\n setOptions: function (options) {\n var that = this;\n Widget.fn.setOptions.call(that, options);\n that._rules = $.extend({}, that.rules, that.options.rules);\n that._tokenize();\n this._unbindInput();\n this._bindInput();\n that.value(that.element.val());\n },\n destroy: function () {\n var that = this;\n that.element.off(NS);\n if (that._formElement) {\n that._formElement.off('reset', that._resetHandler);\n that._formElement.off('submit', that._submitHandler);\n }\n Widget.fn.destroy.call(that);\n },\n raw: function () {\n var unmasked = this._unmask(this.element.val(), 0);\n return unmasked.replace(new RegExp(this.options.promptChar, 'g'), '');\n },\n value: function (value) {\n var element = this.element;\n var emptyMask = this._emptyMask;\n if (value === undefined) {\n return this.element.val();\n }\n if (value === null) {\n value = '';\n }\n if (!emptyMask) {\n this._oldValue = value;\n element.val(value);\n return;\n }\n value = this._unmask(value + '');\n element.val(value ? emptyMask : '');\n this._mask(0, this._maskLength, value);\n this._unmaskedValue = null;\n value = element.val();\n this._oldValue = value;\n if (kendo._activeElement() !== element) {\n if (value === emptyMask) {\n element.val('');\n } else {\n this._togglePrompt();\n }\n }\n },\n _togglePrompt: function (show) {\n var DOMElement = this.element[0];\n var value = DOMElement.value;\n if (this.options.clearPromptChar) {\n if (!show) {\n value = value.replace(new RegExp(this.options.promptChar, 'g'), ' ');\n } else {\n value = this._oldValue;\n }\n DOMElement.value = this._old = value;\n }\n },\n readonly: function (readonly) {\n this._editable({\n readonly: readonly === undefined ? true : readonly,\n disable: false\n });\n },\n enable: function (enable) {\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined ? true : enable)\n });\n },\n _bindInput: function () {\n var that = this;\n if (that._maskLength) {\n if (that.options.$angular) {\n that.element.off(INPUT);\n }\n that.element.on(ns(KEYDOWN), proxy(that._keydown, that)).on(ns(DROP), proxy(that._drop, that)).on(ns(CHANGE), proxy(that._trackChange, that)).on(INPUT_EVENT_NAME, proxy(that._inputHandler, that));\n if (kendo.support.browser.msie) {\n var version = kendo.support.browser.version;\n if (version > 8 && version < 11) {\n var events = [\n ns(MOUSEUP),\n ns(DROP),\n ns(KEYDOWN),\n ns(PASTE)\n ].join(' ');\n that.element.on(events, proxy(that._legacyIEInputHandler, that));\n }\n }\n }\n },\n _unbindInput: function () {\n var events = [\n INPUT_EVENT_NAME,\n ns(KEYDOWN),\n ns(MOUSEUP),\n ns(DROP),\n ns(PASTE)\n ].join(' ');\n this.element.off(events);\n },\n _editable: function (options) {\n var that = this;\n var element = that.element;\n var wrapper = that.wrapper;\n var disable = options.disable;\n var readonly = options.readonly;\n that._unbindInput();\n if (!readonly && !disable) {\n element.removeAttr(DISABLED).removeAttr(READONLY);\n wrapper.removeClass(STATEDISABLED);\n that._bindInput();\n } else {\n element.attr(DISABLED, disable).attr(READONLY, readonly);\n wrapper.toggleClass(STATEDISABLED, disable);\n }\n },\n _change: function () {\n var that = this;\n var value = that.value();\n if (value !== that._oldValue) {\n that._oldValue = value;\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n } else if (value === '' && that.__changing) {\n that.element.trigger(CHANGE);\n }\n },\n inputChange: function (backward) {\n var that = this;\n var old = that._old;\n var element = that.element[0];\n var value = element.value;\n var selection = caret(element);\n var cursor = selection[1];\n var lengthDiff = value.length - old.length;\n var mobile = kendo.support.mobileOS;\n if (that.__dropping && lengthDiff < 0) {\n return;\n }\n if (lengthDiff === -1 && mobile.android && mobile.browser === 'chrome') {\n backward = true;\n }\n var contentStart = min(cursor, stringDiffStart(value, old));\n var content = value.substring(contentStart, cursor);\n element.value = value.substring(0, contentStart) + that._emptyMask.substring(contentStart);\n var caretPos = that._mask(contentStart, cursor, content);\n var endContent = that._trimStartPromptChars(value.substring(cursor), min(lengthDiff, caretPos - contentStart));\n var unmasked = that._unmask(endContent, old.length - endContent.length);\n that._mask(caretPos, caretPos, unmasked);\n if (backward) {\n caretPos = that._findCaretPosBackwards(contentStart);\n }\n caret(element, caretPos);\n that.__dropping = false;\n },\n _trimStartPromptChars: function (content, count) {\n var promptChar = this.options.promptChar;\n while (count-- > 0 && content.indexOf(promptChar) === 0) {\n content = content.substring(1);\n }\n return content;\n },\n _findCaretPosBackwards: function (pos) {\n var caretStart = this._find(pos, true);\n if (caretStart < pos) {\n caretStart += 1;\n }\n return caretStart;\n },\n _inputHandler: function () {\n if (kendo._activeElement() !== this.element[0]) {\n return;\n }\n this.inputChange(this.__backward);\n },\n _legacyIEInputHandler: function (e) {\n var that = this;\n var input = that.element[0];\n var value = input.value;\n var type = e.type;\n that.__pasting = type === 'paste';\n setTimeout(function () {\n if (type === 'mouseup' && that.__pasting) {\n return;\n }\n if (input.value !== value) {\n that.inputChange(that.__backward);\n }\n });\n },\n _trackChange: function () {\n var that = this;\n that.__changing = true;\n setTimeout(function () {\n that.__changing = false;\n });\n },\n _form: function () {\n var that = this;\n var element = that.element;\n var formId = element.attr('form');\n var form = formId ? $('#' + formId) : element.closest('form');\n if (form[0]) {\n that._resetHandler = function () {\n setTimeout(function () {\n that.value(element[0].value);\n });\n };\n that._submitHandler = function () {\n that.element[0].value = that._old = that.raw();\n };\n if (that.options.unmaskOnPost) {\n form.on('submit', that._submitHandler);\n }\n that._formElement = form.on('reset', that._resetHandler);\n }\n },\n _keydown: function (e) {\n var key = e.keyCode;\n this.__backward = key === keys.BACKSPACE;\n if (key === keys.ENTER) {\n this._change();\n }\n },\n _drop: function () {\n this.__dropping = true;\n },\n _find: function (idx, backward) {\n var value = this.element.val() || this._emptyMask;\n var step = 1;\n if (backward === true) {\n step = -1;\n }\n while (idx > -1 || idx <= this._maskLength) {\n if (value.charAt(idx) !== this.tokens[idx]) {\n return idx;\n }\n idx += step;\n }\n return -1;\n },\n _mask: function (start, end, value, backward) {\n var element = this.element[0];\n var current = element.value || this._emptyMask;\n var empty = this.options.promptChar;\n var valueLength;\n var chrIdx = 0;\n var unmasked;\n var chr;\n var idx;\n start = this._find(start, backward);\n if (start > end) {\n end = start;\n }\n unmasked = this._unmask(current.substring(end), end);\n value = this._unmask(value, start);\n valueLength = value.length;\n if (value) {\n unmasked = unmasked.replace(new RegExp('^_{0,' + valueLength + '}'), '');\n }\n value += unmasked;\n current = current.split('');\n chr = value.charAt(chrIdx);\n while (start < this._maskLength) {\n current[start] = chr || empty;\n chr = value.charAt(++chrIdx);\n if (idx === undefined && chrIdx > valueLength) {\n idx = start;\n }\n start = this._find(start + 1);\n }\n element.value = this._old = current.join('');\n if (kendo._activeElement() === element) {\n if (idx === undefined) {\n idx = this._maskLength;\n }\n caret(element, idx);\n }\n return idx;\n },\n _unmask: function (value, idx) {\n if (!value) {\n return '';\n }\n if (this._unmaskedValue === value) {\n return this._unmaskedValue;\n }\n value = (value + '').split('');\n var chr;\n var token;\n var chrIdx = 0;\n var tokenIdx = idx || 0;\n var empty = this.options.promptChar;\n var valueLength = value.length;\n var tokensLength = this.tokens.length;\n var result = '';\n while (tokenIdx < tokensLength) {\n chr = value[chrIdx];\n token = this.tokens[tokenIdx];\n if (chr === token || chr === empty) {\n result += chr === empty ? empty : '';\n chrIdx += 1;\n tokenIdx += 1;\n } else if (typeof token !== 'string') {\n if (token && token.test && token.test(chr) || $.isFunction(token) && token(chr)) {\n result += chr;\n tokenIdx += 1;\n } else {\n if (valueLength === 1) {\n this._blinkInvalidState();\n }\n }\n chrIdx += 1;\n } else {\n tokenIdx += 1;\n }\n if (chrIdx >= valueLength) {\n break;\n }\n }\n this._unmaskedValue = result;\n return result;\n },\n _wrapper: function () {\n var that = this;\n var element = that.element;\n var DOMElement = element[0];\n var wrapper = element.wrap('').parent();\n wrapper[0].style.cssText = DOMElement.style.cssText;\n DOMElement.style.width = '100%';\n that.wrapper = wrapper.addClass(DOMElement.className);\n },\n _blinkInvalidState: function () {\n var that = this;\n that.wrapper.addClass(STATEINVALID);\n clearTimeout(that._invalidStateTimeout);\n that._invalidStateTimeout = setTimeout(proxy(that._removeInvalidState, that), 100);\n },\n _removeInvalidState: function () {\n var that = this;\n that.wrapper.removeClass(STATEINVALID);\n that._invalidStateTimeout = null;\n },\n _tokenize: function () {\n var tokens = [];\n var tokenIdx = 0;\n var mask = this.options.mask || '';\n var maskChars = mask.split('');\n var length = maskChars.length;\n var idx = 0;\n var chr;\n var rule;\n var emptyMask = '';\n var promptChar = this.options.promptChar;\n var numberFormat = kendo.getCulture(this.options.culture).numberFormat;\n var rules = this._rules;\n for (; idx < length; idx++) {\n chr = maskChars[idx];\n rule = rules[chr];\n if (rule) {\n tokens[tokenIdx] = rule;\n emptyMask += promptChar;\n tokenIdx += 1;\n } else {\n if (chr === '.' || chr === ',') {\n chr = numberFormat[chr];\n } else if (chr === '$') {\n chr = numberFormat.currency.symbol;\n } else if (chr === '\\\\') {\n idx += 1;\n chr = maskChars[idx];\n }\n chr = chr.split('');\n for (var i = 0, l = chr.length; i < l; i++) {\n tokens[tokenIdx] = chr[i];\n emptyMask += chr[i];\n tokenIdx += 1;\n }\n }\n }\n this.tokens = tokens;\n this._emptyMask = emptyMask;\n this._maskLength = emptyMask.length;\n }\n });\n ui.plugin(MaskedTextBox);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}