{"version":3,"file":"kendo.maskedtextbox.min.js","names":["factory","define","amd","$","undefined$1","global","window","min","Math","kendo","caret","keys","ui","Widget","NS","isPlainObject","setTimeout","STATEDISABLED","STATEINVALID","FOCUSED","DISABLED","READONLY","CHANGE","MOUSEUP","DROP","KEYDOWN","PASTE","INPUT","ns","name","INPUT_EVENT_NAME","support","propertyChangeEvent","MaskedTextBox","extend","init","element","options","DOMElement","that","this","fn","call","_rules","rules","_wrapper","_tokenize","_form","addClass","attr","on","value","_togglePrompt","_old","_emptyMask","_oldValue","wrapper","_timeoutId","_maskLength","val","clearTimeout","removeClass","_change","mask","length","is","parents","enable","readonly","_validationIcon","insertAfter","_label","_applyCssClasses","notify","clearPromptChar","unmaskOnPost","promptChar","culture","label","size","fillMode","rounded","events","L","C","A","a","setOptions","_unbindInput","_bindInput","destroy","floatingLabel","off","_formElement","_resetHandler","_submitHandler","raw","_unmask","replace","RegExp","escapeRegExp","emptyMask","_mask","_unmaskedValue","_activeElement","refresh","show","_editable","disable","$angular","_keydown","bind","_drop","_trackChange","_inputHandler","browser","msie","version","join","_legacyIEInputHandler","toggleClass","prop","trigger","__changing","inputChange","backward","old","cursor","lengthDiff","mobile","mobileOS","__dropping","android","contentStart","str1","str2","i","stringDiffStart","content","substring","caretPos","endContent","_trimStartPromptChars","unmasked","_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","floating","labelText","id","_floatingLabelContainer","wrap","parent","FloatingLabel","widget","guid","_inputLabel","insertBefore","style","cssText","width","className","_addInvalidState","_invalidStateTimeout","_removeInvalidState","rule","maskChars","numberFormat","getCulture","currency","symbol","l","text","cssProperties","registerPrefix","registerValues","values","roundedValues","concat","plugin","jQuery"],"sources":["kendo.maskedtextbox.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.floatinglabel'], factory) :\n factory();\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\", \"floatinglabel\"]\n };\n\n (function($, undefined$1) {\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 isPlainObject = $.isPlainObject;\n var setTimeout = window.setTimeout;\n\n var LABELCLASSES = \"k-label k-input-label\";\n var STATEDISABLED = \"k-disabled\";\n var STATEINVALID = \"k-invalid\";\n var FOCUSED = \"k-focus\";\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\n function ns(name) { return name + NS; }\n\n var INPUT_EVENT_NAME = ns(kendo.support.propertyChangeEvent ? \"propertychange\" : INPUT);\n\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\n return i;\n }\n var MaskedTextBox = Widget.extend({\n init: function(element, options) {\n var that = this;\n var DOMElement;\n\n Widget.fn.init.call(that, element, options);\n\n that._rules = $.extend({}, that.rules, that.options.rules);\n\n element = that.element;\n DOMElement = element[0];\n\n that._wrapper();\n that._tokenize();\n that._form();\n\n that.element\n .addClass(\"k-input-inner\")\n .attr(\"autocomplete\", \"off\")\n .on(\"focus\" + NS, function() {\n var value = DOMElement.value;\n\n if (!value) {\n DOMElement.value = that._old = that._emptyMask;\n } else {\n that._togglePrompt(true);\n }\n\n that._oldValue = value;\n that.wrapper.addClass(FOCUSED);\n\n that._timeoutId = setTimeout(function() {\n caret(element, 0, value ? that._maskLength : 0);\n });\n })\n .on(\"focusout\" + NS, function() {\n var value = element.val();\n\n clearTimeout(that._timeoutId);\n DOMElement.value = that._old = \"\";\n\n if (value !== that._emptyMask) {\n DOMElement.value = that._old = value;\n }\n\n that.wrapper.removeClass(FOCUSED);\n that._change();\n that._togglePrompt();\n });\n\n if (that.options.mask && that.options.mask.length > 0) {\n that.element.attr(\"aria-placeholder\", that.options.mask);\n }\n\n var disabled = element.is(\"[disabled]\") || $(that.element).parents(\"fieldset\").is(':disabled');\n\n if (disabled) {\n that.enable(false);\n } else {\n that.readonly(element.is(\"[readonly]\"));\n }\n\n that.value(that.options.value || element.val());\n\n that._validationIcon = $(\"\").insertAfter(element);\n\n that._label();\n that._applyCssClasses();\n kendo.notify(that);\n },\n\n options: {\n name: \"MaskedTextBox\",\n clearPromptChar: false,\n unmaskOnPost: false,\n promptChar: \"_\",\n culture: \"\",\n rules: {},\n value: \"\",\n mask: \"\",\n label: null,\n size: \"medium\",\n fillMode: \"solid\",\n rounded: \"medium\"\n },\n\n events: [\n CHANGE\n ],\n\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\n setOptions: function(options) {\n var that = this;\n\n Widget.fn.setOptions.call(that, options);\n\n that._rules = $.extend({}, that.rules, that.options.rules);\n\n that._tokenize();\n\n this._unbindInput();\n this._bindInput();\n\n that.value(that.element.val());\n },\n\n destroy: function() {\n var that = this;\n\n if (that.floatingLabel) {\n that.floatingLabel.destroy();\n }\n\n that.element.off(NS);\n\n if (that._formElement) {\n that._formElement.off(\"reset\", that._resetHandler);\n that._formElement.off(\"submit\", that._submitHandler);\n }\n\n Widget.fn.destroy.call(that);\n },\n\n raw: function() {\n var unmasked = this._unmask(this.element.val(), 0);\n return unmasked.replace(new RegExp(escapeRegExp(this.options.promptChar), \"g\"), \"\");\n },\n\n value: function(value) {\n var element = this.element;\n var emptyMask = this._emptyMask;\n\n if (value === undefined$1) {\n return this.element.val();\n }\n\n if (value === null) {\n value = \"\";\n }\n\n if (!emptyMask) {\n this._oldValue = value;\n element.val(value);\n return;\n }\n\n value = this._unmask(value + \"\");\n\n element.val(value ? emptyMask : \"\");\n\n this._mask(0, this._maskLength, value);\n this._unmaskedValue = null;\n\n value = element.val();\n this._oldValue = value;\n\n if (kendo._activeElement() !== element) {\n if (value === emptyMask) {\n element.val(\"\");\n } else {\n this._togglePrompt();\n }\n }\n\n if (this.floatingLabel) {\n this.floatingLabel.refresh();\n }\n },\n\n _togglePrompt: function(show) {\n var DOMElement = this.element[0];\n var value = DOMElement.value;\n\n if (this.options.clearPromptChar) {\n if (!show) {\n value = value.replace(new RegExp(escapeRegExp(this.options.promptChar), \"g\"), \" \");\n } else {\n value = this._oldValue;\n }\n\n DOMElement.value = this._old = value;\n }\n },\n\n readonly: function(readonly) {\n var that = this;\n\n this._editable({\n readonly: readonly === undefined$1 ? true : readonly,\n disable: false\n });\n\n if (that.floatingLabel) {\n that.floatingLabel.readonly(readonly === undefined$1 ? true : readonly);\n }\n },\n\n enable: function(enable) {\n var that = this;\n\n this._editable({\n readonly: false,\n disable: !(enable = enable === undefined$1 ? true : enable)\n });\n\n if (that.floatingLabel) {\n that.floatingLabel.enable(enable = enable === undefined$1 ? true : enable);\n }\n },\n\n _bindInput: function() {\n var that = this;\n\n if (that._maskLength) {\n if (that.options.$angular) {//detach \"input\" event in angular scenario to keep the ng-model consistent and updated only when the change event of the textbox is raised.\n that.element.off(INPUT);\n }\n that.element\n .on(ns(KEYDOWN), that._keydown.bind(that))\n .on(ns(DROP), that._drop.bind(that))\n .on(ns(CHANGE), that._trackChange.bind(that))\n .on(INPUT_EVENT_NAME, that._inputHandler.bind(that));\n\n\n if (kendo.support.browser.msie) {\n var version = kendo.support.browser.version;\n if (version > 8 && version < 11) {\n var events = [ns(MOUSEUP), ns(DROP), ns(KEYDOWN), ns(PASTE)].join(\" \");\n that.element.on(events, that._legacyIEInputHandler.bind(that));\n }\n }\n }\n },\n\n _unbindInput: function() {\n var events = [INPUT_EVENT_NAME, ns(KEYDOWN), ns(MOUSEUP), ns(DROP), ns(PASTE)].join(\" \");\n\n this.element.off(events);\n },\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\n that._unbindInput();\n\n if (!readonly && !disable) {\n element.prop(DISABLED, false)\n .prop(READONLY, false);\n\n wrapper.removeClass(STATEDISABLED);\n\n that._bindInput();\n } else {\n element.attr(DISABLED, disable)\n .attr(READONLY, readonly);\n\n wrapper.toggleClass(STATEDISABLED, disable);\n }\n },\n\n _change: function() {\n var that = this;\n var value = that.value();\n\n if (value !== that._oldValue) {\n that._oldValue = value;\n\n that.trigger(CHANGE);\n that.element.trigger(CHANGE);\n }\n else if (value === \"\" && that.__changing) {//ensure change is raised when empty value (mask is stripped from input content) for consistent ngjs model update\n that.element.trigger(CHANGE);\n }\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\n if (that.__dropping && lengthDiff < 0) {//dropping in same input on WebKit is raised once for the removal phase and once for the adding phase\n return;\n }\n\n if (lengthDiff === -1 && mobile.android && mobile.browser === \"chrome\") {\n backward = true;\n }\n\n var contentStart = min(cursor, stringDiffStart(value, old));\n var content = value.substring(contentStart, cursor);\n\n element.value = value.substring(0, contentStart) + that._emptyMask.substring(contentStart);\n\n var caretPos = that._mask(contentStart, cursor, content);\n var endContent = that._trimStartPromptChars(value.substring(cursor), min(lengthDiff, caretPos - contentStart));\n\n var unmasked = that._unmask(endContent, old.length - endContent.length);\n that._mask(caretPos, caretPos, unmasked);\n\n if (backward) {\n caretPos = that._findCaretPosBackwards(contentStart);\n }\n\n caret(element, caretPos);\n\n //clean-up flags\n that.__dropping = false;\n },\n\n _trimStartPromptChars: function(content, count) {\n var promptChar = this.options.promptChar;\n\n while (count-- > 0 && content.indexOf(promptChar) === 0) {\n content = content.substring(1);\n }\n\n return content;\n },\n\n _findCaretPosBackwards: function(pos) {\n var caretStart = this._find(pos, true);\n if (caretStart < pos) {\n caretStart += 1;\n }\n\n return caretStart;\n },\n\n _inputHandler: function() {\n if (kendo._activeElement() !== this.element[0]) {\n return;\n }\n\n this.inputChange(this.__backward);\n },\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\n that.__pasting = (type === \"paste\");\n\n setTimeout(function() {\n if (type === \"mouseup\" && that.__pasting) {\n return;\n }\n if (input.value && input.value !== value) {\n that.inputChange(that.__backward);\n }\n });\n },\n\n _trackChange: function() {\n var that = this;\n\n that.__changing = true;\n setTimeout(function() { 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\n if (form[0]) {\n that._resetHandler = function() {\n setTimeout(function() {\n that.value(element[0].value);\n });\n };\n\n that._submitHandler = function() {\n that.element[0].value = that._old = that.raw();\n };\n\n if (that.options.unmaskOnPost) {\n form.on(\"submit\", that._submitHandler);\n }\n\n that._formElement = form.on(\"reset\", that._resetHandler);\n }\n },\n\n _keydown: function(e) {\n var key = e.keyCode;\n\n this.__backward = key === keys.BACKSPACE;\n\n if (key === keys.ENTER) {\n this._change();\n }\n },\n\n _drop: function() {\n this.__dropping = true;\n },\n\n _find: function(idx, backward) {\n var value = this.element.val() || this._emptyMask;\n var step = 1;\n\n if (backward === true) {\n step = -1;\n }\n\n while (idx > -1 || idx <= this._maskLength) {\n if (value.charAt(idx) !== this.tokens[idx]) {\n return idx;\n }\n\n idx += step;\n }\n\n return -1;\n },\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\n start = this._find(start, backward);\n\n if (start > end) {\n end = start;\n }\n\n unmasked = this._unmask(current.substring(end), end);\n value = this._unmask(value, start);\n valueLength = value.length;\n\n if (value) {\n unmasked = unmasked.replace(new RegExp(\"^_{0,\" + valueLength + \"}\"), \"\");\n }\n\n value += unmasked;\n current = current.split(\"\");\n chr = value.charAt(chrIdx);\n\n while (start < this._maskLength) {\n current[start] = chr || empty;\n chr = value.charAt(++chrIdx);\n\n if (idx === undefined$1 && chrIdx > valueLength) {\n idx = start;\n }\n\n start = this._find(start + 1);\n }\n\n element.value = this._old = current.join(\"\");\n\n if (kendo._activeElement() === element) {\n if (idx === undefined$1) {\n idx = this._maskLength;\n }\n\n caret(element, idx);\n }\n\n return idx;\n },\n\n _unmask: function(value, idx) {\n if (!value) {\n return \"\";\n }\n\n if (this._unmaskedValue === value) {\n return this._unmaskedValue;\n }\n value = (value + \"\").split(\"\");\n\n var chr;\n var token;\n var chrIdx = 0;\n var tokenIdx = idx || 0;\n\n var empty = this.options.promptChar;\n\n var valueLength = value.length;\n var tokensLength = this.tokens.length;\n\n var result = \"\";\n\n while (tokenIdx < tokensLength) {\n chr = value[chrIdx];\n token = this.tokens[tokenIdx];\n\n if (chr === token || chr === empty) {\n result += chr === empty ? empty : \"\";\n\n chrIdx += 1;\n tokenIdx += 1;\n } else if (typeof token !== \"string\") {\n if ((token && token.test && token.test(chr)) || (kendo.isFunction(token) && token(chr))) {\n result += chr;\n tokenIdx += 1;\n } else {\n if (valueLength === 1) {\n this._blinkInvalidState();\n }\n }\n\n chrIdx += 1;\n } else {\n tokenIdx += 1;\n }\n\n if (chrIdx >= valueLength) {\n break;\n }\n }\n this._unmaskedValue = result;\n return result;\n },\n\n _label: function() {\n var that = this;\n var element = that.element;\n var options = that.options;\n var id = element.attr(\"id\");\n var floating;\n var labelText;\n\n if (options.label !== null) {\n floating = isPlainObject(options.label) ? options.label.floating : false;\n labelText = isPlainObject(options.label) ? options.label.content : options.label;\n\n if (floating) {\n that._floatingLabelContainer = that.wrapper.wrap(\"\").parent();\n that.floatingLabel = new kendo.ui.FloatingLabel(that._floatingLabelContainer, { widget: that });\n }\n\n if (kendo.isFunction(labelText)) {\n labelText = labelText.call(that);\n }\n\n if (!labelText) {\n labelText = \"\";\n }\n\n if (!id) {\n id = options.name + \"_\" + kendo.guid();\n element.attr(\"id\", id);\n }\n\n that._inputLabel = $(\"'\").insertBefore(that.wrapper);\n }\n },\n\n _wrapper: function() {\n var that = this;\n var element = that.element;\n var DOMElement = element[0];\n\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).removeClass('input-validation-error');\n },\n\n _blinkInvalidState: function() {\n var that = this;\n\n that._addInvalidState();\n clearTimeout(that._invalidStateTimeout);\n that._invalidStateTimeout = setTimeout(that._removeInvalidState.bind(that), 100);\n },\n\n _addInvalidState: function() {\n var that = this;\n\n that.wrapper.addClass(STATEINVALID);\n that._validationIcon.removeClass(\"k-hidden\");\n },\n\n _removeInvalidState: function() {\n var that = this;\n\n that.wrapper.removeClass(STATEINVALID);\n that._validationIcon.addClass(\"k-hidden\");\n that._invalidStateTimeout = null;\n },\n\n _tokenize: function() {\n var tokens = [];\n var tokenIdx = 0;\n\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\n var emptyMask = \"\";\n var promptChar = this.options.promptChar;\n var numberFormat = kendo.getCulture(this.options.culture).numberFormat;\n var rules = this._rules;\n\n for (; idx < length; idx++) {\n chr = maskChars[idx];\n rule = rules[chr];\n\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\n chr = chr.split(\"\");\n\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\n this.tokens = tokens;\n\n this._emptyMask = emptyMask;\n this._maskLength = emptyMask.length;\n }\n });\n\n function escapeRegExp(text) {\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n kendo.cssProperties.registerPrefix(\"MaskedTextBox\", \"k-input-\");\n\n kendo.cssProperties.registerValues(\"MaskedTextBox\", [{\n prop: \"rounded\",\n values: kendo.cssProperties.roundedValues.concat([['full', 'full']])\n }]);\n\n ui.plugin(MaskedTextBox);\n\n })(window.kendo.jQuery);\n\n}));\n"]}