You've already forked AstralRinth
forked from didirus/AstralRinth
* refactor: migrate to common eslint+prettier configs * fix: prettier frontend * feat: config changes * fix: lint issues * fix: lint * fix: type imports * fix: cyclical import issue * fix: lockfile * fix: missing dep * fix: switch to tabs * fix: continue switch to tabs * fix: rustfmt parity * fix: moderation lint issue * fix: lint issues * fix: ui intl * fix: lint issues * Revert "fix: rustfmt parity" This reverts commit cb99d2376c321d813d4b7fc7e2a213bb30a54711. * feat: revert last rs
27 lines
648 B
TypeScript
27 lines
648 B
TypeScript
const formatters = new WeakMap<object, Intl.NumberFormat>()
|
|
|
|
export function useCompactNumber(truncate = false, fractionDigits = 2, locale?: string) {
|
|
const context = {}
|
|
|
|
let formatter = formatters.get(context)
|
|
|
|
if (!formatter) {
|
|
formatter = new Intl.NumberFormat(locale, {
|
|
notation: 'compact',
|
|
maximumFractionDigits: fractionDigits,
|
|
})
|
|
formatters.set(context, formatter)
|
|
}
|
|
|
|
function format(value: number): string {
|
|
let formattedValue = value
|
|
if (truncate) {
|
|
const scale = Math.pow(10, fractionDigits)
|
|
formattedValue = Math.floor(value * scale) / scale
|
|
}
|
|
return formatter!.format(formattedValue)
|
|
}
|
|
|
|
return format
|
|
}
|