UNPKG

wix-style-react

Version:
86 lines (63 loc) 2.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.calcPrecision = exports.countPercentageFromBase = exports.formatToPercent = exports.formatToCompactNumber = exports.formatNumberToPrecision = void 0; var _uniq = _interopRequireDefault(require("lodash/uniq")); var _d3Format = require("d3-format"); var SI_SYMBOL = ['', 'K', 'M', 'B']; var formatNumber = (0, _d3Format.format)(','); var formatNumberToPrecision = function formatNumberToPrecision() { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; return formatNumber(parseFloat(parseFloat(value).toFixed(precision))); }; exports.formatNumberToPrecision = formatNumberToPrecision; var formatToCompactNumber = function formatToCompactNumber() { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; var tier = Math.min(Math.log10(Math.abs(value)) / 3 | 0, SI_SYMBOL.length - 1); if (tier === 0) { return value.toFixed().toString(); } var suffix = SI_SYMBOL[tier]; var scale = Math.pow(10, tier * 3); var scaled = value / scale; var isRounded = !(scaled % 1); return isRounded ? scaled.toFixed() + suffix : scaled.toFixed(precision) + suffix; }; exports.formatToCompactNumber = formatToCompactNumber; var formatToPercent = function formatToPercent() { var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; var formatedValue = typeof value === 'number' ? formatNumberToPrecision(value, 0) : value; return "".concat(formatedValue, "%"); }; exports.formatToPercent = formatToPercent; var countPercentageFromBase = function countPercentageFromBase(base, chunk, precision) { if (chunk === 0 || base === 0) { return 0; } if (precision === undefined) { return chunk * 100 / base; } if (precision < 0 || !(precision === parseInt(precision, 10))) { throw new Error('Precision should be integer'); } return Number((chunk * 100 / base).toFixed(precision)); }; exports.countPercentageFromBase = countPercentageFromBase; var calcPrecision = function calcPrecision(values) { var maxPrecision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 4; var precision = 0; while (precision < maxPrecision) { var compactValues = (values || []).map(function (v) { return formatToCompactNumber(v, precision).toLocaleLowerCase(); }); if (compactValues.length === (0, _uniq["default"])(compactValues).length) { return precision; } precision += 1; } }; exports.calcPrecision = calcPrecision;