{"version":3,"file":"numberHelpers-6709e152.js","sources":["../../../node_modules/number_helpers/lib/number_helpers.js","../../../app/frontend/assets/numberHelpers.js"],"sourcesContent":["// Generated by CoffeeScript 1.7.1\n(function() {\n var NumberHelpers;\n\n NumberHelpers = (function() {\n function NumberHelpers() {}\n\n NumberHelpers.number_to_currency = function(float, opts) {\n var delimited, fixedWidth, result, sign, _delimiter, _precision, _ref, _ref1, _ref2, _ref3, _ref4, _separator, _unit, _unit_pos;\n if (opts == null) {\n opts = {};\n }\n _precision = (_ref = opts.precision) != null ? _ref : 2;\n _unit = (_ref1 = opts.unit) != null ? _ref1 : '$';\n _separator = (_ref2 = opts.separator) != null ? _ref2 : '.';\n _delimiter = (_ref3 = opts.delimiter) != null ? _ref3 : ',';\n _unit_pos = (_ref4 = opts.unit_position) != null ? _ref4 : 'start';\n sign = '';\n if (isNaN(float)) {\n result = float;\n } else {\n float = parseFloat(float);\n if (float < 0) {\n sign = '-';\n }\n fixedWidth = Math.abs(float).toFixed(_precision);\n delimited = NumberHelpers.number_with_delimiter(fixedWidth, {\n delimiter: _delimiter\n });\n result = delimited.split('.').join(_separator);\n }\n if (_unit_pos === 'end') {\n return \"\" + sign + result + _unit;\n } else {\n return \"\" + sign + _unit + result;\n }\n };\n\n NumberHelpers.number_with_delimiter = function(float, opts) {\n var decimal, integer, number, rgx, _delimiter, _ref, _ref1, _ref2, _separator;\n if (opts == null) {\n opts = {};\n }\n _separator = (_ref = opts.separator) != null ? _ref : '.';\n _delimiter = (_ref1 = opts.delimiter) != null ? _ref1 : ',';\n number = float.toString().split(\".\");\n integer = number[0];\n decimal = (_ref2 = number[1]) != null ? _ref2 : '';\n if (!decimal) {\n _separator = '';\n }\n rgx = /(\\d+)(\\d{3})/;\n if (_delimiter) {\n while (rgx.test(integer)) {\n integer = integer.replace(rgx, \"$1\" + _delimiter + \"$2\");\n }\n }\n return \"\" + integer + _separator + decimal;\n };\n\n NumberHelpers.number_with_precision = function(float, opts) {\n var decimal, dlen, i, integer, multiple, newlen, num_array, num_lngth, number, rnd, rounded, significant, sigs, zcount, _delimiter, _precision, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _separator, _significant, _skip_empty_fractionals, _strip_insignificant_zeros;\n if (opts == null) {\n opts = {};\n }\n _precision = (_ref = opts.precision) != null ? _ref : 3;\n _delimiter = (_ref1 = opts.delimiter) != null ? _ref1 : ',';\n _separator = (_ref2 = opts.separator) != null ? _ref2 : '.';\n _significant = (_ref3 = opts.significant) != null ? _ref3 : false;\n _strip_insignificant_zeros = (_ref4 = opts.strip_insignificant_zeros) != null ? _ref4 : false;\n _skip_empty_fractionals = opts.strip_empty_fractional_parts;\n number = float.toString().split('.');\n integer = number[0];\n decimal = (_ref5 = number[1]) != null ? _ref5 : '';\n if (_significant) {\n rnd = _precision - integer.length;\n } else {\n rnd = _precision;\n }\n if (rnd < 1) {\n rnd = 0;\n }\n multiple = Math.pow(10, rnd);\n if (multiple > 1) {\n rounded = Math.round(float * multiple) / multiple;\n } else {\n rounded = float;\n }\n number = rounded.toString().split('.');\n integer = number[0];\n decimal = (_ref6 = number[1]) != null ? _ref6 : '';\n decimal = parseFloat(\"0.\" + decimal).toFixed(_precision);\n decimal = decimal.toString().split('.');\n decimal = (_ref7 = decimal[1]) != null ? _ref7 : '';\n number = (\"\" + integer + \".\" + decimal) * 1;\n num_array = number.toString().split('');\n num_lngth = num_array.length;\n i = 0;\n sigs = 0;\n while (i < num_lngth) {\n if (!(num_array[i] === '.' || num_array[i] === '0')) {\n sigs++;\n }\n i++;\n }\n if (_significant && sigs >= _precision && _precision > 0) {\n significant = number.toPrecision(_precision) * 1;\n significant = significant.toString().split('.');\n integer = significant[0];\n decimal = (_ref8 = significant[1]) != null ? _ref8 : '';\n }\n integer = NumberHelpers.number_with_delimiter(integer, {\n delimiter: _delimiter\n });\n if (_strip_insignificant_zeros) {\n dlen = decimal.length;\n newlen = dlen;\n while (newlen > 0 && decimal[newlen - 1] === '0') {\n newlen = newlen - 1;\n }\n if (newlen === 0) {\n decimal = '';\n } else if (newlen !== dlen) {\n decimal = decimal.slice(0, newlen);\n }\n }\n if (_skip_empty_fractionals) {\n i = 0;\n zcount = 0;\n num_array = decimal.split('');\n dlen = decimal.length;\n while (i < dlen) {\n if (num_array[i] === '0') {\n zcount++;\n }\n i++;\n }\n if (zcount === dlen) {\n decimal = '';\n }\n }\n if (!decimal) {\n _separator = '';\n }\n return \"\" + integer + _separator + decimal;\n };\n\n NumberHelpers.number_to_human = function(float, opts) {\n var abs_float, denom, label, number, precise, _delimiter, _labels, _precision, _ref, _ref1, _ref10, _ref11, _ref12, _ref13, _ref14, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _separator, _significant, _space_label, _strip_insignificant_zeros;\n if (opts == null) {\n opts = {};\n }\n _precision = (_ref = opts.precision) != null ? _ref : 3;\n _separator = (_ref1 = opts.separator) != null ? _ref1 : '.';\n _significant = (_ref2 = opts.significant) != null ? _ref2 : true;\n _delimiter = (_ref3 = opts.delimiter) != null ? _ref3 : ',';\n _strip_insignificant_zeros = (_ref4 = opts.strip_insignificant_zeros) != null ? _ref4 : false;\n _space_label = opts.space_label === false ? '' : ' ';\n _labels = {\n thousand: (_ref5 = (_ref6 = opts.labels) != null ? _ref6.thousand : void 0) != null ? _ref5 : 'Thousand',\n million: (_ref7 = (_ref8 = opts.labels) != null ? _ref8.million : void 0) != null ? _ref7 : 'Million',\n billion: (_ref9 = (_ref10 = opts.labels) != null ? _ref10.billion : void 0) != null ? _ref9 : 'Billion',\n trillion: (_ref11 = (_ref12 = opts.labels) != null ? _ref12.trillion : void 0) != null ? _ref11 : 'Trillion',\n quadrillion: (_ref13 = (_ref14 = opts.labels) != null ? _ref14.quadrillion : void 0) != null ? _ref13 : 'Quadrillion'\n };\n abs_float = Math.abs(float);\n if (abs_float < Math.pow(10, 3)) {\n denom = 1;\n label = false;\n } else if (abs_float >= Math.pow(10, 3) && abs_float < Math.pow(10, 6)) {\n denom = Math.pow(10, 3);\n label = _labels.thousand;\n } else if (abs_float >= Math.pow(10, 6) && abs_float < Math.pow(10, 9)) {\n denom = Math.pow(10, 6);\n label = _labels.million;\n } else if (abs_float >= Math.pow(10, 9) && abs_float < Math.pow(10, 12)) {\n denom = Math.pow(10, 9);\n label = _labels.billion;\n } else if (abs_float >= Math.pow(10, 12) && abs_float < Math.pow(10, 15)) {\n denom = Math.pow(10, 12);\n label = _labels.trillion;\n } else if (abs_float >= Math.pow(10, 15)) {\n denom = Math.pow(10, 15);\n label = _labels.quadrillion;\n }\n number = float / denom;\n precise = NumberHelpers.number_with_precision(number, {\n precision: _precision,\n significant: _significant,\n delimiter: label === 'Quadrillion' ? '' : _delimiter,\n separator: _separator,\n strip_insignificant_zeros: !label ? true : _strip_insignificant_zeros\n });\n if (label) {\n return \"\" + precise + _space_label + label;\n } else {\n return precise;\n }\n };\n\n NumberHelpers.number_to_human_size = function(float, opts) {\n var abs_float, denom, label, number, precise, _delimiter, _precision, _ref, _ref1, _ref2, _ref3, _ref4, _separator, _significant, _strip_insignificant_zeros;\n if (opts == null) {\n opts = {};\n }\n _precision = (_ref = opts.precision) != null ? _ref : 3;\n _separator = (_ref1 = opts.separator) != null ? _ref1 : '.';\n _significant = (_ref2 = opts.significant) != null ? _ref2 : true;\n _delimiter = (_ref3 = opts.delimiter) != null ? _ref3 : ',';\n _strip_insignificant_zeros = (_ref4 = opts.strip_insignificant_zeros) != null ? _ref4 : false;\n if (float > 1000) {\n float = float / 1.024;\n }\n if (float > 1000000) {\n float = float / 1.024;\n }\n if (float > 1000000000) {\n float = float / 1.024;\n }\n if (float > 1000000000000) {\n float = float / 1.024;\n }\n abs_float = Math.abs(float);\n if (abs_float < Math.pow(10, 3)) {\n denom = 1;\n label = 'Bytes';\n } else if (abs_float >= Math.pow(10, 3) && abs_float < Math.pow(10, 6)) {\n denom = Math.pow(10, 3);\n label = 'KB';\n } else if (abs_float >= Math.pow(10, 6) && abs_float < Math.pow(10, 9)) {\n denom = Math.pow(10, 6);\n label = 'MB';\n } else if (abs_float >= Math.pow(10, 9) && abs_float < Math.pow(10, 12)) {\n denom = Math.pow(10, 9);\n label = 'GB';\n } else if (abs_float >= Math.pow(10, 12) && abs_float < Math.pow(10, 15)) {\n denom = Math.pow(10, 12);\n label = 'TB';\n }\n number = float / denom;\n precise = NumberHelpers.number_with_precision(number, {\n precision: _precision,\n significant: _significant,\n delimiter: _delimiter,\n separator: _separator,\n strip_insignificant_zeros: label === 'Bytes' ? true : _strip_insignificant_zeros\n });\n return \"\" + precise + \" \" + label;\n };\n\n NumberHelpers.number_to_phone = function(number, opts) {\n var first, last, lng, second, str, _area_code, _country_code, _delimiter, _extension, _ref, _ref1, _ref2, _ref3;\n if (opts == null) {\n opts = {};\n }\n _area_code = (_ref = opts.area_code) != null ? _ref : false;\n _delimiter = (_ref1 = opts.delimiter) != null ? _ref1 : '-';\n _country_code = (_ref2 = opts.country_code) != null ? _ref2 : false;\n _extension = (_ref3 = opts.extension) != null ? _ref3 : false;\n if (isNaN(number)) {\n return number;\n }\n str = number.toString();\n lng = str.length;\n last = str.substr(lng - 4, lng);\n if (lng < 8) {\n first = str.substr(0, 3);\n } else {\n first = str.substr(0, 3);\n second = str.substr(3, 3);\n if (_area_code) {\n first = \"(\" + first + \") \" + second;\n } else {\n first = \"\" + first + _delimiter + second;\n }\n }\n _extension = _extension ? \" x \" + opts.extension : '';\n _country_code = _country_code ? \"+\" + _country_code + _delimiter : '';\n return \"\" + _country_code + first + _delimiter + last + _extension;\n };\n\n NumberHelpers.number_to_percentage = function(float, opts) {\n var _delimiter, _precision, _ref, _ref1, _ref2, _ref3, _ref4, _separator, _significant, _strip_insignificant_zeros;\n if (opts == null) {\n opts = {};\n }\n _precision = (_ref = opts.precision) != null ? _ref : 3;\n _separator = (_ref1 = opts.separator) != null ? _ref1 : '.';\n _significant = (_ref2 = opts.significant) != null ? _ref2 : false;\n _delimiter = (_ref3 = opts.delimiter) != null ? _ref3 : '';\n _strip_insignificant_zeros = (_ref4 = opts.strip_insignificant_zeros) != null ? _ref4 : false;\n if (!isNaN(float)) {\n float = NumberHelpers.number_with_precision(float, {\n precision: _precision,\n significant: _significant,\n delimiter: _delimiter,\n separator: _separator,\n strip_insignificant_zeros: _strip_insignificant_zeros\n });\n }\n return \"\" + float + \"%\";\n };\n\n return NumberHelpers;\n\n })();\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = NumberHelpers;\n } else {\n window.NumberHelpers = NumberHelpers;\n }\n\n}).call(this);\n","import NumberHelpers from \"number_helpers\";\nimport _ from \"lodash\";\n\nexport function formattedDollarAmount(amount, precision = 0) {\n const numberOptions = {\n significant: false,\n precision,\n labels: { million: \"M\", billion: \"B\", thousand: \"K\" },\n space_label: false,\n };\n const rounded = _.round(amount, 2);\n return NumberHelpers.number_to_human(rounded, numberOptions);\n}\n\nexport function dollarAmount(amount, precision = 0) {\n const rounded = _.round(amount, 2);\n return NumberHelpers.number_to_currency(rounded, { precision });\n}\n\nexport function currencyAmount(amount, precision = 0, roundPlaces = 2) {\n const rounded = _.round(amount, roundPlaces);\n return NumberHelpers.number_to_currency(rounded, { precision, unit: \"\" });\n}\n\nconst currencyThreshold = 1_000_000;\n\nexport function currencyBelowThreshold(\n amount,\n threshold = currencyThreshold,\n precision = 1\n) {\n if (amount < threshold) {\n return currencyAmount(amount);\n } else {\n return formattedDollarAmount(amount, precision);\n }\n}\n"],"names":["NumberHelpers","float","opts","delimited","fixedWidth","result","sign","_delimiter","_precision","_ref","_ref1","_ref2","_ref3","_ref4","_separator","_unit","_unit_pos","decimal","integer","number","rgx","dlen","i","multiple","newlen","num_array","num_lngth","rnd","rounded","significant","sigs","zcount","_ref5","_ref6","_ref7","_ref8","_significant","_skip_empty_fractionals","_strip_insignificant_zeros","abs_float","denom","label","precise","_labels","_ref10","_ref11","_ref12","_ref13","_ref14","_ref9","_space_label","first","last","lng","second","str","_area_code","_country_code","_extension","module","this","formattedDollarAmount","amount","precision","numberOptions","_","dollarAmount","currencyAmount","roundPlaces","currencyThreshold","currencyBelowThreshold","threshold"],"mappings":"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","x_google_ignoreList":[0]}