UNPKG

@coin-voyage/paykit

Version:

Seamless crypto payments. Onboard users from any chain, any coin into your app with one click.

65 lines 2.47 kB
import React from "react"; import { formatUnits, parseUnits } from "viem"; const truncateRegex = /^(0x[a-zA-Z0-9]{4})[a-zA-Z0-9]+([a-zA-Z0-9]{4})$/; const truncateEthAddress = (address, separator = "••••") => { if (!address) { return ""; } const match = address.match(truncateRegex); if (!match) { return address; } return `${match[1]}${separator}${match[2]}`; }; const truncateENSAddress = (ensName, maxLength) => { if (ensName.length > maxLength) { return `${ensName.replace(".eth", "").slice(0, maxLength)}...`; } return ensName; }; function fromReadableAmount(amount, decimals) { return parseUnits(amount.toString(), decimals); } function toReadableAmount(amount, decimals) { return formatUnits(BigInt(amount), decimals); } const nFormatter = (num, digits = 2) => { if (num < 10000) { return num.toFixed(2); } const lookup = [ { value: 1, symbol: "" }, { value: 1e3, symbol: "k" }, { value: 1e6, symbol: "m" }, { value: 1e9, symbol: "g" }, { value: 1e12, symbol: "t" }, { value: 1e15, symbol: "p" }, { value: 1e18, symbol: "e" }, ]; const rx = /\.0+$|(\.[0-9]*[1-9])0+$/; const item = lookup .slice() .reverse() .find((item) => num >= item.value); return item ? (num / item.value).toFixed(digits).replace(rx, "$1") + item.symbol : "0"; }; function flattenChildren(children) { const childrenArray = React.Children.toArray(children); return childrenArray.reduce((flatChildren, child) => { if (child.type === React.Fragment) { return flatChildren.concat(flattenChildren(child.props.children)); } flatChildren.push(child); return flatChildren; }, []); } export const isWalletConnectConnector = (connectorId) => connectorId === "walletConnect"; export const isMetaMaskConnector = (connectorId) => connectorId === "metaMaskSDK"; export const isCoinbaseWalletConnector = (connectorId) => connectorId === "coinbaseWalletSDK"; export const isLedgerConnector = (connectorId) => connectorId === "ledger"; export const isSafeConnector = (connectorId) => connectorId === "safe"; export const isInjectedConnector = (connectorId) => connectorId === "injected"; export { toReadableAmount, fromReadableAmount, flattenChildren, nFormatter, truncateENSAddress, truncateEthAddress, }; //# sourceMappingURL=index.js.map