@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
JavaScript
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