{"version":3,"file":"kendo.maskedtextbox.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendomaskedtextbox","js","this","$","undefined$1","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","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","icon","iconClass","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 (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.floatinglabel.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.floatinglabel', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendomaskedtextbox = global.kendomaskedtextbox || {}, global.kendomaskedtextbox.js = factory()));\n})(this, (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\", \"icons\"]\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._validationIcon = $(kendo.ui.icon({ icon: \"exclamation-circle\", iconClass: \"k-input-validation-icon k-hidden\" })).insertAfter(element);\n\n that.value(that.options.value || element.val());\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 var kendo$1 = kendo;\n\n return kendo$1;\n\n}));\n"]}