wix-style-react
Version:
wix-style-react
57 lines (56 loc) • 2.69 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.formatToPercent = exports.formatToCompactNumber = exports.formatNumberToPrecision = exports.countPercentageFromBase = exports.calcPrecision = 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 = exports.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)));
};
var formatToCompactNumber = exports.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;
};
var formatToPercent = exports.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, "%");
};
var 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 = exports.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(v => formatToCompactNumber(v, precision).toLocaleLowerCase());
if (compactValues.length === (0, _uniq.default)(compactValues).length) {
return precision;
}
precision += 1;
}
};
//# sourceMappingURL=numberFormatters.js.map