{"version":3,"file":"js/481-0cce824c41c9c073adb0.chunk.js","mappings":"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C,YAAa,MACd,CAAC,QAAS,QACV0C,SAAQ,SAAU1C,GAClB,OAAO4B,EAAUU,gBAAgBtC,EAAK,GAAIA,EAAK,GACjD,IAKA,CAEE,YACA,SACA,SACA,MACA,WACA,UACA,OACA,YACA,QACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,UACA,QACA,WACA,MACA,WACA,cACA,QACA,SACA,WACA,YACA,MACA,SACA,YACA,YACA,YACA,WACA,WACA,MACA,UACA,UACA,WACA,WACA,eACA,SACA,SACA,YACA,WACA,YACA,cACA,QACA,UACA,QACA,SACA,aACA,YACA,WACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,YACA,OACA,WACA,SACA,SACA,YACA,WACA,OACA,WACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,iBACA,QACA,OACA,SACA,UACA,UACA,aACA,WACA,MACA,kBAEA,gBACA,SACA,SACA,YACA,WACA,QACA,WACA0C,QAAQd,EAAUW,oBAEbX,CACT,CAhfqBA,E,kFCarB,SAASe,EAAKC,EAAOC,EAAWC,EAAkBC,EAAmBC,EAAeC,EAAQC,GAYxF,QAXmB,IAAdL,IAAuBA,EAAY,QACd,IAArBC,IAA8BA,EAAmB,UAC3B,IAAtBC,IAA+BA,EAAoB,UACjC,IAAlBC,IAA2BA,GAAgB,QAChC,IAAXC,IAAoBA,EAAS,SAClB,IAAXC,IAAoBA,EAAS,IAG9BL,EAAY,IAAKA,EAAY,GAC7BA,EAAY,KAAMA,EAAY,IAEpB,OAAVD,QAA0BO,IAARP,EAChB,MAAO,CACHA,MAAO,EACPQ,YAAa,IAMvB,GAAoB,IAFpBR,EAAQS,OAAOT,IAELzB,OACN,MAAO,CACHyB,MAAO,EACPQ,YAAa,IAMrB,IAAIE,EAASV,EAAM/B,MAAM,QAAU,CAAC,KAEhC0C,GAAmB,EACvB,GAAIP,EAAe,CAKfO,GAJyBX,EAAM/B,MAAM,OAAS,IAAIM,OAIX,IAAM,EAI7C,IADA,IAAIqC,GAAmB,EACdC,EAAI,EAAGA,EAAMH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","sources":["webpack://halo/./node_modules/pluralize/pluralize.js","webpack://halo/./node_modules/react-currency-input/lib/react-currency-input.es.js"],"sourcesContent":["/* global define */\n\n(function (root, pluralize) {\n  /* istanbul ignore else */\n  if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {\n    // Node.\n    module.exports = pluralize();\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD, registers as an anonymous module.\n    define(function () {\n      return pluralize();\n    });\n  } else {\n    // Browser global.\n    root.pluralize = pluralize();\n  }\n})(this, function () {\n  // Rule storage - pluralize and singularize need to be run sequentially,\n  // while other rules can be optimized using an object for instant lookups.\n  var pluralRules = [];\n  var singularRules = [];\n  var uncountables = {};\n  var irregularPlurals = {};\n  var irregularSingles = {};\n\n  /**\n   * Sanitize a pluralization rule to a usable regular expression.\n   *\n   * @param  {(RegExp|string)} rule\n   * @return {RegExp}\n   */\n  function sanitizeRule (rule) {\n    if (typeof rule === 'string') {\n      return new RegExp('^' + rule + '$', 'i');\n    }\n\n    return rule;\n  }\n\n  /**\n   * Pass in a word token to produce a function that can replicate the case on\n   * another word.\n   *\n   * @param  {string}   word\n   * @param  {string}   token\n   * @return {Function}\n   */\n  function restoreCase (word, token) {\n    // Tokens are an exact match.\n    if (word === token) return token;\n\n    // Lower cased words. E.g. \"hello\".\n    if (word === word.toLowerCase()) return token.toLowerCase();\n\n    // Upper cased words. E.g. \"WHISKY\".\n    if (word === word.toUpperCase()) return token.toUpperCase();\n\n    // Title cased words. E.g. \"Title\".\n    if (word[0] === word[0].toUpperCase()) {\n      return token.charAt(0).toUpperCase() + token.substr(1).toLowerCase();\n    }\n\n    // Lower cased words. E.g. \"test\".\n    return token.toLowerCase();\n  }\n\n  /**\n   * Interpolate a regexp string.\n   *\n   * @param  {string} str\n   * @param  {Array}  args\n   * @return {string}\n   */\n  function interpolate (str, args) {\n    return str.replace(/\\$(\\d{1,2})/g, function (match, index) {\n      return args[index] || '';\n    });\n  }\n\n  /**\n   * Replace a word using a rule.\n   *\n   * @param  {string} word\n   * @param  {Array}  rule\n   * @return {string}\n   */\n  function replace (word, rule) {\n    return word.replace(rule[0], function (match, index) {\n      var result = interpolate(rule[1], arguments);\n\n      if (match === '') {\n        return restoreCase(word[index - 1], result);\n      }\n\n      return restoreCase(match, result);\n    });\n  }\n\n  /**\n   * Sanitize a word by passing in the word and sanitization rules.\n   *\n   * @param  {string}   token\n   * @param  {string}   word\n   * @param  {Array}    rules\n   * @return {string}\n   */\n  function sanitizeWord (token, word, rules) {\n    // Empty string or doesn't need fixing.\n    if (!token.length || uncountables.hasOwnProperty(token)) {\n      return word;\n    }\n\n    var len = rules.length;\n\n    // Iterate over the sanitization rules and use the first one to match.\n    while (len--) {\n      var rule = rules[len];\n\n      if (rule[0].test(word)) return replace(word, rule);\n    }\n\n    return word;\n  }\n\n  /**\n   * Replace a word with the updated word.\n   *\n   * @param  {Object}   replaceMap\n   * @param  {Object}   keepMap\n   * @param  {Array}    rules\n   * @return {Function}\n   */\n  function replaceWord (replaceMap, keepMap, rules) {\n    return function (word) {\n      // Get the correct token and case restoration functions.\n      var token = word.toLowerCase();\n\n      // Check against the keep object map.\n      if (keepMap.hasOwnProperty(token)) {\n        return restoreCase(word, token);\n      }\n\n      // Check against the replacement map for a direct word replacement.\n      if (replaceMap.hasOwnProperty(token)) {\n        return restoreCase(word, replaceMap[token]);\n      }\n\n      // Run all the rules against the word.\n      return sanitizeWord(token, word, rules);\n    };\n  }\n\n  /**\n   * Check if a word is part of the map.\n   */\n  function checkWord (replaceMap, keepMap, rules, bool) {\n    return function (word) {\n      var token = word.toLowerCase();\n\n      if (keepMap.hasOwnProperty(token)) return true;\n      if (replaceMap.hasOwnProperty(token)) return false;\n\n      return sanitizeWord(token, token, rules) === token;\n    };\n  }\n\n  /**\n   * Pluralize or singularize a word based on the passed in count.\n   *\n   * @param  {string}  word      The word to pluralize\n   * @param  {number}  count     How many of the word exist\n   * @param  {boolean} inclusive Whether to prefix with the number (e.g. 3 ducks)\n   * @return {string}\n   */\n  function pluralize (word, count, inclusive) {\n    var pluralized = count === 1\n      ? pluralize.singular(word) : pluralize.plural(word);\n\n    return (inclusive ? count + ' ' : '') + pluralized;\n  }\n\n  /**\n   * Pluralize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.plural = replaceWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Check if a word is plural.\n   *\n   * @type {Function}\n   */\n  pluralize.isPlural = checkWord(\n    irregularSingles, irregularPlurals, pluralRules\n  );\n\n  /**\n   * Singularize a word.\n   *\n   * @type {Function}\n   */\n  pluralize.singular = replaceWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Check if a word is singular.\n   *\n   * @type {Function}\n   */\n  pluralize.isSingular = checkWord(\n    irregularPlurals, irregularSingles, singularRules\n  );\n\n  /**\n   * Add a pluralization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addPluralRule = function (rule, replacement) {\n    pluralRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add a singularization rule to the collection.\n   *\n   * @param {(string|RegExp)} rule\n   * @param {string}          replacement\n   */\n  pluralize.addSingularRule = function (rule, replacement) {\n    singularRules.push([sanitizeRule(rule), replacement]);\n  };\n\n  /**\n   * Add an uncountable word rule.\n   *\n   * @param {(string|RegExp)} word\n   */\n  pluralize.addUncountableRule = function (word) {\n    if (typeof word === 'string') {\n      uncountables[word.toLowerCase()] = true;\n      return;\n    }\n\n    // Set singular and plural references for the word.\n    pluralize.addPluralRule(word, '$0');\n    pluralize.addSingularRule(word, '$0');\n  };\n\n  /**\n   * Add an irregular word definition.\n   *\n   * @param {string} single\n   * @param {string} plural\n   */\n  pluralize.addIrregularRule = function (single, plural) {\n    plural = plural.toLowerCase();\n    single = single.toLowerCase();\n\n    irregularSingles[single] = plural;\n    irregularPlurals[plural] = single;\n  };\n\n  /**\n   * Irregular rules.\n   */\n  [\n    // Pronouns.\n    ['I', 'we'],\n    ['me', 'us'],\n    ['he', 'they'],\n    ['she', 'they'],\n    ['them', 'them'],\n    ['myself', 'ourselves'],\n    ['yourself', 'yourselves'],\n    ['itself', 'themselves'],\n    ['herself', 'themselves'],\n    ['himself', 'themselves'],\n    ['themself', 'themselves'],\n    ['is', 'are'],\n    ['was', 'were'],\n    ['has', 'have'],\n    ['this', 'these'],\n    ['that', 'those'],\n    // Words ending in with a consonant and `o`.\n    ['echo', 'echoes'],\n    ['dingo', 'dingoes'],\n    ['volcano', 'volcanoes'],\n    ['tornado', 'tornadoes'],\n    ['torpedo', 'torpedoes'],\n    // Ends with `us`.\n    ['genus', 'genera'],\n    ['viscus', 'viscera'],\n    // Ends with `ma`.\n    ['stigma', 'stigmata'],\n    ['stoma', 'stomata'],\n    ['dogma', 'dogmata'],\n    ['lemma', 'lemmata'],\n    ['schema', 'schemata'],\n    ['anathema', 'anathemata'],\n    // Other irregular rules.\n    ['ox', 'oxen'],\n    ['axe', 'axes'],\n    ['die', 'dice'],\n    ['yes', 'yeses'],\n    ['foot', 'feet'],\n    ['eave', 'eaves'],\n    ['goose', 'geese'],\n    ['tooth', 'teeth'],\n    ['quiz', 'quizzes'],\n    ['human', 'humans'],\n    ['proof', 'proofs'],\n    ['carve', 'carves'],\n    ['valve', 'valves'],\n    ['looey', 'looies'],\n    ['thief', 'thieves'],\n    ['groove', 'grooves'],\n    ['pickaxe', 'pickaxes'],\n    ['passerby', 'passersby']\n  ].forEach(function (rule) {\n    return pluralize.addIrregularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Pluralization rules.\n   */\n  [\n    [/s?$/i, 's'],\n    [/[^\\u0000-\\u007F]$/i, '$0'],\n    [/([^aeiou]ese)$/i, '$1'],\n    [/(ax|test)is$/i, '$1es'],\n    [/(alias|[^aou]us|t[lm]as|gas|ris)$/i, '$1es'],\n    [/(e[mn]u)s?$/i, '$1s'],\n    [/([^l]ias|[aeiou]las|[ejzr]as|[iu]am)$/i, '$1'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1i'],\n    [/(alumn|alg|vertebr)(?:a|ae)$/i, '$1ae'],\n    [/(seraph|cherub)(?:im)?$/i, '$1im'],\n    [/(her|at|gr)o$/i, '$1oes'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|automat|quor)(?:a|um)$/i, '$1a'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)(?:a|on)$/i, '$1a'],\n    [/sis$/i, 'ses'],\n    [/(?:(kni|wi|li)fe|(ar|l|ea|eo|oa|hoo)f)$/i, '$1$2ves'],\n    [/([^aeiouy]|qu)y$/i, '$1ies'],\n    [/([^ch][ieo][ln])ey$/i, '$1ies'],\n    [/(x|ch|ss|sh|zz)$/i, '$1es'],\n    [/(matr|cod|mur|sil|vert|ind|append)(?:ix|ex)$/i, '$1ices'],\n    [/\\b((?:tit)?m|l)(?:ice|ouse)$/i, '$1ice'],\n    [/(pe)(?:rson|ople)$/i, '$1ople'],\n    [/(child)(?:ren)?$/i, '$1ren'],\n    [/eaux$/i, '$0'],\n    [/m[ae]n$/i, 'men'],\n    ['thou', 'you']\n  ].forEach(function (rule) {\n    return pluralize.addPluralRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Singularization rules.\n   */\n  [\n    [/s$/i, ''],\n    [/(ss)$/i, '$1'],\n    [/(wi|kni|(?:after|half|high|low|mid|non|night|[^\\w]|^)li)ves$/i, '$1fe'],\n    [/(ar|(?:wo|[ae])l|[eo][ao])ves$/i, '$1f'],\n    [/ies$/i, 'y'],\n    [/\\b([pl]|zomb|(?:neck|cross)?t|coll|faer|food|gen|goon|group|lass|talk|goal|cut)ies$/i, '$1ie'],\n    [/\\b(mon|smil)ies$/i, '$1ey'],\n    [/\\b((?:tit)?m|l)ice$/i, '$1ouse'],\n    [/(seraph|cherub)im$/i, '$1'],\n    [/(x|ch|ss|sh|zz|tto|go|cho|alias|[^aou]us|t[lm]as|gas|(?:her|at|gr)o|[aeiou]ris)(?:es)?$/i, '$1'],\n    [/(analy|diagno|parenthe|progno|synop|the|empha|cri|ne)(?:sis|ses)$/i, '$1sis'],\n    [/(movie|twelve|abuse|e[mn]u)s$/i, '$1'],\n    [/(test)(?:is|es)$/i, '$1is'],\n    [/(alumn|syllab|vir|radi|nucle|fung|cact|stimul|termin|bacill|foc|uter|loc|strat)(?:us|i)$/i, '$1us'],\n    [/(agend|addend|millenni|dat|extrem|bacteri|desiderat|strat|candelabr|errat|ov|symposi|curricul|quor)a$/i, '$1um'],\n    [/(apheli|hyperbat|periheli|asyndet|noumen|phenomen|criteri|organ|prolegomen|hedr|automat)a$/i, '$1on'],\n    [/(alumn|alg|vertebr)ae$/i, '$1a'],\n    [/(cod|mur|sil|vert|ind)ices$/i, '$1ex'],\n    [/(matr|append)ices$/i, '$1ix'],\n    [/(pe)(rson|ople)$/i, '$1rson'],\n    [/(child)ren$/i, '$1'],\n    [/(eau)x?$/i, '$1'],\n    [/men$/i, 'man']\n  ].forEach(function (rule) {\n    return pluralize.addSingularRule(rule[0], rule[1]);\n  });\n\n  /**\n   * Uncountable rules.\n   */\n  [\n    // Singular words with no plurals.\n    'adulthood',\n    'advice',\n    'agenda',\n    'aid',\n    'aircraft',\n    'alcohol',\n    'ammo',\n    'analytics',\n    'anime',\n    'athletics',\n    'audio',\n    'bison',\n    'blood',\n    'bream',\n    'buffalo',\n    'butter',\n    'carp',\n    'cash',\n    'chassis',\n    'chess',\n    'clothing',\n    'cod',\n    'commerce',\n    'cooperation',\n    'corps',\n    'debris',\n    'diabetes',\n    'digestion',\n    'elk',\n    'energy',\n    'equipment',\n    'excretion',\n    'expertise',\n    'firmware',\n    'flounder',\n    'fun',\n    'gallows',\n    'garbage',\n    'graffiti',\n    'hardware',\n    'headquarters',\n    'health',\n    'herpes',\n    'highjinks',\n    'homework',\n    'housework',\n    'information',\n    'jeans',\n    'justice',\n    'kudos',\n    'labour',\n    'literature',\n    'machinery',\n    'mackerel',\n    'mail',\n    'media',\n    'mews',\n    'moose',\n    'music',\n    'mud',\n    'manga',\n    'news',\n    'only',\n    'personnel',\n    'pike',\n    'plankton',\n    'pliers',\n    'police',\n    'pollution',\n    'premises',\n    'rain',\n    'research',\n    'rice',\n    'salmon',\n    'scissors',\n    'series',\n    'sewage',\n    'shambles',\n    'shrimp',\n    'software',\n    'species',\n    'staff',\n    'swine',\n    'tennis',\n    'traffic',\n    'transportation',\n    'trout',\n    'tuna',\n    'wealth',\n    'welfare',\n    'whiting',\n    'wildebeest',\n    'wildlife',\n    'you',\n    /pok[eé]mon$/i,\n    // Regexes.\n    /[^aeiou]ese$/i, // \"chinese\", \"japanese\"\n    /deer$/i, // \"deer\", \"reindeer\"\n    /fish$/i, // \"fish\", \"blowfish\", \"angelfish\"\n    /measles$/i,\n    /o[iu]s$/i, // \"carnivorous\"\n    /pox$/i, // \"chickpox\", \"smallpox\"\n    /sheep$/i\n  ].forEach(pluralize.addUncountableRule);\n\n  return pluralize;\n});\n","import PropTypes from 'prop-types';\nimport React, { Component } from 'react';\nimport ReactDOM from 'react-dom';\n\nObject.assign = Object.assign ||\n  function(target) {\n    var arguments$1 = arguments;\n\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments$1[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n\nfunction mask(value, precision, decimalSeparator, thousandSeparator, allowNegative, prefix, suffix){\n    if ( precision === void 0 ) precision = 2;\n    if ( decimalSeparator === void 0 ) decimalSeparator = '.';\n    if ( thousandSeparator === void 0 ) thousandSeparator = ',';\n    if ( allowNegative === void 0 ) allowNegative = false;\n    if ( prefix === void 0 ) prefix = '';\n    if ( suffix === void 0 ) suffix = '';\n\n    // provide some default values and arg validation.\n    if (precision < 0) { precision = 0; } // precision cannot be negative\n    if (precision > 20) { precision = 20; } // precision cannot be greater than 20\n    \n    if (value === null || value===undefined) {\n          return {\n              value: 0,\n              maskedValue: ''\n          };\n     }\n  \n    value = String(value); //if the given value is a Number, let's convert into String to manipulate that\n\n    if (value.length == 0) {\n        return {\n            value: 0,\n            maskedValue: ''\n        };\n    }\n\n\n    // extract digits. if no digits, fill in a zero.\n    var digits = value.match(/\\d/g) || ['0'];\n    \n    var numberIsNegative = false;\n    if (allowNegative) {\n        var negativeSignCount = (value.match(/-/g) || []).length;\n        // number will be negative if we have an odd number of \"-\"\n        // ideally, we should only ever have 0, 1 or 2 (positive number, making a number negative\n        // and making a negative number positive, respectively)\n        numberIsNegative = negativeSignCount % 2 === 1;\n        \n        // if every digit in the array is '0', then the number should never be negative\n        var allDigitsAreZero = true;\n        for (var idx=0; idx < digits.length; idx += 1) {\n            if(digits[idx] !== '0') {\n                allDigitsAreZero = false;\n                break;\n            }\n        }\n        if (allDigitsAreZero) {\n            numberIsNegative = false;\n        }\n    }\n\n    // zero-pad a input\n    while (digits.length <= precision) { digits.unshift('0'); }\n\n    if (precision > 0) {\n        // add the decimal separator\n        digits.splice(digits.length - precision, 0, \".\");\n    }\n\n    // clean up extraneous digits like leading zeros.\n    digits = Number(digits.join('')).toFixed(precision).split('');\n    var raw = Number(digits.join(''));\n\n    var decimalpos = digits.length - precision - 1;  // -1 needed to position the decimal separator before the digits.\n    if (precision > 0) {\n        // set the final decimal separator\n        digits[decimalpos] = decimalSeparator;\n    } else {\n        // when precision is 0, there is no decimal separator.\n        decimalpos = digits.length;\n    }\n\n    // add in any thousand separators\n    for (var x=decimalpos - 3; x > 0; x = x - 3) {\n        digits.splice(x, 0, thousandSeparator);\n    }\n\n    // if we have a prefix or suffix, add them in.\n    if (prefix.length > 0) { digits.unshift(prefix); }\n    if (suffix.length > 0) { digits.push(suffix); }\n\n    // if the number is negative, insert a \"-\" to\n    // the front of the array and negate the raw value\n    if (allowNegative && numberIsNegative) {\n        digits.unshift('-');\n        raw = -raw;\n    }\n\n    return {\n        value: raw,\n        maskedValue: digits.join('').trim()\n    };\n}\n\n// IE* parseFloat polyfill\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/parseFloat#Polyfill\nNumber.parseFloat = parseFloat;\n\nvar CurrencyInput = (function (Component$$1) {\n    function CurrencyInput(props) {\n        Component$$1.call(this, props);\n        this.prepareProps = this.prepareProps.bind(this);\n        this.handleChange = this.handleChange.bind(this);\n        this.handleFocus = this.handleFocus.bind(this);\n        this.state = this.prepareProps(this.props);\n\n        this.inputSelectionStart = 1;\n        this.inputSelectionEnd = 1;\n    }\n\n    if ( Component$$1 ) CurrencyInput.__proto__ = Component$$1;\n    CurrencyInput.prototype = Object.create( Component$$1 && Component$$1.prototype );\n    CurrencyInput.prototype.constructor = CurrencyInput;\n\n\n    /**\n     * Exposes the current masked value.\n     *\n     * @returns {String}\n     */\n    CurrencyInput.prototype.getMaskedValue = function getMaskedValue () {\n        return this.state.maskedValue;\n    };\n\n\n    /**\n     * General function used to cleanup and define the final props used for rendering\n     * @returns {{ maskedValue: {String}, value: {Number}, customProps: {Object} }}\n     */\n    CurrencyInput.prototype.prepareProps = function prepareProps (props) {\n        var customProps = Object.assign({}, props); // babeljs converts to Object.assign, then polyfills.\n        delete customProps.onChange;\n        delete customProps.onChangeEvent;\n        delete customProps.value;\n        delete customProps.decimalSeparator;\n        delete customProps.thousandSeparator;\n        delete customProps.precision;\n        delete customProps.inputType;\n        delete customProps.allowNegative;\n        delete customProps.allowEmpty;\n        delete customProps.prefix;\n        delete customProps.suffix;\n        delete customProps.selectAllOnFocus;\n        delete customProps.autoFocus;\n\n        var initialValue = props.value;\n        if (initialValue === null) {\n            initialValue = props.allowEmpty? null : '';\n        }else{\n\n            if (typeof initialValue == 'string') {\n                // Some people, when confronted with a problem, think \"I know, I'll use regular expressions.\"\n                // Now they have two problems.\n\n                // Strip out thousand separators, prefix, and suffix, etc.\n                if (props.thousandSeparator === \".\"){\n                    // special handle the . thousand separator\n                    initialValue = initialValue.replace(/\\./g, '');\n                }\n\n                if (props.decimalSeparator != \".\"){\n                    // fix the decimal separator\n                    initialValue = initialValue.replace(new RegExp(props.decimalSeparator, 'g'), '.');\n                }\n\n                //Strip out anything that is not a digit, -, or decimal separator\n                initialValue = initialValue.replace(/[^0-9-.]/g, '');\n\n                // now we can parse.\n                initialValue = Number.parseFloat(initialValue);\n            }\n            initialValue = Number(initialValue).toLocaleString(undefined, {\n                style                : 'decimal',\n                minimumFractionDigits: props.precision,\n                maximumFractionDigits: props.precision\n            });\n\n        }\n\n        var ref = mask(\n            initialValue,\n            props.precision,\n            props.decimalSeparator,\n            props.thousandSeparator,\n            props.allowNegative,\n            props.prefix,\n            props.suffix\n        );\n        var maskedValue = ref.maskedValue;\n        var value = ref.value;\n\n        return { maskedValue: maskedValue, value: value, customProps: customProps };\n    };\n\n\n    /**\n     * Component lifecycle function.\n     * Invoked when a component is receiving new props. This method is not called for the initial render.\n     *\n     * @param nextProps\n     * @see https://facebook.github.io/react/docs/component-specs.html#updating-componentwillreceiveprops\n     */\n    CurrencyInput.prototype.componentWillReceiveProps = function componentWillReceiveProps (nextProps) {\n        this.setState(this.prepareProps(nextProps));\n    };\n\n\n    /**\n     * Component lifecycle function.\n     * @returns {XML}\n     * @see https://facebook.github.io/react/docs/react-component.html#componentdidmount\n     */\n    CurrencyInput.prototype.componentDidMount = function componentDidMount (){\n        var node = ReactDOM.findDOMNode(this.theInput);\n        var selectionStart, selectionEnd;\n\n        if (this.props.autoFocus) {\n            this.theInput.focus();\n            selectionEnd = this.state.maskedValue.length - this.props.suffix.length;\n            selectionStart = selectionEnd;\n        } else {\n            selectionEnd = Math.min(node.selectionEnd, this.theInput.value.length - this.props.suffix.length);\n            selectionStart = Math.min(node.selectionStart, selectionEnd);\n        }\n\n        node.setSelectionRange(selectionStart, selectionEnd);\n    };\n\n\n    /**\n     * Component lifecycle function\n     * @returns {XML}\n     * @see https://facebook.github.io/react/docs/react-component.html#componentwillupdate\n     */\n    CurrencyInput.prototype.componentWillUpdate = function componentWillUpdate () {\n        var node = ReactDOM.findDOMNode(this.theInput);\n        this.inputSelectionStart = node.selectionStart;\n        this.inputSelectionEnd = node.selectionEnd;\n    };\n\n\n    /**\n     * Component lifecycle function.\n     * @returns {XML}\n     * @see https://facebook.github.io/react/docs/react-component.html#componentdidupdate\n     */\n    CurrencyInput.prototype.componentDidUpdate = function componentDidUpdate (prevProps, prevState){\n        var ref = this.props;\n        var decimalSeparator = ref.decimalSeparator;\n        var node = ReactDOM.findDOMNode(this.theInput);\n        var isNegative = (this.theInput.value.match(/-/g) || []).length % 2 === 1;\n        var minPos = this.props.prefix.length + (isNegative ? 1 : 0);\n        var selectionEnd = Math.max(minPos, Math.min(this.inputSelectionEnd, this.theInput.value.length - this.props.suffix.length));\n        var selectionStart = Math.max(minPos, Math.min(this.inputSelectionEnd, selectionEnd));\n\n        var regexEscapeRegex = /[-[\\]{}()*+?.,\\\\^$|#\\s]/g;\n        var separatorsRegex = new RegExp(decimalSeparator.replace(regexEscapeRegex, '\\\\$&') + '|' + this.props.thousandSeparator.replace(regexEscapeRegex, '\\\\$&'), 'g');\n        var currSeparatorCount = (this.state.maskedValue.match(separatorsRegex) || []).length;\n        var prevSeparatorCount = (prevState.maskedValue.match(separatorsRegex) || []).length;\n        var adjustment = Math.max(currSeparatorCount - prevSeparatorCount, 0);\n\n        selectionEnd = selectionEnd + adjustment;\n        selectionStart = selectionStart + adjustment;\n\n        var precision = Number(this.props.precision);\n\n        var baselength = this.props.suffix.length\n            + this.props.prefix.length\n            + (precision > 0 ? decimalSeparator.length : 0) // if precision is 0 there will be no decimal part\n            + precision\n            + 1; // This is to account for the default '0' value that comes before the decimal separator\n\n        if (this.state.maskedValue.length == baselength){\n            // if we are already at base length, position the cursor at the end.\n            selectionEnd = this.theInput.value.length - this.props.suffix.length;\n            selectionStart = selectionEnd;\n        }\n\n        node.setSelectionRange(selectionStart, selectionEnd);\n        this.inputSelectionStart = selectionStart;\n        this.inputSelectionEnd = selectionEnd;\n    };\n\n\n    /**\n     * onChange Event Handler\n     * @param event\n     */\n    CurrencyInput.prototype.handleChange = function handleChange (event) {\n        var this$1 = this;\n\n        event.preventDefault();\n        var ref = mask(\n            event.target.value,\n            this.props.precision,\n            this.props.decimalSeparator,\n            this.props.thousandSeparator,\n            this.props.allowNegative,\n            this.props.prefix,\n            this.props.suffix\n        );\n        var maskedValue = ref.maskedValue;\n        var value = ref.value;\n\n        event.persist();  // fixes issue #23\n\n        this.setState({ maskedValue: maskedValue, value: value }, function () {\n            this$1.props.onChange(maskedValue, value, event);\n            this$1.props.onChangeEvent(event, maskedValue, value);\n        });\n    };\n\n\n    /**\n     * onFocus Event Handler\n     * @param event\n     */\n    CurrencyInput.prototype.handleFocus = function handleFocus (event) {\n        if (!this.theInput) { return; }\n\n        //Whenever we receive focus check to see if the position is before the suffix, if not, move it.\n        var selectionEnd = this.theInput.value.length - this.props.suffix.length;\n        var isNegative = (this.theInput.value.match(/-/g) || []).length % 2 === 1;\n        var selectionStart = this.props.prefix.length + (isNegative ? 1 : 0);\n        this.props.selectAllOnFocus && event.target.setSelectionRange(selectionStart, selectionEnd);\n        this.inputSelectionStart = selectionStart;\n        this.inputSelectionEnd = selectionEnd;\n    };\n\n\n    CurrencyInput.prototype.handleBlur = function handleBlur (event) {\n        this.inputSelectionStart = 0;\n        this.inputSelectionEnd = 0;\n    };\n\n\n    /**\n     * Component lifecycle function.\n     * @returns {XML}\n     * @see https://facebook.github.io/react/docs/component-specs.html#render\n     */\n    CurrencyInput.prototype.render = function render () {\n        var this$1 = this;\n\n        return (\n            React.createElement( 'input', Object.assign({},\n                { ref: function (input) { this$1.theInput = input; }, type: this.props.inputType, value: this.state.maskedValue, onChange: this.handleChange, onFocus: this.handleFocus, onMouseUp: this.handleFocus }, this.state.customProps))\n        )\n    };\n\n    return CurrencyInput;\n}(Component));\n\n\n\n/**\n * Prop validation.\n * @see https://facebook.github.io/react/docs/component-specs.html#proptypes\n */\n\nCurrencyInput.propTypes = {\n    onChange: PropTypes.func,\n    value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    decimalSeparator: PropTypes.string,\n    thousandSeparator: PropTypes.string,\n    precision: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n    inputType: PropTypes.string,\n    allowNegative: PropTypes.bool,\n    allowEmpty: PropTypes.bool,\n    prefix: PropTypes.string,\n    suffix: PropTypes.string,\n    selectAllOnFocus: PropTypes.bool\n};\n\n\nCurrencyInput.defaultProps = {\n    onChange: function(maskValue, value, event) {/*no-op*/},\n    onChangeEvent: function(event, maskValue, value) {/*no-op*/},\n    autoFocus: false,\n    value: '0',\n    decimalSeparator: '.',\n    thousandSeparator: ',',\n    precision: '2',\n    inputType: 'text',\n    allowNegative: false,\n    prefix: '',\n    suffix: '',\n    selectAllOnFocus: false\n};\n\nexport default CurrencyInput;\n//# sourceMappingURL=react-currency-input.es.js.map\n"],"names":["module","exports","pluralRules","singularRules","uncountables","irregularPlurals","irregularSingles","sanitizeRule","rule","RegExp","restoreCase","word","token","toLowerCase","toUpperCase","charAt","substr","interpolate","str","args","replace","match","index","result","arguments","sanitizeWord","rules","length","hasOwnProperty","len","test","replaceWord","replaceMap","keepMap","checkWord","bool","pluralize","count","inclusive","singular","plural","isPlural","isSingular","addPluralRule","replacement","push","addSingularRule","addUncountableRule","addIrregularRule","single","forEach","mask","value","precision","decimalSeparator","thousandSeparator","allowNegative","prefix","suffix","undefined","maskedValue","String","digits","numberIsNegative","allDigitsAreZero","idx","unshift","splice","Number","join","toFixed","split","raw","decimalpos","x","trim","Object","assign","target","arguments$1","i","source","key","prototype","call","parseFloat","CurrencyInput","Component$$1","props","this","prepareProps","bind","handleChange","handleFocus","state","inputSelectionStart","inputSelectionEnd","__proto__","create","constructor","getMaskedValue","customProps","onChange","onChangeEvent","inputType","allowEmpty","selectAllOnFocus","autoFocus","initialValue","toLocaleString","style","minimumFractionDigits","maximumFractionDigits","ref","componentWillReceiveProps","nextProps","setState","componentDidMount","selectionStart","selectionEnd","node","theInput","focus","Math","min","setSelectionRange","componentWillUpdate","componentDidUpdate","prevProps","prevState","isNegative","minPos","max","regexEscapeRegex","separatorsRegex","currSeparatorCount","prevSeparatorCount","adjustment","baselength","event","this$1","preventDefault","persist","handleBlur","render","input","type","onFocus","onMouseUp","Component","propTypes","defaultProps","maskValue"],"sourceRoot":""}