@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
63 lines • 1.56 kB
JavaScript
import { ABSENT_VALUE_FORMAT, isAbsent, applyDecimalsForPlain, buildReturn, cleanNumber, formatNumberCore, formatNumberCoreParts, handleCompactBeforeAria, handleCompactBeforeDisplay, prepareFormatOptions, prepareMinusParts, resolveLocale, enhanceSR } from "./formatCore.js";
export function formatNumber(value, {
locale: inputLocale = null,
clean = false,
compact = null,
decimals = null,
rounding = null,
signDisplay = null,
options = null,
returnAria = false,
invalidAriaText = null,
cleanCopyValue = null
} = {}) {
value = isAbsent(value) ? ABSENT_VALUE_FORMAT : value;
const locale = resolveLocale(inputLocale);
const opts = prepareFormatOptions({
options,
signDisplay
});
if (clean) {
value = cleanNumber(value);
}
value = applyDecimalsForPlain({
value,
decimals,
rounding,
opts
});
handleCompactBeforeDisplay({
value,
locale,
compact,
decimals,
opts
});
const formatted = formatNumberCoreParts(value, locale, opts);
const {
number: display,
parts
} = prepareMinusParts(formatted.number, formatted.parts, locale);
handleCompactBeforeAria({
value,
compact,
opts
});
let aria = formatNumberCore(value, locale, opts);
aria = enhanceSR(value, aria, locale);
if (!returnAria) {
return display;
}
return buildReturn({
value,
locale,
display,
aria,
type: 'number',
opts,
cleanCopyValue,
invalidAriaText,
parts: parts.length ? parts : undefined
});
}
//# sourceMappingURL=formatNumber.js.map