{"version":3,"file":"imask.js","sources":["../../../node_modules/core-js/internals/global.js","../../../node_modules/core-js/internals/fails.js","../../../node_modules/core-js/internals/descriptors.js","../../../node_modules/core-js/internals/function-bind-native.js","../../../node_modules/core-js/internals/function-call.js","../../../node_modules/core-js/internals/object-property-is-enumerable.js","../../../node_modules/core-js/internals/create-property-descriptor.js","../../../node_modules/core-js/internals/function-uncurry-this.js","../../../node_modules/core-js/internals/classof-raw.js","../../../node_modules/core-js/internals/indexed-object.js","../../../node_modules/core-js/internals/require-object-coercible.js","../../../node_modules/core-js/internals/to-indexed-object.js","../../../node_modules/core-js/internals/is-callable.js","../../../node_modules/core-js/internals/is-object.js","../../../node_modules/core-js/internals/get-built-in.js","../../../node_modules/core-js/internals/object-is-prototype-of.js","../../../node_modules/core-js/internals/engine-user-agent.js","../../../node_modules/core-js/internals/engine-v8-version.js","../../../node_modules/core-js/internals/native-symbol.js","../../../node_modules/core-js/internals/use-symbol-as-uid.js","../../../node_modules/core-js/internals/is-symbol.js","../../../node_modules/core-js/internals/try-to-string.js","../../../node_modules/core-js/internals/a-callable.js","../../../node_modules/core-js/internals/get-method.js","../../../node_modules/core-js/internals/ordinary-to-primitive.js","../../../node_modules/core-js/internals/set-global.js","../../../node_modules/core-js/internals/shared-store.js","../../../node_modules/core-js/internals/shared.js","../../../node_modules/core-js/internals/to-object.js","../../../node_modules/core-js/internals/has-own-property.js","../../../node_modules/core-js/internals/uid.js","../../../node_modules/core-js/internals/well-known-symbol.js","../../../node_modules/core-js/internals/to-primitive.js","../../../node_modules/core-js/internals/to-property-key.js","../../../node_modules/core-js/internals/document-create-element.js","../../../node_modules/core-js/internals/ie8-dom-define.js","../../../node_modules/core-js/internals/object-get-own-property-descriptor.js","../../../node_modules/core-js/internals/v8-prototype-define-bug.js","../../../node_modules/core-js/internals/an-object.js","../../../node_modules/core-js/internals/object-define-property.js","../../../node_modules/core-js/internals/create-non-enumerable-property.js","../../../node_modules/core-js/internals/inspect-source.js","../../../node_modules/core-js/internals/native-weak-map.js","../../../node_modules/core-js/internals/shared-key.js","../../../node_modules/core-js/internals/hidden-keys.js","../../../node_modules/core-js/internals/internal-state.js","../../../node_modules/core-js/internals/function-name.js","../../../node_modules/core-js/internals/redefine.js","../../../node_modules/core-js/internals/to-integer-or-infinity.js","../../../node_modules/core-js/internals/to-absolute-index.js","../../../node_modules/core-js/internals/to-length.js","../../../node_modules/core-js/internals/length-of-array-like.js","../../../node_modules/core-js/internals/array-includes.js","../../../node_modules/core-js/internals/object-keys-internal.js","../../../node_modules/core-js/internals/enum-bug-keys.js","../../../node_modules/core-js/internals/object-get-own-property-names.js","../../../node_modules/core-js/internals/object-get-own-property-symbols.js","../../../node_modules/core-js/internals/own-keys.js","../../../node_modules/core-js/internals/copy-constructor-properties.js","../../../node_modules/core-js/internals/is-forced.js","../../../node_modules/core-js/internals/export.js","../../../node_modules/core-js/internals/object-keys.js","../../../node_modules/core-js/internals/object-assign.js","../../../node_modules/core-js/modules/es.object.assign.js","../../../node_modules/core-js/internals/to-string-tag-support.js","../../../node_modules/core-js/internals/classof.js","../../../node_modules/core-js/internals/to-string.js","../../../node_modules/core-js/internals/string-repeat.js","../../../node_modules/core-js/modules/es.string.repeat.js","../../../node_modules/core-js/internals/string-pad.js","../../../node_modules/core-js/internals/string-pad-webkit-bug.js","../../../node_modules/core-js/modules/es.string.pad-start.js","../../../node_modules/core-js/modules/es.string.pad-end.js","../../../node_modules/core-js/modules/es.global-this.js","../src/core/change-details.js","../src/core/utils.js","../src/core/action-details.js","../src/core/continuous-tail-details.js","../src/core/holder.js","../src/masked/base.js","../src/masked/factory.js","../src/masked/pattern/input-definition.js","../src/masked/pattern/fixed-definition.js","../src/masked/pattern/chunk-tail-details.js","../src/masked/pattern/cursor.js","../src/masked/regexp.js","../src/masked/pattern.js","../src/masked/range.js","../src/masked/date.js","../src/controls/mask-element.js","../src/controls/html-mask-element.js","../src/controls/html-contenteditable-mask-element.js","../src/controls/input.js","../src/masked/enum.js","../src/masked/number.js","../src/masked/function.js","../src/masked/dynamic.js","../src/masked/pipe.js","../src/index.js"],"sourcesContent":["var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\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};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar uncurryThis = NATIVE_BIND && bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? function (fn) {\n return fn && uncurryThis(fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar Object = global.Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : Object(it);\n} : Object;\n","var global = require('../internals/global');\n\nvar TypeError = global.TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = function (argument) {\n return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","var global = require('../internals/global');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n try {\n return String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar TypeError = global.TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar TypeError = global.TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.21.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.21.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var global = require('../internals/global');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar Object = global.Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar symbolFor = Symbol && Symbol['for'];\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n var description = 'Symbol.' + name;\n if (NATIVE_SYMBOL && hasOwn(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else if (USE_SYMBOL_AS_UID && symbolFor) {\n WellKnownSymbolsStore[name] = symbolFor(description);\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol(description);\n }\n } return WellKnownSymbolsStore[name];\n};\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar String = global.String;\nvar TypeError = global.TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw TypeError(String(argument) + ' is not an object');\n};\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar TypeError = global.TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* 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};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(inspectSource(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = uncurryThis(store.get);\n var wmhas = uncurryThis(store.has);\n var wmset = uncurryThis(store.set);\n set = function (it, metadata) {\n if (wmhas(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget(store, it) || {};\n };\n has = function (it) {\n return wmhas(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var name = options && options.name !== undefined ? options.name : key;\n var state;\n if (isCallable(value)) {\n if (String(name).slice(0, 7) === 'Symbol(') {\n name = '[' + String(name).replace(/^Symbol\\(([^)]*)\\)/, '$1') + ']';\n }\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n createNonEnumerableProperty(value, 'name', name);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof name == 'string' ? name : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n});\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- safe\n return number !== number || number === 0 ? 0 : (number > 0 ? floor : ceil)(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n enumerable: true,\n get: function () {\n defineProperty(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), { b: 2 })).b !== 1) return true;\n // should work with symbols and should have deterministic property order (V8 bug)\n var A = {};\n var B = {};\n // eslint-disable-next-line es/no-symbol -- safe\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var global = require('../internals/global');\nvar classof = require('../internals/classof');\n\nvar String = global.String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","'use strict';\nvar global = require('../internals/global');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar RangeError = global.RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\n};\n","var $ = require('../internals/export');\nvar repeat = require('../internals/string-repeat');\n\n// `String.prototype.repeat` method\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\n$({ target: 'String', proto: true }, {\n repeat: repeat\n});\n","// https://github.com/tc39/proposal-string-pad-start-end\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar $repeat = require('../internals/string-repeat');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar ceil = Math.ceil;\n\n// `String.prototype.{ padStart, padEnd }` methods implementation\nvar createMethod = function (IS_END) {\n return function ($this, maxLength, fillString) {\n var S = toString(requireObjectCoercible($this));\n var intMaxLength = toLength(maxLength);\n var stringLength = S.length;\n var fillStr = fillString === undefined ? ' ' : toString(fillString);\n var fillLen, stringFiller;\n if (intMaxLength <= stringLength || fillStr == '') return S;\n fillLen = intMaxLength - stringLength;\n stringFiller = repeat(fillStr, ceil(fillLen / fillStr.length));\n if (stringFiller.length > fillLen) stringFiller = stringSlice(stringFiller, 0, fillLen);\n return IS_END ? S + stringFiller : stringFiller + S;\n };\n};\n\nmodule.exports = {\n // `String.prototype.padStart` method\n // https://tc39.es/ecma262/#sec-string.prototype.padstart\n start: createMethod(false),\n // `String.prototype.padEnd` method\n // https://tc39.es/ecma262/#sec-string.prototype.padend\n end: createMethod(true)\n};\n","// https://github.com/zloirock/core-js/issues/280\nvar userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /Version\\/10(?:\\.\\d+){1,2}(?: [\\w./]+)?(?: Mobile\\/\\w+)? Safari\\//.test(userAgent);\n","'use strict';\nvar $ = require('../internals/export');\nvar $padStart = require('../internals/string-pad').start;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padStart` method\n// https://tc39.es/ecma262/#sec-string.prototype.padstart\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padStart: function padStart(maxLength /* , fillString = ' ' */) {\n return $padStart(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $padEnd = require('../internals/string-pad').end;\nvar WEBKIT_BUG = require('../internals/string-pad-webkit-bug');\n\n// `String.prototype.padEnd` method\n// https://tc39.es/ecma262/#sec-string.prototype.padend\n$({ target: 'String', proto: true, forced: WEBKIT_BUG }, {\n padEnd: function padEnd(maxLength /* , fillString = ' ' */) {\n return $padEnd(this, maxLength, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\n\n// `globalThis` object\n// https://tc39.es/ecma262/#sec-globalthis\n$({ global: true }, {\n globalThis: global\n});\n","// @flow\n\n\n/**\n Provides details of changing model value\n @param {Object} [details]\n @param {string} [details.inserted] - Inserted symbols\n @param {boolean} [details.skip] - Can skip chars\n @param {number} [details.removeCount] - Removed symbols count\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\n*/\nexport default\nclass ChangeDetails {\n /** Inserted symbols */\n inserted: string;\n /** Can skip chars */\n skip: boolean;\n /** Additional offset if any changes occurred before tail */\n tailShift: number;\n /** Raw inserted is used by dynamic mask */\n rawInserted: string;\n\n constructor (details?: {\n inserted?: $PropertyType,\n rawInserted?: $PropertyType,\n skip?: $PropertyType,\n tailShift?: $PropertyType,\n }) {\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0,\n }, details);\n }\n\n /**\n Aggregate changes\n @returns {ChangeDetails} `this`\n */\n aggregate (details: ChangeDetails): ChangeDetails {\n this.rawInserted += details.rawInserted;\n this.skip = this.skip || details.skip;\n this.inserted += details.inserted;\n this.tailShift += details.tailShift;\n return this;\n }\n\n /** Total offset considering all changes */\n get offset (): number {\n return this.tailShift + this.inserted.length;\n }\n}\n","// @flow\nimport ChangeDetails from './change-details.js';\n\n\n/** Checks if value is string */\nexport\nfunction isString (str: mixed): boolean %checks {\n return typeof str === 'string' || str instanceof String;\n}\n\n/**\n Direction\n @prop {string} NONE\n @prop {string} LEFT\n @prop {string} FORCE_LEFT\n @prop {string} RIGHT\n @prop {string} FORCE_RIGHT\n*/\nexport\nconst DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT',\n}\n/**\n Direction\n @enum {string}\n*/\nexport\ntype Direction = $Values;\n\n/** Returns next char index in direction */\nexport\nfunction indexInDirection (pos: number, direction: Direction): number {\n if (direction === DIRECTION.LEFT) --pos;\n return pos;\n}\n\n/** Returns next char position in direction */\nexport\nfunction posInDirection (pos: number, direction: Direction): number {\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return --pos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return ++pos;\n default:\n return pos;\n }\n}\n\n/** */\nexport\nfunction forceDirection (direction: Direction): Direction {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n default:\n return direction;\n }\n}\n\n/** Escapes regular expression control chars */\nexport\nfunction escapeRegExp (str: string): string {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n}\n\nexport\nfunction normalizePrepare (prep: string | [string, ChangeDetails]): [string, ChangeDetails] {\n return Array.isArray(prep) ? prep : [\n prep,\n new ChangeDetails(),\n ];\n}\n\n// cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\nexport\nfunction objectIncludes (b: any, a: any): boolean {\n if (a === b) return true;\n\n var arrA = Array.isArray(a)\n , arrB = Array.isArray(b)\n , i;\n\n if (arrA && arrB) {\n if (a.length != b.length) return false;\n for (i = 0; i < a.length; i++)\n if (!objectIncludes(a[i], b[i])) return false;\n return true;\n }\n\n if (arrA != arrB) return false;\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n var dateA = a instanceof Date\n , dateB = b instanceof Date;\n if (dateA && dateB) return a.getTime() == b.getTime();\n if (dateA != dateB) return false;\n\n var regexpA = a instanceof RegExp\n , regexpB = b instanceof RegExp;\n if (regexpA && regexpB) return a.toString() == b.toString();\n if (regexpA != regexpB) return false;\n\n var keys = Object.keys(a);\n // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++)\n // $FlowFixMe ... ???\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = 0; i < keys.length; i++)\n if(!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n\n return true;\n } else if (a && b && typeof a === 'function' && typeof b === 'function') {\n return a.toString() === b.toString()\n }\n\n return false;\n}\n\n/** Selection range */\nexport\ntype Selection = {\n start: number;\n end: number;\n};\n","// @flow\nimport {type Direction, type Selection, DIRECTION} from './utils.js';\n\n\n/** Provides details of changing input */\nexport default\nclass ActionDetails {\n /** Current input value */\n value: string;\n /** Current cursor position */\n cursorPos: number;\n /** Old input value */\n oldValue: string;\n /** Old selection */\n oldSelection: Selection;\n\n constructor (\n value: string,\n cursorPos: number,\n oldValue: string,\n oldSelection: Selection\n ) {\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection;\n\n // double check if left part was changed (autofilling, other non-standard input triggers)\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n\n /**\n Start changing position\n @readonly\n */\n get startChangePos (): number {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n\n /**\n Inserted symbols count\n @readonly\n */\n get insertedCount (): number {\n return this.cursorPos - this.startChangePos;\n }\n\n /**\n Inserted symbols\n @readonly\n */\n get inserted (): string {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n\n /**\n Removed symbols count\n @readonly\n */\n get removedCount (): number {\n // Math.max for opposite operation\n return Math.max((this.oldSelection.end - this.startChangePos) ||\n // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n\n /**\n Removed symbols\n @readonly\n */\n get removed (): string {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n\n /**\n Unchanged head symbols\n @readonly\n */\n get head (): string {\n return this.value.substring(0, this.startChangePos);\n }\n\n /**\n Unchanged tail symbols\n @readonly\n */\n get tail (): string {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n\n /**\n Remove direction\n @readonly\n */\n get removeDirection (): Direction {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE;\n\n // align right if delete at right\n return (\n (this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos) &&\n // if not range removed (event with backspace)\n this.oldSelection.end === this.oldSelection.start\n ) ?\n DIRECTION.RIGHT :\n DIRECTION.LEFT;\n }\n}\n","// @flow\nimport type { TailDetails, AppendTail } from './tail-details.js';\nimport type ChangeDetails from './change-details.js';\n\n\ntype ContinuousTailState = {\n value: $PropertyType,\n from: $PropertyType,\n stop?: $PropertyType,\n};\n\n/** Provides details of continuous extracted tail */\nexport default\nclass ContinuousTailDetails implements TailDetails {\n /** Tail value as string */\n value: string;\n /** Tail start position */\n from: number;\n /** Start position */\n stop: ?number;\n\n constructor (value?: string='', from?: number=0, stop?: number) {\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n toString (): string { return this.value; }\n\n extend (tail: string | TailDetails): void {\n this.value += String(tail);\n }\n\n appendTo (masked: AppendTail): ChangeDetails {\n return masked.append(this.toString(), { tail: true })\n .aggregate(masked._appendPlaceholder());\n }\n\n get state (): ContinuousTailState {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop,\n };\n }\n\n set state (state: ContinuousTailState) {\n Object.assign(this, state);\n }\n\n unshift (beforePos?: number): string {\n if (!this.value.length || (beforePos != null && this.from >= beforePos)) return '';\n\n const shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n\n shift (): string {\n if (!this.value.length) return '';\n\n const shiftChar = this.value[this.value.length-1];\n this.value = this.value.slice(0, -1);\n return shiftChar;\n }\n}\n","/**\n * Applies mask on element.\n * @constructor\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\n * @param {Object} opts - Custom mask options\n * @return {InputMask}\n */\nexport default\nfunction IMask (el, opts={}) {\n // currently available only for input-like elements\n return new IMask.InputMask(el, opts);\n}\n","// @flow\nimport ChangeDetails from '../core/change-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { type Direction, DIRECTION, isString, normalizePrepare, forceDirection } from '../core/utils.js';\nimport { type TailDetails } from '../core/tail-details.js';\nimport IMask from '../core/holder.js';\n\n\n/** Supported mask type */\nexport\ntype Mask =\n string |\n String |\n RegExp |\n Class |\n Class |\n Array |\n $PropertyType, 'validate'> |\n Masked<*> |\n Class>;\n\nexport\ntype MaskedState = {|\n _value: string,\n|};\n\n/** Append flags */\nexport\ntype AppendFlags = {\n input?: boolean,\n tail?: boolean,\n raw?: boolean,\n _beforeTailState?: any, // TODO types...\n};\n\n/** Extract flags */\nexport\ntype ExtractFlags = {\n raw?: boolean\n};\n\nexport\ntype MaskedOptions = {\n mask: $PropertyType, 'mask'>,\n parent?: $PropertyType, 'parent'>,\n prepare?: $PropertyType, 'prepare'>,\n validate?: $PropertyType, 'validate'>,\n commit?: $PropertyType, 'commit'>,\n overwrite?: $PropertyType, 'overwrite'>,\n eager?: $PropertyType, 'eager'>,\n format?: $PropertyType, 'format'>,\n parse?: $PropertyType, 'parse'>,\n};\n\n\n/** Provides common masking stuff */\nexport default\nclass Masked {\n static DEFAULTS: any; // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n mask: MaskType;\n /** */ // $FlowFixMe no ideas\n parent: ?Masked<*>;\n /** Transforms value before mask processing */\n prepare: (string, Masked, AppendFlags) => string | [string, ChangeDetails];\n /** Validates if value is acceptable */\n validate: (string, Masked, AppendFlags) => boolean;\n /** Does additional processing in the end of editing */\n commit: (string, Masked) => void;\n /** Format typed value to string */\n format: (any, Masked) => string;\n /** Parse strgin to get typed value */\n parse: (string, Masked) => any;\n /** Enable characters overwriting */\n overwrite: ?boolean | 'shift';\n /** */\n eager: boolean;\n /** */\n isInitialized: boolean;\n _value: string;\n _refreshing: ?boolean;\n _isolated: ?boolean;\n\n constructor (opts: {[string]: any}) {\n this._value = '';\n this._update({\n ...Masked.DEFAULTS,\n ...opts,\n });\n this.isInitialized = true;\n }\n\n /** Sets and applies new options */\n updateOptions (opts: {[string]: any}) {\n if (!Object.keys(opts).length) return;\n // $FlowFixMe\n this.withValueRefresh(this._update.bind(this, opts));\n }\n\n /**\n Sets new options\n @protected\n */\n _update (opts: {[string]: any}) {\n Object.assign(this, opts);\n }\n\n /** Mask state */\n get state (): any {\n return {\n _value: this.value,\n };\n }\n\n set state (state: any) {\n this._value = state._value;\n }\n\n /** Resets value */\n reset () {\n this._value = '';\n }\n\n /** */\n get value (): string {\n return this._value;\n }\n\n set value (value: string) {\n this.resolve(value);\n }\n\n /** Resolve new value */\n resolve (value: string): string {\n this.reset();\n this.append(value, {input: true}, '');\n this.doCommit();\n return this.value;\n }\n\n /** */\n get unmaskedValue (): string {\n return this.value;\n }\n\n set unmaskedValue (value: string) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n\n /** */\n get typedValue (): any {\n return this.doParse(this.value);\n }\n\n set typedValue (value: any) {\n this.value = this.doFormat(value);\n }\n\n /** Value that includes raw user input */\n get rawInputValue (): string {\n return this.extractInput(0, this.value.length, {raw: true});\n }\n\n set rawInputValue (value: string) {\n this.reset();\n this.append(value, {raw: true}, '');\n this.doCommit();\n }\n\n /** */\n get isComplete (): boolean {\n return true;\n }\n\n /** */\n get isFilled (): boolean {\n return this.isComplete;\n }\n\n /** Finds nearest input position in direction */\n nearestInputPos (cursorPos: number, direction?: Direction): number {\n return cursorPos;\n }\n\n /** Extracts value in range considering flags */\n extractInput (fromPos?: number=0, toPos?: number=this.value.length, flags?: ExtractFlags): string {\n return this.value.slice(fromPos, toPos);\n }\n\n /** Extracts tail in range */\n extractTail (fromPos?: number=0, toPos?: number=this.value.length): TailDetails {\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n\n /** Appends tail */\n // $FlowFixMe no ideas\n appendTail (tail: string | String | TailDetails): ChangeDetails {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n\n return tail.appendTo(this);\n }\n\n /** Appends char */\n _appendCharRaw (ch: string, flags: AppendFlags={}): ChangeDetails {\n if (!ch) return new ChangeDetails();\n\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch,\n });\n }\n\n /** Appends char */\n _appendChar (ch: string, flags: AppendFlags={}, checkTail?: TailDetails): ChangeDetails {\n const consistentState: MaskedState = this.state;\n let details: ChangeDetails;\n [ch, details] = normalizePrepare(this.doPrepare(ch, flags));\n\n details = details.aggregate(this._appendCharRaw(ch, flags));\n\n if (details.inserted) {\n let consistentTail;\n let appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n const beforeTailState = this.state;\n if (this.overwrite === true) {\n consistentTail = checkTail.state;\n checkTail.unshift(this.value.length);\n }\n\n let tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n\n // not ok, try shift\n if (!(appended && tailDetails.inserted) && this.overwrite === 'shift') {\n this.state = beforeTailState;\n consistentTail = checkTail.state;\n checkTail.shift();\n\n tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString();\n }\n\n // if ok, rollback state after tail\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n }\n\n // revert all if something went wrong\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n return details;\n }\n\n /** Appends optional placeholder at end */\n _appendPlaceholder (): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends optional eager placeholder at end */\n _appendEager (): ChangeDetails {\n return new ChangeDetails();\n }\n\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n append (str: string, flags?: AppendFlags, tail?: string | String | TailDetails): ChangeDetails {\n if (!isString(str)) throw new Error('value should be string');\n const details = new ChangeDetails();\n const checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags && flags.tail) flags._beforeTailState = this.state;\n\n for (let ci=0; ci(fn: () => T): T {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n\n const rawInput = this.rawInputValue;\n const value = this.value;\n\n const ret = fn();\n\n this.rawInputValue = rawInput;\n // append lost trailing chars at end\n if (this.value && this.value !== value && value.indexOf(this.value) === 0) {\n this.append(value.slice(this.value.length), {}, '');\n }\n\n delete this._refreshing;\n return ret;\n }\n\n /** */\n runIsolated(fn: (masked: any) => T): T {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n const state = this.state;\n\n const ret = fn(this);\n\n this.state = state;\n delete this._isolated;\n\n return ret;\n }\n\n /**\n Prepares string before mask processing\n @protected\n */\n doPrepare (str: string, flags: AppendFlags={}): string | [string, ChangeDetails] {\n return this.prepare ?\n this.prepare(str, this, flags) :\n str;\n }\n\n /**\n Validates if value is acceptable\n @protected\n */\n doValidate (flags: AppendFlags): boolean {\n return (!this.validate || this.validate(this.value, this, flags)) &&\n (!this.parent || this.parent.doValidate(flags));\n }\n\n /**\n Does additional processing in the end of editing\n @protected\n */\n doCommit () {\n if (this.commit) this.commit(this.value, this);\n }\n\n /** */\n doFormat (value: any): string {\n return this.format ? this.format(value, this) : value;\n }\n\n /** */\n doParse (str: string): string {\n return this.parse ? this.parse(str, this) : str;\n }\n\n /** */\n splice (start: number, deleteCount: number, inserted: string, removeDirection: Direction): ChangeDetails {\n const tailPos: number = start + deleteCount;\n const tail: TailDetails = this.extractTail(tailPos);\n\n let oldRawValue;\n if (this.eager) {\n removeDirection = forceDirection(removeDirection);\n oldRawValue = this.extractInput(0, tailPos, {raw: true});\n }\n\n let startChangePos: number = this.nearestInputPos(start, deleteCount > 1 && start !== 0 && !this.eager ? DIRECTION.NONE : removeDirection);\n const details: ChangeDetails = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n }).aggregate(this.remove(startChangePos));\n\n if (this.eager && removeDirection !== DIRECTION.NONE && oldRawValue === this.rawInputValue) {\n if (removeDirection === DIRECTION.FORCE_LEFT) {\n let valLength;\n while (oldRawValue === this.rawInputValue && (valLength = this.value.length)) {\n details\n .aggregate(new ChangeDetails({ tailShift: -1 }))\n .aggregate(this.remove(valLength-1));\n }\n } else if (removeDirection === DIRECTION.FORCE_RIGHT) {\n tail.unshift();\n }\n }\n\n return details.aggregate(this.append(inserted, {input: true}, tail));\n }\n\n maskEquals (mask: any): boolean {\n return this.mask === mask;\n }\n}\nMasked.DEFAULTS = {\n format: v => v,\n parse: v => v,\n};\n\n\nIMask.Masked = Masked;\n","// @flow\nimport { isString } from '../core/utils.js';\nimport type Masked from './base.js';\nimport { type Mask } from './base.js';\nimport IMask from '../core/holder.js';\n\n\n/** Get Masked class by mask type */\nexport\nfunction maskedClass (mask: Mask): Class> {\n if (mask == null) {\n throw new Error('mask property should be defined');\n }\n\n // $FlowFixMe\n if (mask instanceof RegExp) return IMask.MaskedRegExp;\n // $FlowFixMe\n if (isString(mask)) return IMask.MaskedPattern;\n // $FlowFixMe\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate;\n // $FlowFixMe\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber;\n // $FlowFixMe\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic;\n // $FlowFixMe\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask;\n // $FlowFixMe\n if (mask instanceof IMask.Masked) return mask.constructor;\n // $FlowFixMe\n if (mask instanceof Function) return IMask.MaskedFunction;\n\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n return IMask.Masked;\n}\n\n/** Creates new {@link Masked} depending on mask type */\nexport default\nfunction createMask (opts: {mask: Mask} | Masked<*>): Masked<*> {\n // $FlowFixMe\n if (IMask.Masked && (opts instanceof IMask.Masked)) return opts;\n\n opts = {...opts};\n const mask = opts.mask;\n\n // $FlowFixMe\n if (IMask.Masked && (mask instanceof IMask.Masked)) return mask;\n\n const MaskedClass = maskedClass(mask);\n if (!MaskedClass) throw new Error('Masked class is not found for provided mask, appropriate module needs to be import manually before creating mask.');\n return new MaskedClass(opts);\n}\n\n\nIMask.createMask = createMask;\n","// @flow\nimport createMask from '../factory.js';\nimport type Masked from '../base.js';\nimport type MaskedPattern from '../pattern.js';\nimport { type TailDetails } from '../../core/tail-details.js';\nimport { type Mask, type ExtractFlags, type AppendFlags } from '../base.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, type Direction } from '../../core/utils.js';\nimport { type PatternBlock } from './block.js';\n\n\nexport\ntype Definitions = {[string]: Mask};\n\n/** */\ntype PatternInputDefinitionOptions = {\n parent: $PropertyType,\n mask: Mask,\n isOptional: $PropertyType,\n lazy: $PropertyType,\n eager: $PropertyType,\n placeholderChar: $PropertyType,\n};\n\ntype PatternInputDefinitionState = {\n masked: *,\n isFilled: boolean,\n};\n\nexport\nconst DEFAULT_INPUT_DEFINITIONS: { [string]: RegExp } = {\n '0': /\\d/,\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\n '*': /./\n};\n\n\n/** */\nexport default\nclass PatternInputDefinition implements PatternBlock {\n /** */\n +masked: Masked<*>;\n /** */\n parent: Masked<*>;\n /** */\n isOptional: boolean;\n /** */\n isFilled: boolean;\n /** */\n lazy: $PropertyType;\n /** */\n eager: $PropertyType, 'eager'>;\n /** */\n placeholderChar: $PropertyType;\n\n\n constructor(opts: PatternInputDefinitionOptions) {\n const {mask, ...blockOpts} = opts;\n\n this.masked = createMask({mask});\n Object.assign(this, blockOpts);\n }\n\n reset () {\n this.isFilled = false;\n this.masked.reset();\n }\n\n remove (fromPos?: number=0, toPos?: number=this.value.length): ChangeDetails {\n if (fromPos === 0 && toPos >= 1) {\n this.isFilled = false;\n return this.masked.remove(fromPos, toPos);\n }\n\n return new ChangeDetails();\n }\n\n get value (): string {\n return this.masked.value ||\n (this.isFilled && !this.isOptional ?\n this.placeholderChar :\n '');\n }\n\n get unmaskedValue (): string {\n return this.masked.unmaskedValue;\n }\n\n get isComplete (): boolean {\n return Boolean(this.masked.value) || this.isOptional;\n }\n\n _appendChar (ch: string, flags: AppendFlags={}): ChangeDetails {\n if (this.isFilled) return new ChangeDetails();\n\n const state = this.masked.state;\n // simulate input\n const details = this.masked._appendChar(ch, flags);\n\n if (details.inserted && this.doValidate(flags) === false) {\n details.inserted = details.rawInserted = '';\n this.masked.state = state;\n }\n\n if (!details.inserted && !this.isOptional && !this.lazy && !flags.input) {\n details.inserted = this.placeholderChar;\n }\n details.skip = !details.inserted && !this.isOptional;\n this.isFilled = Boolean(details.inserted);\n\n return details;\n }\n\n append (...args: *): ChangeDetails {\n // TODO probably should be done via _appendChar\n return this.masked.append(...args);\n }\n\n _appendPlaceholder (): ChangeDetails {\n const details = new ChangeDetails();\n\n if (this.isFilled || this.isOptional) return details;\n\n this.isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n\n _appendEager (): ChangeDetails {\n return new ChangeDetails();\n }\n\n extractTail (...args: *): TailDetails {\n return this.masked.extractTail(...args);\n }\n\n appendTail (...args: *): ChangeDetails {\n return this.masked.appendTail(...args);\n }\n\n extractInput (fromPos?: number=0, toPos?: number=this.value.length, flags?: ExtractFlags): string {\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n const minPos = 0;\n const maxPos = this.value.length;\n const boundPos = Math.min(Math.max(cursorPos, minPos), maxPos);\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return this.isComplete ? boundPos : minPos;\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n case DIRECTION.NONE:\n default: return boundPos;\n }\n }\n\n doValidate (...args: *): boolean {\n return this.masked.doValidate(...args) && (\n !this.parent || this.parent.doValidate(...args));\n }\n\n doCommit () {\n this.masked.doCommit();\n }\n\n get state (): PatternInputDefinitionState {\n return {\n masked: this.masked.state,\n isFilled: this.isFilled,\n };\n }\n\n set state (state: PatternInputDefinitionState) {\n this.masked.state = state.masked;\n this.isFilled = state.isFilled;\n }\n}\n","// @flow\nimport ChangeDetails from '../../core/change-details.js';\nimport { DIRECTION, type Direction, isString } from '../../core/utils.js';\nimport { type TailDetails } from '../../core/tail-details.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport { type ExtractFlags, type AppendFlags, type MaskedState } from '../base.js';\nimport { type PatternBlock } from './block.js';\n\n\n/** */\ntype PatternFixedDefinitionOptions = {\n char: $PropertyType,\n isUnmasking?: $PropertyType,\n};\n\ntype PatternFixedDefinitionState = {|\n ...MaskedState,\n _isRawInput: ?boolean,\n|};\n\nexport default\nclass PatternFixedDefinition implements PatternBlock {\n /** */\n _value: string;\n /** */\n char: string;\n /** */\n isUnmasking: ?boolean;\n /** */\n eager: boolean;\n /** */\n _isRawInput: ?boolean;\n /** */\n isFixed: boolean;\n\n constructor(opts: PatternFixedDefinitionOptions) {\n Object.assign(this, opts);\n this._value = '';\n this.isFixed = true;\n }\n\n get value (): string {\n return this._value;\n }\n\n get unmaskedValue (): string {\n return this.isUnmasking ? this.value : '';\n }\n\n reset () {\n this._isRawInput = false;\n this._value = '';\n }\n\n remove (fromPos?: number=0, toPos?: number=this._value.length): ChangeDetails {\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n\n return new ChangeDetails();\n }\n\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n const minPos = 0;\n const maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n\n extractInput (fromPos?: number=0, toPos?: number=this._value.length, flags?: ExtractFlags={}): string {\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n\n get isComplete (): boolean {\n return true;\n }\n\n get isFilled (): boolean {\n return Boolean(this._value);\n }\n\n _appendChar (ch: string, flags?: AppendFlags={}): ChangeDetails {\n const details = new ChangeDetails();\n\n if (this._value) return details;\n\n const appended = this.char === ch;\n const isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && !this.eager && !flags.tail;\n if (isResolved) details.rawInserted = this.char;\n this._value = details.inserted = this.char;\n this._isRawInput = isResolved && (flags.raw || flags.input);\n\n return details;\n }\n\n _appendEager (): ChangeDetails {\n return this._appendChar(this.char);\n }\n\n _appendPlaceholder (): ChangeDetails {\n const details = new ChangeDetails();\n if (this._value) return details;\n\n this._value = details.inserted = this.char;\n return details;\n }\n\n extractTail (fromPos?: number=0, toPos?: number=this.value.length): TailDetails {\n return new ContinuousTailDetails('');\n }\n\n // $FlowFixMe no ideas\n appendTail (tail: string | String | TailDetails): ChangeDetails {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n\n return tail.appendTo(this);\n }\n\n append (str: string, flags?: AppendFlags, tail?: TailDetails): ChangeDetails {\n const details = this._appendChar(str[0], flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n\n doCommit () {}\n\n get state (): PatternFixedDefinitionState {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput,\n };\n }\n\n set state (state: PatternFixedDefinitionState) {\n Object.assign(this, state);\n }\n}\n","// @flow\nimport type { TailDetails, AppendTail } from '../../core/tail-details.js';\nimport ChangeDetails from '../../core/change-details.js';\nimport { isString } from '../../core/utils.js';\nimport ContinuousTailDetails from '../../core/continuous-tail-details.js';\nimport IMask from '../../core/holder.js';\n\n\ntype ChunksTailState = {\n chunks: $PropertyType,\n from: $PropertyType,\n stop?: $PropertyType,\n blockIndex?: $PropertyType,\n};\n\nexport default\nclass ChunksTailDetails implements TailDetails {\n chunks: Array;\n from: number;\n stop: ?number;\n /** */\n blockIndex: ?number;\n\n constructor (chunks?: Array=[], from?: number=0) {\n this.chunks = chunks;\n this.from = from;\n }\n\n toString (): string {\n return this.chunks.map(String).join('');\n }\n\n // $FlowFixMe no ideas\n extend (tailChunk: string | String | TailDetails): void {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n\n const lastChunk = this.chunks[this.chunks.length-1];\n const extendLast = lastChunk &&\n // if stops are same or tail has no stop\n (lastChunk.stop === tailChunk.stop || tailChunk.stop == null) &&\n // if tail chunk goes just after last chunk\n tailChunk.from === (lastChunk.from + lastChunk.toString().length);\n\n if (tailChunk instanceof ContinuousTailDetails) {\n // check the ability to extend previous chunk\n if (extendLast) {\n // extend previous chunk\n lastChunk.extend(tailChunk.toString());\n } else {\n // append new chunk\n this.chunks.push(tailChunk);\n }\n } else if (tailChunk instanceof ChunksTailDetails) {\n if (tailChunk.stop == null) {\n // unwrap floating chunks to parent, keeping `from` pos\n let firstTailChunk;\n while (tailChunk.chunks.length && tailChunk.chunks[0].stop == null) {\n firstTailChunk = tailChunk.chunks.shift();\n firstTailChunk.from += tailChunk.from;\n this.extend(firstTailChunk);\n }\n }\n\n // if tail chunk still has value\n if (tailChunk.toString()) {\n // if chunks contains stops, then popup stop to container\n tailChunk.stop = tailChunk.blockIndex;\n this.chunks.push(tailChunk);\n }\n }\n }\n\n appendTo (masked: AppendTail): ChangeDetails {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n const tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n const details = new ChangeDetails();\n\n for (let ci=0; ci < this.chunks.length && !details.skip; ++ci) {\n const chunk = this.chunks[ci];\n\n const lastBlockIter = masked._mapPosToBlock(masked.value.length);\n const stop = chunk.stop;\n let chunkBlock;\n if (stop != null &&\n // if block not found or stop is behind lastBlock\n (!lastBlockIter || lastBlockIter.index <= stop)\n ) {\n if (\n chunk instanceof ChunksTailDetails ||\n // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0\n ) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n const tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted;\n\n // get not inserted chars\n const remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, { tail: true }));\n } else {\n details.aggregate(masked.append(chunk.toString(), { tail: true }));\n }\n };\n\n return details;\n }\n\n get state (): ChunksTailState {\n return {\n chunks: this.chunks.map(c => c.state),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex,\n };\n }\n\n set state (state: ChunksTailState) {\n const { chunks, ...props } = state;\n Object.assign(this, props);\n this.chunks = chunks.map(cstate => {\n const chunk = \"chunks\" in cstate ?\n new ChunksTailDetails() :\n new ContinuousTailDetails();\n // $FlowFixMe already checked above\n chunk.state = cstate;\n return chunk;\n });\n }\n\n unshift (beforePos?: number): string {\n if (!this.chunks.length || (beforePos != null && this.from >= beforePos)) return '';\n\n const chunkShiftPos = beforePos != null ? beforePos - this.from : beforePos;\n let ci=0;\n while (ci < this.chunks.length) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.unshift(chunkShiftPos);\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n ++ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n\n shift (): string {\n if (!this.chunks.length) return '';\n\n let ci=this.chunks.length-1;\n while (0 <= ci) {\n const chunk = this.chunks[ci];\n const shiftChar = chunk.shift();\n\n if (chunk.toString()) {\n // chunk still contains value\n // but not shifted - means no more available chars to shift\n if (!shiftChar) break;\n --ci;\n } else {\n // clean if chunk has no value\n this.chunks.splice(ci, 1);\n }\n\n if (shiftChar) return shiftChar;\n }\n\n return '';\n }\n}\n","// @flow\nimport { DIRECTION } from '../../core/utils.js';\nimport type MaskedPattern from '../pattern.js';\nimport { type PatternBlock } from './block.js';\n\n\ntype PatternCursorState = { offset: number, index: number, ok: boolean };\n\nexport default\nclass PatternCursor {\n masked: MaskedPattern;\n offset: number;\n index: number;\n ok: boolean;\n _log: PatternCursorState[];\n\n constructor (masked: MaskedPattern, pos: number) {\n this.masked = masked;\n this._log = [];\n\n const { offset, index } = masked._mapPosToBlock(pos) || (\n pos < 0 ?\n // first\n { index: 0, offset: 0 } :\n // last\n { index: this.masked._blocks.length, offset: 0 }\n );\n this.offset = offset;\n this.index = index;\n this.ok = false;\n }\n\n get block (): PatternBlock {\n return this.masked._blocks[this.index];\n }\n\n get pos (): number {\n return this.masked._blockStartPos(this.index) + this.offset;\n }\n\n get state (): PatternCursorState {\n return { index: this.index, offset: this.offset, ok: this.ok };\n }\n\n set state (s: PatternCursorState) {\n Object.assign(this, s);\n }\n\n pushState () {\n this._log.push(this.state);\n }\n\n popState (): PatternCursorState {\n const s = this._log.pop();\n this.state = s;\n return s;\n }\n\n bindBlock () {\n if (this.block) return;\n if (this.index < 0) {\n this.index = 0;\n this.offset = 0;\n }\n if (this.index >= this.masked._blocks.length) {\n this.index = this.masked._blocks.length - 1;\n this.offset = this.block.value.length;\n }\n }\n\n _pushLeft(fn: () => ?boolean): boolean {\n this.pushState();\n for (this.bindBlock(); 0<=this.index; --this.index, this.offset=this.block?.value.length || 0) {\n if (fn()) return this.ok = true;\n }\n\n return this.ok = false;\n }\n\n _pushRight (fn: () => ?boolean): boolean {\n this.pushState();\n for (this.bindBlock(); this.index {\n if (this.block.isFixed || !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_LEFT);\n if (this.offset !== 0) return true;\n });\n }\n\n pushLeftBeforeInput (): boolean {\n // cases:\n // filled input: 00|\n // optional empty input: 00[]|\n // nested block: XX<[]>|\n return this._pushLeft(() => {\n if (this.block.isFixed) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n\n pushLeftBeforeRequired (): boolean {\n return this._pushLeft(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.LEFT);\n return true;\n });\n }\n\n pushRightBeforeFilled (): boolean {\n return this._pushRight(() => {\n if (this.block.isFixed || !this.block.value) return;\n\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.FORCE_RIGHT);\n if (this.offset !== this.block.value.length) return true;\n });\n }\n\n pushRightBeforeInput (): boolean {\n return this._pushRight(() => {\n if (this.block.isFixed) return;\n\n // const o = this.offset;\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n // HACK cases like (STILL DOES NOT WORK FOR NESTED)\n // aa|X\n // aaX_ - this will not work\n // if (o && o === this.offset && this.block instanceof PatternInputDefinition) continue;\n return true;\n });\n }\n\n pushRightBeforeRequired (): boolean {\n return this._pushRight(() => {\n if (this.block.isFixed || this.block.isOptional && !this.block.value) return;\n\n // TODO check |[*]XX_\n this.offset = this.block.nearestInputPos(this.offset, DIRECTION.NONE);\n return true;\n });\n }\n}\n","// @flow\nimport Masked, { type MaskedOptions } from './base.js';\nimport IMask from '../core/holder.js';\n\n\n/** Masking by RegExp */\nexport default\nclass MaskedRegExp extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update (opts: $Shape>) {\n if (opts.mask) opts.validate = (value) => value.search(opts.mask) >= 0;\n super._update(opts);\n }\n}\n\n\nIMask.MaskedRegExp = MaskedRegExp;\n","// @flow\nimport {DIRECTION, type Direction, forceDirection} from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\nimport Masked, { type AppendFlags, type ExtractFlags, type MaskedOptions, type MaskedState } from './base.js';\nimport PatternInputDefinition, { DEFAULT_INPUT_DEFINITIONS, type Definitions } from './pattern/input-definition.js';\nimport PatternFixedDefinition from './pattern/fixed-definition.js';\nimport { type TailDetails } from '../core/tail-details.js';\nimport ChunksTailDetails from './pattern/chunk-tail-details.js';\nimport ContinuousTailDetails from '../core/continuous-tail-details.js';\nimport { type PatternBlock } from './pattern/block.js';\nimport PatternCursor from './pattern/cursor.js';\nimport createMask from './factory.js';\nimport IMask from '../core/holder.js';\nimport './regexp.js'; // support for default definitions which are regexp's\n\n\ntype MaskedPatternOptions = {\n ...MaskedOptions,\n definitions?: $PropertyType,\n blocks?: $PropertyType,\n placeholderChar?: $PropertyType,\n lazy?: $PropertyType,\n};\n\ntype MaskedPatternState = {|\n ...MaskedState,\n _blocks: Array<*>,\n|};\n\ntype BlockPosData = {\n index: number,\n offset: number,\n};\n\n/**\n Pattern mask\n @param {Object} opts\n @param {Object} opts.blocks\n @param {Object} opts.definitions\n @param {string} opts.placeholderChar\n @param {boolean} opts.lazy\n*/\nexport default\nclass MaskedPattern extends Masked {\n static DEFAULTS: any;\n static STOP_CHAR: string;\n static ESCAPE_CHAR: string;\n static InputDefinition: Class;\n static FixedDefinition: Class;\n\n /** */\n blocks: {[string]: MaskedOptions};\n /** */\n definitions: Definitions;\n /** Single char for empty input */\n placeholderChar: string;\n /** Show placeholder only when needed */\n lazy: boolean;\n _blocks: Array;\n _maskedBlocks: {[string]: Array};\n _stops: Array;\n\n constructor (opts: any={}) { // TODO type $Shape={} does not work\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n super({\n ...MaskedPattern.DEFAULTS,\n ...opts,\n });\n }\n\n /**\n @override\n @param {Object} opts\n */\n _update (opts: $Shape={}) {\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n super._update(opts);\n this._rebuildMask();\n }\n\n /** */\n _rebuildMask () {\n const defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n\n let pattern = this.mask;\n if (!pattern || !defs) return;\n\n let unmaskingBlock = false;\n let optionalBlock = false;\n\n for (let i=0; i p.indexOf(bName) === 0);\n // order by key length\n bNames.sort((a, b) => b.length - a.length);\n // use block name with max length\n const bName = bNames[0];\n if (bName) {\n // $FlowFixMe no ideas\n const maskedBlock = createMask({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n overwrite: this.overwrite,\n ...this.blocks[bName],\n });\n\n if (maskedBlock) {\n this._blocks.push(maskedBlock);\n\n // store block index\n if (!this._maskedBlocks[bName]) this._maskedBlocks[bName] = [];\n this._maskedBlocks[bName].push(this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n continue;\n }\n }\n\n let char = pattern[i];\n let isInput = char in defs;\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n continue;\n }\n\n if (char === '{' || char === '}') {\n unmaskingBlock = !unmaskingBlock;\n continue;\n }\n\n if (char === '[' || char === ']') {\n optionalBlock = !optionalBlock;\n continue;\n }\n\n if (char === MaskedPattern.ESCAPE_CHAR) {\n ++i;\n char = pattern[i];\n if (!char) break;\n isInput = false;\n }\n\n const def = isInput ?\n new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n eager: this.eager,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock,\n }) :\n new PatternFixedDefinition({\n char,\n eager: this.eager,\n isUnmasking: unmaskingBlock,\n });\n\n this._blocks.push(def);\n }\n }\n\n /**\n @override\n */\n get state (): MaskedPatternState {\n return {\n ...super.state,\n _blocks: this._blocks.map(b => b.state),\n };\n }\n\n set state (state: MaskedPatternState) {\n const {_blocks, ...maskedState} = state;\n this._blocks.forEach((b, bi) => b.state = _blocks[bi]);\n super.state = maskedState;\n }\n\n /**\n @override\n */\n reset () {\n super.reset();\n this._blocks.forEach(b => b.reset());\n }\n\n /**\n @override\n */\n get isComplete (): boolean {\n return this._blocks.every(b => b.isComplete);\n }\n\n /**\n @override\n */\n get isFilled (): boolean {\n return this._blocks.every(b => b.isFilled);\n }\n\n get isFixed (): boolean {\n return this._blocks.every(b => b.isFixed);\n }\n\n get isOptional (): boolean {\n return this._blocks.every(b => b.isOptional);\n }\n\n /**\n @override\n */\n doCommit () {\n this._blocks.forEach(b => b.doCommit());\n super.doCommit();\n }\n\n /**\n @override\n */\n get unmaskedValue (): string {\n return this._blocks.reduce((str, b) => str += b.unmaskedValue, '');\n }\n\n set unmaskedValue (unmaskedValue: string) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get value (): string {\n // TODO return _value when not in change?\n return this._blocks.reduce((str, b) => str += b.value, '');\n }\n\n set value (value: string) {\n super.value = value;\n }\n\n /**\n @override\n */\n appendTail (tail: string | String | TailDetails): ChangeDetails {\n return super.appendTail(tail).aggregate(this._appendPlaceholder());\n }\n\n /**\n @override\n */\n _appendEager (): ChangeDetails {\n const details = new ChangeDetails();\n\n let startBlockIndex = this._mapPosToBlock(this.value.length)?.index;\n if (startBlockIndex == null) return details;\n\n // TODO test if it works for nested pattern masks\n if (this._blocks[startBlockIndex].isFilled) ++startBlockIndex;\n\n for (let bi=startBlockIndex; bi {\n const blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = this._findStopBefore(bi);\n blockChunk.from = this._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n\n /**\n @override\n */\n extractInput (fromPos?: number=0, toPos?: number=this.value.length, flags: ExtractFlags={}): string {\n if (fromPos === toPos) return '';\n\n let input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, (b, _, fromPos, toPos) => {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n\n _findStopBefore (blockIndex: number): ?number {\n let stopBefore;\n for (let si=0; si {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n const args = b._blocks != null ? [b._blocks.length] : [];\n const bDetails = b._appendPlaceholder(...args);\n this._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n\n /** Finds block in pos */\n _mapPosToBlock (pos: number): ?BlockPosData {\n let accVal = '';\n for (let bi=0; bi pos += b.value.length, 0);\n }\n\n /** */\n _forEachBlocksInRange (fromPos: number, toPos: number=this.value.length, fn: (block: PatternBlock, blockIndex: number, fromPos: number, toPos: number) => void) {\n const fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n const toBlockIter = this._mapPosToBlock(toPos);\n // process first block\n const isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n const fromBlockStartPos = fromBlockIter.offset;\n const fromBlockEndPos = toBlockIter && isSameBlock ?\n toBlockIter.offset :\n this._blocks[fromBlockIter.index].value.length;\n fn(this._blocks[fromBlockIter.index], fromBlockIter.index, fromBlockStartPos, fromBlockEndPos);\n\n if (toBlockIter && !isSameBlock) {\n // process intermediate blocks\n for (let bi=fromBlockIter.index+1; bi {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n return removeDetails;\n }\n\n /**\n @override\n */\n nearestInputPos (cursorPos: number, direction: Direction=DIRECTION.NONE): number {\n if (!this._blocks.length) return 0;\n const cursor = new PatternCursor(this, cursorPos);\n\n if (direction === DIRECTION.NONE) {\n // -------------------------------------------------\n // NONE should only go out from fixed to the right!\n // -------------------------------------------------\n if (cursor.pushRightBeforeInput()) return cursor.pos;\n cursor.popState();\n if (cursor.pushLeftBeforeInput()) return cursor.pos;\n return this.value.length;\n }\n\n // FORCE is only about a|* otherwise is 0\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // try to break fast when *|a\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeFilled();\n if (cursor.ok && cursor.pos === cursorPos) return cursorPos;\n cursor.popState();\n }\n\n // forward flow\n cursor.pushLeftBeforeInput();\n cursor.pushLeftBeforeRequired();\n cursor.pushLeftBeforeFilled();\n\n // backward flow\n if (direction === DIRECTION.LEFT) {\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n if (cursor.ok && cursor.pos <= cursorPos) return cursor.pos;\n cursor.popState();\n }\n if (cursor.ok) return cursor.pos;\n if (direction === DIRECTION.FORCE_LEFT) return 0;\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n // cursor.popState();\n // if (\n // cursor.pushRightBeforeInput() &&\n // // TODO HACK for lazy if has aligned left inside fixed and has came to the start - use start position\n // (!this.lazy || this.extractInput())\n // ) return cursor.pos;\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // forward flow\n cursor.pushRightBeforeInput();\n cursor.pushRightBeforeRequired();\n\n if (cursor.pushRightBeforeFilled()) return cursor.pos;\n if (direction === DIRECTION.FORCE_RIGHT) return this.value.length;\n\n // backward flow\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n cursor.popState();\n if (cursor.ok) return cursor.pos;\n\n return this.nearestInputPos(cursorPos, DIRECTION.LEFT);\n }\n\n return cursorPos;\n }\n\n /** Get block by name */\n maskedBlock (name: string): ?PatternBlock {\n return this.maskedBlocks(name)[0];\n }\n\n /** Get all blocks by name */\n maskedBlocks (name: string): Array {\n const indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(gi => this._blocks[gi]);\n }\n}\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\n\n\nIMask.MaskedPattern = MaskedPattern;\n","// @flow\nimport MaskedPattern from './pattern.js';\nimport ChangeDetails from '../core/change-details.js';\nimport { normalizePrepare } from '../core/utils.js';\nimport { type AppendFlags } from './base.js';\nimport IMask from '../core/holder.js';\n\n\n/** Pattern which accepts ranges */\nexport default\nclass MaskedRange extends MaskedPattern {\n /**\n Optionally sets max length of pattern.\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\n */\n maxLength: number;\n /** Min bound */\n from: number;\n /** Max bound */\n to: number;\n /** */\n autofix: boolean | 'pad';\n\n get _matchFrom (): number {\n return this.maxLength - String(this.from).length;\n }\n\n /**\n @override\n */\n _update (opts: any) { // TODO type\n opts = {\n to: this.to || 0,\n from: this.from || 0,\n maxLength: this.maxLength || 0,\n ...opts,\n };\n\n let maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n\n const fromStr = String(opts.from).padStart(maxLength, '0');\n const toStr = String(opts.to).padStart(maxLength, '0');\n let sameCharsCount = 0;\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) ++sameCharsCount;\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n super._update(opts);\n }\n\n /**\n @override\n */\n get isComplete (): boolean {\n return super.isComplete && Boolean(this.value);\n }\n\n boundaries (str: string): [string, string] {\n let minstr = '';\n let maxstr = '';\n\n const [, placeholder, num] = str.match(/^(\\D*)(\\d*)(\\D*)/) || [];\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n\n return [minstr, maxstr];\n }\n\n // TODO str is a single char everytime\n /**\n @override\n */ \n doPrepare (ch: string, flags: AppendFlags={}): string | [string, ChangeDetails] {\n let details: ChangeDetails;\n [ch, details] = normalizePrepare(super.doPrepare(ch.replace(/\\D/g, ''), flags));\n\n if (!this.autofix || !ch) return ch;\n\n const fromStr = String(this.from).padStart(this.maxLength, '0');\n const toStr = String(this.to).padStart(this.maxLength, '0');\n\n let nextVal = this.value + ch;\n if (nextVal.length > this.maxLength) return '';\n\n const [minstr, maxstr] = this.boundaries(nextVal);\n\n if (Number(maxstr) < this.from) return fromStr[nextVal.length - 1];\n\n if (Number(minstr) > this.to) {\n if (this.autofix === 'pad' && nextVal.length < this.maxLength) {\n return ['', details.aggregate(this.append(fromStr[nextVal.length - 1]+ch, flags))];\n }\n return toStr[nextVal.length - 1];\n }\n\n return ch;\n }\n\n /**\n @override\n */\n doValidate (...args: *): boolean {\n const str = this.value;\n\n const firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n const [minstr, maxstr] = this.boundaries(str);\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to &&\n super.doValidate(...args);\n }\n}\n\n\nIMask.MaskedRange = MaskedRange;\n","// @flow\nimport MaskedPattern from './pattern.js';\nimport MaskedRange from './range.js';\nimport IMask from '../core/holder.js';\n\n\n/** Date mask */\nexport default\nclass MaskedDate extends MaskedPattern {\n static GET_DEFAULT_BLOCKS: () => {[string]: any};\n static DEFAULTS: any;\n\n /** Pattern mask for date according to {@link MaskedDate#format} */\n pattern: string;\n /** Start date */\n min: ?Date;\n /** End date */\n max: ?Date;\n /** */\n autofix: boolean | 'pad';\n\n /**\n @param {Object} opts\n */\n constructor (opts: any) {\n super({\n ...MaskedDate.DEFAULTS,\n ...opts\n });\n }\n\n /**\n @override\n */\n _update (opts: any) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n\n const blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS());\n // adjust year block\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to\n ) {\n opts.blocks.m.from = opts.min.getMonth() + 1;\n opts.blocks.m.to = opts.max.getMonth() + 1;\n\n if (opts.blocks.m.from === opts.blocks.m.to) {\n opts.blocks.d.from = opts.min.getDate();\n opts.blocks.d.to = opts.max.getDate();\n }\n }\n Object.assign(opts.blocks, this.blocks, blocks);\n\n // add autofix\n Object.keys(opts.blocks).forEach(bk => {\n const b = opts.blocks[bk];\n if (!('autofix' in b) && 'autofix' in opts) b.autofix = opts.autofix;\n });\n\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate (...args: *): boolean {\n const date = this.date;\n\n return super.doValidate(...args) &&\n (!this.isComplete ||\n this.isDateExist(this.value) && date != null &&\n (this.min == null || this.min <= date) &&\n (this.max == null || date <= this.max));\n }\n\n /** Checks if date is exists */\n isDateExist (str: string): boolean {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n\n /** Parsed Date */\n get date (): ?Date {\n return this.typedValue;\n }\n set date (date: Date) {\n this.typedValue = date;\n }\n\n /**\n @override\n */\n get typedValue (): ?Date {\n return this.isComplete ? super.typedValue : null;\n }\n set typedValue (value: Date) {\n super.typedValue = value;\n }\n\n /**\n @override\n */\n maskEquals (mask: any): boolean {\n return mask === Date || super.maskEquals(mask);\n }\n}\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: date => {\n if (!date) return '';\n\n const day = String(date.getDate()).padStart(2, '0');\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const year = date.getFullYear();\n\n return [day, month, year].join('.');\n },\n parse: str => {\n const [day, month, year] = str.split('.');\n return new Date(year, month - 1, day);\n },\n};\nMaskedDate.GET_DEFAULT_BLOCKS = () => ({\n d: {\n mask: MaskedRange,\n from: 1,\n to: 31,\n maxLength: 2,\n },\n m: {\n mask: MaskedRange,\n from: 1,\n to: 12,\n maxLength: 2,\n },\n Y: {\n mask: MaskedRange,\n from: 1900,\n to: 9999,\n }\n});\n\n\nIMask.MaskedDate = MaskedDate;\n","// @flow\nimport IMask from '../core/holder.js';\n\n\nexport\ntype ElementEvent =\n 'selectionChange' |\n 'input' |\n 'drop' |\n 'click' |\n 'focus' |\n 'commit';\n\n/**\n Generic element API to use with mask\n @interface\n*/\nexport default\nclass MaskElement {\n /** */\n +_unsafeSelectionStart: number;\n /** */\n +_unsafeSelectionEnd: number;\n /** */\n value: string;\n\n /** Safely returns selection start */\n get selectionStart (): number {\n let start;\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ?\n start :\n this.value.length;\n }\n\n /** Safely returns selection end */\n get selectionEnd (): number {\n let end;\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ?\n end :\n this.value.length;\n }\n\n /** Safely sets element selection */\n select (start: number, end: number) {\n if (start == null || end == null ||\n start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n\n /** Should be overriden in subclasses */\n _unsafeSelect (start: number, end: number): void {}\n /** Should be overriden in subclasses */\n get isActive (): boolean { return false; }\n /** Should be overriden in subclasses */\n bindEvents (handlers: {[ElementEvent]: Function}) {}\n /** Should be overriden in subclasses */\n unbindEvents (): void {}\n}\n\n\nIMask.MaskElement = MaskElement;\n","// @flow\nimport MaskElement, {type ElementEvent} from './mask-element.js';\nimport IMask from '../core/holder.js';\n\n\n/** Bridge between HTMLElement and {@link Masked} */\nexport default\nclass HTMLMaskElement extends MaskElement {\n /** Mapping between HTMLElement events and mask internal events */\n static EVENTS_MAP: {[ElementEvent]: string};\n /** HTMLElement to use mask on */\n input: HTMLTextAreaElement | HTMLInputElement;\n _handlers: {[string]: Function};\n\n /**\n @param {HTMLInputElement|HTMLTextAreaElement} input\n */\n constructor (input: HTMLTextAreaElement | HTMLInputElement) {\n super();\n this.input = input;\n this._handlers = {};\n }\n\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n get rootElement (): HTMLDocument {\n return this.input.getRootNode?.() ?? document;\n }\n\n /**\n Is element in focus\n @readonly\n */\n get isActive (): boolean {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart (): number {\n return this.input.selectionStart;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd (): number {\n return this.input.selectionEnd;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect (start: number, end: number) {\n this.input.setSelectionRange(start, end);\n }\n\n /**\n HTMLElement value\n @override\n */\n get value (): string {\n return this.input.value;\n }\n set value (value: string) {\n this.input.value = value;\n }\n\n /**\n Binds HTMLElement events to mask internal events\n @override\n */\n bindEvents (handlers: {[ElementEvent]: Function}) {\n Object.keys(handlers)\n .forEach(event => this._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]));\n }\n\n /**\n Unbinds HTMLElement events to mask internal events\n @override\n */\n unbindEvents () {\n Object.keys(this._handlers)\n .forEach(event => this._toggleEventHandler(event));\n }\n\n /** */\n _toggleEventHandler (event: string, handler?: Function): void {\n if (this._handlers[event]) {\n this.input.removeEventListener(event, this._handlers[event]);\n delete this._handlers[event];\n }\n\n if (handler) {\n this.input.addEventListener(event, handler);\n this._handlers[event] = handler;\n }\n }\n}\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur',\n};\n\n\nIMask.HTMLMaskElement = HTMLMaskElement;\n","// @flow\nimport HTMLMaskElement from './html-mask-element.js';\nimport IMask from '../core/holder.js';\n\n\nexport default\nclass HTMLContenteditableMaskElement extends HTMLMaskElement {\n /**\n Returns HTMLElement selection start\n @override\n */\n get _unsafeSelectionStart (): number {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset < focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Returns HTMLElement selection end\n @override\n */\n get _unsafeSelectionEnd (): number {\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n const anchorOffset = selection && selection.anchorOffset;\n const focusOffset = selection && selection.focusOffset;\n if (focusOffset == null || anchorOffset == null || anchorOffset > focusOffset) {\n return anchorOffset;\n }\n return focusOffset;\n }\n\n /**\n Sets HTMLElement selection\n @override\n */\n _unsafeSelect (start: number, end: number) {\n if (!this.rootElement.createRange) return;\n\n const range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n const root = this.rootElement;\n const selection = root.getSelection && root.getSelection();\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n\n /**\n HTMLElement value\n @override\n */\n get value (): string {\n // $FlowFixMe\n return this.input.textContent;\n }\n set value (value: string) {\n this.input.textContent = value;\n }\n}\n\n\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n","// @flow\nimport {objectIncludes, DIRECTION, type Selection} from '../core/utils.js';\nimport ActionDetails from '../core/action-details.js';\nimport MaskedDate from '../masked/date.js';\nimport createMask, {maskedClass} from '../masked/factory.js';\nimport type Masked from '../masked/base.js';\nimport {type Mask} from '../masked/base.js';\nimport MaskElement from './mask-element.js';\nimport HTMLMaskElement from './html-mask-element.js';\nimport HTMLContenteditableMaskElement from './html-contenteditable-mask-element.js';\nimport IMask from '../core/holder.js';\n\n\n/** Listens to element events and controls changes between element and {@link Masked} */\nexport default\nclass InputMask {\n /**\n View element\n @readonly\n */\n el: MaskElement;\n\n /**\n Internal {@link Masked} model\n @readonly\n */\n masked: Masked<*>;\n alignCursor: () => void;\n alignCursorFriendly: () => void;\n\n _listeners: {[string]: Array};\n _value: string;\n _changingCursorPos: number;\n _unmaskedValue: string;\n _saveSelection: (?Event) => void;\n _selection: Selection;\n _onInput: () => void;\n _onChange: () => void;\n _onDrop: (Event) => void;\n _onFocus: (Event) => void;\n _onClick: (Event) => void;\n _cursorChanging: ?TimeoutID;\n _inputEvent: ?InputEvent;\n\n /**\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\n @param {Object} opts\n */\n constructor (el: MaskElement | HTMLTextAreaElement | HTMLInputElement, opts: {[string]: any} | Masked<*>) {\n this.el =\n (el instanceof MaskElement) ? el :\n (el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA') ? new HTMLContenteditableMaskElement(el) :\n new HTMLMaskElement(el);\n this.masked = createMask(opts);\n\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\n\n this._saveSelection = this._saveSelection.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onChange = this._onChange.bind(this);\n this._onDrop = this._onDrop.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onClick = this._onClick.bind(this);\n this.alignCursor = this.alignCursor.bind(this);\n this.alignCursorFriendly = this.alignCursorFriendly.bind(this);\n\n this._bindEvents();\n\n // refresh\n this.updateValue();\n this._onChange();\n }\n\n /** Read or update mask */\n get mask (): Mask {\n return this.masked.mask;\n }\n\n maskEquals (mask: Mask): boolean {\n return mask == null || this.masked?.maskEquals(mask);\n }\n\n set mask (mask: Mask) {\n if (this.maskEquals(mask)) return;\n\n // $FlowFixMe No ideas ... after update\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({mask});\n return;\n }\n\n const masked = createMask({mask});\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n\n /** Raw value */\n get value (): string {\n return this._value;\n }\n\n set value (str: string) {\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Unmasked value */\n get unmaskedValue (): string {\n return this._unmaskedValue;\n }\n\n set unmaskedValue (str: string) {\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n\n /** Typed unmasked value */\n get typedValue (): any {\n return this.masked.typedValue;\n }\n\n set typedValue (val: any) {\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n\n /**\n Starts listening to element events\n @protected\n */\n _bindEvents () {\n this.el.bindEvents({\n selectionChange: this._saveSelection,\n input: this._onInput,\n drop: this._onDrop,\n click: this._onClick,\n focus: this._onFocus,\n commit: this._onChange,\n });\n }\n\n /**\n Stops listening to element events\n @protected\n */\n _unbindEvents () {\n if (this.el) this.el.unbindEvents();\n }\n\n /**\n Fires custom event\n @protected\n */\n _fireEvent (ev: string, ...args: *) {\n const listeners = this._listeners[ev];\n if (!listeners) return;\n\n listeners.forEach(l => l(...args));\n }\n\n /**\n Current selection start\n @readonly\n */\n get selectionStart (): number {\n return this._cursorChanging ?\n this._changingCursorPos :\n\n this.el.selectionStart;\n }\n\n /** Current cursor position */\n get cursorPos (): number {\n return this._cursorChanging ?\n this._changingCursorPos :\n\n this.el.selectionEnd;\n }\n set cursorPos (pos: number) {\n if (!this.el || !this.el.isActive) return;\n\n this.el.select(pos, pos);\n this._saveSelection();\n }\n\n /**\n Stores current selection\n @protected\n */\n _saveSelection (/* ev */) {\n if (this.value !== this.el.value) {\n console.warn('Element value was changed outside of mask. Syncronize mask using `mask.updateValue()` to work properly.'); // eslint-disable-line no-console\n }\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n\n /** Syncronizes model value from view */\n updateValue () {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n\n /** Syncronizes view from model value, fires change events */\n updateControl () {\n const newUnmaskedValue = this.masked.unmaskedValue;\n const newValue = this.masked.value;\n const isChanged = (this.unmaskedValue !== newUnmaskedValue ||\n this.value !== newValue);\n\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n updateOptions (opts: {[string]: any}) {\n const { mask, ...restOpts } = opts;\n\n const updateMask = !this.maskEquals(mask);\n const updateOpts = !objectIncludes(this.masked, restOpts);\n\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n\n if (updateMask || updateOpts) this.updateControl();\n }\n\n /** Updates cursor */\n updateCursor (cursorPos: number) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos;\n\n // also queue change cursor for mobile browsers\n this._delayUpdateCursor(cursorPos);\n }\n\n /**\n Delays cursor update to support mobile browsers\n @private\n */\n _delayUpdateCursor (cursorPos: number) {\n this._abortUpdateCursor();\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(() => {\n if (!this.el) return; // if was destroyed\n this.cursorPos = this._changingCursorPos;\n this._abortUpdateCursor();\n }, 10);\n }\n\n /**\n Fires custom events\n @protected\n */\n _fireChangeEvents () {\n this._fireEvent('accept', this._inputEvent);\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n\n /**\n Aborts delayed cursor update\n @private\n */\n _abortUpdateCursor () {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n\n /** Aligns cursor to nearest available position */\n alignCursor () {\n this.cursorPos = this.masked.nearestInputPos(this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT));\n }\n\n /** Aligns cursor only if selection is empty */\n alignCursorFriendly () {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n this.alignCursor();\n }\n\n /** Adds listener on custom event */\n on (ev: string, handler: Function): this {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n this._listeners[ev].push(handler);\n return this;\n }\n\n /** Removes custom event listener */\n off (ev: string, handler: Function): this {\n if (!this._listeners[ev]) return this;\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n const hIndex = this._listeners[ev].indexOf(handler);\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n\n /** Handles view input event */\n _onInput (e: InputEvent): void {\n this._inputEvent = e;\n this._abortUpdateCursor();\n\n // fix strange IE behavior\n if (!this._selection) return this.updateValue();\n\n const details = new ActionDetails(\n // new state\n this.el.value, this.cursorPos,\n // old state\n this.value, this._selection,\n );\n\n const oldRawValue = this.masked.rawInputValue;\n\n const offset = this.masked.splice(\n details.startChangePos,\n details.removed.length,\n details.inserted,\n details.removeDirection,\n ).offset;\n\n // force align in remove direction only if no input chars were removed\n // otherwise we still need to align with NONE (to get out from fixed symbols for instance)\n const removeDirection = oldRawValue === this.masked.rawInputValue ?\n details.removeDirection :\n DIRECTION.NONE;\n\n let cursorPos = this.masked.nearestInputPos(\n details.startChangePos + offset,\n removeDirection,\n );\n if (removeDirection !== DIRECTION.NONE) cursorPos = this.masked.nearestInputPos(cursorPos, DIRECTION.NONE);\n\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n\n /** Handles view change event and commits model value */\n _onChange () {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n this.masked.doCommit();\n this.updateControl();\n this._saveSelection();\n }\n\n /** Handles view drop event, prevents by default */\n _onDrop (ev: Event) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n\n /** Restore last selection on focus */\n _onFocus (ev: Event) {\n this.alignCursorFriendly();\n }\n\n /** Restore last selection on focus */\n _onClick (ev: Event) {\n this.alignCursorFriendly();\n }\n\n /** Unbind view events and removes element reference */\n destroy () {\n this._unbindEvents();\n // $FlowFixMe why not do so?\n this._listeners.length = 0;\n // $FlowFixMe\n delete this.el;\n }\n}\n\n\nIMask.InputMask = InputMask;\n","// @flow\nimport MaskedPattern from './pattern.js';\nimport IMask from '../core/holder.js';\n\n\n/** Pattern which validates enum values */\nexport default\nclass MaskedEnum extends MaskedPattern {\n enum: Array;\n\n /**\n @override\n @param {Object} opts\n */\n _update (opts: any) { // TODO type\n if (opts.enum) opts.mask = '*'.repeat(opts.enum[0].length);\n\n super._update(opts);\n }\n\n /**\n @override\n */\n doValidate (...args: *): boolean {\n return this.enum.some(e => e.indexOf(this.unmaskedValue) >= 0) &&\n super.doValidate(...args);\n }\n}\n\n\nIMask.MaskedEnum = MaskedEnum;\n","// @flow\nimport { escapeRegExp, indexInDirection, posInDirection, type Direction, DIRECTION, normalizePrepare } from '../core/utils.js';\nimport ChangeDetails from '../core/change-details.js';\n\nimport Masked, { type MaskedOptions, type ExtractFlags, type AppendFlags } from './base.js';\nimport IMask from '../core/holder.js';\n\n\ntype MaskedNumberOptions = {\n ...MaskedOptions>,\n radix: $PropertyType,\n thousandsSeparator: $PropertyType,\n mapToRadix: $PropertyType,\n scale: $PropertyType,\n signed: $PropertyType,\n normalizeZeros: $PropertyType,\n padFractionalZeros: $PropertyType,\n};\n\n/**\n Number mask\n @param {Object} opts\n @param {string} opts.radix - Single char\n @param {string} opts.thousandsSeparator - Single char\n @param {Array} opts.mapToRadix - Array of single chars\n @param {number} opts.min\n @param {number} opts.max\n @param {number} opts.scale - Digits after point\n @param {boolean} opts.signed - Allow negative\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\n*/\nexport default\nclass MaskedNumber extends Masked> {\n static DEFAULTS: $Shape;\n\n /** Single char */\n radix: string;\n /** Single char */\n thousandsSeparator: string;\n /** Array of single chars */\n mapToRadix: Array;\n /** */\n min: number;\n /** */\n max: number;\n /** Digits after point */\n scale: number;\n /** */\n signed: boolean;\n /** Flag to remove leading and trailing zeros in the end of editing */\n normalizeZeros: boolean;\n /** Flag to pad trailing zeros after point in the end of editing */\n padFractionalZeros: boolean;\n\n _numberRegExp: RegExp;\n _numberRegExpInput: RegExp;\n _thousandsSeparatorRegExp: RegExp;\n _mapToRadixRegExp: RegExp;\n _separatorsProcessed: boolean;\n\n constructor (opts: $Shape) {\n super({\n ...MaskedNumber.DEFAULTS,\n ...opts\n });\n }\n\n /**\n @override\n */\n _update (opts: MaskedNumberOptions) {\n super._update(opts);\n this._updateRegExps();\n }\n\n /** */\n _updateRegExps () {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n let start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n let midInput = '(0|([1-9]+\\\\d*))?';\n let mid = '\\\\d*';\n\n let end = (this.scale ?\n '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' :\n '') + '$';\n\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' +\n this.mapToRadix.map(escapeRegExp).join('') +\n ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n\n /** */\n _removeThousandsSeparators (value: string): string {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n\n /** */\n _insertThousandsSeparators (value: string): string {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n const parts = value.split(this.radix);\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandsSeparator);\n return parts.join(this.radix);\n }\n\n /**\n @override\n */\n doPrepare (ch: string, ...args: *): string | [string, ChangeDetails] {\n ch = ch.replace(this._mapToRadixRegExp, this.radix);\n const noSepCh = this._removeThousandsSeparators(ch);\n const [prepCh, details] = normalizePrepare(super.doPrepare(noSepCh, ...args));\n if (ch && !noSepCh) details.skip = true;\n return [prepCh, details];\n }\n\n /** */\n _separatorsCount (to: number, extendOnSeparators: boolean=false): number {\n let count = 0;\n\n for (let pos = 0; pos < to; ++pos) {\n if (this._value.indexOf(this.thousandsSeparator, pos) === pos) {\n ++count;\n if (extendOnSeparators) to += this.thousandsSeparator.length;\n }\n }\n\n return count;\n }\n\n /** */\n _separatorsCountFromSlice (slice: string=this._value): number {\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n\n /**\n @override\n */\n extractInput (fromPos?: number=0, toPos?: number=this.value.length, flags?: ExtractFlags): string {\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n\n return this._removeThousandsSeparators(super.extractInput(fromPos, toPos, flags));\n }\n\n /**\n @override\n */\n _appendCharRaw (ch: string, flags: AppendFlags={}): ChangeDetails {\n if (!this.thousandsSeparator) return super._appendCharRaw(ch, flags);\n\n const prevBeforeTailValue = flags.tail && flags._beforeTailState ?\n flags._beforeTailState._value :\n this._value;\n const prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n this._value = this._removeThousandsSeparators(this.value);\n\n const appendDetails = super._appendCharRaw(ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n const beforeTailValue = flags.tail && flags._beforeTailState ?\n flags._beforeTailState._value :\n this._value;\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(beforeTailValue);\n\n appendDetails.tailShift += (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length;\n appendDetails.skip = !appendDetails.rawInserted && ch === this.thousandsSeparator;\n return appendDetails;\n }\n\n /** */\n _findSeparatorAround (pos: number): number {\n if (this.thousandsSeparator) {\n const searchFrom = pos - this.thousandsSeparator.length + 1;\n const separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n\n _adjustRangeWithSeparators (from: number, to: number): [number, number] {\n const separatorAroundFromPos = this._findSeparatorAround(from);\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n const separatorAroundToPos = this._findSeparatorAround(to);\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n\n /**\n @override\n */\n remove (fromPos?: number=0, toPos?: number=this.value.length): ChangeDetails {\n [fromPos, toPos] = this._adjustRangeWithSeparators(fromPos, toPos);\n\n const valueBeforePos = this.value.slice(0, fromPos);\n const valueAfterPos = this.value.slice(toPos);\n\n const prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n const beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length,\n });\n }\n\n /**\n @override\n */\n nearestInputPos (cursorPos: number, direction?: Direction): number {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT: {\n const separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n if (separatorAtLeftPos >= 0) {\n const separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n if (cursorPos < separatorAtLeftEndPos ||\n this.value.length <= separatorAtLeftEndPos ||\n direction === DIRECTION.FORCE_LEFT\n ) {\n return separatorAtLeftPos;\n }\n }\n break;\n }\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT: {\n const separatorAtRightPos = this._findSeparatorAround(cursorPos);\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n\n /**\n @override\n */\n doValidate (flags: AppendFlags): boolean {\n const regexp = flags.input ? this._numberRegExpInput : this._numberRegExp;\n\n // validate as string\n let valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n const number = this.number;\n valid = valid && !isNaN(number) &&\n // check min bound for negative values\n (this.min == null || this.min >= 0 || this.min <= this.number) &&\n // check max bound for positive values\n (this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && super.doValidate(flags);\n }\n\n /**\n @override\n */\n doCommit () {\n if (this.value) {\n const number = this.number;\n let validnum = number;\n\n // check bounds\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n\n if (validnum !== number) this.unmaskedValue = String(validnum);\n\n let formatted = this.value;\n\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros && this.scale > 0) formatted = this._padFractionalZeros(formatted);\n\n this._value = formatted;\n }\n\n super.doCommit();\n }\n\n /** */\n _normalizeZeros (value: string): string {\n const parts = this._removeThousandsSeparators(value).split(this.radix);\n\n // remove leading zeros\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, (match, sign, zeros, num) => sign + num);\n // add leading zero\n if (value.length && !/\\d$/.test(parts[0])) parts[0] = parts[0] + '0';\n\n if (parts.length > 1) {\n parts[1] = parts[1].replace(/0*$/, ''); // remove trailing zeros\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n\n /** */\n _padFractionalZeros (value: string): string {\n if (!value) return value;\n\n const parts = value.split(this.radix);\n if (parts.length < 2) parts.push('');\n parts[1] = parts[1].padEnd(this.scale, '0');\n return parts.join(this.radix);\n }\n\n /**\n @override\n */\n get unmaskedValue (): string {\n return this._removeThousandsSeparators(\n this._normalizeZeros(\n this.value))\n .replace(this.radix, '.');\n }\n\n set unmaskedValue (unmaskedValue: string) {\n super.unmaskedValue = unmaskedValue.replace('.', this.radix);\n }\n\n /**\n @override\n */\n get typedValue (): number {\n return Number(this.unmaskedValue);\n }\n\n set typedValue (n: number) {\n super.unmaskedValue = String(n);\n }\n\n /** Parsed Number */\n get number (): number {\n return this.typedValue;\n }\n\n set number (number: number) {\n this.typedValue = number;\n }\n\n /**\n Is negative allowed\n @readonly\n */\n get allowNegative (): boolean {\n return this.signed ||\n (this.min != null && this.min < 0) ||\n (this.max != null && this.max < 0);\n }\n}\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false,\n};\n\n\nIMask.MaskedNumber = MaskedNumber;\n","// @flow\nimport Masked, { type MaskedOptions } from './base.js';\nimport IMask from '../core/holder.js';\n\n\n/** Masking by custom Function */\nexport default\nclass MaskedFunction extends Masked {\n /**\n @override\n @param {Object} opts\n */\n _update (opts: MaskedOptions) {\n if (opts.mask) opts.validate = opts.mask;\n super._update(opts);\n }\n}\n\n\nIMask.MaskedFunction = MaskedFunction;\n","// @flow\nimport ChangeDetails from '../core/change-details.js';\nimport createMask from './factory.js';\nimport Masked, { type AppendFlags, type MaskedState } from './base.js';\nimport { type TailDetails } from '../core/tail-details.js';\nimport IMask from '../core/holder.js';\n\n\ntype MaskedDynamicState = {|\n ...MaskedState,\n _rawInputValue: string,\n compiledMasks: Array<*>,\n currentMaskRef: ?Masked<*>,\n currentMask: *,\n|};\n\ntype DynamicMaskType = Array<{[string]: any}>;\n/** Dynamic mask for choosing apropriate mask in run-time */\nexport default\nclass MaskedDynamic extends Masked {\n /** Currently chosen mask */\n currentMask: ?Masked<*>;\n /** Compliled {@link Masked} options */\n compiledMasks: Array>;\n /** Chooses {@link Masked} depending on input value */\n dispatch: (string, Masked<*>, AppendFlags) => Masked<*>;\n\n /**\n @param {Object} opts\n */\n constructor (opts: any) {\n super({\n ...MaskedDynamic.DEFAULTS,\n ...opts\n });\n\n this.currentMask = null;\n }\n\n /**\n @override\n */\n _update (opts: any) {\n super._update(opts);\n if ('mask' in opts) {\n // mask could be totally dynamic with only `dispatch` option\n this.compiledMasks = Array.isArray(opts.mask) ?\n opts.mask.map(m => createMask(m)) :\n [];\n }\n }\n\n /**\n @override\n */\n _appendCharRaw (ch: string, flags: AppendFlags={}): ChangeDetails {\n const details = this._applyDispatch(ch, flags);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendChar(ch, flags));\n }\n\n return details;\n }\n\n _applyDispatch (appended: string='', flags: AppendFlags={}): ChangeDetails {\n const prevValueBeforeTail = flags.tail && flags._beforeTailState != null ?\n flags._beforeTailState._value :\n this.value;\n const inputValue = this.rawInputValue;\n const insertValue = flags.tail && flags._beforeTailState != null ?\n // $FlowFixMe - tired to fight with type system\n flags._beforeTailState._rawInputValue :\n inputValue;\n const tailValue = inputValue.slice(insertValue.length);\n const prevMask = this.currentMask;\n const details = new ChangeDetails();\n\n const prevMaskState = prevMask && prevMask.state;\n\n // clone flags to prevent overwriting `_beforeTailState`\n this.currentMask = this.doDispatch(appended, { ...flags });\n\n // restore state after dispatch\n if (this.currentMask) {\n if (this.currentMask !== prevMask) {\n // if mask changed reapply input\n this.currentMask.reset();\n\n if (insertValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n const d = this.currentMask.append(insertValue, {raw: true});\n details.tailShift = d.inserted.length - prevValueBeforeTail.length;\n }\n\n if (tailValue) {\n // $FlowFixMe - it's ok, we don't change current mask above\n details.tailShift += this.currentMask.append(tailValue, {raw: true, tail: true}).tailShift;\n }\n } else {\n // Dispatch can do something bad with state, so\n // restore prev mask state\n this.currentMask.state = prevMaskState;\n }\n }\n\n return details;\n }\n\n _appendPlaceholder (...args: *): ChangeDetails {\n const details = this._applyDispatch(...args);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendPlaceholder());\n }\n\n return details;\n }\n\n /**\n @override\n */\n _appendEager (...args: *): ChangeDetails {\n const details = this._applyDispatch(...args);\n\n if (this.currentMask) {\n details.aggregate(this.currentMask._appendEager());\n }\n\n return details;\n }\n\n /**\n @override\n */\n doDispatch(appended: string, flags: AppendFlags={}): ?Masked<*> {\n return this.dispatch(appended, this, flags);\n }\n\n /**\n @override\n */\n doValidate (...args: *): boolean {\n return super.doValidate(...args) && (\n !this.currentMask || this.currentMask.doValidate(...args));\n }\n\n /**\n @override\n */\n reset () {\n this.currentMask?.reset();\n this.compiledMasks.forEach(m => m.reset());\n }\n\n /**\n @override\n */\n get value (): string {\n return this.currentMask ? this.currentMask.value : '';\n }\n\n set value (value: string) {\n super.value = value;\n }\n\n /**\n @override\n */\n get unmaskedValue (): string {\n return this.currentMask ? this.currentMask.unmaskedValue : '';\n }\n\n set unmaskedValue (unmaskedValue: string) {\n super.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get typedValue (): any {\n return this.currentMask ? this.currentMask.typedValue : '';\n }\n\n // probably typedValue should not be used with dynamic\n set typedValue (value: any) {\n let unmaskedValue = String(value);\n\n // double check it\n if (this.currentMask) {\n this.currentMask.typedValue = value;\n unmaskedValue = this.currentMask.unmaskedValue;\n }\n this.unmaskedValue = unmaskedValue;\n }\n\n /**\n @override\n */\n get isComplete (): boolean {\n return Boolean(this.currentMask?.isComplete);\n }\n\n /**\n @override\n */\n get isFilled (): boolean {\n return Boolean(this.currentMask?.isFilled);\n }\n\n /**\n @override\n */\n remove (...args: *): ChangeDetails {\n const details: ChangeDetails = new ChangeDetails();\n if (this.currentMask) {\n details.aggregate(this.currentMask.remove(...args))\n // update with dispatch\n .aggregate(this._applyDispatch());\n }\n\n return details;\n }\n\n /**\n @override\n */\n get state (): MaskedDynamicState {\n return {\n ...super.state,\n _rawInputValue: this.rawInputValue,\n compiledMasks: this.compiledMasks.map(m => m.state),\n currentMaskRef: this.currentMask,\n currentMask: this.currentMask && this.currentMask.state,\n };\n }\n\n set state (state: MaskedDynamicState) {\n const {compiledMasks, currentMaskRef, currentMask, ...maskedState} = state;\n this.compiledMasks.forEach((m, mi) => m.state = compiledMasks[mi]);\n if (currentMaskRef != null) {\n this.currentMask = currentMaskRef;\n this.currentMask.state = currentMask;\n }\n super.state = maskedState;\n }\n\n /**\n @override\n */\n extractInput (...args: *): string {\n return this.currentMask ?\n this.currentMask.extractInput(...args) :\n '';\n }\n\n /**\n @override\n */\n extractTail (...args: *): TailDetails {\n return this.currentMask ?\n this.currentMask.extractTail(...args) :\n super.extractTail(...args);\n }\n\n /**\n @override\n */\n doCommit () {\n if (this.currentMask) this.currentMask.doCommit();\n super.doCommit();\n }\n\n /**\n @override\n */\n nearestInputPos(...args: *): number {\n return this.currentMask ?\n this.currentMask.nearestInputPos(...args) :\n super.nearestInputPos(...args);\n }\n\n get overwrite (): ?boolean | 'shift' {\n return this.currentMask ?\n this.currentMask.overwrite :\n super.overwrite;\n }\n\n set overwrite (overwrite: *) {\n console.warn('\"overwrite\" option is not available in dynamic mask, use this option in siblings');\n }\n\n get eager (): boolean {\n return this.currentMask ?\n this.currentMask.eager :\n super.eager;\n }\n\n set eager (eager: *) {\n console.warn('\"eager\" option is not available in dynamic mask, use this option in siblings');\n }\n\n /**\n @override\n */\n maskEquals (mask: any): boolean {\n return Array.isArray(mask) &&\n this.compiledMasks.every((m, mi) => m.maskEquals(mask[mi]?.mask));\n }\n}\n\nMaskedDynamic.DEFAULTS = {\n dispatch: (appended, masked, flags) => {\n if (!masked.compiledMasks.length) return;\n\n const inputValue = masked.rawInputValue;\n\n // simulate input\n const inputs = masked.compiledMasks.map((m, index) => {\n m.reset();\n m.append(inputValue, { raw: true });\n m.append(appended, flags);\n const weight = m.rawInputValue.length;\n\n return {weight, index};\n });\n\n // pop masks with longer values first\n inputs.sort((i1, i2) => i2.weight - i1.weight);\n\n return masked.compiledMasks[inputs[0].index];\n }\n};\n\n\nIMask.MaskedDynamic = MaskedDynamic;\n","import createMask from './factory';\nimport IMask from '../core/holder.js';\n\n\n/** Mask pipe source and destination types */\nexport\nconst PIPE_TYPE = {\n MASKED: 'value',\n UNMASKED: 'unmaskedValue',\n TYPED: 'typedValue',\n};\n\n/** Creates new pipe function depending on mask type, source and destination options */\nexport\nfunction createPipe (mask, from=PIPE_TYPE.MASKED, to=PIPE_TYPE.MASKED) {\n const masked = createMask(mask);\n return (value) => masked.runIsolated(m => {\n m[from] = value;\n return m[to];\n });\n}\n\n/** Pipes value through mask depending on mask type, source and destination options */\nexport\nfunction pipe (value, ...pipeArgs) {\n return createPipe(...pipeArgs)(value);\n}\n\n\nIMask.PIPE_TYPE = PIPE_TYPE;\nIMask.createPipe = createPipe;\nIMask.pipe = pipe;\n","import IMask from './imask.js';\nexport { default as InputMask } from './controls/input.js';\n\nexport { default as Masked } from './masked/base.js';\nexport { default as MaskedPattern } from './masked/pattern.js';\nexport { default as MaskedEnum } from './masked/enum.js';\nexport { default as MaskedRange } from './masked/range.js';\nexport { default as MaskedNumber } from './masked/number.js';\nexport { default as MaskedDate } from './masked/date.js';\nexport { default as MaskedRegExp } from './masked/regexp.js';\nexport { default as MaskedFunction } from './masked/function.js';\nexport { default as MaskedDynamic } from './masked/dynamic.js';\nexport { default as createMask } from './masked/factory.js';\nexport { default as MaskElement } from './controls/mask-element.js';\nexport { default as HTMLMaskElement } from './controls/html-mask-element.js';\nexport { default as HTMLContenteditableMaskElement } from './controls/html-contenteditable-mask-element.js';\nexport { createPipe, pipe, PIPE_TYPE } from './masked/pipe.js';\n\ntry {\n globalThis.IMask = IMask;\n} catch(e) {}\nexport default IMask;\n"],"names":["check","it","Math","module","globalThis","window","self","global","Function","exec","error","fails","require","Object","defineProperty","get","test","bind","hasOwnProperty","NATIVE_BIND","call","prototype","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","V","descriptor","enumerable","bitmap","value","configurable","writable","FunctionPrototype","uncurryThis","fn","toString","stringSlice","slice","classof","split","TypeError","undefined","IndexedObject","requireObjectCoercible","argument","isCallable","aFunction","namespace","method","length","isPrototypeOf","getBuiltIn","userAgent","process","Deno","versions","version","v8","match","V8_VERSION","getOwnPropertySymbols","symbol","Symbol","String","sham","NATIVE_SYMBOL","iterator","USE_SYMBOL_AS_UID","$Symbol","tryToString","aCallable","P","func","isObject","input","pref","val","valueOf","key","setGlobal","SHARED","store","push","mode","copyright","license","source","toObject","hasOwn","id","postfix","random","shared","uid","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","name","description","isSymbol","getMethod","ordinaryToPrimitive","wellKnownSymbol","TO_PRIMITIVE","exoticToPrim","result","toPrimitive","document","EXISTS","createElement","DESCRIPTORS","a","propertyIsEnumerableModule","createPropertyDescriptor","toIndexedObject","toPropertyKey","IE8_DOM_DEFINE","$getOwnPropertyDescriptor","O","f","V8_PROTOTYPE_DEFINE_BUG","anObject","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","Attributes","current","definePropertyModule","object","functionToString","inspectSource","WeakMap","keys","NATIVE_WEAK_MAP","createNonEnumerableProperty","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","set","has","enforce","getterFor","TYPE","state","type","wmget","wmhas","wmset","metadata","facade","STATE","getDescriptor","PROPER","something","InternalStateModule","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","replace","join","ceil","floor","number","toIntegerOrInfinity","max","min","index","integer","toLength","obj","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","indexOf","names","i","internalObjectKeys","enumBugKeys","concat","getOwnPropertyNames","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","target","exceptions","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","redefine","copyConstructorProperties","TARGET","GLOBAL","STATIC","stat","FORCED","targetProperty","sourceProperty","forced","objectKeys","$assign","assign","b","A","B","alphabet","forEach","chr","T","argumentsLength","S","j","$","TO_STRING_TAG","TO_STRING_TAG_SUPPORT","classofRaw","CORRECT_ARGUMENTS","tryGet","tag","callee","RangeError","repeat","count","str","n","Infinity","proto","$repeat","IS_END","maxLength","fillString","intMaxLength","stringLength","fillStr","fillLen","stringFiller","start","end","$padStart","WEBKIT_BUG","padStart","$padEnd","padEnd","ChangeDetails","details","inserted","rawInserted","skip","tailShift","isString","DIRECTION","NONE","LEFT","FORCE_LEFT","RIGHT","FORCE_RIGHT","forceDirection","direction","escapeRegExp","normalizePrepare","prep","Array","isArray","objectIncludes","arrA","arrB","dateA","Date","dateB","getTime","regexpA","RegExp","regexpB","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","substr","insertedCount","removedCount","substring","ContinuousTailDetails","from","stop","tail","masked","append","aggregate","_appendPlaceholder","beforePos","shiftChar","IMask","opts","InputMask","Masked","_value","_update","DEFAULTS","isInitialized","withValueRefresh","resolve","reset","doCommit","doParse","doFormat","extractInput","raw","isComplete","fromPos","toPos","appendTo","ch","flags","checkTail","consistentState","doPrepare","_appendCharRaw","consistentTail","appended","doValidate","beforeTailState","overwrite","unshift","tailDetails","appendTail","shift","Error","_beforeTailState","ci","_appendChar","eager","_appendEager","_refreshing","rawInput","rawInputValue","ret","_isolated","prepare","validate","parent","commit","format","parse","deleteCount","removeDirection","tailPos","extractTail","oldRawValue","nearestInputPos","remove","valLength","mask","v","maskedClass","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","constructor","MaskedFunction","console","warn","createMask","MaskedClass","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","blockOpts","isFilled","isOptional","placeholderChar","unmaskedValue","Boolean","lazy","minPos","maxPos","boundPos","PatternFixedDefinition","isFixed","isUnmasking","_isRawInput","char","isResolved","ChunksTailDetails","chunks","map","tailChunk","lastChunk","extendLast","extend","firstTailChunk","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","c","props","cstate","chunkShiftPos","splice","PatternCursor","pos","_log","offset","ok","_blockStartPos","s","pop","block","pushState","bindBlock","_pushLeft","_pushRight","search","definitions","_rebuildMask","defs","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","p","bNames","filter","bName","sort","maskedBlock","isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","reduce","startBlockIndex","d","blockIter","blockDetails","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","_","stopBefore","si","toBlockIndex","startBlockIter","endBlockIndex","args","bDetails","accVal","blockStartPos","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","cursor","pushRightBeforeInput","popState","pushLeftBeforeInput","pushRightBeforeFilled","pushLeftBeforeRequired","pushLeftBeforeFilled","pushRightBeforeRequired","maskedBlocks","indices","gi","InputDefinition","FixedDefinition","MaskedRange","to","fromStr","toStr","sameCharsCount","minstr","maxstr","placeholder","num","autofix","nextVal","boundaries","firstNonZero","_matchFrom","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","getDate","bk","date","isDateExist","typedValue","day","month","year","MaskElement","_unsafeSelectionStart","e","_unsafeSelectionEnd","selectionStart","selectionEnd","_unsafeSelect","handlers","HTMLMaskElement","_handlers","getRootNode","rootElement","activeElement","setSelectionRange","event","_toggleEventHandler","EVENTS_MAP","handler","removeEventListener","addEventListener","selectionChange","drop","click","focus","HTMLContenteditableMaskElement","root","selection","getSelection","anchorOffset","focusOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","updateOptions","updateControl","bindEvents","unbindEvents","ev","listeners","l","_cursorChanging","_changingCursorPos","isActive","select","_selection","newUnmaskedValue","newValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_fireEvent","_inputEvent","clearTimeout","hIndex","removed","updateCursor","preventDefault","stopPropagation","_unbindEvents","MaskedEnum","enum","some","_updateRegExps","allowNegative","midInput","mid","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","parts","noSepCh","_removeThousandsSeparators","prepCh","extendOnSeparators","_separatorsCount","_adjustRangeWithSeparators","prevBeforeTailValue","prevBeforeTailSeparatorsCount","_separatorsCountFromSlice","appendDetails","_insertThousandsSeparators","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","_findSeparatorAround","separatorAroundToPos","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","regexp","valid","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","currentMask","compiledMasks","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","dispatch","currentMaskRef","mi","inputs","weight","i1","i2","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","runIsolated","pipe","pipeArgs"],"mappings":"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"}