@@ -25,43 +25,19 @@ const sizes = {
2525
2626export type Digits = keyof typeof sizes ;
2727
28- /**
29- * This function is needed to keep more than 3 digits of the same size.
30- *
31- * @param significantDigits - number of digits above 3
32- * @returns size to format value to get required number of digits
33- *
34- * By default value converted to the next size when it's above 1000,
35- * so we have 900k and 1m. To extend it additional significantDigits could be set
36- *
37- * significantDigits value added above default 3
38- *
39- * significantDigits = 1 - 9 000k and 10m
40- *
41- * significantDigits = 2 - 90 000m and 100b
42- *
43- * significantDigits = 3 - 900 000b and 1000t
44- */
45- export const getNumberWithSignificantDigits = ( value : number , significantDigits : number ) => {
46- const multiplier = 10 ** significantDigits ;
47-
48- const thousandLevel = sizes . thousand . value * multiplier ;
49- const millionLevel = sizes . million . value * multiplier ;
50- const billionLevel = sizes . billion . value * multiplier ;
51- const trillionLevel = sizes . trillion . value * multiplier ;
52-
28+ export const getNumberSizeUnit = ( value : number ) => {
5329 let size : Digits = 'thousand' ;
5430
55- if ( value > thousandLevel ) {
31+ if ( value > sizes . thousand . value ) {
5632 size = 'thousand' ;
5733 }
58- if ( value >= millionLevel ) {
34+ if ( value >= sizes . million . value ) {
5935 size = 'million' ;
6036 }
61- if ( value >= billionLevel ) {
37+ if ( value >= sizes . billion . value ) {
6238 size = 'billion' ;
6339 }
64- if ( value >= trillionLevel ) {
40+ if ( value >= sizes . trillion . value ) {
6541 size = 'trillion' ;
6642 }
6743
@@ -78,14 +54,10 @@ const addSizeLabel = (result: string, size: Digits, delimiter = UNBREAKABLE_GAP)
7854 return result + delimiter + sizes [ size ] . label ;
7955} ;
8056
81- /**
82- * @param significantDigits - number of digits above 3
83- */
8457export const formatNumberWithDigits = ( {
8558 value,
8659 size,
8760 withSizeLabel = true ,
88- significantDigits = 0 ,
8961 delimiter,
9062 ...params
9163} : FormatValuesArgs < Digits > ) => {
@@ -95,7 +67,7 @@ export const formatNumberWithDigits = ({
9567
9668 const numValue = Number ( value ) ;
9769
98- const sizeToConvert = size ?? getNumberWithSignificantDigits ( numValue , significantDigits ) ;
70+ const sizeToConvert = size ?? getNumberSizeUnit ( numValue ) ;
9971
10072 const result = formatToSize ( { value : numValue , size : sizeToConvert , ...params } ) ;
10173
0 commit comments