UNPKG

@rainbow-me/rainbowkit

Version:
32 lines (29 loc) 960 B
"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 };