{"version":3,"sources":["webpack:///./node_modules/vue-cleave-component/dist/vue-cleave.min.js","webpack:///./node_modules/vue-simple-suggest/dist/es6.js","webpack:///./node_modules/cleave.js/dist/cleave-esm.js"],"names":["e","t","module","exports","self","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","u","assign","arguments","length","apply","this","a","name","render","attrs","type","on","blur","onBlur","props","required","validator","String","options","raw","Boolean","data","cleave","onValueChangedFn","mounted","$el","getOptions","methods","onValueChanged","target","rawValue","$emit","watch","deep","handler","destroy","setRawValue","getRawValue","beforeDestroy","component","install","selectionUp","selectionDown","select","hideList","showList","autocomplete","modes","input","fromPath","obj","path","split","reduce","hasKeyCode","arr","event","hasKeyCodeByCode","keyCode","has","some","code","Array","isArray","array","_await","then","direct","Promise","resolve","_async","f","args","reject","_empty","_awaitIgnored","_invoke","body","result","_invokeIgnored","_catch","recover","_finally","finalizer","VueSimpleSuggest","_vm","_h","$createElement","_c","_self","staticClass","class","styles","vueSimpleSuggest","designed","destyled","focus","isInFocus","$event","indexOf","_k","key","isTabbed","ref","inputWrapper","listId","listShown","removeList","_t","_b","defaultInput","domProps","text","$attrs","_v","suggestions","$scopedSlots","miscItemAbove","_e","_l","suggestion","index","getId","suggestItem","selected","isSelected","hover","isHovered","undefined","suggestionClick","_s","displayProperty","autocompleteText","miscItemBelow","staticRenderFns","inheritAttrs","model","prop","controls","defaultControls","minLength","Number","maxSuggestions","displayAttribute","valueAttribute","list","Function","filterByQuery","filter","el","toLowerCase","debounce","nullableSelect","mode","keys","preventHide","current","old","constructor","$parent","$forceUpdate","$nextTick","immediate","updateTextOutside","hovered","inputElement","canSend","timeoutInstance","isPlainSuggestion","isClicking","isFalseFocus","controlScheme","_uid","computed","$slots","componentInstance","inputIsComponent","valueProperty","_this","$refs","querySelector","setInputAriaAttributes","prepareEventHandlers","console","error","item","isEqual","setAttribute","enable","binder","keyEventsList","click","showSuggestions","keydown","onKeyDown","keyup","onListKeyUp","eventsList","onFocus","onInput","listenerBinder","slot","vNode","tag","context","children","slots","map","every","isScopedSlotEmpty","find","attr","display","getPropertyByAttribute","JSON","stringify","process","warn","setText","elem","elemId","hoveredIndex","textLength","miscSlotsAreEmpty","_this2","research","preventDefault","isMovingDown","direction","listEdge","hoversBetweenEdges","onShowList","moveSelection","onAutocomplete","ctrlKey","shiftKey","setTimeout","isTrusted","inputEvent","clearTimeout","_this3","textBeforeRequest","getSuggestions","newList","$set","clearSuggestions","_this4","listIsRequest","nextIsPlainSuggestion","_this4$list","splice","NumeralFormatter","numeralDecimalMark","numeralIntegerScale","numeralDecimalScale","numeralThousandsGroupStyle","numeralPositiveOnly","stripLeadingZeroes","prefix","signBeforePrefix","tailPrefix","delimiter","owner","groupStyle","thousand","delimiterRE","RegExp","lakh","wan","none","replace","format","parts","partSign","partSignAndPrefix","partInteger","partDecimal","slice","toString","NumeralFormatter_1","DateFormatter","datePattern","dateMin","dateMax","date","blocks","reverse","x","parseInt","unshift","initBlocks","forEach","push","getISOFormatDate","addLeadingZero","getBlocks","getValidatedDate","sub","sub0","rest","getFixedDateString","day","month","year","dayIndex","monthIndex","yearIndex","dayStartIndex","monthStartIndex","yearStartIndex","fullYearDone","getFixedDate","getRangeFixedDate","previous","addLeadingZeroForYear","Math","min","isLeapYear","number","fullYearMode","DateFormatter_1","TimeFormatter","timePattern","timeFormat","time","getISOFormatTime","getTimeFormatOptions","maxHourFirstDigit","maxHours","maxMinutesFirstDigit","maxMinutes","getValidatedTime","timeFormatOptions","getFixedTimeString","second","minute","hour","secondIndex","minuteIndex","hourIndex","secondStartIndex","minuteStartIndex","hourStartIndex","getFixedTime","TimeFormatter_1","PhoneFormatter","formatter","setFormatter","phoneNumber","clear","validated","iMax","inputDigit","charAt","test","PhoneFormatter_1","CreditCardDetector","uatp","amex","diners","discover","mastercard","dankort","instapayment","jcb15","jcb","maestro","visa","mir","unionPay","general","re","getStrictBlocks","block","total","prev","concat","getInfo","strictMode","matchedBlocks","CreditCardDetector_1","Util","noop","strip","getPostDelimiter","delimiters","matchedDelimiter","getDelimiterREByDelimiter","getNextCursorPosition","prevPos","oldValue","newValue","getPositionOffset","oldRawValue","newRawValue","lengthOffset","stripDelimiters","abs","letter","headStr","str","getMaxLength","getPrefixStrippedValue","prefixLength","prevResult","noImmediatePrefix","prevValue","getFirstDiffIndex","getFormattedValue","blocksLength","delimiterLazyShow","multipleDelimiters","currentDelimiter","fixPrefixCursor","val","appendix","setSelectionRange","len","checkFullSelection","selection","window","getSelection","document","ex","setSelection","element","position","doc","getActiveElement","createTextRange","range","move","parent","activeElement","shadowRoot","isAndroid","navigator","userAgent","isAndroidBackspaceKeydown","lastInputValue","currentInputValue","Util_1","DefaultProperties","opts","creditCard","creditCardStrictMode","creditCardType","onCreditCardTypeChanged","phone","phoneRegionCode","phoneFormatter","timeFormatter","dateFormatter","numeral","swapHiddenInput","numericOnly","uppercase","lowercase","rawValueTrimPrefix","copyDelimiter","initValue","delimiterLength","root","commonjsGlobal","maxLength","backspace","DefaultProperties_1","Cleave","hasMultipleElements","querySelectorAll","Error","properties","init","pps","isBackward","onChangeListener","onChange","onKeyDownListener","onFocusListener","onCutListener","onCut","onCopyListener","onCopy","initSwapHiddenInput","addEventListener","initPhoneFormatter","initDateFormatter","initTimeFormatter","initNumeralFormatter","inputFormatter","cloneNode","parentNode","insertBefore","elementSwapHidden","id","numeralFormatter","AsYouTypeFormatter","charCode","which","inputType","postDelimiter","postDelimiterBackspace","copyClipboardData","inputValue","textToCopy","clipboardData","setData","postDelimiterAfter","updateValueState","toUpperCase","updateCreditCardPropsByValue","creditCardInfo","endPos","selectionEnd","callOnValueChanged","setPhoneRegionCode","removeEventListener","Cleave_1"],"mappings":"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","file":"js/chunk-021edce0.f4e9e85f.js","sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"cleave.js\")):\"function\"==typeof define&&define.amd?define(\"VueCleave\",[\"cleave.js\"],t):\"object\"==typeof exports?exports.VueCleave=t(require(\"cleave.js\")):e.VueCleave=t(e.Cleave)}(\"undefined\"!=typeof self?self:this,function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=1)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n.n(r);function u(){return(u=Object.assign||function(e){for(var t=1;t o === Object(o) ? o[i] : o, obj);\n}\n\nfunction hasKeyCode(arr, event) {\n return hasKeyCodeByCode(arr, event.keyCode);\n}\n\nfunction hasKeyCodeByCode(arr, keyCode) {\n if (arr.length <= 0) return false;\n\n const has = arr => arr.some(code => code === keyCode);\n if (Array.isArray(arr[0])) {\n return arr.some(array => has(array));\n } else {\n return has(arr);\n }\n}\n\nfunction _await(value, then, direct) {\n if (direct) {\n return then ? then(value) : value;\n }if (!value || !value.then) {\n value = Promise.resolve(value);\n }return then ? value.then(then) : value;\n}function _async(f) {\n return function () {\n for (var args = [], i = 0; i < arguments.length; i++) {\n args[i] = arguments[i];\n }try {\n return Promise.resolve(f.apply(this, args));\n } catch (e) {\n return Promise.reject(e);\n }\n };\n}function _empty() {}function _awaitIgnored(value, direct) {\n if (!direct) {\n return value && value.then ? value.then(_empty) : Promise.resolve();\n }\n}function _invoke(body, then) {\n var result = body();if (result && result.then) {\n return result.then(then);\n }return then(result);\n}function _invokeIgnored(body) {\n var result = body();if (result && result.then) {\n return result.then(_empty);\n }\n}\nfunction _catch(body, recover) {\n try {\n var result = body();\n } catch (e) {\n return recover(e);\n }if (result && result.then) {\n return result.then(void 0, recover);\n }return result;\n}function _finally(body, finalizer) {\n try {\n var result = body();\n } catch (e) {\n return finalizer();\n }if (result && result.then) {\n return result.then(finalizer, finalizer);\n }return finalizer();\n}var VueSimpleSuggest = {\n render: function () {\n var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('div', { staticClass: \"vue-simple-suggest\", class: [_vm.styles.vueSimpleSuggest, { designed: !_vm.destyled, focus: _vm.isInFocus }], on: { \"keydown\": function ($event) {\n if (!$event.type.indexOf('key') && _vm._k($event.keyCode, \"tab\", 9, $event.key, \"Tab\")) {\n return null;\n }_vm.isTabbed = true;\n } } }, [_c('div', { ref: \"inputSlot\", staticClass: \"input-wrapper\", class: _vm.styles.inputWrapper, attrs: { \"role\": \"combobox\", \"aria-haspopup\": \"listbox\", \"aria-owns\": _vm.listId, \"aria-expanded\": !!_vm.listShown && !_vm.removeList ? 'true' : 'false' } }, [_vm._t(\"default\", [_c('input', _vm._b({ staticClass: \"default-input\", class: _vm.styles.defaultInput, domProps: { \"value\": _vm.text || '' } }, 'input', _vm.$attrs, false))])], 2), _vm._v(\" \"), _c('transition', { attrs: { \"name\": \"vue-simple-suggest\" } }, [!!_vm.listShown && !_vm.removeList ? _c('ul', { staticClass: \"suggestions\", class: _vm.styles.suggestions, attrs: { \"id\": _vm.listId, \"role\": \"listbox\", \"aria-labelledby\": _vm.listId } }, [!!this.$scopedSlots['misc-item-above'] ? _c('li', { class: _vm.styles.miscItemAbove }, [_vm._t(\"misc-item-above\", null, { \"suggestions\": _vm.suggestions, \"query\": _vm.text })], 2) : _vm._e(), _vm._v(\" \"), _vm._l(_vm.suggestions, function (suggestion, index) {\n return _c('li', { key: _vm.getId(suggestion, index), staticClass: \"suggest-item\", class: [_vm.styles.suggestItem, {\n selected: _vm.isSelected(suggestion),\n hover: _vm.isHovered(suggestion)\n }], attrs: { \"role\": \"option\", \"aria-selected\": _vm.isHovered(suggestion) || _vm.isSelected(suggestion) ? 'true' : 'false', \"id\": _vm.getId(suggestion, index) }, on: { \"mouseenter\": function ($event) {\n return _vm.hover(suggestion, $event.target);\n }, \"mouseleave\": function ($event) {\n return _vm.hover(undefined);\n }, \"click\": function ($event) {\n return _vm.suggestionClick(suggestion, $event);\n } } }, [_vm._t(\"suggestion-item\", [_c('span', [_vm._v(_vm._s(_vm.displayProperty(suggestion)))])], { \"autocomplete\": function () {\n return _vm.autocompleteText(suggestion);\n }, \"suggestion\": suggestion, \"query\": _vm.text })], 2);\n }), _vm._v(\" \"), !!this.$scopedSlots['misc-item-below'] ? _c('li', { class: _vm.styles.miscItemBelow }, [_vm._t(\"misc-item-below\", null, { \"suggestions\": _vm.suggestions, \"query\": _vm.text })], 2) : _vm._e()], 2) : _vm._e()])], 1);\n },\n staticRenderFns: [],\n name: 'vue-simple-suggest',\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'input'\n },\n props: {\n styles: {\n type: Object,\n default: () => ({})\n },\n controls: {\n type: Object,\n default: () => defaultControls\n },\n minLength: {\n type: Number,\n default: 1\n },\n maxSuggestions: {\n type: Number,\n default: 10\n },\n displayAttribute: {\n type: String,\n default: 'title'\n },\n valueAttribute: {\n type: String,\n default: 'id'\n },\n list: {\n type: [Function, Array],\n default: () => []\n },\n removeList: {\n type: Boolean,\n default: false\n },\n destyled: {\n type: Boolean,\n default: false\n },\n filterByQuery: {\n type: Boolean,\n default: false\n },\n filter: {\n type: Function,\n default(el, value) {\n return value ? ~this.displayProperty(el).toLowerCase().indexOf(value.toLowerCase()) : true;\n }\n },\n debounce: {\n type: Number,\n default: 0\n },\n nullableSelect: {\n type: Boolean,\n default: false\n },\n value: {},\n mode: {\n type: String,\n default: 'input',\n validator: value => !!~Object.keys(modes).indexOf(value.toLowerCase())\n },\n preventHide: {\n type: Boolean,\n default: false\n }\n },\n // Handle run-time mode changes (now working):\n watch: {\n mode: {\n handler(current, old) {\n this.constructor.options.model.event = current;\n\n // Can be null if the component is root\n this.$parent && this.$parent.$forceUpdate();\n\n this.$nextTick(() => {\n if (current === 'input') {\n this.$emit('input', this.text);\n } else {\n this.$emit('select', this.selected);\n }\n });\n },\n immediate: true\n },\n value: {\n handler(current) {\n if (typeof current !== 'string') {\n current = this.displayProperty(current);\n }\n this.updateTextOutside(current);\n },\n immediate: true\n }\n },\n //\n data() {\n return {\n selected: null,\n hovered: null,\n suggestions: [],\n listShown: false,\n inputElement: null,\n canSend: true,\n timeoutInstance: null,\n text: this.value,\n isPlainSuggestion: false,\n isClicking: false,\n isInFocus: false,\n isFalseFocus: false,\n isTabbed: false,\n controlScheme: {},\n listId: `${this._uid}-suggestions`\n };\n },\n computed: {\n listIsRequest() {\n return typeof this.list === 'function';\n },\n inputIsComponent() {\n return this.$slots.default && this.$slots.default.length > 0 && !!this.$slots.default[0].componentInstance;\n },\n input() {\n return this.inputIsComponent ? this.$slots.default[0].componentInstance : this.inputElement;\n },\n on() {\n return this.inputIsComponent ? '$on' : 'addEventListener';\n },\n off() {\n return this.inputIsComponent ? '$off' : 'removeEventListener';\n },\n hoveredIndex() {\n for (let i = 0; i < this.suggestions.length; i++) {\n const el = this.suggestions[i];\n if (this.hovered && this.valueProperty(this.hovered) == this.valueProperty(el)) {\n return i;\n }\n }\n return -1;\n },\n textLength() {\n return this.text && this.text.length || this.inputElement.value.length || 0;\n },\n isSelectedUpToDate() {\n return !!this.selected && this.displayProperty(this.selected) === this.text;\n }\n },\n created() {\n this.controlScheme = Object.assign({}, defaultControls, this.controls);\n },\n mounted: _async(function () {\n const _this = this;\n\n return _await(_this.$slots.default, function () {\n\n _this.$nextTick(() => {\n _this.inputElement = _this.$refs['inputSlot'].querySelector('input');\n\n if (_this.inputElement) {\n _this.setInputAriaAttributes();\n _this.prepareEventHandlers(true);\n } else {\n console.error('No input element found');\n }\n });\n });\n }),\n\n beforeDestroy() {\n this.prepareEventHandlers(false);\n },\n methods: {\n isEqual(suggestion, item) {\n return item && this.valueProperty(suggestion) == this.valueProperty(item);\n },\n isSelected(suggestion) {\n return this.isEqual(suggestion, this.selected);\n },\n isHovered(suggestion) {\n return this.isEqual(suggestion, this.hovered);\n },\n setInputAriaAttributes() {\n this.inputElement.setAttribute('aria-activedescendant', '');\n this.inputElement.setAttribute('aria-autocomplete', 'list');\n this.inputElement.setAttribute('aria-controls', this.listId);\n },\n prepareEventHandlers(enable) {\n const binder = this[enable ? 'on' : 'off'];\n const keyEventsList = {\n click: this.showSuggestions,\n keydown: this.onKeyDown,\n keyup: this.onListKeyUp\n };\n const eventsList = Object.assign({\n blur: this.onBlur,\n focus: this.onFocus,\n input: this.onInput\n }, keyEventsList);\n\n for (const event in eventsList) {\n this.input[binder](event, eventsList[event]);\n }\n\n const listenerBinder = enable ? 'addEventListener' : 'removeEventListener';\n\n for (const event in keyEventsList) {\n this.inputElement[listenerBinder](event, keyEventsList[event]);\n }\n },\n isScopedSlotEmpty(slot) {\n if (slot) {\n const vNode = slot(this);\n return !(Array.isArray(vNode) || vNode && (vNode.tag || vNode.context || vNode.text || vNode.children));\n }\n\n return true;\n },\n miscSlotsAreEmpty() {\n const slots = ['misc-item-above', 'misc-item-below'].map(s => this.$scopedSlots[s]);\n\n if (slots.every(s => !!s)) {\n return slots.every(this.isScopedSlotEmpty.bind(this));\n }\n\n const slot = slots.find(s => !!s);\n\n return this.isScopedSlotEmpty.call(this, slot);\n },\n getPropertyByAttribute(obj, attr) {\n return this.isPlainSuggestion ? obj : typeof obj !== undefined ? fromPath(obj, attr) : obj;\n },\n displayProperty(obj) {\n if (this.isPlainSuggestion) {\n return obj;\n }\n\n let display = this.getPropertyByAttribute(obj, this.displayAttribute);\n\n if (typeof display === 'undefined') {\n display = JSON.stringify(obj);\n\n if (process && ~process.env.NODE_ENV.indexOf('dev')) {\n console.warn('[vue-simple-suggest]: Please, provide `display-attribute` as a key or a dotted path for a property from your object.');\n }\n }\n\n return String(display || '');\n },\n valueProperty(obj) {\n if (this.isPlainSuggestion) {\n return obj;\n }\n\n const value = this.getPropertyByAttribute(obj, this.valueAttribute);\n\n if (typeof value === 'undefined') {\n console.error(`[vue-simple-suggest]: Please, check if you passed 'value-attribute' (default is 'id') and 'display-attribute' (default is 'title') props correctly.\n Your list objects should always contain a unique identifier.`);\n }\n\n return value;\n },\n\n autocompleteText(suggestion) {\n this.setText(this.displayProperty(suggestion));\n },\n setText(text) {\n this.$nextTick(() => {\n this.inputElement.value = text;\n this.text = text;\n this.$emit('input', text);\n });\n },\n select(item) {\n if (this.selected !== item || this.nullableSelect && !item) {\n this.selected = item;\n this.$emit('select', item);\n\n if (item) {\n this.autocompleteText(item);\n }\n }\n\n this.hover(null);\n },\n hover(item, elem) {\n const elemId = !!item ? this.getId(item, this.hoveredIndex) : '';\n\n this.inputElement.setAttribute('aria-activedescendant', elemId);\n\n if (item && item !== this.hovered) {\n this.$emit('hover', item, elem);\n }\n\n this.hovered = item;\n },\n hideList() {\n if (this.listShown) {\n this.listShown = false;\n this.hover(null);\n this.$emit('hide-list');\n }\n },\n showList() {\n if (!this.listShown) {\n if (this.textLength >= this.minLength && (this.suggestions.length > 0 || !this.miscSlotsAreEmpty())) {\n this.listShown = true;\n this.$emit('show-list');\n }\n }\n },\n showSuggestions: _async(function () {\n const _this2 = this;\n\n return _invoke(function () {\n if (_this2.suggestions.length === 0 && _this2.minLength <= _this2.textLength) {\n // try show misc slots while researching\n _this2.showList();\n return _awaitIgnored(_this2.research());\n }\n }, function () {\n\n _this2.showList();\n });\n }),\n\n onShowList(e) {\n if (hasKeyCode(this.controlScheme.showList, e)) {\n this.showSuggestions();\n }\n },\n moveSelection(e) {\n if (!this.listShown || !this.suggestions.length) return;\n if (hasKeyCode([this.controlScheme.selectionUp, this.controlScheme.selectionDown], e)) {\n e.preventDefault();\n\n const isMovingDown = hasKeyCode(this.controlScheme.selectionDown, e);\n const direction = isMovingDown * 2 - 1;\n const listEdge = isMovingDown ? 0 : this.suggestions.length - 1;\n const hoversBetweenEdges = isMovingDown ? this.hoveredIndex < this.suggestions.length - 1 : this.hoveredIndex > 0;\n\n let item = null;\n\n if (!this.hovered) {\n item = this.selected || this.suggestions[listEdge];\n } else if (hoversBetweenEdges) {\n item = this.suggestions[this.hoveredIndex + direction];\n } else /* if hovers on edge */{\n item = this.suggestions[listEdge];\n }\n this.hover(item);\n }\n },\n onKeyDown(e) {\n const select = this.controlScheme.select,\n hideList = this.controlScheme.hideList;\n\n // prevent form submit on keydown if Enter key registered in the keyup list\n if (e.key === 'Enter' && this.listShown && hasKeyCodeByCode([select, hideList], 13)) {\n e.preventDefault();\n }\n\n if (e.key === 'Tab' && this.hovered) {\n this.select(this.hovered);\n }\n\n this.onShowList(e);\n this.moveSelection(e);\n this.onAutocomplete(e);\n },\n onListKeyUp(e) {\n const select = this.controlScheme.select,\n hideList = this.controlScheme.hideList;\n\n if (this.listShown && hasKeyCode([select, hideList], e)) {\n e.preventDefault();\n if (hasKeyCode(select, e)) {\n this.select(this.hovered);\n }\n\n this.hideList();\n }\n },\n onAutocomplete(e) {\n if (hasKeyCode(this.controlScheme.autocomplete, e) && (e.ctrlKey || e.shiftKey) && this.suggestions.length > 0 && this.suggestions[0] && this.listShown) {\n e.preventDefault();\n this.hover(this.suggestions[0]);\n this.autocompleteText(this.suggestions[0]);\n }\n },\n suggestionClick(suggestion, e) {\n this.$emit('suggestion-click', suggestion, e);\n this.select(suggestion);\n\n if (!this.preventHide) this.hideList();\n\n if (this.isClicking) {\n setTimeout(() => {\n this.inputElement.focus();\n\n /// Ensure, that all needed flags are off before finishing the click.\n this.isClicking = false;\n }, 0);\n }\n },\n onBlur(e) {\n if (this.isInFocus) {\n\n /// Clicking starts here, because input's blur occurs before the suggestionClick\n /// and exactly when the user clicks the mouse button or taps the screen.\n this.isClicking = this.hovered && !this.isTabbed;\n\n if (!this.isClicking) {\n this.isInFocus = false;\n this.hideList();\n\n this.$emit('blur', e);\n } else if (e && e.isTrusted && !this.isTabbed) {\n this.isFalseFocus = true;\n }\n } else {\n this.inputElement.blur();\n console.error(`This should never happen!\n If you encountered this error, please make sure that your input component emits 'focus' events properly.\n For more info see https://github.com/KazanExpress/vue-simple-suggest#custom-input.\n\n If your 'vue-simple-suggest' setup does not include a custom input component - please,\n report to https://github.com/KazanExpress/vue-simple-suggest/issues/new`);\n }\n\n this.isTabbed = false;\n },\n onFocus(e) {\n this.isInFocus = true;\n\n // Only emit, if it was a native input focus\n if (e && !this.isFalseFocus) {\n this.$emit('focus', e);\n }\n\n // Show list only if the item has not been clicked (isFalseFocus indicates that click was made earlier)\n if (!this.isClicking && !this.isFalseFocus) {\n this.showSuggestions();\n }\n\n this.isFalseFocus = false;\n },\n onInput(inputEvent) {\n const value = !inputEvent.target ? inputEvent : inputEvent.target.value;\n\n this.updateTextOutside(value);\n this.$emit('input', value);\n },\n updateTextOutside(value) {\n if (this.text === value) {\n return;\n }\n\n this.text = value;\n if (this.hovered) this.hover(null);\n\n if (this.text.length < this.minLength) {\n this.hideList();\n return;\n }\n\n if (this.debounce) {\n clearTimeout(this.timeoutInstance);\n this.timeoutInstance = setTimeout(this.research, this.debounce);\n } else {\n this.research();\n }\n },\n research: _async(function () {\n const _this3 = this;\n\n return _finally(function () {\n return _catch(function () {\n return _invokeIgnored(function () {\n if (_this3.canSend) {\n _this3.canSend = false;\n // @TODO: fix when promises will be cancelable (never :D)\n let textBeforeRequest = _this3.text;\n return _await(_this3.getSuggestions(_this3.text), function (newList) {\n if (textBeforeRequest === _this3.text) {\n _this3.$set(_this3, 'suggestions', newList);\n }\n });\n }\n });\n }, function (e) {\n _this3.clearSuggestions();\n throw e;\n });\n }, function () {\n _this3.canSend = true;\n\n if (_this3.suggestions.length === 0 && _this3.miscSlotsAreEmpty()) {\n _this3.hideList();\n } else if (_this3.isInFocus) {\n _this3.showList();\n }\n\n return _this3.suggestions;\n });\n }),\n getSuggestions: _async(function (value) {\n const _this4 = this;\n\n value = value || '';\n\n if (value.length < _this4.minLength) {\n return [];\n }\n\n _this4.selected = null;\n\n // Start request if can\n if (_this4.listIsRequest) {\n _this4.$emit('request-start', value);\n }\n\n let nextIsPlainSuggestion = false;\n let result = [];\n return _finally(function () {\n return _catch(function () {\n return _invoke(function () {\n if (_this4.listIsRequest) {\n return _await(_this4.list(value), function (_this4$list) {\n result = _this4$list || [];\n });\n } else {\n result = _this4.list;\n }\n }, function () {\n\n // IFF the result is not an array (just in case!) - make it an array\n if (!Array.isArray(result)) {\n result = [result];\n }\n\n nextIsPlainSuggestion = typeof result[0] !== 'object' && typeof result[0] !== 'undefined' || Array.isArray(result[0]);\n\n if (_this4.filterByQuery) {\n result = result.filter(el => _this4.filter(el, value));\n }\n\n if (_this4.listIsRequest) {\n _this4.$emit('request-done', result);\n }\n });\n }, function (e) {\n if (_this4.listIsRequest) {\n _this4.$emit('request-failed', e);\n } else {\n throw e;\n }\n });\n }, function () {\n if (_this4.maxSuggestions) {\n result.splice(_this4.maxSuggestions);\n }\n\n _this4.isPlainSuggestion = nextIsPlainSuggestion;\n return result;\n });\n }),\n\n clearSuggestions() {\n this.suggestions.splice(0);\n },\n getId(value, i) {\n return `${this.listId}-suggestion-${this.isPlainSuggestion ? i : this.valueProperty(value) || i}`;\n }\n }\n};\n\nexport default VueSimpleSuggest;\n","var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nvar NumeralFormatter = function (numeralDecimalMark,\n numeralIntegerScale,\n numeralDecimalScale,\n numeralThousandsGroupStyle,\n numeralPositiveOnly,\n stripLeadingZeroes,\n prefix,\n signBeforePrefix,\n tailPrefix,\n delimiter) {\n var owner = this;\n\n owner.numeralDecimalMark = numeralDecimalMark || '.';\n owner.numeralIntegerScale = numeralIntegerScale > 0 ? numeralIntegerScale : 0;\n owner.numeralDecimalScale = numeralDecimalScale >= 0 ? numeralDecimalScale : 2;\n owner.numeralThousandsGroupStyle = numeralThousandsGroupStyle || NumeralFormatter.groupStyle.thousand;\n owner.numeralPositiveOnly = !!numeralPositiveOnly;\n owner.stripLeadingZeroes = stripLeadingZeroes !== false;\n owner.prefix = (prefix || prefix === '') ? prefix : '';\n owner.signBeforePrefix = !!signBeforePrefix;\n owner.tailPrefix = !!tailPrefix;\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ',';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n};\n\nNumeralFormatter.groupStyle = {\n thousand: 'thousand',\n lakh: 'lakh',\n wan: 'wan',\n none: 'none' \n};\n\nNumeralFormatter.prototype = {\n getRawValue: function (value) {\n return value.replace(this.delimiterRE, '').replace(this.numeralDecimalMark, '.');\n },\n\n format: function (value) {\n var owner = this, parts, partSign, partSignAndPrefix, partInteger, partDecimal = '';\n\n // strip alphabet letters\n value = value.replace(/[A-Za-z]/g, '')\n // replace the first decimal mark with reserved placeholder\n .replace(owner.numeralDecimalMark, 'M')\n\n // strip non numeric letters except minus and \"M\"\n // this is to ensure prefix has been stripped\n .replace(/[^\\dM-]/g, '')\n\n // replace the leading minus with reserved placeholder\n .replace(/^\\-/, 'N')\n\n // strip the other minus sign (if present)\n .replace(/\\-/g, '')\n\n // replace the minus sign (if present)\n .replace('N', owner.numeralPositiveOnly ? '' : '-')\n\n // replace decimal mark\n .replace('M', owner.numeralDecimalMark);\n\n // strip any leading zeros\n if (owner.stripLeadingZeroes) {\n value = value.replace(/^(-)?0+(?=\\d)/, '$1');\n }\n\n partSign = value.slice(0, 1) === '-' ? '-' : '';\n if (typeof owner.prefix != 'undefined') {\n if (owner.signBeforePrefix) {\n partSignAndPrefix = partSign + owner.prefix;\n } else {\n partSignAndPrefix = owner.prefix + partSign;\n }\n } else {\n partSignAndPrefix = partSign;\n }\n \n partInteger = value;\n\n if (value.indexOf(owner.numeralDecimalMark) >= 0) {\n parts = value.split(owner.numeralDecimalMark);\n partInteger = parts[0];\n partDecimal = owner.numeralDecimalMark + parts[1].slice(0, owner.numeralDecimalScale);\n }\n\n if(partSign === '-') {\n partInteger = partInteger.slice(1);\n }\n\n if (owner.numeralIntegerScale > 0) {\n partInteger = partInteger.slice(0, owner.numeralIntegerScale);\n }\n\n switch (owner.numeralThousandsGroupStyle) {\n case NumeralFormatter.groupStyle.lakh:\n partInteger = partInteger.replace(/(\\d)(?=(\\d\\d)+\\d$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.wan:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{4})+$)/g, '$1' + owner.delimiter);\n\n break;\n\n case NumeralFormatter.groupStyle.thousand:\n partInteger = partInteger.replace(/(\\d)(?=(\\d{3})+$)/g, '$1' + owner.delimiter);\n\n break;\n }\n\n if (owner.tailPrefix) {\n return partSign + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '') + owner.prefix;\n }\n\n return partSignAndPrefix + partInteger.toString() + (owner.numeralDecimalScale > 0 ? partDecimal.toString() : '');\n }\n};\n\nvar NumeralFormatter_1 = NumeralFormatter;\n\nvar DateFormatter = function (datePattern, dateMin, dateMax) {\n var owner = this;\n\n owner.date = [];\n owner.blocks = [];\n owner.datePattern = datePattern;\n owner.dateMin = dateMin\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMin.length === 2) owner.dateMin.unshift(0);\n\n owner.dateMax = dateMax\n .split('-')\n .reverse()\n .map(function(x) {\n return parseInt(x, 10);\n });\n if (owner.dateMax.length === 2) owner.dateMax.unshift(0);\n \n owner.initBlocks();\n};\n\nDateFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.datePattern.forEach(function (value) {\n if (value === 'Y') {\n owner.blocks.push(4);\n } else {\n owner.blocks.push(2);\n }\n });\n },\n\n getISOFormatDate: function () {\n var owner = this,\n date = owner.date;\n\n return date[2] ? (\n date[2] + '-' + owner.addLeadingZero(date[1]) + '-' + owner.addLeadingZero(date[0])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getValidatedDate: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.datePattern[index]) {\n case 'd':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 3) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 31) {\n sub = '31';\n }\n\n break;\n\n case 'm':\n if (sub === '00') {\n sub = '01';\n } else if (parseInt(sub0, 10) > 1) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > 12) {\n sub = '12';\n }\n\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedDateString(result);\n },\n\n getFixedDateString: function (value) {\n var owner = this, datePattern = owner.datePattern, date = [],\n dayIndex = 0, monthIndex = 0, yearIndex = 0,\n dayStartIndex = 0, monthStartIndex = 0, yearStartIndex = 0,\n day, month, year, fullYearDone = false;\n\n // mm-dd || dd-mm\n if (value.length === 4 && datePattern[0].toLowerCase() !== 'y' && datePattern[1].toLowerCase() !== 'y') {\n dayStartIndex = datePattern[0] === 'd' ? 0 : 2;\n monthStartIndex = 2 - dayStartIndex;\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n\n date = this.getFixedDate(day, month, 0);\n }\n\n // yyyy-mm-dd || yyyy-dd-mm || mm-dd-yyyy || dd-mm-yyyy || dd-yyyy-mm || mm-yyyy-dd\n if (value.length === 8) {\n datePattern.forEach(function (type, index) {\n switch (type) {\n case 'd':\n dayIndex = index;\n break;\n case 'm':\n monthIndex = index;\n break;\n default:\n yearIndex = index;\n break;\n }\n });\n\n yearStartIndex = yearIndex * 2;\n dayStartIndex = (dayIndex <= yearIndex) ? dayIndex * 2 : (dayIndex * 2 + 2);\n monthStartIndex = (monthIndex <= yearIndex) ? monthIndex * 2 : (monthIndex * 2 + 2);\n\n day = parseInt(value.slice(dayStartIndex, dayStartIndex + 2), 10);\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = this.getFixedDate(day, month, year);\n }\n\n // mm-yy || yy-mm\n if (value.length === 4 && (datePattern[0] === 'y' || datePattern[1] === 'y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 2;\n yearStartIndex = 2 - monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 2), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 2).length === 2;\n\n date = [0, month, year];\n }\n\n // mm-yyyy || yyyy-mm\n if (value.length === 6 && (datePattern[0] === 'Y' || datePattern[1] === 'Y')) {\n monthStartIndex = datePattern[0] === 'm' ? 0 : 4;\n yearStartIndex = 2 - 0.5 * monthStartIndex;\n month = parseInt(value.slice(monthStartIndex, monthStartIndex + 2), 10);\n year = parseInt(value.slice(yearStartIndex, yearStartIndex + 4), 10);\n\n fullYearDone = value.slice(yearStartIndex, yearStartIndex + 4).length === 4;\n\n date = [0, month, year];\n }\n\n date = owner.getRangeFixedDate(date);\n owner.date = date;\n\n var result = date.length === 0 ? value : datePattern.reduce(function (previous, current) {\n switch (current) {\n case 'd':\n return previous + (date[0] === 0 ? '' : owner.addLeadingZero(date[0]));\n case 'm':\n return previous + (date[1] === 0 ? '' : owner.addLeadingZero(date[1]));\n case 'y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], false) : '');\n case 'Y':\n return previous + (fullYearDone ? owner.addLeadingZeroForYear(date[2], true) : '');\n }\n }, '');\n\n return result;\n },\n\n getRangeFixedDate: function (date) {\n var owner = this,\n datePattern = owner.datePattern,\n dateMin = owner.dateMin || [],\n dateMax = owner.dateMax || [];\n\n if (!date.length || (dateMin.length < 3 && dateMax.length < 3)) return date;\n\n if (\n datePattern.find(function(x) {\n return x.toLowerCase() === 'y';\n }) &&\n date[2] === 0\n ) return date;\n\n if (dateMax.length && (dateMax[2] < date[2] || (\n dateMax[2] === date[2] && (dateMax[1] < date[1] || (\n dateMax[1] === date[1] && dateMax[0] < date[0]\n ))\n ))) return dateMax;\n\n if (dateMin.length && (dateMin[2] > date[2] || (\n dateMin[2] === date[2] && (dateMin[1] > date[1] || (\n dateMin[1] === date[1] && dateMin[0] > date[0]\n ))\n ))) return dateMin;\n\n return date;\n },\n\n getFixedDate: function (day, month, year) {\n day = Math.min(day, 31);\n month = Math.min(month, 12);\n year = parseInt((year || 0), 10);\n\n if ((month < 7 && month % 2 === 0) || (month > 8 && month % 2 === 1)) {\n day = Math.min(day, month === 2 ? (this.isLeapYear(year) ? 29 : 28) : 30);\n }\n\n return [day, month, year];\n },\n\n isLeapYear: function (year) {\n return ((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0);\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n },\n\n addLeadingZeroForYear: function (number, fullYearMode) {\n if (fullYearMode) {\n return (number < 10 ? '000' : (number < 100 ? '00' : (number < 1000 ? '0' : ''))) + number;\n }\n\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar DateFormatter_1 = DateFormatter;\n\nvar TimeFormatter = function (timePattern, timeFormat) {\n var owner = this;\n\n owner.time = [];\n owner.blocks = [];\n owner.timePattern = timePattern;\n owner.timeFormat = timeFormat;\n owner.initBlocks();\n};\n\nTimeFormatter.prototype = {\n initBlocks: function () {\n var owner = this;\n owner.timePattern.forEach(function () {\n owner.blocks.push(2);\n });\n },\n\n getISOFormatTime: function () {\n var owner = this,\n time = owner.time;\n\n return time[2] ? (\n owner.addLeadingZero(time[0]) + ':' + owner.addLeadingZero(time[1]) + ':' + owner.addLeadingZero(time[2])\n ) : '';\n },\n\n getBlocks: function () {\n return this.blocks;\n },\n\n getTimeFormatOptions: function () {\n var owner = this;\n if (String(owner.timeFormat) === '12') {\n return {\n maxHourFirstDigit: 1,\n maxHours: 12,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n }\n\n return {\n maxHourFirstDigit: 2,\n maxHours: 23,\n maxMinutesFirstDigit: 5,\n maxMinutes: 60\n };\n },\n\n getValidatedTime: function (value) {\n var owner = this, result = '';\n\n value = value.replace(/[^\\d]/g, '');\n\n var timeFormatOptions = owner.getTimeFormatOptions();\n\n owner.blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n sub0 = sub.slice(0, 1),\n rest = value.slice(length);\n\n switch (owner.timePattern[index]) {\n\n case 'h':\n if (parseInt(sub0, 10) > timeFormatOptions.maxHourFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxHours) {\n sub = timeFormatOptions.maxHours + '';\n }\n\n break;\n\n case 'm':\n case 's':\n if (parseInt(sub0, 10) > timeFormatOptions.maxMinutesFirstDigit) {\n sub = '0' + sub0;\n } else if (parseInt(sub, 10) > timeFormatOptions.maxMinutes) {\n sub = timeFormatOptions.maxMinutes + '';\n }\n break;\n }\n\n result += sub;\n\n // update remaining string\n value = rest;\n }\n });\n\n return this.getFixedTimeString(result);\n },\n\n getFixedTimeString: function (value) {\n var owner = this, timePattern = owner.timePattern, time = [],\n secondIndex = 0, minuteIndex = 0, hourIndex = 0,\n secondStartIndex = 0, minuteStartIndex = 0, hourStartIndex = 0,\n second, minute, hour;\n\n if (value.length === 6) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 's':\n secondIndex = index * 2;\n break;\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n secondStartIndex = secondIndex;\n\n second = parseInt(value.slice(secondStartIndex, secondStartIndex + 2), 10);\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n if (value.length === 4 && owner.timePattern.indexOf('s') < 0) {\n timePattern.forEach(function (type, index) {\n switch (type) {\n case 'm':\n minuteIndex = index * 2;\n break;\n case 'h':\n hourIndex = index * 2;\n break;\n }\n });\n\n hourStartIndex = hourIndex;\n minuteStartIndex = minuteIndex;\n\n second = 0;\n minute = parseInt(value.slice(minuteStartIndex, minuteStartIndex + 2), 10);\n hour = parseInt(value.slice(hourStartIndex, hourStartIndex + 2), 10);\n\n time = this.getFixedTime(hour, minute, second);\n }\n\n owner.time = time;\n\n return time.length === 0 ? value : timePattern.reduce(function (previous, current) {\n switch (current) {\n case 's':\n return previous + owner.addLeadingZero(time[2]);\n case 'm':\n return previous + owner.addLeadingZero(time[1]);\n case 'h':\n return previous + owner.addLeadingZero(time[0]);\n }\n }, '');\n },\n\n getFixedTime: function (hour, minute, second) {\n second = Math.min(parseInt(second || 0, 10), 60);\n minute = Math.min(minute, 60);\n hour = Math.min(hour, 60);\n\n return [hour, minute, second];\n },\n\n addLeadingZero: function (number) {\n return (number < 10 ? '0' : '') + number;\n }\n};\n\nvar TimeFormatter_1 = TimeFormatter;\n\nvar PhoneFormatter = function (formatter, delimiter) {\n var owner = this;\n\n owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' ';\n owner.delimiterRE = delimiter ? new RegExp('\\\\' + delimiter, 'g') : '';\n\n owner.formatter = formatter;\n};\n\nPhoneFormatter.prototype = {\n setFormatter: function (formatter) {\n this.formatter = formatter;\n },\n\n format: function (phoneNumber) {\n var owner = this;\n\n owner.formatter.clear();\n\n // only keep number and +\n phoneNumber = phoneNumber.replace(/[^\\d+]/g, '');\n\n // strip non-leading +\n phoneNumber = phoneNumber.replace(/^\\+/, 'B').replace(/\\+/g, '').replace('B', '+');\n\n // strip delimiter\n phoneNumber = phoneNumber.replace(owner.delimiterRE, '');\n\n var result = '', current, validated = false;\n\n for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) {\n current = owner.formatter.inputDigit(phoneNumber.charAt(i));\n\n // has ()- or space inside\n if (/[\\s()-]/g.test(current)) {\n result = current;\n\n validated = true;\n } else {\n if (!validated) {\n result = current;\n }\n // else: over length input\n // it turns to invalid number again\n }\n }\n\n // strip ()\n // e.g. US: 7161234567 returns (716) 123-4567\n result = result.replace(/[()]/g, '');\n // replace library delimiter with user customized delimiter\n result = result.replace(/[\\s-]/g, owner.delimiter);\n\n return result;\n }\n};\n\nvar PhoneFormatter_1 = PhoneFormatter;\n\nvar CreditCardDetector = {\n blocks: {\n uatp: [4, 5, 6],\n amex: [4, 6, 5],\n diners: [4, 6, 4],\n discover: [4, 4, 4, 4],\n mastercard: [4, 4, 4, 4],\n dankort: [4, 4, 4, 4],\n instapayment: [4, 4, 4, 4],\n jcb15: [4, 6, 5],\n jcb: [4, 4, 4, 4],\n maestro: [4, 4, 4, 4],\n visa: [4, 4, 4, 4],\n mir: [4, 4, 4, 4],\n unionPay: [4, 4, 4, 4],\n general: [4, 4, 4, 4]\n },\n\n re: {\n // starts with 1; 15 digits, not starts with 1800 (jcb card)\n uatp: /^(?!1800)1\\d{0,14}/,\n\n // starts with 34/37; 15 digits\n amex: /^3[47]\\d{0,13}/,\n\n // starts with 6011/65/644-649; 16 digits\n discover: /^(?:6011|65\\d{0,2}|64[4-9]\\d?)\\d{0,12}/,\n\n // starts with 300-305/309 or 36/38/39; 14 digits\n diners: /^3(?:0([0-5]|9)|[689]\\d?)\\d{0,11}/,\n\n // starts with 51-55/2221–2720; 16 digits\n mastercard: /^(5[1-5]\\d{0,2}|22[2-9]\\d{0,1}|2[3-7]\\d{0,2})\\d{0,12}/,\n\n // starts with 5019/4175/4571; 16 digits\n dankort: /^(5019|4175|4571)\\d{0,12}/,\n\n // starts with 637-639; 16 digits\n instapayment: /^63[7-9]\\d{0,13}/,\n\n // starts with 2131/1800; 15 digits\n jcb15: /^(?:2131|1800)\\d{0,11}/,\n\n // starts with 2131/1800/35; 16 digits\n jcb: /^(?:35\\d{0,2})\\d{0,12}/,\n\n // starts with 50/56-58/6304/67; 16 digits\n maestro: /^(?:5[0678]\\d{0,2}|6304|67\\d{0,2})\\d{0,12}/,\n\n // starts with 22; 16 digits\n mir: /^220[0-4]\\d{0,12}/,\n\n // starts with 4; 16 digits\n visa: /^4\\d{0,15}/,\n\n // starts with 62/81; 16 digits\n unionPay: /^(62|81)\\d{0,14}/\n },\n\n getStrictBlocks: function (block) {\n var total = block.reduce(function (prev, current) {\n return prev + current;\n }, 0);\n\n return block.concat(19 - total);\n },\n\n getInfo: function (value, strictMode) {\n var blocks = CreditCardDetector.blocks,\n re = CreditCardDetector.re;\n\n // Some credit card can have up to 19 digits number.\n // Set strictMode to true will remove the 16 max-length restrain,\n // however, I never found any website validate card number like\n // this, hence probably you don't want to enable this option.\n strictMode = !!strictMode;\n\n for (var key in re) {\n if (re[key].test(value)) {\n var matchedBlocks = blocks[key];\n return {\n type: key,\n blocks: strictMode ? this.getStrictBlocks(matchedBlocks) : matchedBlocks\n };\n }\n }\n\n return {\n type: 'unknown',\n blocks: strictMode ? this.getStrictBlocks(blocks.general) : blocks.general\n };\n }\n};\n\nvar CreditCardDetector_1 = CreditCardDetector;\n\nvar Util = {\n noop: function () {\n },\n\n strip: function (value, re) {\n return value.replace(re, '');\n },\n\n getPostDelimiter: function (value, delimiter, delimiters) {\n // single delimiter\n if (delimiters.length === 0) {\n return value.slice(-delimiter.length) === delimiter ? delimiter : '';\n }\n\n // multiple delimiters\n var matchedDelimiter = '';\n delimiters.forEach(function (current) {\n if (value.slice(-current.length) === current) {\n matchedDelimiter = current;\n }\n });\n\n return matchedDelimiter;\n },\n\n getDelimiterREByDelimiter: function (delimiter) {\n return new RegExp(delimiter.replace(/([.?*+^$[\\]\\\\(){}|-])/g, '\\\\$1'), 'g');\n },\n\n getNextCursorPosition: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n // If cursor was at the end of value, just place it back.\n // Because new value could contain additional chars.\n if (oldValue.length === prevPos) {\n return newValue.length;\n }\n\n return prevPos + this.getPositionOffset(prevPos, oldValue, newValue, delimiter ,delimiters);\n },\n\n getPositionOffset: function (prevPos, oldValue, newValue, delimiter, delimiters) {\n var oldRawValue, newRawValue, lengthOffset;\n\n oldRawValue = this.stripDelimiters(oldValue.slice(0, prevPos), delimiter, delimiters);\n newRawValue = this.stripDelimiters(newValue.slice(0, prevPos), delimiter, delimiters);\n lengthOffset = oldRawValue.length - newRawValue.length;\n\n return (lengthOffset !== 0) ? (lengthOffset / Math.abs(lengthOffset)) : 0;\n },\n\n stripDelimiters: function (value, delimiter, delimiters) {\n var owner = this;\n\n // single delimiter\n if (delimiters.length === 0) {\n var delimiterRE = delimiter ? owner.getDelimiterREByDelimiter(delimiter) : '';\n\n return value.replace(delimiterRE, '');\n }\n\n // multiple delimiters\n delimiters.forEach(function (current) {\n current.split('').forEach(function (letter) {\n value = value.replace(owner.getDelimiterREByDelimiter(letter), '');\n });\n });\n\n return value;\n },\n\n headStr: function (str, length) {\n return str.slice(0, length);\n },\n\n getMaxLength: function (blocks) {\n return blocks.reduce(function (previous, current) {\n return previous + current;\n }, 0);\n },\n\n // strip prefix\n // Before type | After type | Return value\n // PEFIX-... | PEFIX-... | ''\n // PREFIX-123 | PEFIX-123 | 123\n // PREFIX-123 | PREFIX-23 | 23\n // PREFIX-123 | PREFIX-1234 | 1234\n getPrefixStrippedValue: function (value, prefix, prefixLength, prevResult, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix) {\n // No prefix\n if (prefixLength === 0) {\n return value;\n }\n\n // Value is prefix\n if (value === prefix && value !== '') {\n return '';\n }\n\n if (signBeforePrefix && (value.slice(0, 1) == '-')) {\n var prev = (prevResult.slice(0, 1) == '-') ? prevResult.slice(1) : prevResult;\n return '-' + this.getPrefixStrippedValue(value.slice(1), prefix, prefixLength, prev, delimiter, delimiters, noImmediatePrefix, tailPrefix, signBeforePrefix);\n }\n\n // Pre result prefix string does not match pre-defined prefix\n if (prevResult.slice(0, prefixLength) !== prefix && !tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n } else if (prevResult.slice(-prefixLength) !== prefix && tailPrefix) {\n // Check if the first time user entered something\n if (noImmediatePrefix && !prevResult && value) return value;\n return '';\n }\n\n var prevValue = this.stripDelimiters(prevResult, delimiter, delimiters);\n\n // New value has issue, someone typed in between prefix letters\n // Revert to pre value\n if (value.slice(0, prefixLength) !== prefix && !tailPrefix) {\n return prevValue.slice(prefixLength);\n } else if (value.slice(-prefixLength) !== prefix && tailPrefix) {\n return prevValue.slice(0, -prefixLength - 1);\n }\n\n // No issue, strip prefix for new value\n return tailPrefix ? value.slice(0, -prefixLength) : value.slice(prefixLength);\n },\n\n getFirstDiffIndex: function (prev, current) {\n var index = 0;\n\n while (prev.charAt(index) === current.charAt(index)) {\n if (prev.charAt(index++) === '') {\n return -1;\n }\n }\n\n return index;\n },\n\n getFormattedValue: function (value, blocks, blocksLength, delimiter, delimiters, delimiterLazyShow) {\n var result = '',\n multipleDelimiters = delimiters.length > 0,\n currentDelimiter = '';\n\n // no options, normal input\n if (blocksLength === 0) {\n return value;\n }\n\n blocks.forEach(function (length, index) {\n if (value.length > 0) {\n var sub = value.slice(0, length),\n rest = value.slice(length);\n\n if (multipleDelimiters) {\n currentDelimiter = delimiters[delimiterLazyShow ? (index - 1) : index] || currentDelimiter;\n } else {\n currentDelimiter = delimiter;\n }\n\n if (delimiterLazyShow) {\n if (index > 0) {\n result += currentDelimiter;\n }\n\n result += sub;\n } else {\n result += sub;\n\n if (sub.length === length && index < blocksLength - 1) {\n result += currentDelimiter;\n }\n }\n\n // update remaining string\n value = rest;\n }\n });\n\n return result;\n },\n\n // move cursor to the end\n // the first time user focuses on an input with prefix\n fixPrefixCursor: function (el, prefix, delimiter, delimiters) {\n if (!el) {\n return;\n }\n\n var val = el.value,\n appendix = delimiter || (delimiters[0] || ' ');\n\n if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) <= val.length) {\n return;\n }\n\n var len = val.length * 2;\n\n // set timeout to avoid blink\n setTimeout(function () {\n el.setSelectionRange(len, len);\n }, 1);\n },\n\n // Check if input field is fully selected\n checkFullSelection: function(value) {\n try {\n var selection = window.getSelection() || document.getSelection() || {};\n return selection.toString().length === value.length;\n } catch (ex) {\n // Ignore\n }\n\n return false;\n },\n\n setSelection: function (element, position, doc) {\n if (element !== this.getActiveElement(doc)) {\n return;\n }\n\n // cursor is already in the end\n if (element && element.value.length <= position) {\n return;\n }\n\n if (element.createTextRange) {\n var range = element.createTextRange();\n\n range.move('character', position);\n range.select();\n } else {\n try {\n element.setSelectionRange(position, position);\n } catch (e) {\n // eslint-disable-next-line\n console.warn('The input element type does not support selection');\n }\n }\n },\n\n getActiveElement: function(parent) {\n var activeElement = parent.activeElement;\n if (activeElement && activeElement.shadowRoot) {\n return this.getActiveElement(activeElement.shadowRoot);\n }\n return activeElement;\n },\n\n isAndroid: function () {\n return navigator && /android/i.test(navigator.userAgent);\n },\n\n // On Android chrome, the keyup and keydown events\n // always return key code 229 as a composition that\n // buffers the user’s keystrokes\n // see https://github.com/nosir/cleave.js/issues/147\n isAndroidBackspaceKeydown: function (lastInputValue, currentInputValue) {\n if (!this.isAndroid() || !lastInputValue || !currentInputValue) {\n return false;\n }\n\n return currentInputValue === lastInputValue.slice(0, -1);\n }\n};\n\nvar Util_1 = Util;\n\n/**\n * Props Assignment\n *\n * Separate this, so react module can share the usage\n */\nvar DefaultProperties = {\n // Maybe change to object-assign\n // for now just keep it as simple\n assign: function (target, opts) {\n target = target || {};\n opts = opts || {};\n\n // credit card\n target.creditCard = !!opts.creditCard;\n target.creditCardStrictMode = !!opts.creditCardStrictMode;\n target.creditCardType = '';\n target.onCreditCardTypeChanged = opts.onCreditCardTypeChanged || (function () {});\n\n // phone\n target.phone = !!opts.phone;\n target.phoneRegionCode = opts.phoneRegionCode || 'AU';\n target.phoneFormatter = {};\n\n // time\n target.time = !!opts.time;\n target.timePattern = opts.timePattern || ['h', 'm', 's'];\n target.timeFormat = opts.timeFormat || '24';\n target.timeFormatter = {};\n\n // date\n target.date = !!opts.date;\n target.datePattern = opts.datePattern || ['d', 'm', 'Y'];\n target.dateMin = opts.dateMin || '';\n target.dateMax = opts.dateMax || '';\n target.dateFormatter = {};\n\n // numeral\n target.numeral = !!opts.numeral;\n target.numeralIntegerScale = opts.numeralIntegerScale > 0 ? opts.numeralIntegerScale : 0;\n target.numeralDecimalScale = opts.numeralDecimalScale >= 0 ? opts.numeralDecimalScale : 2;\n target.numeralDecimalMark = opts.numeralDecimalMark || '.';\n target.numeralThousandsGroupStyle = opts.numeralThousandsGroupStyle || 'thousand';\n target.numeralPositiveOnly = !!opts.numeralPositiveOnly;\n target.stripLeadingZeroes = opts.stripLeadingZeroes !== false;\n target.signBeforePrefix = !!opts.signBeforePrefix;\n target.tailPrefix = !!opts.tailPrefix;\n\n // others\n target.swapHiddenInput = !!opts.swapHiddenInput;\n \n target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;\n\n target.uppercase = !!opts.uppercase;\n target.lowercase = !!opts.lowercase;\n\n target.prefix = (target.creditCard || target.date) ? '' : (opts.prefix || '');\n target.noImmediatePrefix = !!opts.noImmediatePrefix;\n target.prefixLength = target.prefix.length;\n target.rawValueTrimPrefix = !!opts.rawValueTrimPrefix;\n target.copyDelimiter = !!opts.copyDelimiter;\n\n target.initValue = (opts.initValue !== undefined && opts.initValue !== null) ? opts.initValue.toString() : '';\n\n target.delimiter =\n (opts.delimiter || opts.delimiter === '') ? opts.delimiter :\n (opts.date ? '/' :\n (opts.time ? ':' :\n (opts.numeral ? ',' :\n (opts.phone ? ' ' :\n ' '))));\n target.delimiterLength = target.delimiter.length;\n target.delimiterLazyShow = !!opts.delimiterLazyShow;\n target.delimiters = opts.delimiters || [];\n\n target.blocks = opts.blocks || [];\n target.blocksLength = target.blocks.length;\n\n target.root = (typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window;\n target.document = opts.document || target.root.document;\n\n target.maxLength = 0;\n\n target.backspace = false;\n target.result = '';\n\n target.onValueChanged = opts.onValueChanged || (function () {});\n\n return target;\n }\n};\n\nvar DefaultProperties_1 = DefaultProperties;\n\n/**\n * Construct a new Cleave instance by passing the configuration object\n *\n * @param {String | HTMLElement} element\n * @param {Object} opts\n */\nvar Cleave = function (element, opts) {\n var owner = this;\n var hasMultipleElements = false;\n\n if (typeof element === 'string') {\n owner.element = document.querySelector(element);\n hasMultipleElements = document.querySelectorAll(element).length > 1;\n } else {\n if (typeof element.length !== 'undefined' && element.length > 0) {\n owner.element = element[0];\n hasMultipleElements = element.length > 1;\n } else {\n owner.element = element;\n }\n }\n\n if (!owner.element) {\n throw new Error('[cleave.js] Please check the element');\n }\n\n if (hasMultipleElements) {\n try {\n // eslint-disable-next-line\n console.warn('[cleave.js] Multiple input fields matched, cleave.js will only take the first one.');\n } catch (e) {\n // Old IE\n }\n }\n\n opts.initValue = owner.element.value;\n\n owner.properties = Cleave.DefaultProperties.assign({}, opts);\n\n owner.init();\n};\n\nCleave.prototype = {\n init: function () {\n var owner = this, pps = owner.properties;\n\n // no need to use this lib\n if (!pps.numeral && !pps.phone && !pps.creditCard && !pps.time && !pps.date && (pps.blocksLength === 0 && !pps.prefix)) {\n owner.onInput(pps.initValue);\n\n return;\n }\n\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n\n owner.isAndroid = Cleave.Util.isAndroid();\n owner.lastInputValue = '';\n owner.isBackward = '';\n\n owner.onChangeListener = owner.onChange.bind(owner);\n owner.onKeyDownListener = owner.onKeyDown.bind(owner);\n owner.onFocusListener = owner.onFocus.bind(owner);\n owner.onCutListener = owner.onCut.bind(owner);\n owner.onCopyListener = owner.onCopy.bind(owner);\n\n owner.initSwapHiddenInput();\n\n owner.element.addEventListener('input', owner.onChangeListener);\n owner.element.addEventListener('keydown', owner.onKeyDownListener);\n owner.element.addEventListener('focus', owner.onFocusListener);\n owner.element.addEventListener('cut', owner.onCutListener);\n owner.element.addEventListener('copy', owner.onCopyListener);\n\n\n owner.initPhoneFormatter();\n owner.initDateFormatter();\n owner.initTimeFormatter();\n owner.initNumeralFormatter();\n\n // avoid touch input field if value is null\n // otherwise Firefox will add red box-shadow for \n if (pps.initValue || (pps.prefix && !pps.noImmediatePrefix)) {\n owner.onInput(pps.initValue);\n }\n },\n\n initSwapHiddenInput: function () {\n var owner = this, pps = owner.properties;\n if (!pps.swapHiddenInput) return;\n\n var inputFormatter = owner.element.cloneNode(true);\n owner.element.parentNode.insertBefore(inputFormatter, owner.element);\n\n owner.elementSwapHidden = owner.element;\n owner.elementSwapHidden.type = 'hidden';\n\n owner.element = inputFormatter;\n owner.element.id = '';\n },\n\n initNumeralFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.numeral) {\n return;\n }\n\n pps.numeralFormatter = new Cleave.NumeralFormatter(\n pps.numeralDecimalMark,\n pps.numeralIntegerScale,\n pps.numeralDecimalScale,\n pps.numeralThousandsGroupStyle,\n pps.numeralPositiveOnly,\n pps.stripLeadingZeroes,\n pps.prefix,\n pps.signBeforePrefix,\n pps.tailPrefix,\n pps.delimiter\n );\n },\n\n initTimeFormatter: function() {\n var owner = this, pps = owner.properties;\n\n if (!pps.time) {\n return;\n }\n\n pps.timeFormatter = new Cleave.TimeFormatter(pps.timePattern, pps.timeFormat);\n pps.blocks = pps.timeFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initDateFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.date) {\n return;\n }\n\n pps.dateFormatter = new Cleave.DateFormatter(pps.datePattern, pps.dateMin, pps.dateMax);\n pps.blocks = pps.dateFormatter.getBlocks();\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Cleave.Util.getMaxLength(pps.blocks);\n },\n\n initPhoneFormatter: function () {\n var owner = this, pps = owner.properties;\n\n if (!pps.phone) {\n return;\n }\n\n // Cleave.AsYouTypeFormatter should be provided by\n // external google closure lib\n try {\n pps.phoneFormatter = new Cleave.PhoneFormatter(\n new pps.root.Cleave.AsYouTypeFormatter(pps.phoneRegionCode),\n pps.delimiter\n );\n } catch (ex) {\n throw new Error('[cleave.js] Please include phone-type-formatter.{country}.js lib');\n }\n },\n\n onKeyDown: function (event) {\n var owner = this,\n charCode = event.which || event.keyCode;\n\n owner.lastInputValue = owner.element.value;\n owner.isBackward = charCode === 8;\n },\n\n onChange: function (event) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n owner.isBackward = owner.isBackward || event.inputType === 'deleteContentBackward';\n\n var postDelimiter = Util.getPostDelimiter(owner.lastInputValue, pps.delimiter, pps.delimiters);\n\n if (owner.isBackward && postDelimiter) {\n pps.postDelimiterBackspace = postDelimiter;\n } else {\n pps.postDelimiterBackspace = false;\n }\n\n this.onInput(this.element.value);\n },\n\n onFocus: function () {\n var owner = this,\n pps = owner.properties;\n owner.lastInputValue = owner.element.value;\n\n if (pps.prefix && pps.noImmediatePrefix && !owner.element.value) {\n this.onInput(pps.prefix);\n }\n\n Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);\n },\n\n onCut: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n this.onInput('');\n },\n\n onCopy: function (e) {\n if (!Cleave.Util.checkFullSelection(this.element.value)) return;\n this.copyClipboardData(e);\n },\n\n copyClipboardData: function (e) {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n inputValue = owner.element.value,\n textToCopy = '';\n\n if (!pps.copyDelimiter) {\n textToCopy = Util.stripDelimiters(inputValue, pps.delimiter, pps.delimiters);\n } else {\n textToCopy = inputValue;\n }\n\n try {\n if (e.clipboardData) {\n e.clipboardData.setData('Text', textToCopy);\n } else {\n window.clipboardData.setData('Text', textToCopy);\n }\n\n e.preventDefault();\n } catch (ex) {\n // empty\n }\n },\n\n onInput: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util;\n\n // case 1: delete one more character \"4\"\n // 1234*| -> hit backspace -> 123|\n // case 2: last character is not delimiter which is:\n // 12|34* -> hit backspace -> 1|34*\n // note: no need to apply this for numeral mode\n var postDelimiterAfter = Util.getPostDelimiter(value, pps.delimiter, pps.delimiters);\n if (!pps.numeral && pps.postDelimiterBackspace && !postDelimiterAfter) {\n value = Util.headStr(value, value.length - pps.postDelimiterBackspace.length);\n }\n\n // phone formatter\n if (pps.phone) {\n if (pps.prefix && (!pps.noImmediatePrefix || value.length)) {\n pps.result = pps.prefix + pps.phoneFormatter.format(value).slice(pps.prefix.length);\n } else {\n pps.result = pps.phoneFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // numeral formatter\n if (pps.numeral) {\n // Do not show prefix when noImmediatePrefix is specified\n // This mostly because we need to show user the native input placeholder\n if (pps.prefix && pps.noImmediatePrefix && value.length === 0) {\n pps.result = '';\n } else {\n pps.result = pps.numeralFormatter.format(value);\n }\n owner.updateValueState();\n\n return;\n }\n\n // date\n if (pps.date) {\n value = pps.dateFormatter.getValidatedDate(value);\n }\n\n // time\n if (pps.time) {\n value = pps.timeFormatter.getValidatedTime(value);\n }\n\n // strip delimiters\n value = Util.stripDelimiters(value, pps.delimiter, pps.delimiters);\n\n // strip prefix\n value = Util.getPrefixStrippedValue(value, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n\n // strip non-numeric characters\n value = pps.numericOnly ? Util.strip(value, /[^\\d]/g) : value;\n\n // convert case\n value = pps.uppercase ? value.toUpperCase() : value;\n value = pps.lowercase ? value.toLowerCase() : value;\n\n // prevent from showing prefix when no immediate option enabled with empty input value\n if (pps.prefix) {\n if (pps.tailPrefix) {\n value = value + pps.prefix;\n } else {\n value = pps.prefix + value;\n }\n\n\n // no blocks specified, no need to do formatting\n if (pps.blocksLength === 0) {\n pps.result = value;\n owner.updateValueState();\n\n return;\n }\n }\n\n // update credit card props\n if (pps.creditCard) {\n owner.updateCreditCardPropsByValue(value);\n }\n\n // strip over length characters\n value = Util.headStr(value, pps.maxLength);\n\n // apply blocks\n pps.result = Util.getFormattedValue(\n value,\n pps.blocks, pps.blocksLength,\n pps.delimiter, pps.delimiters, pps.delimiterLazyShow\n );\n\n owner.updateValueState();\n },\n\n updateCreditCardPropsByValue: function (value) {\n var owner = this, pps = owner.properties,\n Util = Cleave.Util,\n creditCardInfo;\n\n // At least one of the first 4 characters has changed\n if (Util.headStr(pps.result, 4) === Util.headStr(value, 4)) {\n return;\n }\n\n creditCardInfo = Cleave.CreditCardDetector.getInfo(value, pps.creditCardStrictMode);\n\n pps.blocks = creditCardInfo.blocks;\n pps.blocksLength = pps.blocks.length;\n pps.maxLength = Util.getMaxLength(pps.blocks);\n\n // credit card type changed\n if (pps.creditCardType !== creditCardInfo.type) {\n pps.creditCardType = creditCardInfo.type;\n\n pps.onCreditCardTypeChanged.call(owner, pps.creditCardType);\n }\n },\n\n updateValueState: function () {\n var owner = this,\n Util = Cleave.Util,\n pps = owner.properties;\n\n if (!owner.element) {\n return;\n }\n\n var endPos = owner.element.selectionEnd;\n var oldValue = owner.element.value;\n var newValue = pps.result;\n\n endPos = Util.getNextCursorPosition(endPos, oldValue, newValue, pps.delimiter, pps.delimiters);\n\n // fix Android browser type=\"text\" input field\n // cursor not jumping issue\n if (owner.isAndroid) {\n window.setTimeout(function () {\n owner.element.value = newValue;\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n }, 1);\n\n return;\n }\n\n owner.element.value = newValue;\n if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();\n\n Util.setSelection(owner.element, endPos, pps.document, false);\n owner.callOnValueChanged();\n },\n\n callOnValueChanged: function () {\n var owner = this,\n pps = owner.properties;\n\n pps.onValueChanged.call(owner, {\n target: {\n name: owner.element.name,\n value: pps.result,\n rawValue: owner.getRawValue()\n }\n });\n },\n\n setPhoneRegionCode: function (phoneRegionCode) {\n var owner = this, pps = owner.properties;\n\n pps.phoneRegionCode = phoneRegionCode;\n owner.initPhoneFormatter();\n owner.onChange();\n },\n\n setRawValue: function (value) {\n var owner = this, pps = owner.properties;\n\n value = value !== undefined && value !== null ? value.toString() : '';\n\n if (pps.numeral) {\n value = value.replace('.', pps.numeralDecimalMark);\n }\n\n pps.postDelimiterBackspace = false;\n\n owner.element.value = value;\n owner.onInput(value);\n },\n\n getRawValue: function () {\n var owner = this,\n pps = owner.properties,\n Util = Cleave.Util,\n rawValue = owner.element.value;\n\n if (pps.rawValueTrimPrefix) {\n rawValue = Util.getPrefixStrippedValue(rawValue, pps.prefix, pps.prefixLength, pps.result, pps.delimiter, pps.delimiters, pps.noImmediatePrefix, pps.tailPrefix, pps.signBeforePrefix);\n }\n\n if (pps.numeral) {\n rawValue = pps.numeralFormatter.getRawValue(rawValue);\n } else {\n rawValue = Util.stripDelimiters(rawValue, pps.delimiter, pps.delimiters);\n }\n\n return rawValue;\n },\n\n getISOFormatDate: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.date ? pps.dateFormatter.getISOFormatDate() : '';\n },\n\n getISOFormatTime: function () {\n var owner = this,\n pps = owner.properties;\n\n return pps.time ? pps.timeFormatter.getISOFormatTime() : '';\n },\n\n getFormattedValue: function () {\n return this.element.value;\n },\n\n destroy: function () {\n var owner = this;\n\n owner.element.removeEventListener('input', owner.onChangeListener);\n owner.element.removeEventListener('keydown', owner.onKeyDownListener);\n owner.element.removeEventListener('focus', owner.onFocusListener);\n owner.element.removeEventListener('cut', owner.onCutListener);\n owner.element.removeEventListener('copy', owner.onCopyListener);\n },\n\n toString: function () {\n return '[Cleave Object]';\n }\n};\n\nCleave.NumeralFormatter = NumeralFormatter_1;\nCleave.DateFormatter = DateFormatter_1;\nCleave.TimeFormatter = TimeFormatter_1;\nCleave.PhoneFormatter = PhoneFormatter_1;\nCleave.CreditCardDetector = CreditCardDetector_1;\nCleave.Util = Util_1;\nCleave.DefaultProperties = DefaultProperties_1;\n\n// for angular directive\n((typeof commonjsGlobal === 'object' && commonjsGlobal) ? commonjsGlobal : window)['Cleave'] = Cleave;\n\n// CommonJS\nvar Cleave_1 = Cleave;\n\nexport default Cleave_1;\n"],"sourceRoot":""}