{"version":3,"file":"masked-numeric-input.min.js","sources":["../src/components/MaskedNumericInput/defaults.js","../src/components/MaskedNumericInput/parsing.js","../src/components/MaskedNumericInput/formatting.js","../node_modules/vue-runtime-helpers/dist/normalize-component.js","../src/components/MaskedNumericInput/utils.js"],"sourcesContent":["export default {\n prefix: '',\n suffix: '',\n thousands: ',',\n decimal: '.',\n precision: 0,\n negativePrefix: '',\n negativeSuffix: '',\n}\n","const EMPTY_STRING = ''\nconst PERIOD_STRING = '.'\n\nconst MINUS_ZERO = -0\nconst MINUS_ZERO_STRING = '-0'\n\nexport const parseNumber = (value, opts) => {\n if(value === null || value === undefined) {\n return value\n } else if(value === MINUS_ZERO_STRING || Object.is(value, MINUS_ZERO)) {\n return MINUS_ZERO\n }\n\n const parsedNumber = opts.precision > 0 ?\n parseFloat(value) :\n parseInt(value, 10)\n\n return isNumeric(parsedNumber) ? parsedNumber : null\n}\n\nexport const parseFormattedNumber = (string, opts) => {\n const coreString = string.substring(opts.prefix.length, string.length - opts.suffix.length)\n const isNegative = (opts.negativePrefix || opts.negativeSuffix) && (\n (opts.negativePrefix && coreString.startsWith(opts.negativePrefix)) ||\n (opts.negativeSuffix && coreString.endsWith(opts.negativeSuffix))\n )\n\n let sanitizedString = coreString\n if(isNegative) {\n const sanitizedStringStart = opts.negativePrefix.length\n const sanitizedStringEnd = coreString.length - opts.negativeSuffix.length\n sanitizedString = coreString.substring(sanitizedStringStart, sanitizedStringEnd)\n }\n sanitizedString = replaceAll(sanitizedString, opts.thousands, EMPTY_STRING)\n .replace(opts.decimal, PERIOD_STRING)\n\n const parsedNumber = opts.precision > 0 ?\n parseFloat(sanitizedString) :\n parseInt(sanitizedString, 10)\n\n if(isNumeric(parsedNumber)) {\n return isNegative ? -parsedNumber : parsedNumber\n } else {\n return null\n }\n}\n\nconst isNumeric = (value) => !isNaN(value)\n\nconst replaceAll = (string, search, replacement) => {\n return string.split(search).join(replacement)\n}\n","const EMPTY_STRING = ''\nconst ZERO_STRING = '0'\nconst NON_DIGITS_REGEX = /[^0-9]/g\nconst THOUSANDS_LENGTH = 3\nconst MINUS_ZERO = -0\n\nexport const formatNumber = (number, opts) => {\n const numberAsString = Math.abs(number).toFixed(opts.precision)\n let integerString, decimalString, decimalSeparator\n\n if(opts.precision > 0) {\n integerString = numberAsString.substring(0, numberAsString.length - opts.precision - 1)\n decimalString = numberAsString.substring(numberAsString.length - opts.precision, numberAsString.length)\n decimalSeparator = opts.decimal\n } else {\n integerString = numberAsString\n decimalString = EMPTY_STRING\n decimalSeparator = EMPTY_STRING\n }\n\n const formattedIntegerString = formatIntegerString(integerString, opts.thousands)\n\n let formattedNumberWithSignal = formattedIntegerString + decimalSeparator + decimalString\n const numberSign = Math.sign(number)\n if(numberSign < 0 || Object.is(numberSign, MINUS_ZERO)) {\n formattedNumberWithSignal = opts.negativePrefix + formattedNumberWithSignal + opts.negativeSuffix\n }\n\n return opts.prefix + formattedNumberWithSignal + opts.suffix\n}\n\nexport const formatString = (string, opts, isNegative) => {\n if(string === null || string === undefined || string === EMPTY_STRING) {\n return string\n }\n\n let sanitizedString = string.replace(NON_DIGITS_REGEX, EMPTY_STRING)\n sanitizedString = removeLeadingZeroes(sanitizedString)\n\n const length = sanitizedString.length\n let decimalString, integerString, formattedString\n\n if(opts.precision > 0) {\n decimalString = sanitizedString.substring(length - opts.precision)\n if(length > opts.precision) {\n integerString = sanitizedString.substring(0, length - opts.precision)\n } else {\n decimalString = padString(sanitizedString, opts.precision)\n integerString = ZERO_STRING\n }\n formattedString = opts.decimal + decimalString\n } else {\n integerString = sanitizedString\n formattedString = EMPTY_STRING\n }\n\n const formattedIntegerString = formatIntegerString(integerString, opts.thousands)\n let formattedNumberWithSignal = formattedIntegerString + formattedString\n if(isNegative) {\n formattedNumberWithSignal = opts.negativePrefix + formattedNumberWithSignal + opts.negativeSuffix\n }\n\n return opts.prefix + formattedNumberWithSignal + opts.suffix\n}\n\nexport const padString = (string, length) => {\n let paddedString = string\n while(paddedString.length < length) {\n paddedString = ZERO_STRING + paddedString\n }\n return paddedString\n}\n\nconst formatIntegerString = (string, separator) => {\n let remainingLength = string.length\n let formattedString = ''\n\n while(remainingLength > THOUSANDS_LENGTH) {\n formattedString = separator + string.substring(remainingLength - THOUSANDS_LENGTH, remainingLength) + formattedString\n remainingLength -= THOUSANDS_LENGTH\n }\n\n return string.substring(0, remainingLength) + formattedString\n}\n\nconst removeLeadingZeroes = (string) => {\n let sanitizedString = string\n while(sanitizedString.startsWith(ZERO_STRING) && sanitizedString.length > 1) {\n sanitizedString = sanitizedString.substring(1)\n }\n return sanitizedString\n}\n","'use strict';\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n if (typeof shadowMode !== 'boolean') {\n createInjectorSSR = createInjector;\n createInjector = shadowMode;\n shadowMode = false;\n } // Vue.extend constructor export interop.\n\n\n var options = typeof script === 'function' ? script.options : script; // render functions\n\n if (template && template.render) {\n options.render = template.render;\n options.staticRenderFns = template.staticRenderFns;\n options._compiled = true; // functional template\n\n if (isFunctionalTemplate) {\n options.functional = true;\n }\n } // scopedId\n\n\n if (scopeId) {\n options._scopeId = scopeId;\n }\n\n var hook;\n\n if (moduleIdentifier) {\n // server build\n hook = function hook(context) {\n // 2.3 injection\n context = context || // cached call\n this.$vnode && this.$vnode.ssrContext || // stateful\n this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n // 2.2 with runInNewContext: true\n\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__;\n } // inject component styles\n\n\n if (style) {\n style.call(this, createInjectorSSR(context));\n } // register component module identifier for async chunk inference\n\n\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier);\n }\n }; // used by ssr in case component is cached and beforeCreate\n // never gets called\n\n\n options._ssrRegister = hook;\n } else if (style) {\n hook = shadowMode ? function () {\n style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n } : function (context) {\n style.call(this, createInjector(context));\n };\n }\n\n if (hook) {\n if (options.functional) {\n // register for functional component in vue file\n var originalRender = options.render;\n\n options.render = function renderWithStyleInjection(h, context) {\n hook.call(context);\n return originalRender(h, context);\n };\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate;\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n }\n }\n\n return script;\n}\n\nmodule.exports = normalizeComponent;\n//# sourceMappingURL=normalize-component.js.map\n","export const setCursor = (el, position) => {\n var setSelectionRange = function () {\n el.setSelectionRange(position, position)\n }\n if (el === document.activeElement) {\n setSelectionRange()\n setTimeout(setSelectionRange, 1) // Android Fix\n }\n}\n"],"names":["isNumeric","value","isNaN","replaceAll","string","search","replacement","split","join","NON_DIGITS_REGEX","padString","length","paddedString","formatIntegerString","separator","remainingLength","formattedString","substring","removeLeadingZeroes","sanitizedString","startsWith","template","style","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","this","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","opts","isNegative","decimalString","integerString","replace","precision","decimal","formattedNumberWithSignal","thousands","negativePrefix","negativeSuffix","prefix","suffix","el","position","setSelectionRange","document","activeElement","setTimeout","coreString","endsWith","sanitizedStringStart","sanitizedStringEnd","parsedNumber","parseFloat","parseInt","Object","is","number","decimalSeparator","numberAsString","Math","abs","toFixed","numberSign","sign"],"mappings":"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"}