{"version":3,"file":"imask.min.js","sources":["../src/core/utils.js","../src/masked/factory.js","../src/imask.js","../node_modules/core-js/modules/_defined.js","../node_modules/core-js/modules/_has.js","../node_modules/core-js/modules/_cof.js","../node_modules/core-js/modules/_iobject.js","../node_modules/core-js/modules/_to-iobject.js","../node_modules/core-js/modules/_to-integer.js","../node_modules/core-js/modules/_to-length.js","../node_modules/core-js/modules/_to-index.js","../node_modules/core-js/modules/_global.js","../node_modules/core-js/modules/_shared.js","../node_modules/core-js/modules/_uid.js","../node_modules/core-js/modules/_shared-key.js","../node_modules/core-js/modules/_object-keys-internal.js","../node_modules/core-js/modules/_array-includes.js","../node_modules/core-js/modules/_enum-bug-keys.js","../node_modules/core-js/modules/_object-keys.js","../node_modules/core-js/modules/_core.js","../node_modules/core-js/modules/_is-object.js","../node_modules/core-js/modules/_an-object.js","../node_modules/core-js/modules/_fails.js","../node_modules/core-js/modules/_descriptors.js","../node_modules/core-js/modules/_dom-create.js","../node_modules/core-js/modules/_ie8-dom-define.js","../node_modules/core-js/modules/_object-dp.js","../node_modules/core-js/modules/_to-primitive.js","../node_modules/core-js/modules/_hide.js","../node_modules/core-js/modules/_property-desc.js","../node_modules/core-js/modules/_redefine.js","../node_modules/core-js/modules/_ctx.js","../node_modules/core-js/modules/_a-function.js","../node_modules/core-js/modules/_export.js","../node_modules/core-js/modules/_object-sap.js","../node_modules/core-js/modules/es6.object.keys.js","../node_modules/core-js/modules/_to-object.js","../node_modules/core-js/fn/object/keys.js","../node_modules/core-js/modules/_string-repeat.js","../node_modules/core-js/modules/es6.string.repeat.js","../node_modules/core-js/fn/string/repeat.js","../node_modules/core-js/modules/_string-pad.js","../node_modules/core-js/modules/es7.string.pad-start.js","../node_modules/core-js/fn/string/pad-start.js","../node_modules/core-js/modules/es7.string.pad-end.js","../node_modules/core-js/fn/string/pad-end.js","../src/core/change-details.js","../src/masked/base.js","../src/masked/regexp.js","../src/masked/function.js","../src/masked/number.js","../src/masked/pattern/definition.js","../src/masked/pattern/group.js","../src/masked/pattern.js","../src/masked/date.js","../src/masked/dynamic.js","../src/core/action-details.js","../src/controls/input.js"],"sourcesContent":["export\r\nfunction isString (str) {\r\n return typeof str === 'string' || str instanceof String;\r\n}\r\n\r\nexport\r\nfunction conform (res, str, fallback='') {\r\n return isString(res) ?\r\n res :\r\n res ?\r\n str :\r\n fallback;\r\n}\r\n\r\nexport\r\nconst DIRECTION = {\r\n NONE: 0,\r\n LEFT: -1,\r\n RIGHT: 1\r\n}\r\n\r\nexport\r\nfunction indexInDirection (pos, direction) {\r\n if (direction === DIRECTION.LEFT) --pos;\r\n return pos;\r\n}\r\n\r\nexport\r\nfunction escapeRegExp (str) {\r\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\r\n}\r\n\r\n\r\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\r\nexport\r\nfunction objectIncludes (b, a) {\r\n if (a === b) return true;\r\n\r\n var arrA = Array.isArray(a)\r\n , arrB = Array.isArray(b)\r\n , i;\r\n\r\n if (arrA && arrB) {\r\n if (a.length != b.length) return false;\r\n for (i = 0; i < a.length; i++)\r\n if (!objectIncludes(a[i], b[i])) return false;\r\n return true;\r\n }\r\n\r\n if (arrA != arrB) return false;\r\n\r\n if (a && b && typeof a === 'object' && typeof b === 'object') {\r\n var keys = Object.keys(a);\r\n // if (keys.length !== Object.keys(b).length) return false;\r\n\r\n var dateA = a instanceof Date\r\n , dateB = b instanceof Date;\r\n if (dateA && dateB) return a.getTime() == b.getTime();\r\n if (dateA != dateB) return false;\r\n\r\n var regexpA = a instanceof RegExp\r\n , regexpB = b instanceof RegExp;\r\n if (regexpA && regexpB) return a.toString() == b.toString();\r\n if (regexpA != regexpB) return false;\r\n\r\n for (i = 0; i < keys.length; i++)\r\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\r\n\r\n for (i = 0; i < keys.length; i++)\r\n if(!objectIncludes(a[keys[i]], b[keys[i]])) return false;\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n}","import {isString} from '../core/utils.js';\r\nimport Masked from './base.js';\r\nimport MaskedRegExp from './regexp.js';\r\nimport MaskedFunction from './function.js';\r\nimport MaskedNumber from './number.js';\r\n\r\n\r\nexport\r\nfunction maskedClass (mask) {\r\n if (mask == null) {\r\n throw new Error('mask property should be defined');\r\n }\r\n\r\n if (mask instanceof RegExp) return MaskedRegExp;\r\n if (isString(mask)) return IMask.MaskedPattern;\r\n if (mask.prototype instanceof Masked) return mask;\r\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\r\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return MaskedNumber;\r\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate;\r\n if (mask instanceof Function) return MaskedFunction;\r\n\r\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\r\n return Masked;\r\n}\r\n\r\n\r\nexport default\r\nfunction createMask (opts) {\r\n opts = Object.assign({}, opts); // clone\r\n const mask = opts.mask;\r\n\r\n if (mask instanceof Masked) return mask;\r\n\r\n const MaskedClass = maskedClass(mask);\r\n return new MaskedClass(opts);\r\n}\r\n","import Masked from './masked/base.js';\r\nimport MaskedPattern from './masked/pattern.js';\r\nimport MaskedNumber from './masked/number.js';\r\nimport MaskedDate from './masked/date.js';\r\nimport MaskedRegExp from './masked/regexp.js';\r\nimport MaskedFunction from './masked/function.js';\r\nimport MaskedDynamic from './masked/dynamic.js';\r\n\r\nimport InputMask from './controls/input.js';\r\n\r\n\r\nexport default\r\nfunction IMask (el, opts={}) {\r\n\t// currently available only for input-like elements\r\n return new InputMask(el, opts);\r\n}\r\n\r\n\r\nIMask.InputMask = InputMask;\r\n\r\nIMask.Masked = Masked;\r\nIMask.MaskedPattern = MaskedPattern;\r\nIMask.MaskedNumber = MaskedNumber;\r\nIMask.MaskedDate = MaskedDate;\r\nIMask.MaskedRegExp = MaskedRegExp;\r\nIMask.MaskedFunction = MaskedFunction;\r\nIMask.MaskedDynamic = MaskedDynamic;\r\n\r\nwindow.IMask = IMask;\r\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function(it){\n if(it == undefined)throw TypeError(\"Can't call method on \" + it);\n return it;\n};","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function(it, key){\n return hasOwnProperty.call(it, key);\n};","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){\n return cof(it) == 'String' ? it.split('') : Object(it);\n};","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject')\n , defined = require('./_defined');\nmodule.exports = function(it){\n return IObject(defined(it));\n};","// 7.1.4 ToInteger\nvar ceil = Math.ceil\n , floor = Math.floor;\nmodule.exports = function(it){\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer')\n , min = Math.min;\nmodule.exports = function(it){\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};","var toInteger = require('./_to-integer')\n , max = Math.max\n , min = Math.min;\nmodule.exports = function(index, length){\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","var global = require('./_global')\n , SHARED = '__core-js_shared__'\n , store = global[SHARED] || (global[SHARED] = {});\nmodule.exports = function(key){\n return store[key] || (store[key] = {});\n};","var id = 0\n , px = Math.random();\nmodule.exports = function(key){\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};","var shared = require('./_shared')('keys')\n , uid = require('./_uid');\nmodule.exports = function(key){\n return shared[key] || (shared[key] = uid(key));\n};","var has = require('./_has')\n , toIObject = require('./_to-iobject')\n , arrayIndexOf = require('./_array-includes')(false)\n , IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function(object, names){\n var O = toIObject(object)\n , i = 0\n , result = []\n , key;\n for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while(names.length > i)if(has(O, key = names[i++])){\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject')\n , toLength = require('./_to-length')\n , toIndex = require('./_to-index');\nmodule.exports = function(IS_INCLUDES){\n return function($this, el, fromIndex){\n var O = toIObject($this)\n , length = toLength(O.length)\n , index = toIndex(fromIndex, length)\n , value;\n // Array#includes uses SameValueZero equality algorithm\n if(IS_INCLUDES && el != el)while(length > index){\n value = O[index++];\n if(value != value)return true;\n // Array#toIndex ignores holes, Array#includes - not\n } else for(;length > index; index++)if(IS_INCLUDES || index in O){\n if(O[index] === el)return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal')\n , enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O){\n return $keys(O, enumBugKeys);\n};","var core = module.exports = {version: '2.4.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\n});","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","var global = require('./_global')\n , hide = require('./_hide')\n , has = require('./_has')\n , SRC = require('./_uid')('src')\n , TO_STRING = 'toString'\n , $toString = Function[TO_STRING]\n , TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function(it){\n return $toString.call(it);\n};\n\n(module.exports = function(O, key, val, safe){\n var isFunction = typeof val == 'function';\n if(isFunction)has(val, 'name') || hide(val, 'name', key);\n if(O[key] === val)return;\n if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if(O === global){\n O[key] = val;\n } else {\n if(!safe){\n delete O[key];\n hide(O, key, val);\n } else {\n if(O[key])O[key] = val;\n else hide(O, key, val);\n }\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString(){\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","var global = require('./_global')\n , core = require('./_core')\n , hide = require('./_hide')\n , redefine = require('./_redefine')\n , ctx = require('./_ctx')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})\n , key, own, out, exp;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if(target)redefine(target, key, out, type & $export.U);\n // export\n if(exports[key] != out)hide(exports, key, exp);\n if(IS_PROTO && expProto[key] != out)expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export')\n , core = require('./_core')\n , fails = require('./_fails');\nmodule.exports = function(KEY, exec){\n var fn = (core.Object || {})[KEY] || Object[KEY]\n , exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);\n};","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object')\n , $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function(){\n return function keys(it){\n return $keys(toObject(it));\n };\n});","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function(it){\n return Object(defined(it));\n};","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;","'use strict';\nvar toInteger = require('./_to-integer')\n , defined = require('./_defined');\n\nmodule.exports = function repeat(count){\n var str = String(defined(this))\n , res = ''\n , n = toInteger(count);\n if(n < 0 || n == Infinity)throw RangeError(\"Count can't be negative\");\n for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;\n return res;\n};","var $export = require('./_export');\n\n$export($export.P, 'String', {\n // 21.1.3.13 String.prototype.repeat(count)\n repeat: require('./_string-repeat')\n});","require('../../modules/es6.string.repeat');\nmodule.exports = require('../../modules/_core').String.repeat;","// https://github.com/tc39/proposal-string-pad-start-end\nvar toLength = require('./_to-length')\n , repeat = require('./_string-repeat')\n , defined = require('./_defined');\n\nmodule.exports = function(that, maxLength, fillString, left){\n var S = String(defined(that))\n , stringLength = S.length\n , fillStr = fillString === undefined ? ' ' : String(fillString)\n , intMaxLength = toLength(maxLength);\n if(intMaxLength <= stringLength || fillStr == '')return S;\n var fillLen = intMaxLength - stringLength\n , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));\n if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);\n return left ? stringFiller + S : S + stringFiller;\n};\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export')\n , $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padStart: function padStart(maxLength /*, fillString = ' ' */){\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);\n }\n});","require('../../modules/es7.string.pad-start');\nmodule.exports = require('../../modules/_core').String.padStart;\n","'use strict';\n// https://github.com/tc39/proposal-string-pad-start-end\nvar $export = require('./_export')\n , $pad = require('./_string-pad');\n\n$export($export.P, 'String', {\n padEnd: function padEnd(maxLength /*, fillString = ' ' */){\n return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);\n }\n});","require('../../modules/es7.string.pad-end');\nmodule.exports = require('../../modules/_core').String.padEnd;\n","export default\r\nclass ChangeDetails {\r\n constructor (details) {\r\n Object.assign(this, {\r\n inserted: '',\r\n overflow: false,\r\n removedCount: 0,\r\n shift: 0,\r\n }, details);\r\n }\r\n\r\n aggregate (details) {\r\n this.inserted += details.inserted;\r\n this.removedCount += details.removedCount;\r\n this.shift += details.shift;\r\n this.overflow = this.overflow || details.overflow;\r\n if (details.rawInserted) this.rawInserted += details.rawInserted;\r\n return this;\r\n }\r\n\r\n get offset () {\r\n return this.shift + this.inserted.length - this.removedCount;\r\n }\r\n\r\n get rawInserted () {\r\n return this._rawInserted != null ?\r\n this._rawInserted :\r\n this.inserted;\r\n }\r\n\r\n set rawInserted (rawInserted) {\r\n this._rawInserted = rawInserted;\r\n }\r\n}\r\n","import ChangeDetails from '../core/change-details.js';\r\n\r\n\r\nexport default\r\nclass Masked {\r\n constructor (opts) {\r\n this._value = '';\r\n this._update({\r\n ...Masked.DEFAULTS,\r\n ...opts\r\n });\r\n this.isInitialized = true;\r\n }\r\n\r\n updateOptions (opts) {\r\n this.withValueRefresh(this._update.bind(this, opts));\r\n }\r\n\r\n _update (opts) {\r\n Object.assign(this, opts);\r\n }\r\n\r\n clone () {\r\n const m = new Masked(this);\r\n m._value = this.value.slice();\r\n return m;\r\n }\r\n\r\n reset () {\r\n this._value = '';\r\n }\r\n\r\n get value () {\r\n return this._value;\r\n }\r\n\r\n set value (value) {\r\n this.resolve(value);\r\n }\r\n\r\n resolve (value) {\r\n this.reset();\r\n this.appendWithTail(value);\r\n this.doCommit();\r\n return this.value;\r\n }\r\n\r\n get unmaskedValue () {\r\n return this._unmask();\r\n }\r\n\r\n set unmaskedValue (value) {\r\n this.reset();\r\n this._append(value);\r\n this.appendWithTail(\"\");\r\n this.doCommit();\r\n }\r\n\r\n get rawInputValue () {\r\n return this.extractInput(0, this.value.length, {raw: true});\r\n }\r\n\r\n set rawInputValue (value) {\r\n this.reset();\r\n this._append(value, {raw: true});\r\n this.appendWithTail(\"\");\r\n this.doCommit();\r\n }\r\n\r\n get isComplete () {\r\n return true;\r\n }\r\n\r\n nearestInputPos (cursorPos, /* direction */) {\r\n return cursorPos;\r\n }\r\n\r\n extractInput (fromPos=0, toPos=this.value.length /*, flags */) {\r\n return this.value.slice(fromPos, toPos);\r\n }\r\n\r\n extractTail (fromPos=0, toPos=this.value.length) {\r\n return this.extractInput(fromPos, toPos);\r\n }\r\n\r\n _appendTail (tail) {\r\n return !tail ? new ChangeDetails() : this._append(tail, {tail: true});\r\n }\r\n\r\n _append (str, flags={}) {\r\n const oldValueLength = this.value.length;\r\n let consistentValue = this.clone();\r\n let overflow = false;\r\n\r\n str = this.doPrepare(str, flags);\r\n for (let ci=0; ci val,\r\n validate: () => true,\r\n commit: () => {},\r\n};\r\n","import Masked from './base.js';\r\n\r\n\r\nexport default\r\nclass MaskedRegExp extends Masked {\r\n _update (opts) {\r\n opts.validate = (value) => value.search(opts.mask) >= 0;\r\n super._update(opts);\r\n }\r\n}\r\n","import Masked from './base.js';\r\n\r\n\r\nexport default\r\nclass MaskedFunction extends Masked {\r\n _update (opts) {\r\n opts.validate = opts.mask;\r\n super._update(opts);\r\n }\r\n}\r\n","import {escapeRegExp, DIRECTION, indexInDirection} from '../core/utils.js';\r\nimport Masked from './base.js';\r\n\r\n\r\nexport default\r\nclass MaskedNumber extends Masked {\r\n constructor (opts) {\r\n opts.postFormat = Object.assign({}, MaskedNumber.DEFAULTS.postFormat, opts.postFormat);\r\n super({\r\n ...MaskedNumber.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n\r\n _update (opts) {\r\n opts.postFormat = Object.assign({}, this.postFormat, opts.postFormat);\r\n\r\n super._update(opts);\r\n this._updateRegExps();\r\n }\r\n\r\n _updateRegExps () {\r\n // use different regexp to process user input (more strict, input suffix) and tail shifting\r\n const start = '^'\r\n\r\n let midInput = '';\r\n let mid = '';\r\n if (this.allowNegative) {\r\n midInput += '([+|\\\\-]?|([+|\\\\-]?(0|([1-9]+\\\\d*))))';\r\n mid += '[+|\\\\-]?';\r\n } else {\r\n midInput += '(0|([1-9]+\\\\d*))';\r\n }\r\n mid += '\\\\d*';\r\n\r\n let end = (this.scale ?\r\n '(' + this.radix + '\\\\d{0,' + this.scale + '})?' :\r\n '') + '$';\r\n\r\n this._numberRegExpInput = new RegExp(start + midInput + end);\r\n this._numberRegExp = new RegExp(start + mid + end);\r\n this._mapToRadixRegExp = new RegExp('[' +\r\n this.mapToRadix.map(escapeRegExp).join('') +\r\n ']', 'g');\r\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\r\n }\r\n\r\n extractTail (fromPos=0, toPos=this.value.length) {\r\n return this._removeThousandsSeparators(super.extractTail(fromPos, toPos));\r\n }\r\n\r\n _removeThousandsSeparators (value) {\r\n return value.replace(this._thousandsSeparatorRegExp, '');\r\n }\r\n\r\n _insertThousandsSeparators (value) {\r\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\r\n const parts = value.split(this.radix);\r\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\r\n return parts.join(this.radix);\r\n }\r\n\r\n doPrepare (str, ...args) {\r\n return super.doPrepare(this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix)), ...args);\r\n }\r\n\r\n appendWithTail (str, tail) {\r\n const oldValueLength = this.value.length;\r\n this._value = this._removeThousandsSeparators(this.value);\r\n let startChangePos = this.value.length;\r\n\r\n const appendDetails = super.appendWithTail(str, tail);\r\n this._value = this._insertThousandsSeparators(this.value);\r\n\r\n // calculate offsets after insert separators\r\n let beforeTailPos = startChangePos + appendDetails.inserted.length;\r\n for (let pos = 0; pos <= beforeTailPos; ++pos) {\r\n if (this.value[pos] === this.thousandsSeparator) {\r\n if (pos <= startChangePos) ++startChangePos;\r\n ++beforeTailPos;\r\n }\r\n }\r\n\r\n // adjust details with separators\r\n appendDetails.rawInserted = appendDetails.inserted;\r\n appendDetails.inserted = this.value.slice(startChangePos, beforeTailPos);\r\n appendDetails.shift += startChangePos - oldValueLength;\r\n\r\n return appendDetails;\r\n }\r\n\r\n nearestInputPos (cursorPos, direction=DIRECTION.LEFT) {\r\n if (!direction) return cursorPos;\r\n\r\n const nextPos = indexInDirection(cursorPos, direction);\r\n if (this.value[nextPos] === this.thousandsSeparator) cursorPos += direction;\r\n return cursorPos;\r\n }\r\n\r\n doValidate (flags) {\r\n const regexp = flags.input ? this._numberRegExpInput : this._numberRegExp;\r\n\r\n // validate as string\r\n let valid = regexp.test(this._removeThousandsSeparators(this.value));\r\n\r\n if (valid) {\r\n // validate as number\r\n const number = this.number;\r\n valid = valid && !isNaN(number) &&\r\n // check min bound for negative values\r\n (this.min == null || this.min >= 0 || this.min <= this.number) &&\r\n // check max bound for positive values\r\n (this.max == null || this.max <= 0 || this.number <= this.max);\r\n }\r\n\r\n return valid && super.doValidate(flags);\r\n }\r\n\r\n doCommit () {\r\n const number = this.number;\r\n let validnum = number;\r\n\r\n // check bounds\r\n if (this.min != null) validnum = Math.max(validnum, this.min);\r\n if (this.max != null) validnum = Math.min(validnum, this.max);\r\n\r\n if (validnum !== number) this.unmaskedValue = String(validnum);\r\n\r\n let formatted = this.value;\r\n\r\n if (this.postFormat.normalizeZeros) formatted = this._normalizeZeros(formatted);\r\n if (this.postFormat.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\r\n\r\n this._value = formatted;\r\n super.doCommit();\r\n }\r\n\r\n _normalizeZeros (value) {\r\n const parts = this._removeThousandsSeparators(value).split(this.radix);\r\n\r\n // remove leading zeros\r\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\r\n // add leading zero\r\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\r\n\r\n if (parts.length > 1) {\r\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\r\n if (!parts[1].length) parts.length = 1; // remove fractional\r\n }\r\n\r\n return this._insertThousandsSeparators(parts.join(this.radix));\r\n }\r\n\r\n _padFractionalZeros (value) {\r\n const parts = value.split(this.radix);\r\n if (parts.length < 2) parts.push('');\r\n parts[1] = parts[1].padEnd(this.scale, '0');\r\n return parts.join(this.radix);\r\n }\r\n\r\n get number () {\r\n let numstr =\r\n this._removeThousandsSeparators(\r\n this._normalizeZeros(\r\n this.unmaskedValue))\r\n .replace(this.radix, '.');\r\n\r\n return Number(numstr);\r\n }\r\n\r\n set number (number) {\r\n this.unmaskedValue = String(number).replace('.', this.radix);\r\n }\r\n\r\n get allowNegative () {\r\n return this.signed ||\r\n (this.min != null && this.min < 0) ||\r\n (this.max != null && this.max < 0);\r\n }\r\n}\r\nMaskedNumber.DEFAULTS = {\r\n radix: ',',\r\n thousandsSeparator: '',\r\n mapToRadix: ['.'],\r\n scale: 2,\r\n signed: false,\r\n postFormat: {\r\n normalizeZeros: true,\r\n padFractionalZeros: false\r\n }\r\n};\r\n","import createMask from '../factory.js';\r\n\r\n\r\nexport default\r\nclass PatternDefinition {\r\n constructor(opts) {\r\n Object.assign(this, opts);\r\n\r\n if (this.mask) {\r\n this._masked = createMask(opts);\r\n }\r\n }\r\n\r\n reset () {\r\n this.isHollow = false;\r\n this.isRawInput = false;\r\n if (this._masked) this._masked.reset();\r\n }\r\n\r\n get isInput () {\r\n return this.type === PatternDefinition.TYPES.INPUT;\r\n }\r\n\r\n get isHiddenHollow () {\r\n return this.isHollow && this.optional;\r\n }\r\n\r\n resolve (ch) {\r\n if (!this._masked) return false;\r\n return this._masked.resolve(ch);\r\n }\r\n}\r\n\r\nPatternDefinition.DEFAULTS = {\r\n '0': /\\d/,\r\n 'a': /[\\u0041-\\u005A\\u0061-\\u007A\\u00AA\\u00B5\\u00BA\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u0527\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58\\u0C59\\u0C60\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA697\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA78E\\uA790-\\uA793\\uA7A0-\\uA7AA\\uA7F8-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/, // http://stackoverflow.com/a/22075070\r\n '*': /./\r\n};\r\nPatternDefinition.TYPES = {\r\n INPUT: 'input',\r\n FIXED: 'fixed'\r\n};\r\n","export default\r\nclass PatternGroup {\r\n constructor(masked, {name, offset, mask, validate}) {\r\n this.masked = masked;\r\n this.name = name;\r\n this.offset = offset;\r\n this.mask = mask;\r\n this.validate = validate || (() => true);\r\n }\r\n\r\n get value () {\r\n return this.masked.value.slice(\r\n this.masked.mapDefIndexToPos(this.offset),\r\n this.masked.mapDefIndexToPos(this.offset + this.mask.length));\r\n }\r\n\r\n get unmaskedValue () {\r\n return this.masked.extractInput(\r\n this.masked.mapDefIndexToPos(this.offset),\r\n this.masked.mapDefIndexToPos(this.offset + this.mask.length));\r\n }\r\n\r\n doValidate (opts) {\r\n return this.validate(this.value, this, opts);\r\n }\r\n}\r\n\r\nexport\r\nclass RangeGroup {\r\n constructor ([from, to], maxlen=String(to).length) {\r\n this._from = from;\r\n this._to = to;\r\n this._maxLength = maxlen;\r\n this.validate = this.validate.bind(this);\r\n\r\n this._update();\r\n }\r\n\r\n get to () {\r\n return this._to;\r\n }\r\n\r\n set to (to) {\r\n this._to = to;\r\n this._update();\r\n }\r\n\r\n get from () {\r\n return this._from;\r\n }\r\n\r\n set from (from) {\r\n this._from = from;\r\n this._update();\r\n }\r\n\r\n get maxLength () {\r\n return this._maxLength;\r\n }\r\n\r\n set maxLength (maxLength) {\r\n this._maxLength = maxLength;\r\n this._update();\r\n }\r\n\r\n get _matchFrom () {\r\n return this.maxLength - String(this.from).length;\r\n }\r\n\r\n _update() {\r\n this._maxLength = Math.max(this._maxLength, String(this.to).length);\r\n this.mask = '0'.repeat(this._maxLength);\r\n }\r\n\r\n validate (str) {\r\n let minstr = '';\r\n let maxstr = '';\r\n\r\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/);\r\n if (num) {\r\n minstr = ('0'.repeat(placeholder.length) + num);\r\n maxstr = ('9'.repeat(placeholder.length) + num);\r\n }\r\n\r\n const firstNonZero = str.search(/[^0]/);\r\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\r\n\r\n minstr = minstr.padEnd(this._maxLength, '0');\r\n maxstr = maxstr.padEnd(this._maxLength, '9');\r\n\r\n return this.from <= Number(maxstr) && Number(minstr) <= this.to;\r\n }\r\n}\r\n\r\nexport\r\nfunction EnumGroup (enums) {\r\n return {\r\n mask: '*'.repeat(enums[0].length),\r\n validate: (value, group) => enums.some(e => e.indexOf(group.unmaskedValue) >= 0)\r\n };\r\n}\r\n\r\nPatternGroup.Range = RangeGroup;\r\nPatternGroup.Enum = EnumGroup;\r\n","import {conform, DIRECTION, indexInDirection} from '../core/utils.js';\r\nimport ChangeDetails from '../core/change-details.js';\r\nimport Masked from './base.js';\r\nimport PatternDefinition from './pattern/definition.js';\r\nimport PatternGroup from './pattern/group.js';\r\n\r\n\r\nexport default\r\nclass MaskedPattern extends Masked {\r\n constructor (opts={}) {\r\n opts.placeholder = Object.assign({}, MaskedPattern.DEFAULT_PLACEHOLDER, opts.placeholder);\r\n opts.definitions = Object.assign({}, PatternDefinition.DEFAULTS, opts.definitions);\r\n super(opts);\r\n }\r\n\r\n _update (opts) {\r\n opts.placeholder = Object.assign({}, this.placeholder, opts.placeholder);\r\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\r\n super._update(opts);\r\n this._updateMask();\r\n }\r\n\r\n _updateMask () {\r\n const defs = this.definitions;\r\n this._charDefs = [];\r\n this._groupDefs = [];\r\n\r\n let pattern = this.mask;\r\n if (!pattern || !defs) return;\r\n\r\n let unmaskingBlock = false;\r\n let optionalBlock = false;\r\n let stopAlign = false;\r\n\r\n for (let i=0; i p.indexOf(gName) === 0);\r\n // order by key length\r\n gNames.sort((a, b) => b.length - a.length);\r\n // use group name with max length\r\n const gName = gNames[0];\r\n if (gName) {\r\n const group = this.groups[gName];\r\n this._groupDefs.push(new PatternGroup(this, {\r\n name: gName,\r\n offset: this._charDefs.length,\r\n mask: group.mask,\r\n validate: group.validate\r\n }));\r\n pattern = pattern.replace(gName, group.mask);\r\n }\r\n }\r\n\r\n let char = pattern[i];\r\n let type = !unmaskingBlock && char in defs ?\r\n PatternDefinition.TYPES.INPUT :\r\n PatternDefinition.TYPES.FIXED;\r\n const unmasking = type === PatternDefinition.TYPES.INPUT || unmaskingBlock;\r\n const optional = type === PatternDefinition.TYPES.INPUT && optionalBlock;\r\n\r\n if (char === MaskedPattern.STOP_CHAR) {\r\n stopAlign = true;\r\n continue;\r\n }\r\n\r\n if (char === '{' || char === '}') {\r\n unmaskingBlock = !unmaskingBlock;\r\n continue;\r\n }\r\n\r\n if (char === '[' || char === ']') {\r\n optionalBlock = !optionalBlock;\r\n continue;\r\n }\r\n\r\n if (char === MaskedPattern.ESCAPE_CHAR) {\r\n ++i;\r\n char = pattern[i];\r\n // TODO validation\r\n if (!char) break;\r\n type = PatternDefinition.TYPES.FIXED;\r\n }\r\n\r\n this._charDefs.push(new PatternDefinition({\r\n char,\r\n type,\r\n optional,\r\n stopAlign,\r\n unmasking,\r\n mask: type === PatternDefinition.TYPES.INPUT ?\r\n defs[char] :\r\n (value => value === char)\r\n }));\r\n\r\n stopAlign = false;\r\n }\r\n }\r\n\r\n doValidate (...args) {\r\n return this._groupDefs.every(g => g.doValidate(...args)) && super.doValidate(...args);\r\n }\r\n\r\n clone () {\r\n const m = new MaskedPattern(this);\r\n m._value = this.value;\r\n m._charDefs.forEach((d, i) => Object.assign(d, this._charDefs[i]));\r\n m._groupDefs.forEach((d, i) => Object.assign(d, this._groupDefs[i]));\r\n return m;\r\n }\r\n\r\n reset () {\r\n super.reset();\r\n this._charDefs.forEach(d => {delete d.isHollow;});\r\n }\r\n\r\n get isComplete () {\r\n return !this._charDefs.some((d, i) =>\r\n d.isInput && !d.optional && (d.isHollow || !this.extractInput(i, i+1)));\r\n }\r\n\r\n hiddenHollowsBefore (defIndex) {\r\n return this._charDefs\r\n .slice(0, defIndex)\r\n .filter(d => d.isHiddenHollow)\r\n .length;\r\n }\r\n\r\n mapDefIndexToPos (defIndex) {\r\n if (defIndex == null) return;\r\n return defIndex - this.hiddenHollowsBefore(defIndex);\r\n }\r\n\r\n mapPosToDefIndex (pos) {\r\n if (pos == null) return;\r\n let defIndex = pos;\r\n for (let di=0; di= defIndex) break;\r\n if (def.isHiddenHollow) ++defIndex;\r\n }\r\n return defIndex;\r\n }\r\n\r\n _unmask () {\r\n const str = this.value;\r\n let unmasked = '';\r\n\r\n for (let ci=0, di=0; ci [d, i])\r\n .slice(fromDefIndex, toDefIndex)\r\n .filter(([d]) => d.stopAlign)\r\n .map(([, i]) => i);\r\n\r\n const stops = [\r\n fromDefIndex,\r\n ...stopDefIndices,\r\n toDefIndex\r\n ];\r\n\r\n return stops.map((s, i) => [\r\n stopDefIndices.indexOf(s) >= 0 ?\r\n s :\r\n null,\r\n\r\n this.extractInput(\r\n this.mapDefIndexToPos(s),\r\n this.mapDefIndexToPos(stops[++i]))\r\n ]).filter(([stop, input]) => stop != null || input);\r\n }\r\n\r\n _appendPlaceholder (toDefIndex) {\r\n const oldValueLength = this.value.length;\r\n const maxDefIndex = toDefIndex || this._charDefs.length;\r\n for (let di=this.mapPosToDefIndex(this.value.length); di < maxDefIndex; ++di) {\r\n const def = this._charDefs[di];\r\n if (def.isInput) def.isHollow = true;\r\n\r\n if (!this.placeholder.lazy || toDefIndex) {\r\n this._value += !def.isInput ?\r\n def.char :\r\n !def.optional ?\r\n this.placeholder.char :\r\n '';\r\n }\r\n }\r\n return new ChangeDetails({\r\n inserted: this.value.slice(oldValueLength)\r\n });\r\n }\r\n\r\n remove (from=0, count=this.value.length-from) {\r\n const to = from + count;\r\n this._value = this.value.slice(0, from) + this.value.slice(to);\r\n const fromDefIndex = this.mapPosToDefIndex(from);\r\n const toDefIndex = this.mapPosToDefIndex(to);\r\n this._charDefs\r\n .slice(fromDefIndex, toDefIndex)\r\n .forEach(d => d.reset());\r\n }\r\n\r\n nearestInputPos (cursorPos, direction=DIRECTION.NONE) {\r\n let dir = direction || DIRECTION.LEFT;\r\n\r\n const initialDefIndex = this.mapPosToDefIndex(cursorPos);\r\n const initialDef = this._charDefs[initialDefIndex];\r\n let di = initialDefIndex;\r\n\r\n let firstInputIndex,\r\n firstFilledInputIndex,\r\n firstVisibleHollowIndex,\r\n nextdi;\r\n\r\n // search forward\r\n for (\r\n nextdi = indexInDirection(di, dir);\r\n 0 <= nextdi && nextdi < this._charDefs.length;\r\n di += dir, nextdi += dir\r\n ) {\r\n const nextDef = this._charDefs[nextdi];\r\n if (firstInputIndex == null && nextDef.isInput) firstInputIndex = di;\r\n if (firstVisibleHollowIndex == null && nextDef.isHollow && !nextDef.isHiddenHollow) firstVisibleHollowIndex = di;\r\n if (nextDef.isInput && !nextDef.isHollow) {\r\n firstFilledInputIndex = di;\r\n break;\r\n }\r\n }\r\n\r\n // if has aligned left not inside fixed and has come to the start - use start position\r\n if (direction === DIRECTION.LEFT && di === 0 &&\r\n (!initialDef || !initialDef.isInput)) firstInputIndex = 0;\r\n\r\n if (direction === DIRECTION.NONE || firstInputIndex == null) {\r\n // search backward\r\n dir = -dir;\r\n let overflow = false;\r\n\r\n // find hollows only before initial pos\r\n for (\r\n nextdi = indexInDirection(di, dir);\r\n 0 <= nextdi && nextdi < this._charDefs.length;\r\n di += dir, nextdi += dir\r\n ) {\r\n const nextDef = this._charDefs[nextdi];\r\n if (nextDef.isInput) {\r\n firstInputIndex = di;\r\n if (nextDef.isHollow && !nextDef.isHiddenHollow) break;\r\n }\r\n\r\n // if hollow not found before start position - set `overflow`\r\n // and try to find just any input\r\n if (di === initialDefIndex) overflow = true;\r\n\r\n // first input found\r\n if (overflow && firstInputIndex != null) break;\r\n }\r\n\r\n // process overflow\r\n overflow = overflow || nextdi >= this._charDefs.length;\r\n if (overflow && firstInputIndex != null) di = firstInputIndex;\r\n } else if (firstFilledInputIndex == null) {\r\n // adjust index if delete at right and filled input not found at right\r\n di = firstVisibleHollowIndex != null ?\r\n firstVisibleHollowIndex :\r\n firstInputIndex;\r\n }\r\n\r\n return this.mapDefIndexToPos(di);\r\n }\r\n\r\n group (name) {\r\n return this.groupsByName(name)[0];\r\n }\r\n\r\n groupsByName (name) {\r\n return this._groupDefs.filter(g => g.name === name);\r\n }\r\n}\r\n\r\nMaskedPattern.DEFAULT_PLACEHOLDER = {\r\n lazy: true,\r\n char: '_'\r\n};\r\nMaskedPattern.STOP_CHAR = '`';\r\nMaskedPattern.ESCAPE_CHAR = '\\\\';\r\nMaskedPattern.Definition = PatternDefinition;\r\nMaskedPattern.Group = PatternGroup;\r\n","import MaskedPattern from './pattern.js';\r\nimport PatternGroup from './pattern/group.js';\r\n\r\n\r\nexport default\r\nclass MaskedDate extends MaskedPattern {\r\n constructor (opts) {\r\n super({\r\n ...MaskedDate.DEFAULTS,\r\n ...opts\r\n });\r\n }\r\n\r\n _update (opts) {\r\n if (opts.mask === Date) delete opts.mask;\r\n if (opts.pattern) {\r\n opts.mask = opts.pattern;\r\n delete opts.pattern;\r\n }\r\n\r\n const groups = opts.groups;\r\n opts.groups = Object.assign({}, MaskedDate.GET_DEFAULT_GROUPS());\r\n // adjust year group\r\n if (opts.min) opts.groups.Y.from = opts.min.getFullYear();\r\n if (opts.max) opts.groups.Y.to = opts.max.getFullYear();\r\n Object.assign(opts.groups, groups);\r\n\r\n super._update(opts);\r\n }\r\n\r\n doValidate (...args) {\r\n const valid = super.doValidate(...args);\r\n const date = this.date;\r\n\r\n return valid &&\r\n (!this.isComplete ||\r\n this.isDateExist(this.value) && date &&\r\n (this.min == null || this.min <= date) &&\r\n (this.max == null || date <= this.max));\r\n }\r\n\r\n isDateExist (str) {\r\n return this.format(this.parse(str)) === str;\r\n }\r\n\r\n get date () {\r\n return this.isComplete ?\r\n this.parse(this.value) :\r\n null;\r\n }\r\n\r\n set date (date) {\r\n this.value = this.format(date);\r\n }\r\n}\r\nMaskedDate.DEFAULTS = {\r\n pattern: 'd{.}`m{.}`Y',\r\n format: date => {\r\n const day = String(date.getDate()).padStart(2, '0');\r\n const month = String(date.getMonth() + 1).padStart(2, '0');\r\n const year = date.getFullYear();\r\n\r\n return [day, month, year].join('.');\r\n },\r\n parse: str => {\r\n const [day, month, year] = str.split('.');\r\n return new Date(year, month - 1, day);\r\n },\r\n};\r\nMaskedDate.GET_DEFAULT_GROUPS = () => {\r\n return {\r\n d: new PatternGroup.Range([1, 31]),\r\n m: new PatternGroup.Range([1, 12]),\r\n Y: new PatternGroup.Range([1900, 9999]),\r\n };\r\n}","import ChangeDetails from '../core/change-details.js';\r\nimport createMask from './factory.js';\r\nimport Masked from './base.js';\r\n\r\n\r\nexport default\r\nclass MaskedDynamic extends Masked {\r\n constructor (opts) {\r\n super({\r\n ...MaskedDynamic.DEFAULTS,\r\n ...opts\r\n });\r\n\r\n this.currentMask = null;\r\n }\r\n\r\n _update (opts) {\r\n super._update(opts);\r\n this.compiledMasks = Array.isArray(opts.mask) ?\r\n opts.mask.map(m => createMask(m)) :\r\n [];\r\n }\r\n\r\n _append (str, ...args) {\r\n const oldValueLength = this.value.length;\r\n const details = new ChangeDetails();\r\n\r\n str = this.doPrepare(str, ...args);\r\n\r\n const inputValue = this.rawInputValue;\r\n this.currentMask = this.doDispatch(str, ...args);\r\n if (this.currentMask) {\r\n // update current mask\r\n this.currentMask.rawInputValue = inputValue;\r\n details.shift = this.value.length - oldValueLength;\r\n details.aggregate(this.currentMask._append(str, ...args));\r\n }\r\n\r\n return details;\r\n }\r\n\r\n appendWithTail (str, tail) {\r\n // TODO seems strange\r\n // call append to do dispatch and get offset\r\n return this._append('').aggregate(super.appendWithTail(str, tail));\r\n }\r\n\r\n doDispatch(appended, flags) {\r\n return this.dispatch(appended, this, flags);\r\n }\r\n\r\n clone () {\r\n const m = new MaskedDynamic(this);\r\n m._value = this.value;\r\n if (this.currentMask) m.currentMask = this.currentMask.clone();\r\n return m;\r\n }\r\n\r\n reset () {\r\n if (this.currentMask) this.currentMask.reset();\r\n this.compiledMasks.forEach(cm => cm.reset());\r\n }\r\n\r\n get value () {\r\n return this.currentMask ? this.currentMask.value : '';\r\n }\r\n\r\n set value (value) {\r\n this.resolve(value);\r\n }\r\n\r\n get isComplete () {\r\n return !!this.currentMask && this.currentMask.isComplete;\r\n }\r\n\r\n _unmask () {\r\n return this.currentMask ? this.currentMask._unmask() : '';\r\n }\r\n\r\n remove (...args) {\r\n if (this.currentMask) this.currentMask.remove(...args);\r\n }\r\n\r\n extractInput (...args) {\r\n return this.currentMask ?\r\n this.currentMask.extractInput(...args) :\r\n '';\r\n }\r\n\r\n doCommit () {\r\n if (this.currentMask) this.currentMask.doCommit();\r\n super.doCommit();\r\n }\r\n\r\n nearestInputPos(...args) {\r\n return this.currentMask ?\r\n this.currentMask.nearestInputPos(...args) :\r\n super.nearestInputPos(...args);\r\n }\r\n}\r\n\r\nMaskedDynamic.DEFAULTS = {\r\n dispatch: (appended, masked, flags) => {\r\n if (!masked.compiledMasks.length) return;\r\n\r\n const inputValue = masked.rawInputValue;\r\n\r\n // update all\r\n masked.compiledMasks.forEach(cm => {\r\n cm.rawInputValue = inputValue;\r\n cm._append(appended, flags);\r\n });\r\n\r\n // pop masks with longer values first\r\n const inputs = masked.compiledMasks.map((cm, index) => ({value: cm.rawInputValue.length, index}));\r\n inputs.sort((i1, i2) => i2.value - i1.value);\r\n\r\n return masked.compiledMasks[inputs[0].index];\r\n }\r\n};\r\n","import {DIRECTION} from './utils.js';\r\n\r\n\r\nexport default\r\nclass ActionDetails {\r\n constructor (value, cursorPos, oldValue, oldSelection) {\r\n this.value = value;\r\n this.cursorPos = cursorPos;\r\n this.oldValue = oldValue;\r\n this.oldSelection = oldSelection;\r\n\r\n // double check if left part was changed (autofilling, other non-standard input triggers)\r\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\r\n --this.oldSelection.start;\r\n }\r\n }\r\n\r\n get startChangePos () {\r\n return Math.min(this.cursorPos, this.oldSelection.start);\r\n }\r\n\r\n get insertedCount () {\r\n return this.cursorPos - this.startChangePos;\r\n }\r\n\r\n get inserted () {\r\n return this.value.substr(this.startChangePos, this.insertedCount);\r\n }\r\n\r\n get removedCount () {\r\n // Math.max for opposite operation\r\n return Math.max((this.oldSelection.end - this.startChangePos) ||\r\n // for Delete\r\n this.oldValue.length - this.value.length, 0);\r\n }\r\n\r\n get removed () {\r\n return this.oldValue.substr(this.startChangePos, this.removedCount);\r\n }\r\n\r\n get head () {\r\n return this.value.substring(0, this.startChangePos);\r\n }\r\n\r\n get tail () {\r\n this.value.substring(this.startChangePos + this.insertedCount);\r\n }\r\n\r\n get removeDirection () {\r\n return this.removedCount && !this.insertedCount &&\r\n ((this.oldSelection.end === this.cursorPos) ?\r\n DIRECTION.RIGHT :\r\n DIRECTION.LEFT);\r\n }\r\n}\r\n","import {objectIncludes} from '../core/utils.js';\r\nimport ActionDetails from '../core/action-details.js';\r\nimport MaskedDate from '../masked/date.js';\r\nimport createMask, {maskedClass} from '../masked/factory.js';\r\n\r\n\r\nexport default\r\nclass InputMask {\r\n constructor (el, opts) {\r\n this.el = el;\r\n this.masked = createMask(opts);\r\n\r\n this._listeners = {};\r\n this._value = '';\r\n this._unmaskedValue = '';\r\n\r\n this._saveSelection = this._saveSelection.bind(this);\r\n this._onInput = this._onInput.bind(this);\r\n this._onChange = this._onChange.bind(this);\r\n this._onDrop = this._onDrop.bind(this);\r\n this.alignCursor = this.alignCursor.bind(this);\r\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\r\n\r\n this.bindEvents();\r\n\r\n // refresh\r\n this.updateValue();\r\n this._onChange();\r\n }\r\n\r\n get mask () { return this.masked.mask; }\r\n set mask (mask) {\r\n if (mask == null || mask === this.masked.mask) return;\r\n\r\n if (this.masked.constructor === maskedClass(mask)) {\r\n this.masked.mask = mask;\r\n return;\r\n }\r\n\r\n const masked = createMask({mask});\r\n masked.unmaskedValue = this.masked.unmaskedValue;\r\n this.masked = masked;\r\n }\r\n\r\n get value () {\r\n return this._value;\r\n }\r\n\r\n set value (str) {\r\n this.masked.value = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n get unmaskedValue () {\r\n return this._unmaskedValue;\r\n }\r\n\r\n set unmaskedValue (str) {\r\n this.masked.unmaskedValue = str;\r\n this.updateControl();\r\n this.alignCursor();\r\n }\r\n\r\n bindEvents () {\r\n this.el.addEventListener('keydown', this._saveSelection);\r\n this.el.addEventListener('input', this._onInput);\r\n this.el.addEventListener('drop', this._onDrop);\r\n this.el.addEventListener('click', this.alignCursorFriendly);\r\n this.el.addEventListener('change', this._onChange);\r\n }\r\n\r\n unbindEvents () {\r\n this.el.removeEventListener('keydown', this._saveSelection);\r\n this.el.removeEventListener('input', this._onInput);\r\n this.el.removeEventListener('drop', this._onDrop);\r\n this.el.removeEventListener('click', this.alignCursorFriendly);\r\n this.el.removeEventListener('change', this._onChange);\r\n }\r\n\r\n fireEvent (ev) {\r\n const listeners = this._listeners[ev] || [];\r\n listeners.forEach(l => l());\r\n }\r\n\r\n get selectionStart () {\r\n return this._cursorChanging ?\r\n this._changingCursorPos :\r\n\r\n this.el.selectionStart;\r\n }\r\n\r\n get cursorPos () {\r\n return this._cursorChanging ?\r\n this._changingCursorPos :\r\n\r\n this.el.selectionEnd;\r\n }\r\n\r\n set cursorPos (pos) {\r\n if (this.el !== document.activeElement) return;\r\n\r\n this.el.setSelectionRange(pos, pos);\r\n this._saveSelection();\r\n }\r\n\r\n _saveSelection (/* ev */) {\r\n if (this.value !== this.el.value) {\r\n console.warn('Uncontrolled input change, refresh mask manually!'); // eslint-disable-line no-console\r\n }\r\n this._selection = {\r\n start: this.selectionStart,\r\n end: this.cursorPos\r\n };\r\n }\r\n\r\n updateValue () {\r\n this.masked.value = this.el.value;\r\n }\r\n\r\n updateControl () {\r\n const newUnmaskedValue = this.masked.unmaskedValue;\r\n const newValue = this.masked.value;\r\n const isChanged = (this.unmaskedValue !== newUnmaskedValue ||\r\n this.value !== newValue);\r\n\r\n this._unmaskedValue = newUnmaskedValue;\r\n this._value = newValue;\r\n\r\n if (this.el.value !== newValue) this.el.value = newValue;\r\n if (isChanged) this._fireChangeEvents();\r\n }\r\n\r\n updateOptions (opts) {\r\n opts = Object.assign({}, opts); // clone\r\n if (opts.mask === Date && this.masked instanceof MaskedDate) delete opts.mask;\r\n\r\n // check if changed\r\n if (objectIncludes(this.masked, opts)) return;\r\n\r\n this.masked.updateOptions(opts);\r\n this.updateControl();\r\n }\r\n\r\n updateCursor (cursorPos) {\r\n if (cursorPos == null) return;\r\n this.cursorPos = cursorPos;\r\n\r\n // also queue change cursor for mobile browsers\r\n this._delayUpdateCursor(cursorPos);\r\n }\r\n\r\n _delayUpdateCursor (cursorPos) {\r\n this._abortUpdateCursor();\r\n this._changingCursorPos = cursorPos;\r\n this._cursorChanging = setTimeout(() => {\r\n this.cursorPos = this._changingCursorPos;\r\n this._abortUpdateCursor();\r\n }, 10);\r\n }\r\n\r\n _fireChangeEvents () {\r\n this.fireEvent('accept');\r\n if (this.masked.isComplete) this.fireEvent('complete');\r\n }\r\n\r\n _abortUpdateCursor () {\r\n if (this._cursorChanging) {\r\n clearTimeout(this._cursorChanging);\r\n delete this._cursorChanging;\r\n }\r\n }\r\n\r\n alignCursor () {\r\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos);\r\n }\r\n\r\n alignCursorFriendly () {\r\n if (this.selectionStart !== this.cursorPos) return;\r\n this.alignCursor();\r\n }\r\n\r\n on (ev, handler) {\r\n if (!this._listeners[ev]) this._listeners[ev] = [];\r\n this._listeners[ev].push(handler);\r\n return this;\r\n }\r\n\r\n off (ev, handler) {\r\n if (!this._listeners[ev]) return;\r\n if (!handler) {\r\n delete this._listeners[ev];\r\n return;\r\n }\r\n const hIndex = this._listeners[ev].indexOf(handler);\r\n if (hIndex >= 0) this._listeners.splice(hIndex, 1);\r\n return this;\r\n }\r\n\r\n _onInput () {\r\n this._abortUpdateCursor();\r\n\r\n const details = new ActionDetails(\r\n // new state\r\n this.el.value, this.cursorPos,\r\n // old state\r\n this.value, this._selection);\r\n\r\n const offset = this.masked.splice(\r\n details.startChangePos,\r\n details.removed.length,\r\n details.inserted,\r\n details.removeDirection).offset;\r\n\r\n\r\n const cursorPos = this.masked.nearestInputPos(details.startChangePos + offset);\r\n\r\n this.updateControl();\r\n this.updateCursor(cursorPos);\r\n }\r\n\r\n _onChange () {\r\n if (this.value !== this.el.value) {\r\n this.updateValue();\r\n }\r\n this.masked.doCommit();\r\n this.updateControl();\r\n }\r\n\r\n _onDrop (ev) {\r\n ev.preventDefault();\r\n ev.stopPropagation();\r\n }\r\n\r\n destroy () {\r\n this.unbindEvents();\r\n this._listeners.length = 0;\r\n }\r\n}\r\n"],"names":["isString","str","String","conform","res","fallback","indexInDirection","pos","direction","DIRECTION","LEFT","escapeRegExp","replace","objectIncludes","b","a","i","arrA","Array","isArray","arrB","length","keys","Object","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","toString","prototype","hasOwnProperty","call","maskedClass","mask","Error","MaskedRegExp","IMask","MaskedPattern","Masked","MaskedDynamic","Number","MaskedNumber","MaskedDate","Function","MaskedFunction","warn","createMask","opts","babelHelpers.extends","el","InputMask","it","undefined","TypeError","key","propertyIsEnumerable","slice","cof","split","IObject","defined","ceil","Math","floor","isNaN","min","toInteger","max","global","module","window","self","__g","store","id","px","random","concat","shared","require$$0","arrayIndexOf","IS_INCLUDES","$this","fromIndex","value","O","toIObject","toLength","index","toIndex","IE_PROTO","uid","require$$1","object","names","result","has","push","$keys","enumBugKeys","core","version","__e","isObject","exec","e","defineProperty","get","document","is","createElement","require$$2","dP","P","Attributes","anObject","S","fn","val","valueOf","toPrimitive","IE8_DOM_DEFINE","f","bitmap","enumerable","configurable","writable","createDesc","SRC","$toString","TPL","inspectSource","safe","isFunction","hide","join","this","that","aFunction","c","apply","arguments","$export","type","name","source","own","out","exp","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","IS_PROTO","IS_BIND","B","target","exports","expProto","ctx","redefine","U","W","R","KEY","fails","toObject","count","n","Infinity","RangeError","repeat","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","padStart","$pad","padEnd","ChangeDetails","details","aggregate","inserted","removedCount","shift","overflow","rawInserted","_rawInserted","_value","_update","DEFAULTS","isInitialized","updateOptions","withValueRefresh","bind","clone","m","reset","resolve","appendWithTail","doCommit","nearestInputPos","cursorPos","extractInput","fromPos","toPos","extractTail","_appendTail","tail","_append","flags","oldValueLength","consistentValue","doPrepare","ci","doValidate","input","aggregateDetails","consistentAppended","ch","appendDetails","_unmask","remove","from","_refreshing","unmasked","unmaskedValue","ret","prepare","validate","commit","splice","start","deleteCount","removeDirection","tailPos","startChangePos","changeDetails","raw","search","postFormat","_Masked","_updateRegExps","midInput","mid","allowNegative","end","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","map","_thousandsSeparatorRegExp","thousandsSeparator","_removeThousandsSeparators","_insertThousandsSeparators","parts","args","beforeTailPos","nextPos","valid","test","number","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","match","sign","zeros","num","numstr","signed","PatternDefinition","_masked","isHollow","isRawInput","TYPES","INPUT","optional","PatternGroup","masked","offset","mapDefIndexToPos","RangeGroup","to","maxlen","_from","_to","_maxLength","minstr","maxstr","placeholder","_matchFrom","Range","Enum","enums","group","some","indexOf","DEFAULT_PLACEHOLDER","definitions","_updateMask","defs","_charDefs","_groupDefs","pattern","unmaskingBlock","optionalBlock","stopAlign","_this2","groups","p","gNames","filter","gName","sort","char","FIXED","unmasking","STOP_CHAR","ESCAPE_CHAR","every","g","forEach","d","_this3","hiddenHollowsBefore","defIndex","isHiddenHollow","mapPosToDefIndex","di","def","_appendChunks","_appendPlaceholder","resolved","skipped","chres","chunks","fromDefIndex","extractInputChunks","toDefIndex","isInput","stopDefIndices","stops","s","_this4","stop","maxDefIndex","lazy","NONE","dir","initialDefIndex","initialDef","firstInputIndex","firstFilledInputIndex","firstVisibleHollowIndex","nextdi","nextDef","groupsByName","_this5","Definition","Group","_MaskedPattern","GET_DEFAULT_GROUPS","Y","getFullYear","date","isComplete","isDateExist","format","parse","getDate","getMonth","day","month","year","currentMask","compiledMasks","inputValue","rawInputValue","doDispatch","appended","dispatch","cm","inputs","i1","i2","ActionDetails","oldValue","oldSelection","substr","insertedCount","substring","RIGHT","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","alignCursor","alignCursorFriendly","bindEvents","updateValue","addEventListener","unbindEvents","removeEventListener","fireEvent","ev","l","_selection","selectionStart","updateControl","newUnmaskedValue","newValue","isChanged","_fireChangeEvents","updateCursor","_delayUpdateCursor","_abortUpdateCursor","_changingCursorPos","_cursorChanging","setTimeout","_this","on","handler","off","hIndex","removed","preventDefault","stopPropagation","destroy","constructor","selectionEnd","activeElement","setSelectionRange"],"mappings":"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"}