basicon
Version:
Minimal, trusted npm dependency for chain and token metadata & SVG icons. All locally served, no dynamic fetch, fully type-safe
250 lines (248 loc) • 7.35 kB
JavaScript
import {
chain_exports
} from "./chunk-24A7JQMK.mjs";
import "./chunk-VJIEUG4J.mjs";
import "./chunk-YYOUXOL6.mjs";
import "./chunk-DP4NHMHC.mjs";
import "./chunk-JY35AS4P.mjs";
import "./chunk-SHJRMLHH.mjs";
import "./chunk-VCENXJQB.mjs";
import "./chunk-ZF6S67WM.mjs";
import "./chunk-3MQRLZTK.mjs";
import "./chunk-JXZWIFQ3.mjs";
import "./chunk-HD7QVSB4.mjs";
import "./chunk-4ATFJPDY.mjs";
import "./chunk-53QL2PMG.mjs";
import "./chunk-D4X6E7Y7.mjs";
import "./chunk-OMAMRDAP.mjs";
import "./chunk-67KNTKWZ.mjs";
import "./chunk-7AILBSTJ.mjs";
import "./chunk-UDX6Z4KK.mjs";
import "./chunk-LQ7XYGGK.mjs";
import "./chunk-NDS75V6D.mjs";
import "./chunk-HSKN26H5.mjs";
import "./chunk-5FFGBF5G.mjs";
import "./chunk-IXB4A5H2.mjs";
import "./chunk-4JJNFURO.mjs";
import "./chunk-TOVWMTYO.mjs";
import "./chunk-ZGYQ5PJU.mjs";
import "./chunk-H4MQQ7QG.mjs";
import "./chunk-A32BAYIO.mjs";
import "./chunk-CNJFF4R7.mjs";
import "./chunk-MLRMFFYJ.mjs";
import "./chunk-3ZAQZTFO.mjs";
import "./chunk-UHGJOLRW.mjs";
import "./chunk-MOODSPMZ.mjs";
import "./chunk-X74V3OAK.mjs";
import "./chunk-XBMDDSY2.mjs";
import "./chunk-A63AARW2.mjs";
import "./chunk-HQJ2ME33.mjs";
import "./chunk-OIPOFXAR.mjs";
import "./chunk-LBHCWASL.mjs";
import "./chunk-T5QDNZOB.mjs";
import "./chunk-3HGLFRHT.mjs";
import "./chunk-IW2INBC5.mjs";
import "./chunk-AJIJLXK7.mjs";
import "./chunk-GNWSTWTR.mjs";
import "./chunk-N3WWXV4I.mjs";
import "./chunk-5VJIPQVT.mjs";
import "./chunk-TD4QOCMU.mjs";
import "./chunk-XYL5NUD2.mjs";
import "./chunk-PFHSUF5I.mjs";
import "./chunk-RX4QUFDI.mjs";
import "./chunk-EHOIXWF3.mjs";
import "./chunk-ERF2FVMX.mjs";
import "./chunk-IYQSMH2M.mjs";
import "./chunk-BHF25TED.mjs";
import "./chunk-KI3XUI46.mjs";
import "./chunk-H7BR5TA6.mjs";
import "./chunk-V3JCR7ZJ.mjs";
import "./chunk-3GMKPS4Q.mjs";
import "./chunk-QMUNSRZJ.mjs";
import "./chunk-HUF3DXYD.mjs";
import "./chunk-G6FRU22Y.mjs";
import "./chunk-XFY2IB4G.mjs";
import "./chunk-NPER3MUC.mjs";
import "./chunk-BMWXV5GY.mjs";
import "./chunk-FEDLYXXK.mjs";
import "./chunk-YW764E4Y.mjs";
import "./chunk-6E5RWGJ4.mjs";
import "./chunk-46GQFRON.mjs";
import "./chunk-BQHBHMW5.mjs";
import {
token_exports
} from "./chunk-2GLEFWXM.mjs";
import "./chunk-35DJMJRZ.mjs";
import "./chunk-ESEDAG24.mjs";
import "./chunk-BWPZHGBH.mjs";
import "./chunk-C57S2BPX.mjs";
import "./chunk-I6EZUQRX.mjs";
import "./chunk-G3M3JYYV.mjs";
import "./chunk-NJJXQS77.mjs";
import "./chunk-UCST3DLC.mjs";
import "./chunk-DKFHEAQV.mjs";
import "./chunk-Z6NM7PGE.mjs";
import "./chunk-O3PMMRNX.mjs";
import "./chunk-DBDNTP5N.mjs";
import "./chunk-E3VBBIE6.mjs";
import "./chunk-JFVAGK5S.mjs";
import "./chunk-WZ3HFFGI.mjs";
import "./chunk-OUROL75H.mjs";
import "./chunk-7GCSQEU4.mjs";
import "./chunk-KI7ALZDC.mjs";
import "./chunk-L7XWEX3R.mjs";
import "./chunk-UGDDOY4O.mjs";
import "./chunk-V7V73JEM.mjs";
import "./chunk-CT2RBTWD.mjs";
import "./chunk-5MJOLEHR.mjs";
import "./chunk-RMDXFCM3.mjs";
import "./chunk-6ILZFJ2Z.mjs";
import "./chunk-XIY5LJHN.mjs";
import "./chunk-G7GUUZJU.mjs";
import "./chunk-FIK32BU4.mjs";
import "./chunk-NX4OFK2P.mjs";
import "./chunk-HFLJENIL.mjs";
import "./chunk-4UG2Q32C.mjs";
import "./chunk-OGF2Q22G.mjs";
import "./chunk-MQSZNGJA.mjs";
import "./chunk-L6LR47R5.mjs";
import "./chunk-KFPAGSRY.mjs";
import "./chunk-6RCESC5P.mjs";
import "./chunk-XN4TQUBJ.mjs";
import "./chunk-DQIQNZKG.mjs";
import "./chunk-UUD3PLUJ.mjs";
import {
chain_default
} from "./chunk-FCUAGMLN.mjs";
import {
token_default
} from "./chunk-EGBWF74Z.mjs";
import "./chunk-O2ZSS2WJ.mjs";
import "./chunk-E6NQIVWI.mjs";
import "./chunk-Q5FM5DRU.mjs";
import "./chunk-WMSFAVG2.mjs";
import "./chunk-43I3PAP2.mjs";
import "./chunk-QK4PKNB3.mjs";
// src/index.tsx
import { jsx } from "react/jsx-runtime";
var chains = chain_default;
var tokens = token_default;
function getAllChains() {
return [...chains];
}
function getChainById(chainId) {
return chains.find((chain) => chain.chainId === chainId);
}
function getChainByName(name) {
const lowerName = name.toLowerCase();
return chains.find((chain) => chain.name.toLowerCase() === lowerName);
}
function getChainList(filters = {}) {
let result = [...chains];
if (filters.chainIds && filters.chainIds.length > 0) {
const idSet = new Set(filters.chainIds);
result = result.filter((chain) => idSet.has(chain.chainId));
}
if (filters.nameContains) {
const lowerNameContains = filters.nameContains.toLowerCase();
result = result.filter((chain) => chain.name.toLowerCase().includes(lowerNameContains));
}
return result;
}
function getAllTokens() {
return [...tokens];
}
function getTokenBySymbol(symbol, chainId) {
const lowerSymbol = symbol.toLowerCase();
const candidates = tokens.filter((token) => token.symbol.toLowerCase() === lowerSymbol);
if (chainId === void 0 || candidates.length <= 1) {
return candidates[0];
}
return candidates.find((token) => token.addresses.some((addr) => addr.chainId === chainId)) || candidates[0];
}
function getTokenByName(name, chainId) {
const lowerName = name.toLowerCase();
const candidates = tokens.filter((token) => token.name.toLowerCase() === lowerName);
if (chainId === void 0 || candidates.length <= 1) {
return candidates[0];
}
return candidates.find((token) => token.addresses.some((addr) => addr.chainId === chainId)) || candidates[0];
}
function getTokenByAddress(chainId, address) {
return tokens.find(
(t) => t.addresses.some(
(a) => a.chainId === chainId && a.address.toLowerCase() === address.toLowerCase()
)
);
}
function getTokenList(filters = {}) {
let result = [...tokens];
if (filters.symbols && filters.symbols.length > 0) {
const symbolSet = new Set(filters.symbols.map((s) => s.toLowerCase()));
result = result.filter((token) => symbolSet.has(token.symbol.toLowerCase()));
}
if (filters.nameContains) {
const lowerNameContains = filters.nameContains.toLowerCase();
result = result.filter((token) => token.name.toLowerCase().includes(lowerNameContains));
}
return result;
}
function TokenIcon({
name,
symbol,
chainId,
address,
size = 48,
className = ""
}) {
let token = void 0;
if (chainId && address) {
token = getTokenByAddress(chainId, address);
} else if (symbol) {
token = getTokenBySymbol(symbol);
} else if (name) {
token = getTokenByName(name);
}
if (!token || !token.symbol)
return null;
const key = token.symbol.toLowerCase();
const Icon = token_exports[key];
console.log(Icon, token?.name, token?.symbol.toLowerCase());
if (!Icon)
return null;
return /* @__PURE__ */ jsx(Icon, { width: size, height: size, className });
}
function ChainIcon({
chainId,
name,
size = 24,
className = "",
theme = "light"
}) {
let chain = void 0;
if (chainId) {
chain = getChainById(chainId);
} else if (name) {
chain = getChainByName(name);
}
if (!chain || !chain.name)
return null;
const key = `${chain.name.toLowerCase()}_${theme}`;
const Icon = chain_exports[key];
if (!Icon)
return null;
return /* @__PURE__ */ jsx(Icon, { width: size, height: size, className });
}
export {
ChainIcon,
TokenIcon,
getAllChains,
getAllTokens,
getChainById,
getChainByName,
getChainList,
getTokenByAddress,
getTokenByName,
getTokenBySymbol,
getTokenList
};