UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

54 lines (53 loc) 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatDecimals = exports.countDecimals = void 0; exports.roundHalfEven = roundHalfEven; var _includes = _interopRequireDefault(require("core-js-pure/stable/instance/includes.js")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } function roundHalfEven(num, decimalPlaces = 2) { const multiplier = Math.pow(10, decimalPlaces); const adjustedNum = num * multiplier; const floored = Math.floor(adjustedNum); const diff = adjustedNum - floored; if (diff > 0.5) { return Math.ceil(adjustedNum) / multiplier; } else if (diff < 0.5) { return Math.floor(adjustedNum) / multiplier; } return floored % 2 === 0 ? floored / multiplier : Math.ceil(adjustedNum) / multiplier; } const formatDecimals = (value, decimals, rounding, opts = {}) => { var _context; decimals = parseFloat(String(decimals)); if (decimals >= 0) { opts.minimumFractionDigits = decimals; opts.maximumFractionDigits = decimals; } if ((0, _includes.default)(_context = String(value)).call(_context, '.')) { const decimalPlaces = decimals || opts.maximumFractionDigits; if (rounding === 'omit' || rounding === true) { const factor = Math.pow(10, decimalPlaces); value = Math.trunc(Number(value) * factor) / factor; } else { switch (rounding) { case 'half-even': { value = roundHalfEven(Number(value), decimalPlaces); break; } } } } return value; }; exports.formatDecimals = formatDecimals; const countDecimals = (value, decimalSeparator = '.') => { if (typeof value === 'number' && Math.floor(value.valueOf()) === value.valueOf()) { return 0; } return String(value).split(decimalSeparator)[1]?.length || 0; }; exports.countDecimals = countDecimals; //# sourceMappingURL=decimals.js.map