forked from
npmx.dev/npmx.dev
[READ-ONLY]
a fast, modern browser for the npm registry
1export function useNumberFormatter(options?: Intl.NumberFormatOptions) {
2 const { locale } = useI18n()
3
4 return computed(() => new Intl.NumberFormat(locale.value, options))
5}
6
7export const useCompactNumberFormatter = () =>
8 useNumberFormatter({
9 notation: 'compact',
10 compactDisplay: 'short',
11 maximumFractionDigits: 1,
12 })
13
14export const useBytesFormatter = () => {
15 const { t } = useI18n()
16 const decimalNumberFormatter = useNumberFormatter({
17 maximumFractionDigits: 1,
18 })
19
20 return {
21 format: (bytes: number) => {
22 if (bytes < 1024)
23 return t('package.size.b', {
24 size: decimalNumberFormatter.value.format(bytes),
25 })
26 if (bytes < 1024 * 1024)
27 return t('package.size.kb', {
28 size: decimalNumberFormatter.value.format(bytes / 1024),
29 })
30 return t('package.size.mb', {
31 size: decimalNumberFormatter.value.format(bytes / (1024 * 1024)),
32 })
33 },
34 }
35}