{"version":3,"sources":["../../../node_modules/@paypalcorp/pp-react-links/dist/@paypalcorp/pp-react-links.esm.js","../../../node_modules/@paypalcorp/pp-react-loading-spinner/dist/@paypalcorp/pp-react-loading-spinner.esm.js","../../../node_modules/@paypalcorp/pp-react-intl/dist/@paypalcorp/pp-react-intl.esm.js","../../../node_modules/@paypalcorp/pp-react-radio/dist/@paypalcorp/pp-react-radio.esm.js","../../../node_modules/@paypalcorp/pp-react-masked-text-input/dist/@paypalcorp/pp-react-masked-text-input.esm.js"],"names":["styles","Link","_ref","ref","_clsx","inverse","secondary","className","leftIcon","children","_ref$as","as","theme","rest","_theme","target","rel","attrStr","_len","arguments","length","attrs","Array","_key","from","Set","concat","split","filter","i","join","leftIconElm","createElement","cls","ownKeys","object","enumerableOnly","keys","Object","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","enumerable","push","apply","loadingSpinnerClass","srClass","sizes","xs","sm","md","lg","xl","LoadingSpinner","size","screenReaderText","source","forEach","key","getOwnPropertyDescriptors","defineProperties","defineProperty","_objectSpread","role","IntlContext","createContext","getFormattedMessage","intlContext","defaultMessage","id","variables","messageFormatter","format","RadioCheckIcon","viewBox","xmlns","r","cy","cx","strokeWidth","fill","Radio","label","labelIcon","_ref$name","name","Math","random","toFixed","toString","replace","_ref$value","value","inferValue","_ref$id","_ref$centeredLabel","centeredLabel","helperText","labelClassName","onChange","_ref$checked","checked","valueProps","text","labelIconElm","labelClasses","ppvx_radio__label","ppvx_radio","ppvx_radio__input","type","htmlFor","generatedName$1","RadioGroup","errorText","error","message","Children","map","radio","index","_radio$props","props","_radio$props$value","newProps","FieldGroupLabel","icon","FieldGroupMessage","msgId","radioErrorIcon","ownKeys$1","_objectSpread$1","RadioButton","optionsList","componentName","currentValue","changeHandler","radioLabelClassName","options","radioId","prefix","undefined","uniqueId","containerClass","listProps","checkedPropName","radioProps","_typeof","obj","Symbol","iterator","constructor","prototype","_classCallCheck","instance","Constructor","TypeError","_defineProperties","descriptor","configurable","writable","_createClass","protoProps","staticProps","_inherits","subClass","superClass","create","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","call","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","Reflect","construct","sham","Proxy","Date","e","_isNativeReflectConstruct","result","Super","NewTarget","this","_superPropBase","property","hasOwnProperty","_get","receiver","get","base","desc","set","_defineProperty","_set","isStrict","Error","_slicedToArray","arr","isArray","_arrayWithHoles","_arr","_n","_d","_e","_s","_i","next","done","err","_iterableToArrayLimit","minLen","_arrayLikeToArray","n","slice","test","_unsupportedIterableToArray","_nonIterableRest","len","arr2","isString","str","String","DIRECTION","forceDirection","direction","escapeRegExp","objectIncludes","b","a","arrA","arrB","dateA","dateB","getTime","regexpA","RegExp","regexpB","ActionDetails","cursorPos","oldValue","oldSelection","startChangePos","start","min","substr","insertedCount","max","end","removedCount","substring","ChangeDetails","details","assign","inserted","rawInserted","skip","tailShift","ContinuousTailDetails","stop","tail","masked","append","aggregate","_appendPlaceholder","state","pos","shiftChar","IMask","el","opts","InputMask","Masked","_value","_update","DEFAULTS","isInitialized","withValueRefresh","bind","resolve","reset","input","doCommit","doParse","doFormat","extractInput","raw","fromPos","toPos","appendTo","ch","flags","checkTail","consistentState","_appendCharRaw","doPrepare","consistentTail","appended","doValidate","beforeTailState","overwrite","shiftBefore","tailDetails","appendTail","_beforeTailState","ci","_appendChar","fn","_refreshing","rawInput","rawInputValue","ret","_isolated","prepare","validate","parent","commit","parse","deleteCount","removeDirection","tailPos","extractTail","nearestInputPos","remove","maskedClass","mask","MaskedRegExp","MaskedPattern","MaskedDate","Number","MaskedNumber","MaskedDynamic","Function","MaskedFunction","console","warn","createMask","MaskedClass","v","DEFAULT_INPUT_DEFINITIONS","PatternInputDefinition","blockOpts","_isFilled","isOptional","placeholderChar","unmaskedValue","Boolean","lazy","_this$masked","_this$masked2","_this$masked3","minPos","maxPos","boundPos","isComplete","_this$masked4","_this$parent","PatternFixedDefinition","isUnmasking","_isRawInput","char","isResolved","ChunksTailDetails","chunks","tailChunk","lastChunk","extendLast","extend","firstTailChunk","shift","blockIndex","chunk","lastBlockIter","_mapPosToBlock","chunkBlock","_stops","_blocks","remainChars","c","cstate","chunkShiftPos","splice","_Masked","_super","search","definitions","_rebuildMask","_this","defs","_maskedBlocks","pattern","unmaskingBlock","optionalBlock","blocks","bNames","bName","sort","maskedBlock","_isInput","STOP_CHAR","ESCAPE_CHAR","def","maskedState","bi","every","reduce","blockIter","_block","blockDetails","_this2","chunkTail","_forEachBlocksInRange","bFromPos","bToPos","blockChunk","_findStopBefore","_blockStartPos","_","stopBefore","si","toBlockIndex","_this3","startBlockIter","startBlockIndex","endBlockIndex","args","bDetails","accVal","_block2","blockStartPos","offset","fromBlockIter","toBlockIter","isSameBlock","fromBlockStartPos","fromBlockEndPos","removeDetails","beginBlockData","beginBlockOffset","beginBlockIndex","beginBlock","beginBlockCursorPos","cursorAtRight","cursorAtLeft","searchBlockIndex","blockIndexAtLeft","blockAtLeft","blockInputPos","firstInputAtRight","blockAtRight","_blockInputPos","_bi","_block3","_blockInputPos2","firstFilledBlockIndexAtRight","_bi2","filledBlock","_blockInputPos3","firstEmptyInputBlockIndex","firstFilledInputBlockIndex","_bi3","_block4","_blockInputPos4","_bi4","_block5","_blockInputPos5","blockAlignedPos","isInput","_bi5","_block6","_blockInputPos6","firstInputBlockAlignedIndex","firstInputBlockAlignedPos","_bi6","_block7","_blockInputPos7","_bi7","_block8","_blockInputPos8","_bi8","_block9","_blockInputPos9","alignedPos","maskedBlocks","_this4","indices","gi","block","InputDefinition","FixedDefinition","MaskedRange","_MaskedPattern","maxLength","to","fromStr","padStart","toStr","sameCharsCount","repeat","minstr","maxstr","_ref2","match","placeholder","num","padEnd","autofix","val","prepStr","nextVal","_this$boundaries","boundaries","_this$boundaries2","_get2","firstNonZero","_matchFrom","_this$boundaries3","_this$boundaries4","GET_DEFAULT_BLOCKS","Y","getFullYear","m","getMonth","d","getDate","bk","date","isDateExist","typedValue","_str$split2","day","month","year","MaskElement","_unsafeSelectionStart","_unsafeSelectionEnd","selectionStart","selectionEnd","_unsafeSelect","handlers","HTMLMaskElement","_MaskElement","_handlers","getRootNode","document","rootElement","activeElement","setSelectionRange","event","_toggleEventHandler","EVENTS_MAP","handler","removeEventListener","addEventListener","selectionChange","drop","click","focus","HTMLContenteditableMaskElement","_HTMLMaskElement","root","selection","getSelection","anchorOffset","createRange","range","setStart","firstChild","setEnd","lastChild","removeAllRanges","addRange","textContent","isContentEditable","tagName","_listeners","_unmaskedValue","_saveSelection","_onInput","_onChange","_onDrop","_onFocus","_onClick","alignCursor","alignCursorFriendly","_bindEvents","updateValue","maskEquals","updateOptions","updateControl","bindEvents","unbindEvents","ev","listeners","l","_cursorChanging","_changingCursorPos","isActive","select","_selection","newUnmaskedValue","newValue","isChanged","_fireChangeEvents","restOpts","updateMask","updateOpts","_delayUpdateCursor","_abortUpdateCursor","setTimeout","_fireEvent","_inputEvent","clearTimeout","hIndex","oldRawValue","removed","updateCursor","preventDefault","stopPropagation","_unbindEvents","_updateRegExps","allowNegative","scale","radix","_numberRegExpInput","_numberRegExp","_mapToRadixRegExp","mapToRadix","_thousandsSeparatorRegExp","thousandsSeparator","parts","_removeThousandsSeparators","extendOnSeparators","count","_separatorsCount","_this$_adjustRangeWit","_adjustRangeWithSeparators","_this$_adjustRangeWit2","prevBeforeTailValue","prevBeforeTailSeparatorsCount","_separatorsCountFromSlice","appendDetails","_insertThousandsSeparators","beforeTailValue","beforeTailSeparatorsCount","searchFrom","separatorPos","separatorAroundFromPos","_findSeparatorAround","separatorAroundToPos","_this$_adjustRangeWit3","_this$_adjustRangeWit4","valueBeforePos","valueAfterPos","separatorAtLeftPos","separatorAtLeftEndPos","separatorAtRightPos","valid","number","isNaN","validnum","formatted","normalizeZeros","_normalizeZeros","padFractionalZeros","_padFractionalZeros","sign","zeros","signed","MaskType","Range","MaskedTextInput","_ref$maskOptions","maskOptions","onAccept","onComplete","inputRef","maskedRef","current","elm","on","_masked","off","destroy"],"mappings":"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","file":"js/vendors~main~45406249.d6f2ce94.js","sourcesContent":["import _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toConsumableArray from '@babel/runtime/helpers/esm/toConsumableArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { useTheme } from '@paypalcorp/pp-react-theme';\nimport '../__generated__/styles/links.css';\nvar styles = {\n \"ppvx_link\": \"ppvx_link___3-5-11\",\n \"ppvx_icon\": \"ppvx_icon___3-5-11\",\n \"ppvx_link__left-icon\": \"ppvx_link__left-icon___3-5-11\",\n \"ppvx_link--inverse\": \"ppvx_link--inverse___3-5-11\",\n \"ppvx_link--secondary\": \"ppvx_link--secondary___3-5-11\",\n \"ppvx_link__shimmer\": \"ppvx_link__shimmer___3-5-11\",\n \"ppvx--v2\": \"ppvx--v2___3-5-11\",\n \"ppvx--v1\": \"ppvx--v1___3-5-11\"\n};\nvar Link = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var _clsx;\n\n var inverse = _ref.inverse,\n secondary = _ref.secondary,\n className = _ref.className,\n leftIcon = _ref.leftIcon,\n children = _ref.children,\n _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'a' : _ref$as,\n theme = _ref.theme,\n rest = _objectWithoutProperties(_ref, [\"inverse\", \"secondary\", \"className\", \"leftIcon\", \"children\", \"as\", \"theme\"]); // If theme is not directly provided, get from themeContext\n\n\n var _theme = useTheme('Link', theme);\n\n if (as === 'a' && rest.target === '_blank') {\n rest.rel = function attrSet(attrStr) {\n for (var _len = arguments.length, attrs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n attrs[_key - 1] = arguments[_key];\n }\n\n return Array.from(new Set([].concat(_toConsumableArray((attrStr || '').split(' ')), attrs))).filter(function (i) {\n return i.length > 0;\n }).join(' ');\n }(rest.rel, 'noreferrer', 'noopener');\n }\n\n var leftIconElm = leftIcon && /*#__PURE__*/React.createElement(\"span\", {\n className: styles['ppvx_link__left-icon']\n }, leftIcon);\n var cls = clsx(styles.ppvx_link, (_clsx = {}, _defineProperty(_clsx, styles['ppvx_link--inverse'], inverse), _defineProperty(_clsx, styles['ppvx_link--secondary'], secondary), _clsx), _theme && _theme === 'v2' && styles['ppvx--v2'], className);\n return /*#__PURE__*/React.createElement(as, _extends({\n className: cls,\n ref: ref\n }, rest), leftIconElm, children);\n});\nexport { Link };","import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React from 'react';\nimport clsx from 'clsx';\nimport { useTheme } from '@paypalcorp/pp-react-theme';\nimport '../__generated__/styles/loading-spinner.css';\nvar styles = {\n \"ppvx_loading-spinner\": \"ppvx_loading-spinner___2-7-2\",\n \"border-spinner\": \"border-spinner___2-7-2\",\n \"ppvx_loading-spinner--size_xs\": \"ppvx_loading-spinner--size_xs___2-7-2\",\n \"ppvx_loading-spinner--size_md\": \"ppvx_loading-spinner--size_md___2-7-2\",\n \"ppvx_loading-spinner--size_lg\": \"ppvx_loading-spinner--size_lg___2-7-2\",\n \"ppvx_loading-spinner--size_xl\": \"ppvx_loading-spinner--size_xl___2-7-2\",\n \"ppvx_loading-spinner--inverse\": \"ppvx_loading-spinner--inverse___2-7-2\",\n \"ppvx_loading-spinner__screenreader\": \"ppvx_loading-spinner__screenreader___2-7-2\",\n \"ppvx--v2\": \"ppvx--v2___2-7-2\",\n \"ppvx--v1\": \"ppvx--v1___2-7-2\"\n};\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar loadingSpinnerClass = 'ppvx_loading-spinner';\nvar srClass = styles[\"\".concat(loadingSpinnerClass, \"__screenreader\")];\nvar sizes = {\n xs: styles[\"\".concat(loadingSpinnerClass, \"--size_xs\")],\n // to be used for stateful buttons ONLY.\n sm: '',\n md: styles[\"\".concat(loadingSpinnerClass, \"--size_md\")],\n lg: styles[\"\".concat(loadingSpinnerClass, \"--size_lg\")],\n xl: styles[\"\".concat(loadingSpinnerClass, \"--size_xl\")]\n};\n\nvar LoadingSpinner = function LoadingSpinner(_ref) {\n var _clsx;\n\n var _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'p' : _ref$as,\n className = _ref.className,\n inverse = _ref.inverse,\n size = _ref.size,\n screenReaderText = _ref.screenReaderText,\n theme = _ref.theme,\n rest = _objectWithoutProperties(_ref, [\"as\", \"className\", \"inverse\", \"size\", \"screenReaderText\", \"theme\"]);\n\n var _theme = useTheme('Loading Spinner', theme);\n\n return /*#__PURE__*/React.createElement(as, _objectSpread({\n className: clsx(styles[loadingSpinnerClass], sizes[size], (_clsx = {}, _defineProperty(_clsx, styles[\"\".concat(loadingSpinnerClass, \"--inverse\")], inverse), _defineProperty(_clsx, styles['ppvx--v2'], _theme && _theme === 'v2'), _clsx), className),\n role: 'alert'\n }, rest), /*#__PURE__*/React.createElement(\"span\", {\n className: srClass\n }, screenReaderText));\n};\n\nexport { LoadingSpinner };","import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React from 'react';\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar IntlContext = /*#__PURE__*/React.createContext(null);\n\nvar IntlProvider = function IntlProvider(_ref) {\n var locale = _ref.locale,\n messageFormatter = _ref.messageFormatter,\n currencyFormatter = _ref.currencyFormatter,\n getDisplayNamesObject = _ref.getDisplayNamesObject,\n phoneFormatter = _ref.phoneFormatter,\n addressFormatter = _ref.addressFormatter,\n children = _ref.children,\n rest = _objectWithoutProperties(_ref, [\"locale\", \"messageFormatter\", \"currencyFormatter\", \"getDisplayNamesObject\", \"phoneFormatter\", \"addressFormatter\", \"children\"]);\n\n return /*#__PURE__*/React.createElement(IntlContext.Provider, {\n value: _objectSpread({\n locale: locale,\n messageFormatter: messageFormatter,\n currencyFormatter: currencyFormatter,\n getDisplayNamesObject: getDisplayNamesObject,\n phoneFormatter: phoneFormatter,\n addressFormatter: addressFormatter\n }, rest)\n }, children);\n};\n\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar getFormattedMessage = function getFormattedMessage(intlContext, defaultMessage, id, variables) {\n if (!id) {\n return defaultMessage;\n }\n\n if (!(intlContext && intlContext.messageFormatter)) {\n return id;\n }\n\n return intlContext.messageFormatter({\n id: id\n }).format(variables);\n};\n\nvar getCurrencyMaskOptions = function getCurrencyMaskOptions(intlContext, maskOptions, currencyType) {\n if (intlContext && intlContext.currencyFormatter) {\n var currencyFormat = intlContext.currencyFormatter({\n currency: currencyType\n });\n var currencyPartsArr = currencyFormat.formatToParts(1000);\n\n var _getIntlCurrencyPatte = getIntlCurrencyPattern(currencyPartsArr),\n intlMaskOptions = _getIntlCurrencyPatte.intlMaskOptions,\n intlCurrencyPrefix = _getIntlCurrencyPatte.intlCurrencyPrefix,\n intlCurrencySuffix = _getIntlCurrencyPatte.intlCurrencySuffix;\n\n return {\n currencyMaskOptions: _objectSpread$1(_objectSpread$1({}, intlMaskOptions), {}, {\n padFractionalZeros: true\n }, maskOptions),\n intlCurrencyPrefix: intlCurrencyPrefix,\n intlCurrencySuffix: intlCurrencySuffix\n };\n }\n\n return {\n currencyMaskOptions: maskOptions\n };\n};\n\nfunction getIntlCurrencyPattern(currencyPartsArr) {\n var intlMaskOptions = {\n mask: Number\n };\n var intlCurrencyPrefix = '';\n var intlCurrencySuffix = '';\n currencyPartsArr.forEach(function (_ref, idx) {\n var type = _ref.type,\n value = _ref.value;\n\n switch (type) {\n case 'currency':\n if (idx === 0) {\n intlCurrencyPrefix = value;\n } else {\n intlCurrencySuffix = value;\n }\n\n break;\n\n case 'group':\n intlMaskOptions.thousandsSeparator = value;\n break;\n\n case 'fraction':\n intlMaskOptions.scale = value.length;\n break;\n\n case 'decimal':\n intlMaskOptions.radix = value;\n break;\n }\n });\n return {\n intlMaskOptions: intlMaskOptions,\n intlCurrencyPrefix: intlCurrencyPrefix,\n intlCurrencySuffix: intlCurrencySuffix\n };\n}\n\nexport { IntlContext, IntlProvider, getCurrencyMaskOptions, getFormattedMessage };","import '../__generated__/styles/radio.css';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { forwardRef } from 'react';\nimport clsx from 'clsx';\nimport { useTheme } from '@paypalcorp/pp-react-theme';\nimport { V2CriticalIcon, CriticalAltIcon } from '@paypalcorp/pp-react-icons';\nvar styles = {\n \"ppvx_radio-group\": \"ppvx_radio-group___2-9-2\",\n \"ppvx_radio\": \"ppvx_radio___2-9-2\",\n \"ppvx_radio__input\": \"ppvx_radio__input___2-9-2\",\n \"ppvx_radio__label\": \"ppvx_radio__label___2-9-2\",\n \"ppvx_radio__label--with-svg-icon\": \"ppvx_radio__label--with-svg-icon___2-9-2\",\n \"ppvx_radio__check-icon-container\": \"ppvx_radio__check-icon-container___2-9-2\",\n \"ppvx_radio__label--centered\": \"ppvx_radio__label--centered___2-9-2\",\n \"ppvx_radio__check-icon\": \"ppvx_radio__check-icon___2-9-2\",\n \"ppvx_icon\": \"ppvx_icon___2-9-2\",\n \"ppvx_radio__label-icon\": \"ppvx_radio__label-icon___2-9-2\",\n \"ppvx_field--error\": \"ppvx_field--error___2-9-2\",\n \"ppvx_radio-group__label\": \"ppvx_radio-group__label___2-9-2\",\n \"ppvx_radio__helper-text\": \"ppvx_radio__helper-text___2-9-2\",\n \"ppvx_radio-group__helper-text\": \"ppvx_radio-group__helper-text___2-9-2\",\n \"ppvx_radio-group__error-text\": \"ppvx_radio-group__error-text___2-9-2\",\n \"ppvx_radio-group__error-icon\": \"ppvx_radio-group__error-icon___2-9-2\",\n \"ppvx_radio-group__error-text--with-svg-icon\": \"ppvx_radio-group__error-text--with-svg-icon___2-9-2\",\n \"ppvx--v2\": \"ppvx--v2___2-9-2\",\n \"ppvx--v1\": \"ppvx--v1___2-9-2\"\n};\n\nvar renderHelperText = function renderHelperText(text) {\n return text && /*#__PURE__*/React.createElement(\"p\", {\n className: styles['ppvx_radio__helper-text']\n }, text);\n};\n\nvar inferValue = function inferValue(label) {\n if (typeof label === 'string') {\n return label;\n }\n\n return 'value_not_set';\n};\n\nvar RadioCheckIcon = function RadioCheckIcon() {\n return /*#__PURE__*/React.createElement(\"span\", {\n className: styles['ppvx_radio__check-icon']\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 100 100\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"circle\", {\n r: \"18\",\n id: \"svg_1\",\n cy: \"50\",\n cx: \"50\",\n strokeWidth: \"0\",\n fill: \"currentColor\"\n })));\n};\n\nvar generatedName = function generatedName() {\n return \"\".concat(Math.random().toFixed(8).toString().replace('0.', ''));\n};\n\nvar Radio = /*#__PURE__*/forwardRef(function (_ref, ref) {\n var label = _ref.label,\n labelIcon = _ref.labelIcon,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? generatedName() : _ref$name,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? inferValue(label) : _ref$value,\n _ref$id = _ref.id,\n id = _ref$id === void 0 ? \"Radio_\".concat(name, \"_\").concat(value) : _ref$id,\n _ref$centeredLabel = _ref.centeredLabel,\n centeredLabel = _ref$centeredLabel === void 0 ? false : _ref$centeredLabel,\n helperText = _ref.helperText,\n className = _ref.className,\n labelClassName = _ref.labelClassName,\n onChange = _ref.onChange,\n _ref$checked = _ref.checked,\n checked = _ref$checked === void 0 ? false : _ref$checked,\n rest = _objectWithoutProperties(_ref, [\"label\", \"labelIcon\", \"name\", \"value\", \"id\", \"centeredLabel\", \"helperText\", \"className\", \"labelClassName\", \"onChange\", \"checked\"]);\n\n var checkedPropName = onChange ? 'checked' : 'defaultChecked';\n var valueProps = {\n onChange: onChange\n };\n valueProps[checkedPropName] = checked;\n var labelIconElm = labelIcon && /*#__PURE__*/React.createElement(\"span\", {\n className: styles['ppvx_radio__label-icon']\n }, labelIcon);\n var labelClasses = clsx(styles.ppvx_radio__label, styles['ppvx_radio__label--with-svg-icon'], _defineProperty({}, styles[\"ppvx_radio__label--centered\"], centeredLabel), labelClassName);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx(styles.ppvx_radio, className)\n }, /*#__PURE__*/React.createElement(\"input\", _extends({\n className: styles.ppvx_radio__input,\n type: \"radio\",\n name: name,\n value: value,\n id: id,\n ref: ref\n }, valueProps, rest)), /*#__PURE__*/React.createElement(\"label\", {\n className: labelClasses,\n htmlFor: id\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles['ppvx_radio__check-icon-container']\n }, /*#__PURE__*/React.createElement(RadioCheckIcon, null)), label, labelIconElm, renderHelperText(helperText)));\n});\nvar generatedName$1 = \"RadioGroup_\".concat(Math.random().toFixed(8).toString().replace('0.', ''));\n\nvar RadioGroup = function RadioGroup(_ref) {\n var _clsx;\n\n var _ref$name = _ref.name,\n name = _ref$name === void 0 ? generatedName$1 : _ref$name,\n label = _ref.label,\n labelIcon = _ref.labelIcon,\n helperText = _ref.helperText,\n errorText = _ref.errorText,\n error = _ref.error,\n children = _ref.children;\n var message = (errorText || helperText) && /*#__PURE__*/React.createElement(\"label\", {\n className: clsx((_clsx = {}, _defineProperty(_clsx, styles['ppvx_radio-group__helper-text'], !error), _defineProperty(_clsx, styles['ppvx_radio-group__error-text'], error), _clsx))\n }, error ? errorText : helperText);\n var labelIconElm = labelIcon && /*#__PURE__*/React.createElement(\"span\", {\n className: styles['ppvx_radio__label-icon']\n }, labelIcon);\n return /*#__PURE__*/React.createElement(\"fieldset\", {\n className: clsx(styles['ppvx_radio-group'], _defineProperty({}, styles['ppvx_field--error'], error))\n }, /*#__PURE__*/React.createElement(\"legend\", {\n className: styles['ppvx_radio-group__label']\n }, label, labelIconElm), children && // @ts-ignore\n React.Children.map(children, function (radio, index) {\n var _radio$props = radio.props,\n _radio$props$value = _radio$props.value,\n value = _radio$props$value === void 0 ? '' + index : _radio$props$value,\n newProps = _objectWithoutProperties(_radio$props, [\"value\"]);\n\n return /*#__PURE__*/React.createElement(Radio, _extends({\n key: index,\n name: name,\n value: value\n }, newProps));\n }), message);\n};\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar FieldGroupLabel = function FieldGroupLabel(_ref) {\n var _ref$as = _ref.as,\n as = _ref$as === void 0 ? 'legend' : _ref$as,\n children = _ref.children,\n className = _ref.className,\n icon = _ref.icon,\n rest = _objectWithoutProperties(_ref, [\"as\", \"children\", \"className\", \"icon\"]);\n\n return /*#__PURE__*/React.createElement(as, _objectSpread({\n className: clsx(className, styles['ppvx_radio-group__label'], styles['ppvx_radio-group__label--with-svg-icon'])\n }, rest), children, icon);\n};\n\nvar FieldGroupMessage = function FieldGroupMessage(_ref) {\n var errorText = _ref.errorText,\n helperText = _ref.helperText,\n msgId = _ref.msgId,\n theme = _ref.theme; // Get either the error message or helper text or... nothing\n\n var radioErrorIcon = theme === 'v2' ? /*#__PURE__*/React.createElement(V2CriticalIcon, {\n className: styles['ppvx_radio-group__error-icon'],\n size: \"sm\"\n }) : /*#__PURE__*/React.createElement(CriticalAltIcon, {\n className: styles['ppvx_radio-group__error-icon'],\n size: \"xs\"\n });\n return errorText && /*#__PURE__*/React.createElement(\"p\", {\n className: clsx(styles['ppvx_radio-group__error-text'], styles['ppvx_radio-group__error-text--with-svg-icon']),\n id: msgId\n }, radioErrorIcon, errorText) || helperText && /*#__PURE__*/React.createElement(\"p\", {\n className: styles['ppvx_radio-group__helper-text'],\n id: msgId\n }, helperText) || null;\n};\n\nfunction ownKeys$1(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys$1(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys$1(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n/* istanbul ignore next */\n\n\nvar uniqueId = function uniqueId(id) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_';\n return id === undefined ? \"\".concat(prefix).concat(Math.random().toFixed(8).toString().replace('0.', '')) : id;\n};\n\nvar RadioButton = function RadioButton(_ref) {\n var className = _ref.className,\n radioLabelClassName = _ref.radioLabelClassName,\n errorText = _ref.errorText,\n helperText = _ref.helperText,\n id = _ref.id,\n label = _ref.label,\n name = _ref.name,\n _ref$value = _ref.value,\n value = _ref$value === void 0 ? '' : _ref$value,\n icon = _ref.icon,\n options = _ref.options,\n onChange = _ref.onChange,\n theme = _ref.theme,\n rest = _objectWithoutProperties(_ref, [\"className\", \"radioLabelClassName\", \"errorText\", \"helperText\", \"id\", \"label\", \"name\", \"value\", \"icon\", \"options\", \"onChange\", \"theme\"]);\n\n var _theme = useTheme('RadioButton', theme);\n\n var radioId = \"\".concat(uniqueId(id, 'RadioButtton'));\n var msgId = \"message_\".concat(radioId);\n var containerClass = clsx(styles['ppvx_radio-group'], _defineProperty({}, styles['ppvx--v2'], _theme && _theme === 'v2'), className, _defineProperty({}, styles['ppvx_field--error'], !!errorText));\n return (\n /*#__PURE__*/\n //@ts-ignore\n React.createElement(\"fieldset\", _extends({\n className: containerClass\n }, rest), /*#__PURE__*/React.createElement(FieldGroupLabel, {\n icon: icon\n }, label), function renderRadios(optionsList, componentName, currentValue, changeHandler) {\n if (optionsList.length === 0) {\n return /*#__PURE__*/React.createElement(\"i\", null, \"No Options!\");\n }\n\n return optionsList.map(function (listProps, index) {\n var checkedPropName = changeHandler ? 'checked' : 'defaultChecked';\n\n var radioProps = _objectSpread$1(_objectSpread$1({}, listProps), {}, {\n labelClassName: radioLabelClassName\n });\n\n if (currentValue === listProps.value) {\n radioProps[checkedPropName] = true;\n }\n\n return /*#__PURE__*/React.createElement(Radio, _extends({\n key: \"rbtn-item\".concat(index),\n name: componentName,\n onChange: changeHandler\n }, radioProps, rest));\n });\n }(options, name, value, onChange), /*#__PURE__*/React.createElement(FieldGroupMessage, {\n errorText: errorText,\n helperText: helperText,\n msgId: msgId,\n theme: _theme\n }))\n );\n};\n\nexport { Radio, RadioButton, RadioGroup };","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutProperties$1 from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport React, { useRef, useEffect } from 'react';\nimport { TextInput } from '@paypalcorp/pp-react-text-input';\nimport { useTheme } from '@paypalcorp/pp-react-theme';\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n/** Checks if value is string */\n\n\nfunction isString(str) {\n return typeof str === 'string' || str instanceof String;\n}\n/**\r\n Direction\r\n @prop {string} NONE\r\n @prop {string} LEFT\r\n @prop {string} FORCE_LEFT\r\n @prop {string} RIGHT\r\n @prop {string} FORCE_RIGHT\r\n*/\n\n\nvar DIRECTION = {\n NONE: 'NONE',\n LEFT: 'LEFT',\n FORCE_LEFT: 'FORCE_LEFT',\n RIGHT: 'RIGHT',\n FORCE_RIGHT: 'FORCE_RIGHT'\n};\n/** */\n\nfunction forceDirection(direction) {\n switch (direction) {\n case DIRECTION.LEFT:\n return DIRECTION.FORCE_LEFT;\n\n case DIRECTION.RIGHT:\n return DIRECTION.FORCE_RIGHT;\n\n default:\n return direction;\n }\n}\n/** Escapes regular expression control chars */\n\n\nfunction escapeRegExp(str) {\n return str.replace(/([.*+?^=!:${}()|[\\]\\/\\\\])/g, '\\\\$1');\n} // cloned from https://github.com/epoberezkin/fast-deep-equal with small changes\n\n\nfunction objectIncludes(b, a) {\n if (a === b) return true;\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\n for (i = 0; i < a.length; i++) {\n if (!objectIncludes(a[i], b[i])) return false;\n }\n\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 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 var keys = Object.keys(a); // if (keys.length !== Object.keys(b).length) return false;\n\n for (i = 0; i < keys.length; i++) {\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n }\n\n for (i = 0; i < keys.length; i++) {\n if (!objectIncludes(b[keys[i]], a[keys[i]])) return false;\n }\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/** Provides details of changing input */\n\n\nvar ActionDetails = /*#__PURE__*/function () {\n /** Current input value */\n\n /** Current cursor position */\n\n /** Old input value */\n\n /** Old selection */\n function ActionDetails(value, cursorPos, oldValue, oldSelection) {\n _classCallCheck(this, ActionDetails);\n\n this.value = value;\n this.cursorPos = cursorPos;\n this.oldValue = oldValue;\n this.oldSelection = oldSelection; // double check if left part was changed (autofilling, other non-standard input triggers)\n\n while (this.value.slice(0, this.startChangePos) !== this.oldValue.slice(0, this.startChangePos)) {\n --this.oldSelection.start;\n }\n }\n /**\r\n Start changing position\r\n @readonly\r\n */\n\n\n _createClass(ActionDetails, [{\n key: \"startChangePos\",\n get: function get() {\n return Math.min(this.cursorPos, this.oldSelection.start);\n }\n /**\r\n Inserted symbols count\r\n @readonly\r\n */\n\n }, {\n key: \"insertedCount\",\n get: function get() {\n return this.cursorPos - this.startChangePos;\n }\n /**\r\n Inserted symbols\r\n @readonly\r\n */\n\n }, {\n key: \"inserted\",\n get: function get() {\n return this.value.substr(this.startChangePos, this.insertedCount);\n }\n /**\r\n Removed symbols count\r\n @readonly\r\n */\n\n }, {\n key: \"removedCount\",\n get: function get() {\n // Math.max for opposite operation\n return Math.max(this.oldSelection.end - this.startChangePos || // for Delete\n this.oldValue.length - this.value.length, 0);\n }\n /**\r\n Removed symbols\r\n @readonly\r\n */\n\n }, {\n key: \"removed\",\n get: function get() {\n return this.oldValue.substr(this.startChangePos, this.removedCount);\n }\n /**\r\n Unchanged head symbols\r\n @readonly\r\n */\n\n }, {\n key: \"head\",\n get: function get() {\n return this.value.substring(0, this.startChangePos);\n }\n /**\r\n Unchanged tail symbols\r\n @readonly\r\n */\n\n }, {\n key: \"tail\",\n get: function get() {\n return this.value.substring(this.startChangePos + this.insertedCount);\n }\n /**\r\n Remove direction\r\n @readonly\r\n */\n\n }, {\n key: \"removeDirection\",\n get: function get() {\n if (!this.removedCount || this.insertedCount) return DIRECTION.NONE; // align right if delete at right or if range removed (event with backspace)\n\n return this.oldSelection.end === this.cursorPos || this.oldSelection.start === this.cursorPos ? DIRECTION.RIGHT : DIRECTION.LEFT;\n }\n }]);\n\n return ActionDetails;\n}();\n/**\r\n Provides details of changing model value\r\n @param {Object} [details]\r\n @param {string} [details.inserted] - Inserted symbols\r\n @param {boolean} [details.skip] - Can skip chars\r\n @param {number} [details.removeCount] - Removed symbols count\r\n @param {number} [details.tailShift] - Additional offset if any changes occurred before tail\r\n*/\n\n\nvar ChangeDetails = /*#__PURE__*/function () {\n /** Inserted symbols */\n\n /** Can skip chars */\n\n /** Additional offset if any changes occurred before tail */\n\n /** Raw inserted is used by dynamic mask */\n function ChangeDetails(details) {\n _classCallCheck(this, ChangeDetails);\n\n Object.assign(this, {\n inserted: '',\n rawInserted: '',\n skip: false,\n tailShift: 0\n }, details);\n }\n /**\r\n Aggregate changes\r\n @returns {ChangeDetails} `this`\r\n */\n\n\n _createClass(ChangeDetails, [{\n key: \"aggregate\",\n value: function aggregate(details) {\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 /** Total offset considering all changes */\n\n }, {\n key: \"offset\",\n get: function get() {\n return this.tailShift + this.inserted.length;\n }\n }]);\n\n return ChangeDetails;\n}();\n/** Provides details of continuous extracted tail */\n\n\nvar ContinuousTailDetails = /*#__PURE__*/function () {\n /** Tail value as string */\n\n /** Tail start position */\n\n /** Start position */\n function ContinuousTailDetails() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var stop = arguments.length > 2 ? arguments[2] : undefined;\n\n _classCallCheck(this, ContinuousTailDetails);\n\n this.value = value;\n this.from = from;\n this.stop = stop;\n }\n\n _createClass(ContinuousTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.value;\n }\n }, {\n key: \"extend\",\n value: function extend(tail) {\n this.value += String(tail);\n }\n }, {\n key: \"appendTo\",\n value: function appendTo(masked) {\n return masked.append(this.toString(), {\n tail: true\n }).aggregate(masked._appendPlaceholder());\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n value: this.value,\n from: this.from,\n stop: this.stop\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.value.length) return '';\n var shiftChar = this.value[0];\n this.value = this.value.slice(1);\n return shiftChar;\n }\n }]);\n\n return ContinuousTailDetails;\n}();\n/**\r\n * Applies mask on element.\r\n * @constructor\r\n * @param {HTMLInputElement|HTMLTextAreaElement|MaskElement} el - Element to apply mask\r\n * @param {Object} opts - Custom mask options\r\n * @return {InputMask}\r\n */\n\n\nfunction IMask(el) {\n var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; // currently available only for input-like elements\n\n return new IMask.InputMask(el, opts);\n}\n/** Supported mask type */\n\n/** Provides common masking stuff */\n\n\nvar Masked = /*#__PURE__*/function () {\n // $Shape; TODO after fix https://github.com/facebook/flow/issues/4773\n\n /** @type {Mask} */\n\n /** */\n // $FlowFixMe no ideas\n\n /** Transforms value before mask processing */\n\n /** Validates if value is acceptable */\n\n /** Does additional processing in the end of editing */\n\n /** Format typed value to string */\n\n /** Parse strgin to get typed value */\n\n /** Enable characters overwriting */\n\n /** */\n function Masked(opts) {\n _classCallCheck(this, Masked);\n\n this._value = '';\n\n this._update(Object.assign({}, Masked.DEFAULTS, opts));\n\n this.isInitialized = true;\n }\n /** Sets and applies new options */\n\n\n _createClass(Masked, [{\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n if (!Object.keys(opts).length) return;\n this.withValueRefresh(this._update.bind(this, opts));\n }\n /**\r\n Sets new options\r\n @protected\r\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n Object.assign(this, opts);\n }\n /** Mask state */\n\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this.value\n };\n },\n set: function set(state) {\n this._value = state._value;\n }\n /** Resets value */\n\n }, {\n key: \"reset\",\n value: function reset() {\n this._value = '';\n }\n /** */\n\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(value) {\n this.resolve(value);\n }\n /** Resolve new value */\n\n }, {\n key: \"resolve\",\n value: function resolve(value) {\n this.reset();\n this.append(value, {\n input: true\n }, '');\n this.doCommit();\n return this.value;\n }\n /** */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.value;\n },\n set: function set(value) {\n this.reset();\n this.append(value, {}, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.doParse(this.value);\n },\n set: function set(value) {\n this.value = this.doFormat(value);\n }\n /** Value that includes raw user input */\n\n }, {\n key: \"rawInputValue\",\n get: function get() {\n return this.extractInput(0, this.value.length, {\n raw: true\n });\n },\n set: function set(value) {\n this.reset();\n this.append(value, {\n raw: true\n }, '');\n this.doCommit();\n }\n /** */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n /** Finds nearest input position in direction */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n return cursorPos;\n }\n /** Extracts value in range considering flags */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return this.value.slice(fromPos, toPos);\n }\n /** Extracts tail in range */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails(this.extractInput(fromPos, toPos), fromPos);\n }\n /** Appends tail */\n // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n /** Appends char */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n if (!ch) return new ChangeDetails();\n this._value += ch;\n return new ChangeDetails({\n inserted: ch,\n rawInserted: ch\n });\n }\n /** Appends char */\n\n }, {\n key: \"_appendChar\",\n value: function _appendChar(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var checkTail = arguments.length > 2 ? arguments[2] : undefined;\n var consistentState = this.state;\n\n var details = this._appendCharRaw(this.doPrepare(ch, flags), flags);\n\n if (details.inserted) {\n var consistentTail;\n var appended = this.doValidate(flags) !== false;\n\n if (appended && checkTail != null) {\n // validation ok, check tail\n var beforeTailState = this.state;\n\n if (this.overwrite) {\n consistentTail = checkTail.state;\n checkTail.shiftBefore(this.value.length);\n }\n\n var tailDetails = this.appendTail(checkTail);\n appended = tailDetails.rawInserted === checkTail.toString(); // if ok, rollback state after tail\n\n if (appended && tailDetails.inserted) this.state = beforeTailState;\n } // revert all if something went wrong\n\n\n if (!appended) {\n details = new ChangeDetails();\n this.state = consistentState;\n if (checkTail && consistentTail) checkTail.state = consistentTail;\n }\n }\n\n return details;\n }\n /** Appends optional placeholder at end */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n return new ChangeDetails();\n }\n /** Appends symbols considering flags */\n // $FlowFixMe no ideas\n\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n if (!isString(str)) throw new Error('value should be string');\n var details = new ChangeDetails();\n var checkTail = isString(tail) ? new ContinuousTailDetails(String(tail)) : tail;\n if (flags && flags.tail) flags._beforeTailState = this.state;\n\n for (var ci = 0; ci < str.length; ++ci) {\n details.aggregate(this._appendChar(str[ci], flags, checkTail));\n } // append tail but aggregate only tailShift\n\n\n if (checkTail != null) {\n details.tailShift += this.appendTail(checkTail).tailShift; // TODO it's a good idea to clear state after appending ends\n // but it causes bugs when one append calls another (when dynamic dispatch set rawInputValue)\n // this._resetBeforeTailState();\n }\n\n return details;\n }\n /** */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n this._value = this.value.slice(0, fromPos) + this.value.slice(toPos);\n return new ChangeDetails();\n }\n /** Calls function and reapplies current value */\n\n }, {\n key: \"withValueRefresh\",\n value: function withValueRefresh(fn) {\n if (this._refreshing || !this.isInitialized) return fn();\n this._refreshing = true;\n var rawInput = this.rawInputValue;\n var value = this.value;\n var ret = fn();\n this.rawInputValue = rawInput; // append lost trailing chars at end\n\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 }, {\n key: \"runIsolated\",\n value: function runIsolated(fn) {\n if (this._isolated || !this.isInitialized) return fn(this);\n this._isolated = true;\n var state = this.state;\n var ret = fn(this);\n this.state = state;\n delete this._isolated;\n return ret;\n }\n /**\r\n Prepares string before mask processing\r\n @protected\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.prepare ? this.prepare(str, this, flags) : str;\n }\n /**\r\n Validates if value is acceptable\r\n @protected\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n return (!this.validate || this.validate(this.value, this, flags)) && (!this.parent || this.parent.doValidate(flags));\n }\n /**\r\n Does additional processing in the end of editing\r\n @protected\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.commit) this.commit(this.value, this);\n }\n /** */\n\n }, {\n key: \"doFormat\",\n value: function doFormat(value) {\n return this.format ? this.format(value, this) : value;\n }\n /** */\n\n }, {\n key: \"doParse\",\n value: function doParse(str) {\n return this.parse ? this.parse(str, this) : str;\n }\n /** */\n\n }, {\n key: \"splice\",\n value: function splice(start, deleteCount, inserted, removeDirection) {\n var tailPos = start + deleteCount;\n var tail = this.extractTail(tailPos);\n var startChangePos = this.nearestInputPos(start, removeDirection);\n var changeDetails = new ChangeDetails({\n tailShift: startChangePos - start // adjust tailShift if start was aligned\n\n }).aggregate(this.remove(startChangePos)).aggregate(this.append(inserted, {\n input: true\n }, tail));\n return changeDetails;\n }\n }]);\n\n return Masked;\n}();\n\nMasked.DEFAULTS = {\n format: function format(v) {\n return v;\n },\n parse: function parse(v) {\n return v;\n }\n};\nIMask.Masked = Masked;\n/** Get Masked class by mask type */\n\nfunction maskedClass(mask) {\n if (mask == null) {\n throw new Error('mask property should be defined');\n } // $FlowFixMe\n\n\n if (mask instanceof RegExp) return IMask.MaskedRegExp; // $FlowFixMe\n\n if (isString(mask)) return IMask.MaskedPattern; // $FlowFixMe\n\n if (mask instanceof Date || mask === Date) return IMask.MaskedDate; // $FlowFixMe\n\n if (mask instanceof Number || typeof mask === 'number' || mask === Number) return IMask.MaskedNumber; // $FlowFixMe\n\n if (Array.isArray(mask) || mask === Array) return IMask.MaskedDynamic; // $FlowFixMe\n\n if (IMask.Masked && mask.prototype instanceof IMask.Masked) return mask; // $FlowFixMe\n\n if (mask instanceof Function) return IMask.MaskedFunction; // $FlowFixMe\n\n if (mask instanceof IMask.Masked) return mask.constructor;\n console.warn('Mask not found for mask', mask); // eslint-disable-line no-console\n // $FlowFixMe\n\n return IMask.Masked;\n}\n/** Creates new {@link Masked} depending on mask type */\n\n\nfunction createMask(opts) {\n // $FlowFixMe\n if (IMask.Masked && opts instanceof IMask.Masked) return opts;\n opts = Object.assign({}, opts);\n var mask = opts.mask; // $FlowFixMe\n\n if (IMask.Masked && mask instanceof IMask.Masked) return mask;\n var 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\nIMask.createMask = createMask;\nvar DEFAULT_INPUT_DEFINITIONS = {\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]/,\n // http://stackoverflow.com/a/22075070\n '*': /./\n};\n/** */\n\nvar PatternInputDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternInputDefinition(opts) {\n _classCallCheck(this, PatternInputDefinition);\n\n var mask = opts.mask,\n blockOpts = _objectWithoutProperties(opts, [\"mask\"]);\n\n this.masked = createMask({\n mask: mask\n });\n Object.assign(this, blockOpts);\n }\n\n _createClass(PatternInputDefinition, [{\n key: \"reset\",\n value: function reset() {\n this._isFilled = false;\n this.masked.reset();\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\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 key: \"value\",\n get: function get() {\n return this.masked.value || (this._isFilled && !this.isOptional ? this.placeholderChar : '');\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.masked.unmaskedValue;\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return Boolean(this.masked.value) || this.isOptional;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this._isFilled) return new ChangeDetails();\n var state = this.masked.state; // simulate input\n\n var details = this.masked._appendChar(str, 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\n details.skip = !details.inserted && !this.isOptional;\n this._isFilled = Boolean(details.inserted);\n return details;\n }\n }, {\n key: \"append\",\n value: function append() {\n var _this$masked;\n\n return (_this$masked = this.masked).append.apply(_this$masked, arguments);\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._isFilled || this.isOptional) return details;\n this._isFilled = true;\n details.inserted = this.placeholderChar;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this$masked2;\n\n return (_this$masked2 = this.masked).extractTail.apply(_this$masked2, arguments);\n }\n }, {\n key: \"appendTail\",\n value: function appendTail() {\n var _this$masked3;\n\n return (_this$masked3 = this.masked).appendTail.apply(_this$masked3, arguments);\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n return this.masked.extractInput(fromPos, toPos, flags);\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this.value.length;\n var 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\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n return this.isComplete ? boundPos : maxPos;\n\n case DIRECTION.NONE:\n default:\n return boundPos;\n }\n }\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _this$masked4, _this$parent;\n\n return (_this$masked4 = this.masked).doValidate.apply(_this$masked4, arguments) && (!this.parent || (_this$parent = this.parent).doValidate.apply(_this$parent, arguments));\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this.masked.doCommit();\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n masked: this.masked.state,\n _isFilled: this._isFilled\n };\n },\n set: function set(state) {\n this.masked.state = state.masked;\n this._isFilled = state._isFilled;\n }\n }]);\n\n return PatternInputDefinition;\n}();\n\nvar PatternFixedDefinition = /*#__PURE__*/function () {\n /** */\n\n /** */\n\n /** */\n\n /** */\n function PatternFixedDefinition(opts) {\n _classCallCheck(this, PatternFixedDefinition);\n\n Object.assign(this, opts);\n this._value = '';\n }\n\n _createClass(PatternFixedDefinition, [{\n key: \"value\",\n get: function get() {\n return this._value;\n }\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this.isUnmasking ? this.value : '';\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this._isRawInput = false;\n this._value = '';\n }\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n this._value = this._value.slice(0, fromPos) + this._value.slice(toPos);\n if (!this._value) this._isRawInput = false;\n return new ChangeDetails();\n }\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE;\n var minPos = 0;\n var maxPos = this._value.length;\n\n switch (direction) {\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n return minPos;\n\n case DIRECTION.NONE:\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n default:\n return maxPos;\n }\n }\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this._value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n return flags.raw && this._isRawInput && this._value.slice(fromPos, toPos) || '';\n }\n }, {\n key: \"isComplete\",\n get: function get() {\n return true;\n }\n }, {\n key: \"_appendChar\",\n value: function _appendChar(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var details = new ChangeDetails();\n if (this._value) return details;\n var appended = this.char === str[0];\n var isResolved = appended && (this.isUnmasking || flags.input || flags.raw) && !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 return details;\n }\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder() {\n var details = new ChangeDetails();\n if (this._value) return details;\n this._value = details.inserted = this.char;\n return details;\n }\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n return new ContinuousTailDetails('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n if (isString(tail)) tail = new ContinuousTailDetails(String(tail));\n return tail.appendTo(this);\n }\n }, {\n key: \"append\",\n value: function append(str, flags, tail) {\n var details = this._appendChar(str, flags);\n\n if (tail != null) {\n details.tailShift += this.appendTail(tail).tailShift;\n }\n\n return details;\n }\n }, {\n key: \"doCommit\",\n value: function doCommit() {}\n }, {\n key: \"state\",\n get: function get() {\n return {\n _value: this._value,\n _isRawInput: this._isRawInput\n };\n },\n set: function set(state) {\n Object.assign(this, state);\n }\n }]);\n\n return PatternFixedDefinition;\n}();\n\nvar ChunksTailDetails = /*#__PURE__*/function () {\n /** */\n function ChunksTailDetails() {\n var chunks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, ChunksTailDetails);\n\n this.chunks = chunks;\n this.from = from;\n }\n\n _createClass(ChunksTailDetails, [{\n key: \"toString\",\n value: function toString() {\n return this.chunks.map(String).join('');\n } // $FlowFixMe no ideas\n\n }, {\n key: \"extend\",\n value: function extend(tailChunk) {\n if (!String(tailChunk)) return;\n if (isString(tailChunk)) tailChunk = new ContinuousTailDetails(String(tailChunk));\n var lastChunk = this.chunks[this.chunks.length - 1];\n var extendLast = lastChunk && ( // if stops are same or tail has no stop\n lastChunk.stop === tailChunk.stop || tailChunk.stop == null) && // 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 var firstTailChunk;\n\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 } // if tail chunk still has value\n\n\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 key: \"appendTo\",\n value: function appendTo(masked) {\n // $FlowFixMe\n if (!(masked instanceof IMask.MaskedPattern)) {\n var tail = new ContinuousTailDetails(this.toString());\n return tail.appendTo(masked);\n }\n\n var details = new ChangeDetails();\n\n for (var ci = 0; ci < this.chunks.length && !details.skip; ++ci) {\n var chunk = this.chunks[ci];\n\n var lastBlockIter = masked._mapPosToBlock(masked.value.length);\n\n var stop = chunk.stop;\n var chunkBlock = void 0;\n\n if (stop != null && ( // if block not found or stop is behind lastBlock\n !lastBlockIter || lastBlockIter.index <= stop)) {\n if (chunk instanceof ChunksTailDetails || // for continuous block also check if stop is exist\n masked._stops.indexOf(stop) >= 0) {\n details.aggregate(masked._appendPlaceholder(stop));\n }\n\n chunkBlock = chunk instanceof ChunksTailDetails && masked._blocks[stop];\n }\n\n if (chunkBlock) {\n var tailDetails = chunkBlock.appendTail(chunk);\n tailDetails.skip = false; // always ignore skip, it will be set on last\n\n details.aggregate(tailDetails);\n masked._value += tailDetails.inserted; // get not inserted chars\n\n var remainChars = chunk.toString().slice(tailDetails.rawInserted.length);\n if (remainChars) details.aggregate(masked.append(remainChars, {\n tail: true\n }));\n } else {\n details.aggregate(masked.append(chunk.toString(), {\n tail: true\n }));\n }\n }\n\n return details;\n }\n }, {\n key: \"state\",\n get: function get() {\n return {\n chunks: this.chunks.map(function (c) {\n return c.state;\n }),\n from: this.from,\n stop: this.stop,\n blockIndex: this.blockIndex\n };\n },\n set: function set(state) {\n var chunks = state.chunks,\n props = _objectWithoutProperties(state, [\"chunks\"]);\n\n Object.assign(this, props);\n this.chunks = chunks.map(function (cstate) {\n var chunk = \"chunks\" in cstate ? new ChunksTailDetails() : new ContinuousTailDetails(); // $FlowFixMe already checked above\n\n chunk.state = cstate;\n return chunk;\n });\n }\n }, {\n key: \"shiftBefore\",\n value: function shiftBefore(pos) {\n if (this.from >= pos || !this.chunks.length) return '';\n var chunkShiftPos = pos - this.from;\n var ci = 0;\n\n while (ci < this.chunks.length) {\n var chunk = this.chunks[ci];\n var shiftChar = chunk.shiftBefore(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\n return ChunksTailDetails;\n}();\n/** Masking by RegExp */\n\n\nvar MaskedRegExp = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedRegExp, _Masked);\n\n var _super = _createSuper(MaskedRegExp);\n\n function MaskedRegExp() {\n _classCallCheck(this, MaskedRegExp);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRegExp, [{\n key: \"_update\",\n value:\n /**\r\n @override\r\n @param {Object} opts\r\n */\n function _update(opts) {\n if (opts.mask) opts.validate = function (value) {\n return value.search(opts.mask) >= 0;\n };\n\n _get(_getPrototypeOf(MaskedRegExp.prototype), \"_update\", this).call(this, opts);\n }\n }]);\n\n return MaskedRegExp;\n}(Masked);\n\nIMask.MaskedRegExp = MaskedRegExp;\n/**\r\n Pattern mask\r\n @param {Object} opts\r\n @param {Object} opts.blocks\r\n @param {Object} opts.definitions\r\n @param {string} opts.placeholderChar\r\n @param {boolean} opts.lazy\r\n*/\n\nvar MaskedPattern = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedPattern, _Masked);\n\n var _super = _createSuper(MaskedPattern);\n /** */\n\n /** */\n\n /** Single char for empty input */\n\n /** Show placeholder only when needed */\n\n\n function MaskedPattern() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, MaskedPattern); // TODO type $Shape={} does not work\n\n\n opts.definitions = Object.assign({}, DEFAULT_INPUT_DEFINITIONS, opts.definitions);\n return _super.call(this, Object.assign({}, MaskedPattern.DEFAULTS, opts));\n }\n /**\r\n @override\r\n @param {Object} opts\r\n */\n\n\n _createClass(MaskedPattern, [{\n key: \"_update\",\n value: function _update() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n opts.definitions = Object.assign({}, this.definitions, opts.definitions);\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"_update\", this).call(this, opts);\n\n this._rebuildMask();\n }\n /** */\n\n }, {\n key: \"_rebuildMask\",\n value: function _rebuildMask() {\n var _this = this;\n\n var defs = this.definitions;\n this._blocks = [];\n this._stops = [];\n this._maskedBlocks = {};\n var pattern = this.mask;\n if (!pattern || !defs) return;\n var unmaskingBlock = false;\n var optionalBlock = false;\n\n for (var i = 0; i < pattern.length; ++i) {\n if (this.blocks) {\n var _ret = function () {\n var p = pattern.slice(i);\n var bNames = Object.keys(_this.blocks).filter(function (bName) {\n return p.indexOf(bName) === 0;\n }); // order by key length\n\n bNames.sort(function (a, b) {\n return b.length - a.length;\n }); // use block name with max length\n\n var bName = bNames[0];\n\n if (bName) {\n // $FlowFixMe no ideas\n var maskedBlock = createMask(Object.assign({\n parent: _this,\n lazy: _this.lazy,\n placeholderChar: _this.placeholderChar,\n overwrite: _this.overwrite\n }, _this.blocks[bName]));\n\n if (maskedBlock) {\n _this._blocks.push(maskedBlock); // store block index\n\n\n if (!_this._maskedBlocks[bName]) _this._maskedBlocks[bName] = [];\n\n _this._maskedBlocks[bName].push(_this._blocks.length - 1);\n }\n\n i += bName.length - 1;\n return \"continue\";\n }\n }();\n\n if (_ret === \"continue\") continue;\n }\n\n var char = pattern[i];\n\n var _isInput = (char in defs);\n\n if (char === MaskedPattern.STOP_CHAR) {\n this._stops.push(this._blocks.length);\n\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 var def = _isInput ? new PatternInputDefinition({\n parent: this,\n lazy: this.lazy,\n placeholderChar: this.placeholderChar,\n mask: defs[char],\n isOptional: optionalBlock\n }) : new PatternFixedDefinition({\n char: char,\n isUnmasking: unmaskingBlock\n });\n\n this._blocks.push(def);\n }\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"state\",\n get: function get() {\n return Object.assign({}, _get(_getPrototypeOf(MaskedPattern.prototype), \"state\", this), {\n _blocks: this._blocks.map(function (b) {\n return b.state;\n })\n });\n },\n set: function set(state) {\n var _blocks = state._blocks,\n maskedState = _objectWithoutProperties(state, [\"_blocks\"]);\n\n this._blocks.forEach(function (b, bi) {\n return b.state = _blocks[bi];\n });\n\n _set(_getPrototypeOf(MaskedPattern.prototype), \"state\", maskedState, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"reset\",\n value: function reset() {\n _get(_getPrototypeOf(MaskedPattern.prototype), \"reset\", this).call(this);\n\n this._blocks.forEach(function (b) {\n return b.reset();\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return this._blocks.every(function (b) {\n return b.isComplete;\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n this._blocks.forEach(function (b) {\n return b.doCommit();\n });\n\n _get(_getPrototypeOf(MaskedPattern.prototype), \"doCommit\", this).call(this);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._blocks.reduce(function (str, b) {\n return str += b.unmaskedValue;\n }, '');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"unmaskedValue\", unmaskedValue, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // TODO return _value when not in change?\n return this._blocks.reduce(function (str, b) {\n return str += b.value;\n }, '');\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedPattern.prototype), \"value\", value, this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"appendTail\",\n value: function appendTail(tail) {\n return _get(_getPrototypeOf(MaskedPattern.prototype), \"appendTail\", this).call(this, tail).aggregate(this._appendPlaceholder());\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var blockIter = this._mapPosToBlock(this.value.length);\n\n var details = new ChangeDetails();\n if (!blockIter) return details;\n\n for (var bi = blockIter.index;; ++bi) {\n var _block = this._blocks[bi];\n if (!_block) break;\n\n var blockDetails = _block._appendChar(ch, flags);\n\n var skip = blockDetails.skip;\n details.aggregate(blockDetails);\n if (skip || blockDetails.rawInserted) break; // go next char\n }\n\n return details;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractTail\",\n value: function extractTail() {\n var _this2 = this;\n\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var chunkTail = new ChunksTailDetails();\n if (fromPos === toPos) return chunkTail;\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, bi, bFromPos, bToPos) {\n var blockChunk = b.extractTail(bFromPos, bToPos);\n blockChunk.stop = _this2._findStopBefore(bi);\n blockChunk.from = _this2._blockStartPos(bi);\n if (blockChunk instanceof ChunksTailDetails) blockChunk.blockIndex = bi;\n chunkTail.extend(blockChunk);\n });\n\n return chunkTail;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (fromPos === toPos) return '';\n var input = '';\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, fromPos, toPos) {\n input += b.extractInput(fromPos, toPos, flags);\n });\n\n return input;\n }\n }, {\n key: \"_findStopBefore\",\n value: function _findStopBefore(blockIndex) {\n var stopBefore;\n\n for (var si = 0; si < this._stops.length; ++si) {\n var stop = this._stops[si];\n if (stop <= blockIndex) stopBefore = stop;else break;\n }\n\n return stopBefore;\n }\n /** Appends placeholder depending on laziness */\n\n }, {\n key: \"_appendPlaceholder\",\n value: function _appendPlaceholder(toBlockIndex) {\n var _this3 = this;\n\n var details = new ChangeDetails();\n if (this.lazy && toBlockIndex == null) return details;\n\n var startBlockIter = this._mapPosToBlock(this.value.length);\n\n if (!startBlockIter) return details;\n var startBlockIndex = startBlockIter.index;\n var endBlockIndex = toBlockIndex != null ? toBlockIndex : this._blocks.length;\n\n this._blocks.slice(startBlockIndex, endBlockIndex).forEach(function (b) {\n if (!b.lazy || toBlockIndex != null) {\n // $FlowFixMe `_blocks` may not be present\n var args = b._blocks != null ? [b._blocks.length] : [];\n\n var bDetails = b._appendPlaceholder.apply(b, args);\n\n _this3._value += bDetails.inserted;\n details.aggregate(bDetails);\n }\n });\n\n return details;\n }\n /** Finds block in pos */\n\n }, {\n key: \"_mapPosToBlock\",\n value: function _mapPosToBlock(pos) {\n var accVal = '';\n\n for (var bi = 0; bi < this._blocks.length; ++bi) {\n var _block2 = this._blocks[bi];\n var blockStartPos = accVal.length;\n accVal += _block2.value;\n\n if (pos <= accVal.length) {\n return {\n index: bi,\n offset: pos - blockStartPos\n };\n }\n }\n }\n /** */\n\n }, {\n key: \"_blockStartPos\",\n value: function _blockStartPos(blockIndex) {\n return this._blocks.slice(0, blockIndex).reduce(function (pos, b) {\n return pos += b.value.length;\n }, 0);\n }\n /** */\n\n }, {\n key: \"_forEachBlocksInRange\",\n value: function _forEachBlocksInRange(fromPos) {\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var fn = arguments.length > 2 ? arguments[2] : undefined;\n\n var fromBlockIter = this._mapPosToBlock(fromPos);\n\n if (fromBlockIter) {\n var toBlockIter = this._mapPosToBlock(toPos); // process first block\n\n\n var isSameBlock = toBlockIter && fromBlockIter.index === toBlockIter.index;\n var fromBlockStartPos = fromBlockIter.offset;\n var fromBlockEndPos = toBlockIter && isSameBlock ? toBlockIter.offset : 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 (var bi = fromBlockIter.index + 1; bi < toBlockIter.index; ++bi) {\n fn(this._blocks[bi], bi, 0, this._blocks[bi].value.length);\n } // process last block\n\n\n fn(this._blocks[toBlockIter.index], toBlockIter.index, 0, toBlockIter.offset);\n }\n }\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var removeDetails = _get(_getPrototypeOf(MaskedPattern.prototype), \"remove\", this).call(this, fromPos, toPos);\n\n this._forEachBlocksInRange(fromPos, toPos, function (b, _, bFromPos, bToPos) {\n removeDetails.aggregate(b.remove(bFromPos, bToPos));\n });\n\n return removeDetails;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos) {\n var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DIRECTION.NONE; // TODO refactor - extract alignblock\n\n var beginBlockData = this._mapPosToBlock(cursorPos) || {\n index: 0,\n offset: 0\n };\n var beginBlockOffset = beginBlockData.offset,\n beginBlockIndex = beginBlockData.index;\n var beginBlock = this._blocks[beginBlockIndex];\n if (!beginBlock) return cursorPos;\n var beginBlockCursorPos = beginBlockOffset; // if position inside block - try to adjust it\n\n if (beginBlockCursorPos !== 0 && beginBlockCursorPos < beginBlock.value.length) {\n beginBlockCursorPos = beginBlock.nearestInputPos(beginBlockOffset, forceDirection(direction));\n }\n\n var cursorAtRight = beginBlockCursorPos === beginBlock.value.length;\n var cursorAtLeft = beginBlockCursorPos === 0; // cursor is INSIDE first block (not at bounds)\n\n if (!cursorAtLeft && !cursorAtRight) return this._blockStartPos(beginBlockIndex) + beginBlockCursorPos;\n var searchBlockIndex = cursorAtRight ? beginBlockIndex + 1 : beginBlockIndex;\n\n if (direction === DIRECTION.NONE) {\n // NONE direction used to calculate start input position if no chars were removed\n // FOR NONE:\n // -\n // input|any\n // ->\n // any|input\n // <-\n // filled-input|any\n // check if first block at left is input\n if (searchBlockIndex > 0) {\n var blockIndexAtLeft = searchBlockIndex - 1;\n var blockAtLeft = this._blocks[blockIndexAtLeft];\n var blockInputPos = blockAtLeft.nearestInputPos(0, DIRECTION.NONE); // is input\n\n if (!blockAtLeft.value.length || blockInputPos !== blockAtLeft.value.length) {\n return this._blockStartPos(searchBlockIndex);\n }\n } // ->\n\n\n var firstInputAtRight = searchBlockIndex;\n\n for (var bi = firstInputAtRight; bi < this._blocks.length; ++bi) {\n var blockAtRight = this._blocks[bi];\n\n var _blockInputPos = blockAtRight.nearestInputPos(0, DIRECTION.NONE);\n\n if (!blockAtRight.value.length || _blockInputPos !== blockAtRight.value.length) {\n return this._blockStartPos(bi) + _blockInputPos;\n }\n } // <-\n // find first non-fixed symbol\n\n\n for (var _bi = searchBlockIndex - 1; _bi >= 0; --_bi) {\n var _block3 = this._blocks[_bi];\n\n var _blockInputPos2 = _block3.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block3.value.length || _blockInputPos2 !== _block3.value.length) {\n return this._blockStartPos(_bi) + _block3.value.length;\n }\n }\n\n return cursorPos;\n }\n\n if (direction === DIRECTION.LEFT || direction === DIRECTION.FORCE_LEFT) {\n // -\n // any|filled-input\n // <-\n // any|first not empty is not-len-aligned\n // not-0-aligned|any\n // ->\n // any|not-len-aligned or end\n // check if first block at right is filled input\n var firstFilledBlockIndexAtRight;\n\n for (var _bi2 = searchBlockIndex; _bi2 < this._blocks.length; ++_bi2) {\n if (this._blocks[_bi2].value) {\n firstFilledBlockIndexAtRight = _bi2;\n break;\n }\n }\n\n if (firstFilledBlockIndexAtRight != null) {\n var filledBlock = this._blocks[firstFilledBlockIndexAtRight];\n\n var _blockInputPos3 = filledBlock.nearestInputPos(0, DIRECTION.RIGHT);\n\n if (_blockInputPos3 === 0 && filledBlock.unmaskedValue.length) {\n // filled block is input\n return this._blockStartPos(firstFilledBlockIndexAtRight) + _blockInputPos3;\n }\n } // <-\n // find this vars\n\n\n var firstFilledInputBlockIndex = -1;\n var firstEmptyInputBlockIndex; // TODO consider nested empty inputs\n\n for (var _bi3 = searchBlockIndex - 1; _bi3 >= 0; --_bi3) {\n var _block4 = this._blocks[_bi3];\n\n var _blockInputPos4 = _block4.nearestInputPos(_block4.value.length, DIRECTION.FORCE_LEFT);\n\n if (!_block4.value || _blockInputPos4 !== 0) firstEmptyInputBlockIndex = _bi3;\n\n if (_blockInputPos4 !== 0) {\n if (_blockInputPos4 !== _block4.value.length) {\n // aligned inside block - return immediately\n return this._blockStartPos(_bi3) + _blockInputPos4;\n } else {\n // found filled\n firstFilledInputBlockIndex = _bi3;\n break;\n }\n }\n }\n\n if (direction === DIRECTION.LEFT) {\n // try find first empty input before start searching position only when not forced\n for (var _bi4 = firstFilledInputBlockIndex + 1; _bi4 <= Math.min(searchBlockIndex, this._blocks.length - 1); ++_bi4) {\n var _block5 = this._blocks[_bi4];\n\n var _blockInputPos5 = _block5.nearestInputPos(0, DIRECTION.NONE);\n\n var blockAlignedPos = this._blockStartPos(_bi4) + _blockInputPos5;\n\n if (blockAlignedPos > cursorPos) break; // if block is not lazy input\n\n if (_blockInputPos5 !== _block5.value.length) return blockAlignedPos;\n }\n } // process overflow\n\n\n if (firstFilledInputBlockIndex >= 0) {\n return this._blockStartPos(firstFilledInputBlockIndex) + this._blocks[firstFilledInputBlockIndex].value.length;\n } // for lazy if has aligned left inside fixed and has came to the start - use start position\n\n\n if (direction === DIRECTION.FORCE_LEFT || this.lazy && !this.extractInput() && !isInput(this._blocks[searchBlockIndex])) {\n return 0;\n }\n\n if (firstEmptyInputBlockIndex != null) {\n return this._blockStartPos(firstEmptyInputBlockIndex);\n } // find first input\n\n\n for (var _bi5 = searchBlockIndex; _bi5 < this._blocks.length; ++_bi5) {\n var _block6 = this._blocks[_bi5];\n\n var _blockInputPos6 = _block6.nearestInputPos(0, DIRECTION.NONE); // is input\n\n\n if (!_block6.value.length || _blockInputPos6 !== _block6.value.length) {\n return this._blockStartPos(_bi5) + _blockInputPos6;\n }\n }\n\n return 0;\n }\n\n if (direction === DIRECTION.RIGHT || direction === DIRECTION.FORCE_RIGHT) {\n // ->\n // any|not-len-aligned and filled\n // any|not-len-aligned\n // <-\n // not-0-aligned or start|any\n var firstInputBlockAlignedIndex;\n var firstInputBlockAlignedPos;\n\n for (var _bi6 = searchBlockIndex; _bi6 < this._blocks.length; ++_bi6) {\n var _block7 = this._blocks[_bi6];\n\n var _blockInputPos7 = _block7.nearestInputPos(0, DIRECTION.NONE);\n\n if (_blockInputPos7 !== _block7.value.length) {\n firstInputBlockAlignedPos = this._blockStartPos(_bi6) + _blockInputPos7;\n firstInputBlockAlignedIndex = _bi6;\n break;\n }\n }\n\n if (firstInputBlockAlignedIndex != null && firstInputBlockAlignedPos != null) {\n for (var _bi7 = firstInputBlockAlignedIndex; _bi7 < this._blocks.length; ++_bi7) {\n var _block8 = this._blocks[_bi7];\n\n var _blockInputPos8 = _block8.nearestInputPos(0, DIRECTION.FORCE_RIGHT);\n\n if (_blockInputPos8 !== _block8.value.length) {\n return this._blockStartPos(_bi7) + _blockInputPos8;\n }\n }\n\n return direction === DIRECTION.FORCE_RIGHT ? this.value.length : firstInputBlockAlignedPos;\n }\n\n for (var _bi8 = Math.min(searchBlockIndex, this._blocks.length - 1); _bi8 >= 0; --_bi8) {\n var _block9 = this._blocks[_bi8];\n\n var _blockInputPos9 = _block9.nearestInputPos(_block9.value.length, DIRECTION.LEFT);\n\n if (_blockInputPos9 !== 0) {\n var alignedPos = this._blockStartPos(_bi8) + _blockInputPos9;\n\n if (alignedPos >= cursorPos) return alignedPos;\n break;\n }\n }\n }\n\n return cursorPos;\n }\n /** Get block by name */\n\n }, {\n key: \"maskedBlock\",\n value: function maskedBlock(name) {\n return this.maskedBlocks(name)[0];\n }\n /** Get all blocks by name */\n\n }, {\n key: \"maskedBlocks\",\n value: function maskedBlocks(name) {\n var _this4 = this;\n\n var indices = this._maskedBlocks[name];\n if (!indices) return [];\n return indices.map(function (gi) {\n return _this4._blocks[gi];\n });\n }\n }]);\n\n return MaskedPattern;\n}(Masked);\n\nMaskedPattern.DEFAULTS = {\n lazy: true,\n placeholderChar: '_'\n};\nMaskedPattern.STOP_CHAR = '`';\nMaskedPattern.ESCAPE_CHAR = '\\\\';\nMaskedPattern.InputDefinition = PatternInputDefinition;\nMaskedPattern.FixedDefinition = PatternFixedDefinition;\n\nfunction isInput(block) {\n if (!block) return false;\n var value = block.value;\n return !value || block.nearestInputPos(0, DIRECTION.NONE) !== value.length;\n}\n\nIMask.MaskedPattern = MaskedPattern;\n/** Pattern which accepts ranges */\n\nvar MaskedRange = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedRange, _MaskedPattern);\n\n var _super = _createSuper(MaskedRange);\n\n function MaskedRange() {\n _classCallCheck(this, MaskedRange);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(MaskedRange, [{\n key: \"_matchFrom\",\n get:\n /**\r\n Optionally sets max length of pattern.\r\n Used when pattern length is longer then `to` param length. Pads zeros at start in this case.\r\n */\n\n /** Min bound */\n\n /** Max bound */\n\n /** */\n function get() {\n return this.maxLength - String(this.from).length;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_update\",\n value: function _update(opts) {\n // TODO type\n opts = Object.assign({\n to: this.to || 0,\n from: this.from || 0\n }, opts);\n var maxLength = String(opts.to).length;\n if (opts.maxLength != null) maxLength = Math.max(maxLength, opts.maxLength);\n opts.maxLength = maxLength;\n var fromStr = String(opts.from).padStart(maxLength, '0');\n var toStr = String(opts.to).padStart(maxLength, '0');\n var sameCharsCount = 0;\n\n while (sameCharsCount < toStr.length && toStr[sameCharsCount] === fromStr[sameCharsCount]) {\n ++sameCharsCount;\n }\n\n opts.mask = toStr.slice(0, sameCharsCount).replace(/0/g, '\\\\0') + '0'.repeat(maxLength - sameCharsCount);\n\n _get(_getPrototypeOf(MaskedRange.prototype), \"_update\", this).call(this, opts);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"isComplete\",\n get: function get() {\n return _get(_getPrototypeOf(MaskedRange.prototype), \"isComplete\", this) && Boolean(this.value);\n }\n }, {\n key: \"boundaries\",\n value: function boundaries(str) {\n var minstr = '';\n var maxstr = '';\n\n var _ref = str.match(/^(\\D*)(\\d*)(\\D*)/) || [],\n _ref2 = _slicedToArray(_ref, 3),\n placeholder = _ref2[1],\n num = _ref2[2];\n\n if (num) {\n minstr = '0'.repeat(placeholder.length) + num;\n maxstr = '9'.repeat(placeholder.length) + num;\n }\n\n minstr = minstr.padEnd(this.maxLength, '0');\n maxstr = maxstr.padEnd(this.maxLength, '9');\n return [minstr, maxstr];\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n str = _get(_getPrototypeOf(MaskedRange.prototype), \"doPrepare\", this).call(this, str, flags).replace(/\\D/g, '');\n if (!this.autofix) return str;\n var fromStr = String(this.from).padStart(this.maxLength, '0');\n var toStr = String(this.to).padStart(this.maxLength, '0');\n var val = this.value;\n var prepStr = '';\n\n for (var ci = 0; ci < str.length; ++ci) {\n var nextVal = val + prepStr + str[ci];\n\n var _this$boundaries = this.boundaries(nextVal),\n _this$boundaries2 = _slicedToArray(_this$boundaries, 2),\n minstr = _this$boundaries2[0],\n maxstr = _this$boundaries2[1];\n\n if (Number(maxstr) < this.from) prepStr += fromStr[nextVal.length - 1];else if (Number(minstr) > this.to) prepStr += toStr[nextVal.length - 1];else prepStr += str[ci];\n }\n\n return prepStr;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var str = this.value;\n var firstNonZero = str.search(/[^0]/);\n if (firstNonZero === -1 && str.length <= this._matchFrom) return true;\n\n var _this$boundaries3 = this.boundaries(str),\n _this$boundaries4 = _slicedToArray(_this$boundaries3, 2),\n minstr = _this$boundaries4[0],\n maxstr = _this$boundaries4[1];\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.from <= Number(maxstr) && Number(minstr) <= this.to && (_get2 = _get(_getPrototypeOf(MaskedRange.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args));\n }\n }]);\n\n return MaskedRange;\n}(MaskedPattern);\n\nIMask.MaskedRange = MaskedRange;\n/** Date mask */\n\nvar MaskedDate = /*#__PURE__*/function (_MaskedPattern) {\n _inherits(MaskedDate, _MaskedPattern);\n\n var _super = _createSuper(MaskedDate);\n /** Pattern mask for date according to {@link MaskedDate#format} */\n\n /** Start date */\n\n /** End date */\n\n /** */\n\n /**\r\n @param {Object} opts\r\n */\n\n\n function MaskedDate(opts) {\n _classCallCheck(this, MaskedDate);\n\n return _super.call(this, Object.assign({}, MaskedDate.DEFAULTS, opts));\n }\n /**\r\n @override\r\n */\n\n\n _createClass(MaskedDate, [{\n key: \"_update\",\n value: function _update(opts) {\n if (opts.mask === Date) delete opts.mask;\n if (opts.pattern) opts.mask = opts.pattern;\n var blocks = opts.blocks;\n opts.blocks = Object.assign({}, MaskedDate.GET_DEFAULT_BLOCKS()); // adjust year block\n\n if (opts.min) opts.blocks.Y.from = opts.min.getFullYear();\n if (opts.max) opts.blocks.Y.to = opts.max.getFullYear();\n\n if (opts.min && opts.max && opts.blocks.Y.from === opts.blocks.Y.to) {\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\n Object.assign(opts.blocks, blocks); // add autofix\n\n Object.keys(opts.blocks).forEach(function (bk) {\n var b = opts.blocks[bk];\n if (!('autofix' in b)) b.autofix = opts.autofix;\n });\n\n _get(_getPrototypeOf(MaskedDate.prototype), \"_update\", this).call(this, opts);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate() {\n var _get2;\n\n var date = this.date;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedDate.prototype), \"doValidate\", this)).call.apply(_get2, [this].concat(args)) && (!this.isComplete || this.isDateExist(this.value) && date != null && (this.min == null || this.min <= date) && (this.max == null || date <= this.max));\n }\n /** Checks if date is exists */\n\n }, {\n key: \"isDateExist\",\n value: function isDateExist(str) {\n return this.format(this.parse(str, this), this).indexOf(str) >= 0;\n }\n /** Parsed Date */\n\n }, {\n key: \"date\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(date) {\n this.typedValue = date;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.isComplete ? _get(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", this) : null;\n },\n set: function set(value) {\n _set(_getPrototypeOf(MaskedDate.prototype), \"typedValue\", value, this, true);\n }\n }]);\n\n return MaskedDate;\n}(MaskedPattern);\n\nMaskedDate.DEFAULTS = {\n pattern: 'd{.}`m{.}`Y',\n format: function format(date) {\n var day = String(date.getDate()).padStart(2, '0');\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var year = date.getFullYear();\n return [day, month, year].join('.');\n },\n parse: function parse(str) {\n var _str$split = str.split('.'),\n _str$split2 = _slicedToArray(_str$split, 3),\n day = _str$split2[0],\n month = _str$split2[1],\n year = _str$split2[2];\n\n return new Date(year, month - 1, day);\n }\n};\n\nMaskedDate.GET_DEFAULT_BLOCKS = function () {\n return {\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/**\r\n Generic element API to use with mask\r\n @interface\r\n*/\n\nvar MaskElement = /*#__PURE__*/function () {\n function MaskElement() {\n _classCallCheck(this, MaskElement);\n }\n\n _createClass(MaskElement, [{\n key: \"selectionStart\",\n get:\n /** */\n\n /** */\n\n /** */\n\n /** Safely returns selection start */\n function get() {\n var start;\n\n try {\n start = this._unsafeSelectionStart;\n } catch (e) {}\n\n return start != null ? start : this.value.length;\n }\n /** Safely returns selection end */\n\n }, {\n key: \"selectionEnd\",\n get: function get() {\n var end;\n\n try {\n end = this._unsafeSelectionEnd;\n } catch (e) {}\n\n return end != null ? end : this.value.length;\n }\n /** Safely sets element selection */\n\n }, {\n key: \"select\",\n value: function select(start, end) {\n if (start == null || end == null || start === this.selectionStart && end === this.selectionEnd) return;\n\n try {\n this._unsafeSelect(start, end);\n } catch (e) {}\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"isActive\",\n get: function get() {\n return false;\n }\n /** Should be overriden in subclasses */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {}\n /** Should be overriden in subclasses */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {}\n }]);\n\n return MaskElement;\n}();\n\nIMask.MaskElement = MaskElement;\n/** Bridge between HTMLElement and {@link Masked} */\n\nvar HTMLMaskElement = /*#__PURE__*/function (_MaskElement) {\n _inherits(HTMLMaskElement, _MaskElement);\n\n var _super = _createSuper(HTMLMaskElement);\n /** Mapping between HTMLElement events and mask internal events */\n\n /** HTMLElement to use mask on */\n\n /**\r\n @param {HTMLInputElement|HTMLTextAreaElement} input\r\n */\n\n\n function HTMLMaskElement(input) {\n var _this;\n\n _classCallCheck(this, HTMLMaskElement);\n\n _this = _super.call(this);\n _this.input = input;\n _this._handlers = {};\n return _this;\n }\n /** */\n // $FlowFixMe https://github.com/facebook/flow/issues/2839\n\n\n _createClass(HTMLMaskElement, [{\n key: \"rootElement\",\n get: function get() {\n return this.input.getRootNode ? this.input.getRootNode() : document;\n }\n /**\r\n Is element in focus\r\n @readonly\r\n */\n\n }, {\n key: \"isActive\",\n get: function get() {\n //$FlowFixMe\n return this.input === this.rootElement.activeElement;\n }\n /**\r\n Returns HTMLElement selection start\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionStart\",\n get: function get() {\n return this.input.selectionStart;\n }\n /**\r\n Returns HTMLElement selection end\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n return this.input.selectionEnd;\n }\n /**\r\n Sets HTMLElement selection\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n this.input.setSelectionRange(start, end);\n }\n /**\r\n HTMLElement value\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n return this.input.value;\n },\n set: function set(value) {\n this.input.value = value;\n }\n /**\r\n Binds HTMLElement events to mask internal events\r\n @override\r\n */\n\n }, {\n key: \"bindEvents\",\n value: function bindEvents(handlers) {\n var _this2 = this;\n\n Object.keys(handlers).forEach(function (event) {\n return _this2._toggleEventHandler(HTMLMaskElement.EVENTS_MAP[event], handlers[event]);\n });\n }\n /**\r\n Unbinds HTMLElement events to mask internal events\r\n @override\r\n */\n\n }, {\n key: \"unbindEvents\",\n value: function unbindEvents() {\n var _this3 = this;\n\n Object.keys(this._handlers).forEach(function (event) {\n return _this3._toggleEventHandler(event);\n });\n }\n /** */\n\n }, {\n key: \"_toggleEventHandler\",\n value: function _toggleEventHandler(event, handler) {\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 }]);\n\n return HTMLMaskElement;\n}(MaskElement);\n\nHTMLMaskElement.EVENTS_MAP = {\n selectionChange: 'keydown',\n input: 'input',\n drop: 'drop',\n click: 'click',\n focus: 'focus',\n commit: 'blur'\n};\nIMask.HTMLMaskElement = HTMLMaskElement;\n\nvar HTMLContenteditableMaskElement = /*#__PURE__*/function (_HTMLMaskElement) {\n _inherits(HTMLContenteditableMaskElement, _HTMLMaskElement);\n\n var _super = _createSuper(HTMLContenteditableMaskElement);\n\n function HTMLContenteditableMaskElement() {\n _classCallCheck(this, HTMLContenteditableMaskElement);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(HTMLContenteditableMaskElement, [{\n key: \"_unsafeSelectionStart\",\n get:\n /**\r\n Returns HTMLElement selection start\r\n @override\r\n */\n function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && selection.anchorOffset;\n }\n /**\r\n Returns HTMLElement selection end\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelectionEnd\",\n get: function get() {\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n return selection && this._unsafeSelectionStart + String(selection).length;\n }\n /**\r\n Sets HTMLElement selection\r\n @override\r\n */\n\n }, {\n key: \"_unsafeSelect\",\n value: function _unsafeSelect(start, end) {\n if (!this.rootElement.createRange) return;\n var range = this.rootElement.createRange();\n range.setStart(this.input.firstChild || this.input, start);\n range.setEnd(this.input.lastChild || this.input, end);\n var root = this.rootElement;\n var selection = root.getSelection && root.getSelection();\n\n if (selection) {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n /**\r\n HTMLElement value\r\n @override\r\n */\n\n }, {\n key: \"value\",\n get: function get() {\n // $FlowFixMe\n return this.input.textContent;\n },\n set: function set(value) {\n this.input.textContent = value;\n }\n }]);\n\n return HTMLContenteditableMaskElement;\n}(HTMLMaskElement);\n\nIMask.HTMLContenteditableMaskElement = HTMLContenteditableMaskElement;\n/** Listens to element events and controls changes between element and {@link Masked} */\n\nvar InputMask = /*#__PURE__*/function () {\n /**\r\n View element\r\n @readonly\r\n */\n\n /**\r\n Internal {@link Masked} model\r\n @readonly\r\n */\n\n /**\r\n @param {MaskElement|HTMLInputElement|HTMLTextAreaElement} el\r\n @param {Object} opts\r\n */\n function InputMask(el, opts) {\n _classCallCheck(this, InputMask);\n\n this.el = el instanceof MaskElement ? el : el.isContentEditable && el.tagName !== 'INPUT' && el.tagName !== 'TEXTAREA' ? new HTMLContenteditableMaskElement(el) : new HTMLMaskElement(el);\n this.masked = createMask(opts);\n this._listeners = {};\n this._value = '';\n this._unmaskedValue = '';\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(); // refresh\n\n\n this.updateValue();\n\n this._onChange();\n }\n /** Read or update mask */\n\n\n _createClass(InputMask, [{\n key: \"mask\",\n get: function get() {\n return this.masked.mask;\n },\n set: function set(mask) {\n if (this.maskEquals(mask)) return;\n\n if (!(mask instanceof IMask.Masked) && this.masked.constructor === maskedClass(mask)) {\n this.masked.updateOptions({\n mask: mask\n });\n return;\n }\n\n var masked = createMask({\n mask: mask\n });\n masked.unmaskedValue = this.masked.unmaskedValue;\n this.masked = masked;\n }\n /** Raw value */\n\n }, {\n key: \"maskEquals\",\n value: function maskEquals(mask) {\n return mask == null || mask === this.masked.mask || mask === Date && this.masked instanceof MaskedDate;\n }\n }, {\n key: \"value\",\n get: function get() {\n return this._value;\n },\n set: function set(str) {\n this.masked.value = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Unmasked value */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._unmaskedValue;\n },\n set: function set(str) {\n this.masked.unmaskedValue = str;\n this.updateControl();\n this.alignCursor();\n }\n /** Typed unmasked value */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return this.masked.typedValue;\n },\n set: function set(val) {\n this.masked.typedValue = val;\n this.updateControl();\n this.alignCursor();\n }\n /**\r\n Starts listening to element events\r\n @protected\r\n */\n\n }, {\n key: \"_bindEvents\",\n value: function _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 /**\r\n Stops listening to element events\r\n @protected\r\n */\n\n }, {\n key: \"_unbindEvents\",\n value: function _unbindEvents() {\n if (this.el) this.el.unbindEvents();\n }\n /**\r\n Fires custom event\r\n @protected\r\n */\n\n }, {\n key: \"_fireEvent\",\n value: function _fireEvent(ev) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var listeners = this._listeners[ev];\n if (!listeners) return;\n listeners.forEach(function (l) {\n return l.apply(void 0, args);\n });\n }\n /**\r\n Current selection start\r\n @readonly\r\n */\n\n }, {\n key: \"selectionStart\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionStart;\n }\n /** Current cursor position */\n\n }, {\n key: \"cursorPos\",\n get: function get() {\n return this._cursorChanging ? this._changingCursorPos : this.el.selectionEnd;\n },\n set: function set(pos) {\n if (!this.el || !this.el.isActive) return;\n this.el.select(pos, pos);\n\n this._saveSelection();\n }\n /**\r\n Stores current selection\r\n @protected\r\n */\n\n }, {\n key: \"_saveSelection\",\n value: function _saveSelection()\n /* ev */\n {\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\n this._selection = {\n start: this.selectionStart,\n end: this.cursorPos\n };\n }\n /** Syncronizes model value from view */\n\n }, {\n key: \"updateValue\",\n value: function updateValue() {\n this.masked.value = this.el.value;\n this._value = this.masked.value;\n }\n /** Syncronizes view from model value, fires change events */\n\n }, {\n key: \"updateControl\",\n value: function updateControl() {\n var newUnmaskedValue = this.masked.unmaskedValue;\n var newValue = this.masked.value;\n var isChanged = this.unmaskedValue !== newUnmaskedValue || this.value !== newValue;\n this._unmaskedValue = newUnmaskedValue;\n this._value = newValue;\n if (this.el.value !== newValue) this.el.value = newValue;\n if (isChanged) this._fireChangeEvents();\n }\n /** Updates options with deep equal check, recreates @{link Masked} model if mask type changes */\n\n }, {\n key: \"updateOptions\",\n value: function updateOptions(opts) {\n var mask = opts.mask,\n restOpts = _objectWithoutProperties(opts, [\"mask\"]);\n\n var updateMask = !this.maskEquals(mask);\n var updateOpts = !objectIncludes(this.masked, restOpts);\n if (updateMask) this.mask = mask;\n if (updateOpts) this.masked.updateOptions(restOpts);\n if (updateMask || updateOpts) this.updateControl();\n }\n /** Updates cursor */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor(cursorPos) {\n if (cursorPos == null) return;\n this.cursorPos = cursorPos; // also queue change cursor for mobile browsers\n\n this._delayUpdateCursor(cursorPos);\n }\n /**\r\n Delays cursor update to support mobile browsers\r\n @private\r\n */\n\n }, {\n key: \"_delayUpdateCursor\",\n value: function _delayUpdateCursor(cursorPos) {\n var _this = this;\n\n this._abortUpdateCursor();\n\n this._changingCursorPos = cursorPos;\n this._cursorChanging = setTimeout(function () {\n if (!_this.el) return; // if was destroyed\n\n _this.cursorPos = _this._changingCursorPos;\n\n _this._abortUpdateCursor();\n }, 10);\n }\n /**\r\n Fires custom events\r\n @protected\r\n */\n\n }, {\n key: \"_fireChangeEvents\",\n value: function _fireChangeEvents() {\n this._fireEvent('accept', this._inputEvent);\n\n if (this.masked.isComplete) this._fireEvent('complete', this._inputEvent);\n }\n /**\r\n Aborts delayed cursor update\r\n @private\r\n */\n\n }, {\n key: \"_abortUpdateCursor\",\n value: function _abortUpdateCursor() {\n if (this._cursorChanging) {\n clearTimeout(this._cursorChanging);\n delete this._cursorChanging;\n }\n }\n /** Aligns cursor to nearest available position */\n\n }, {\n key: \"alignCursor\",\n value: function alignCursor() {\n this.cursorPos = this.masked.nearestInputPos(this.cursorPos, DIRECTION.LEFT);\n }\n /** Aligns cursor only if selection is empty */\n\n }, {\n key: \"alignCursorFriendly\",\n value: function alignCursorFriendly() {\n if (this.selectionStart !== this.cursorPos) return; // skip if range is selected\n\n this.alignCursor();\n }\n /** Adds listener on custom event */\n\n }, {\n key: \"on\",\n value: function on(ev, handler) {\n if (!this._listeners[ev]) this._listeners[ev] = [];\n\n this._listeners[ev].push(handler);\n\n return this;\n }\n /** Removes custom event listener */\n\n }, {\n key: \"off\",\n value: function off(ev, handler) {\n if (!this._listeners[ev]) return this;\n\n if (!handler) {\n delete this._listeners[ev];\n return this;\n }\n\n var hIndex = this._listeners[ev].indexOf(handler);\n\n if (hIndex >= 0) this._listeners[ev].splice(hIndex, 1);\n return this;\n }\n /** Handles view input event */\n\n }, {\n key: \"_onInput\",\n value: function _onInput(e) {\n this._inputEvent = e;\n\n this._abortUpdateCursor(); // fix strange IE behavior\n\n\n if (!this._selection) return this.updateValue();\n var details = new ActionDetails( // new state\n this.el.value, this.cursorPos, // old state\n this.value, this._selection);\n var oldRawValue = this.masked.rawInputValue;\n var offset = this.masked.splice(details.startChangePos, details.removed.length, details.inserted, details.removeDirection).offset; // 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\n var removeDirection = oldRawValue === this.masked.rawInputValue ? details.removeDirection : DIRECTION.NONE;\n var cursorPos = this.masked.nearestInputPos(details.startChangePos + offset, removeDirection);\n this.updateControl();\n this.updateCursor(cursorPos);\n delete this._inputEvent;\n }\n /** Handles view change event and commits model value */\n\n }, {\n key: \"_onChange\",\n value: function _onChange() {\n if (this.value !== this.el.value) {\n this.updateValue();\n }\n\n this.masked.doCommit();\n this.updateControl();\n\n this._saveSelection();\n }\n /** Handles view drop event, prevents by default */\n\n }, {\n key: \"_onDrop\",\n value: function _onDrop(ev) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onFocus\",\n value: function _onFocus(ev) {\n this.alignCursorFriendly();\n }\n /** Restore last selection on focus */\n\n }, {\n key: \"_onClick\",\n value: function _onClick(ev) {\n this.alignCursorFriendly();\n }\n /** Unbind view events and removes element reference */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._unbindEvents(); // $FlowFixMe why not do so?\n\n\n this._listeners.length = 0; // $FlowFixMe\n\n delete this.el;\n }\n }]);\n\n return InputMask;\n}();\n\nIMask.InputMask = InputMask;\n/**\r\n Number mask\r\n @param {Object} opts\r\n @param {string} opts.radix - Single char\r\n @param {string} opts.thousandsSeparator - Single char\r\n @param {Array} opts.mapToRadix - Array of single chars\r\n @param {number} opts.min\r\n @param {number} opts.max\r\n @param {number} opts.scale - Digits after point\r\n @param {boolean} opts.signed - Allow negative\r\n @param {boolean} opts.normalizeZeros - Flag to remove leading and trailing zeros in the end of editing\r\n @param {boolean} opts.padFractionalZeros - Flag to pad trailing zeros after point in the end of editing\r\n*/\n\nvar MaskedNumber = /*#__PURE__*/function (_Masked) {\n _inherits(MaskedNumber, _Masked);\n\n var _super = _createSuper(MaskedNumber);\n /** Single char */\n\n /** Single char */\n\n /** Array of single chars */\n\n /** */\n\n /** */\n\n /** Digits after point */\n\n /** */\n\n /** Flag to remove leading and trailing zeros in the end of editing */\n\n /** Flag to pad trailing zeros after point in the end of editing */\n\n\n function MaskedNumber(opts) {\n _classCallCheck(this, MaskedNumber);\n\n return _super.call(this, Object.assign({}, MaskedNumber.DEFAULTS, opts));\n }\n /**\r\n @override\r\n */\n\n\n _createClass(MaskedNumber, [{\n key: \"_update\",\n value: function _update(opts) {\n _get(_getPrototypeOf(MaskedNumber.prototype), \"_update\", this).call(this, opts);\n\n this._updateRegExps();\n }\n /** */\n\n }, {\n key: \"_updateRegExps\",\n value: function _updateRegExps() {\n // use different regexp to process user input (more strict, input suffix) and tail shifting\n var start = '^' + (this.allowNegative ? '[+|\\\\-]?' : '');\n var midInput = '(0|([1-9]+\\\\d*))?';\n var mid = '\\\\d*';\n var end = (this.scale ? '(' + escapeRegExp(this.radix) + '\\\\d{0,' + this.scale + '})?' : '') + '$';\n this._numberRegExpInput = new RegExp(start + midInput + end);\n this._numberRegExp = new RegExp(start + mid + end);\n this._mapToRadixRegExp = new RegExp('[' + this.mapToRadix.map(escapeRegExp).join('') + ']', 'g');\n this._thousandsSeparatorRegExp = new RegExp(escapeRegExp(this.thousandsSeparator), 'g');\n }\n /** */\n\n }, {\n key: \"_removeThousandsSeparators\",\n value: function _removeThousandsSeparators(value) {\n return value.replace(this._thousandsSeparatorRegExp, '');\n }\n /** */\n\n }, {\n key: \"_insertThousandsSeparators\",\n value: function _insertThousandsSeparators(value) {\n // https://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript\n var 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 /**\r\n @override\r\n */\n\n }, {\n key: \"doPrepare\",\n value: function doPrepare(str) {\n var _get2;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return (_get2 = _get(_getPrototypeOf(MaskedNumber.prototype), \"doPrepare\", this)).call.apply(_get2, [this, this._removeThousandsSeparators(str.replace(this._mapToRadixRegExp, this.radix))].concat(args));\n }\n /** */\n\n }, {\n key: \"_separatorsCount\",\n value: function _separatorsCount(to) {\n var extendOnSeparators = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var count = 0;\n\n for (var 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 }, {\n key: \"_separatorsCountFromSlice\",\n value: function _separatorsCountFromSlice() {\n var slice = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this._value;\n return this._separatorsCount(this._removeThousandsSeparators(slice).length, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"extractInput\",\n value: function extractInput() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n var flags = arguments.length > 2 ? arguments[2] : undefined;\n\n var _this$_adjustRangeWit = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit2 = _slicedToArray(_this$_adjustRangeWit, 2);\n\n fromPos = _this$_adjustRangeWit2[0];\n toPos = _this$_adjustRangeWit2[1];\n return this._removeThousandsSeparators(_get(_getPrototypeOf(MaskedNumber.prototype), \"extractInput\", this).call(this, fromPos, toPos, flags));\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"_appendCharRaw\",\n value: function _appendCharRaw(ch) {\n var flags = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (!this.thousandsSeparator) return _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n var prevBeforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var prevBeforeTailSeparatorsCount = this._separatorsCountFromSlice(prevBeforeTailValue);\n\n this._value = this._removeThousandsSeparators(this.value);\n\n var appendDetails = _get(_getPrototypeOf(MaskedNumber.prototype), \"_appendCharRaw\", this).call(this, ch, flags);\n\n this._value = this._insertThousandsSeparators(this._value);\n var beforeTailValue = flags.tail && flags._beforeTailState ? flags._beforeTailState._value : this._value;\n\n var 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 }, {\n key: \"_findSeparatorAround\",\n value: function _findSeparatorAround(pos) {\n if (this.thousandsSeparator) {\n var searchFrom = pos - this.thousandsSeparator.length + 1;\n var separatorPos = this.value.indexOf(this.thousandsSeparator, searchFrom);\n if (separatorPos <= pos) return separatorPos;\n }\n\n return -1;\n }\n }, {\n key: \"_adjustRangeWithSeparators\",\n value: function _adjustRangeWithSeparators(from, to) {\n var separatorAroundFromPos = this._findSeparatorAround(from);\n\n if (separatorAroundFromPos >= 0) from = separatorAroundFromPos;\n\n var separatorAroundToPos = this._findSeparatorAround(to);\n\n if (separatorAroundToPos >= 0) to = separatorAroundToPos + this.thousandsSeparator.length;\n return [from, to];\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"remove\",\n value: function remove() {\n var fromPos = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var toPos = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.value.length;\n\n var _this$_adjustRangeWit3 = this._adjustRangeWithSeparators(fromPos, toPos);\n\n var _this$_adjustRangeWit4 = _slicedToArray(_this$_adjustRangeWit3, 2);\n\n fromPos = _this$_adjustRangeWit4[0];\n toPos = _this$_adjustRangeWit4[1];\n var valueBeforePos = this.value.slice(0, fromPos);\n var valueAfterPos = this.value.slice(toPos);\n\n var prevBeforeTailSeparatorsCount = this._separatorsCount(valueBeforePos.length);\n\n this._value = this._insertThousandsSeparators(this._removeThousandsSeparators(valueBeforePos + valueAfterPos));\n\n var beforeTailSeparatorsCount = this._separatorsCountFromSlice(valueBeforePos);\n\n return new ChangeDetails({\n tailShift: (beforeTailSeparatorsCount - prevBeforeTailSeparatorsCount) * this.thousandsSeparator.length\n });\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"nearestInputPos\",\n value: function nearestInputPos(cursorPos, direction) {\n if (!this.thousandsSeparator) return cursorPos;\n\n switch (direction) {\n case DIRECTION.NONE:\n case DIRECTION.LEFT:\n case DIRECTION.FORCE_LEFT:\n {\n var separatorAtLeftPos = this._findSeparatorAround(cursorPos - 1);\n\n if (separatorAtLeftPos >= 0) {\n var separatorAtLeftEndPos = separatorAtLeftPos + this.thousandsSeparator.length;\n\n if (cursorPos < separatorAtLeftEndPos || this.value.length <= separatorAtLeftEndPos || direction === DIRECTION.FORCE_LEFT) {\n return separatorAtLeftPos;\n }\n }\n\n break;\n }\n\n case DIRECTION.RIGHT:\n case DIRECTION.FORCE_RIGHT:\n {\n var separatorAtRightPos = this._findSeparatorAround(cursorPos);\n\n if (separatorAtRightPos >= 0) {\n return separatorAtRightPos + this.thousandsSeparator.length;\n }\n }\n }\n\n return cursorPos;\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doValidate\",\n value: function doValidate(flags) {\n var regexp = flags.input ? this._numberRegExpInput : this._numberRegExp; // validate as string\n\n var valid = regexp.test(this._removeThousandsSeparators(this.value));\n\n if (valid) {\n // validate as number\n var number = this.number;\n valid = valid && !isNaN(number) && ( // check min bound for negative values\n this.min == null || this.min >= 0 || this.min <= this.number) && ( // check max bound for positive values\n this.max == null || this.max <= 0 || this.number <= this.max);\n }\n\n return valid && _get(_getPrototypeOf(MaskedNumber.prototype), \"doValidate\", this).call(this, flags);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"doCommit\",\n value: function doCommit() {\n if (this.value) {\n var number = this.number;\n var validnum = number; // check bounds\n\n if (this.min != null) validnum = Math.max(validnum, this.min);\n if (this.max != null) validnum = Math.min(validnum, this.max);\n if (validnum !== number) this.unmaskedValue = String(validnum);\n var formatted = this.value;\n if (this.normalizeZeros) formatted = this._normalizeZeros(formatted);\n if (this.padFractionalZeros) formatted = this._padFractionalZeros(formatted);\n this._value = formatted;\n }\n\n _get(_getPrototypeOf(MaskedNumber.prototype), \"doCommit\", this).call(this);\n }\n /** */\n\n }, {\n key: \"_normalizeZeros\",\n value: function _normalizeZeros(value) {\n var parts = this._removeThousandsSeparators(value).split(this.radix); // remove leading zeros\n\n\n parts[0] = parts[0].replace(/^(\\D*)(0*)(\\d*)/, function (match, sign, zeros, num) {\n return sign + num;\n }); // add leading zero\n\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\n if (!parts[1].length) parts.length = 1; // remove fractional\n }\n\n return this._insertThousandsSeparators(parts.join(this.radix));\n }\n /** */\n\n }, {\n key: \"_padFractionalZeros\",\n value: function _padFractionalZeros(value) {\n if (!value) return value;\n var 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 /**\r\n @override\r\n */\n\n }, {\n key: \"unmaskedValue\",\n get: function get() {\n return this._removeThousandsSeparators(this._normalizeZeros(this.value)).replace(this.radix, '.');\n },\n set: function set(unmaskedValue) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", unmaskedValue.replace('.', this.radix), this, true);\n }\n /**\r\n @override\r\n */\n\n }, {\n key: \"typedValue\",\n get: function get() {\n return Number(this.unmaskedValue);\n },\n set: function set(n) {\n _set(_getPrototypeOf(MaskedNumber.prototype), \"unmaskedValue\", String(n), this, true);\n }\n /** Parsed Number */\n\n }, {\n key: \"number\",\n get: function get() {\n return this.typedValue;\n },\n set: function set(number) {\n this.typedValue = number;\n }\n /**\r\n Is negative allowed\r\n @readonly\r\n */\n\n }, {\n key: \"allowNegative\",\n get: function get() {\n return this.signed || this.min != null && this.min < 0 || this.max != null && this.max < 0;\n }\n }]);\n\n return MaskedNumber;\n}(Masked);\n\nMaskedNumber.DEFAULTS = {\n radix: ',',\n thousandsSeparator: '',\n mapToRadix: ['.'],\n scale: 2,\n signed: false,\n normalizeZeros: true,\n padFractionalZeros: false\n};\nIMask.MaskedNumber = MaskedNumber;\nvar MaskType = {\n Range: IMask.MaskedRange\n};\n\nvar MaskedTextInput = function MaskedTextInput(_ref) {\n var name = _ref.name,\n _ref$maskOptions = _ref.maskOptions,\n maskOptions = _ref$maskOptions === void 0 ? {\n mask: Number\n } : _ref$maskOptions,\n onAccept = _ref.onAccept,\n onComplete = _ref.onComplete,\n value = _ref.value,\n theme = _ref.theme,\n rest = _objectWithoutProperties$1(_ref, [\"name\", \"maskOptions\", \"onAccept\", \"onComplete\", \"value\", \"theme\"]);\n\n var inputRef = useRef();\n var maskedRef = useRef(null);\n\n var _theme = useTheme('MaskedTextInput', theme);\n\n useEffect(function () {\n var masked = maskedRef.current;\n /* istanbul ignore else */\n\n if (masked) {\n masked.updateOptions(maskOptions);\n }\n }, [maskOptions]);\n useEffect(function () {\n var masked = maskedRef.current;\n /* istanbul ignore else */\n\n if (masked) {\n masked.unmaskedValue = value;\n }\n }, [value]);\n useEffect(function () {\n var elm = inputRef.current;\n /* istanbul ignore else */\n\n if (elm && !maskedRef.current) {\n // eslint-disable-next-line\n maskedRef.current = IMask(elm, maskOptions);\n var masked = maskedRef.current;\n masked.on('accept', function () {\n /* istanbul ignore else */\n if (onAccept) {\n onAccept(masked.value, masked.unmaskedValue, masked.typedValue);\n }\n });\n masked.on('complete', function () {\n /* istanbul ignore else */\n if (onComplete) {\n onComplete(masked.value, masked.unmaskedValue, masked.typedValue);\n }\n });\n }\n\n return function () {\n /* istanbul ignore else */\n if (maskedRef.current) {\n var _masked = maskedRef.current;\n\n _masked.off('accept');\n\n _masked.off('complete');\n\n _masked.destroy();\n\n maskedRef.current = null;\n }\n };\n }, []);\n return /*#__PURE__*/React.createElement(TextInput, _extends({\n name: name,\n value: value,\n ref: inputRef,\n theme: _theme\n }, rest));\n};\n\nexport { MaskType, MaskedTextInput };"],"sourceRoot":""}