{"version":3,"file":"imask.min.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/engine-v8-version.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/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/internal-state.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/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","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","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","/* 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 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 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 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","this","Function","exec","error","require","Object","defineProperty","get","test","bind","hasOwnProperty","NATIVE_BIND","call","prototype","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","V","descriptor","enumerable","match","version","bitmap","value","configurable","writable","FunctionPrototype","uncurryThis","fn","toString","stringSlice","slice","fails","classof","split","TypeError","undefined","IndexedObject","requireObjectCoercible","argument","isCallable","aFunction","namespace","method","length","isPrototypeOf","userAgent","process","Deno","versions","v8","V8_VERSION","getOwnPropertySymbols","symbol","Symbol","String","sham","iterator","getBuiltIn","USE_SYMBOL_AS_UID","$Symbol","tryToString","aCallable","isObject","key","setGlobal","SHARED","store","push","mode","copyright","license","source","toObject","hasOwn","id","postfix","random","shared","uid","NATIVE_SYMBOL","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","name","description","isSymbol","getMethod","P","func","ordinaryToPrimitive","input","pref","val","valueOf","wellKnownSymbol","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","document","EXISTS","createElement","a","DESCRIPTORS","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","set","has","WeakMap","keys","NATIVE_WEAK_MAP","createNonEnumerableProperty","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","state","wmget","wmhas","wmset","metadata","facade","STATE","enforce","getterFor","TYPE","type","getDescriptor","PROPER","CONFIGURABLE_FUNCTION_NAME","getInternalState","enforceInternalState","TEMPLATE","options","unsafe","simple","noTargetGet","replace","join","ceil","floor","number","toIntegerOrInfinity","max","min","toLength","toAbsoluteIndex","index","integer","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","indexOf","names","i","internalObjectKeys","concat","getOwnPropertyNames","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","redefine","copyConstructorProperties","target","exceptions","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","forced","enumBugKeys","objectKeys","$assign","assign","b","A","B","alphabet","forEach","chr","T","argumentsLength","S","j","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","RangeError","count","str","n","Infinity","proto","repeat","IS_END","maxLength","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","start","end","$padStart","padStart","$padEnd","padEnd","ChangeDetails","details","inserted","rawInserted","skip","tailShift","isString","DIRECTION","escapeRegExp","normalizePrepare","prep","Array","isArray","objectIncludes","arrA","arrB","_typeof","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","direction","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","oldRawValue","tailPos","extractTail","forceDirection","nearestInputPos","remove","valLength","mask","maskedClass","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","constructor","MaskedFunction","console","warn","createMask","MaskedClass","v","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","_this","_this2","_this3","_pushRight","_this4","_this5","_this6","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","_get","startBlockIndex","_this$_mapPosToBlock","d","blockIter","blockDetails","_flags$_beforeTailSta","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","_this$input$getRootNo2","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","_this$masked","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","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","valid","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","currentMask","compiledMasks","_applyDispatch","prevValueBeforeTail","inputValue","insertValue","_rawInputValue","tailValue","prevMask","prevMaskState","doDispatch","dispatch","_this$currentMask3","_this$currentMask4","currentMaskRef","mi","_mask$mi","inputs","weight","i1","i2","PIPE_TYPE","MASKED","UNMASKED","TYPED","createPipe","runIsolated","pipe","pipeArgs"],"mappings":"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"}