@rainbow-me/rainbowkit
Version:
The best way to connect a wallet
32 lines (29 loc) • 960 B
JavaScript
"use client";
// src/components/ConnectButton/abbreviateETHBalance.ts
var units = ["k", "m", "b", "t"];
function toPrecision(number, precision = 1) {
return number.toString().replace(new RegExp(`(.+\\.\\d{${precision}})\\d+`), "$1").replace(/(\.[1-9]*)0+$/, "$1").replace(/\.$/, "");
}
function abbreviateETHBalance(number) {
if (number < 1) return toPrecision(number, 3);
if (number < 10 ** 2) return toPrecision(number, 2);
if (number < 10 ** 4)
return new Intl.NumberFormat().format(
Number.parseFloat(toPrecision(number, 1))
);
const decimalsDivisor = 10 ** 1;
let result = String(number);
for (let i = units.length - 1; i >= 0; i--) {
const size = 10 ** ((i + 1) * 3);
if (size <= number) {
const scaledNumber = number * decimalsDivisor / size / decimalsDivisor;
result = toPrecision(scaledNumber, 1) + units[i];
break;
}
}
return result;
}
export {
toPrecision,
abbreviateETHBalance
};