UNPKG

nimbus-bridge

Version:
183 lines 8.08 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { ThemeProvider } from "next-themes"; import { useEffect, useMemo, useState } from "react"; import { LogLevel, MAINNET_RELAY_API } from "@reservoir0x/relay-sdk"; import { RelayKitProvider } from "@reservoir0x/relay-kit-ui"; import { WagmiProvider, createConfig, http } from "wagmi"; import { useRelayChains } from "@reservoir0x/relay-kit-hooks"; import { mainnet, arbitrum, ancient8, apeChain, arbitrumNova, avalanche, b3, base, blast, bob, boba, cyber, degen, forma, gnosis, ham, hychain, ink, linea, mantle, mint, mode, optimism, polygon, polygonZkEvm, scroll, redstone, sei, zksync, } from "wagmi/chains"; import { DynamicWagmiConnector } from "@dynamic-labs/wagmi-connector"; import { DynamicContextProvider, FilterChain, } from "@dynamic-labs/sdk-react-core"; import { EthereumWalletConnectors } from "@dynamic-labs/ethereum"; import { BitcoinWalletConnectors } from "@dynamic-labs/bitcoin"; import { SolanaWalletConnectors } from "@dynamic-labs/solana"; import { EclipseWalletConnectors } from "@dynamic-labs/eclipse"; import { SuiWalletConnectors } from "@dynamic-labs/sui"; import { AbstractEvmWalletConnectors } from "@dynamic-labs-connectors/abstract-global-wallet-evm"; import { convertRelayChainToDynamicNetwork } from "./utils/dynamic"; import { useWalletFilter } from "./context/walletFilter"; import { Bridge } from "./Bridge"; export const AppWrapped = ({ fee, recipientAddress, duneApiKey, dynamicApiKey, isDarkMode, config, }) => { const theme = useMemo(() => { return { widget: { background: isDarkMode ? "#0f0f0f" : "#", borderRadius: "20px", card: { background: isDarkMode ? "#0f0f0f" : "", borderRadius: "20px", }, selector: { background: isDarkMode ? "#0f0f0f" : "", hover: { background: isDarkMode ? "#0f0f0f" : "", }, }, swapCurrencyButtonBorderColor: isDarkMode ? "gray" : "", swapCurrencyButtonBorderWidth: "2px", }, modal: { background: isDarkMode ? "#0f0f0f" : "", }, input: { background: isDarkMode ? "#0f0f0f" : "", color: isDarkMode ? "#fff" : "", }, anchor: { color: isDarkMode ? "#fff" : "#000", hover: { color: isDarkMode ? "#fff" : "#000", }, }, primaryColor: "#1e96fc", focusColor: "#1e96fc", buttons: { primary: { background: "#1e96fc", hover: { background: "#1469b0", }, }, }, }; }, [isDarkMode]); const { walletFilter, setWalletFilter } = useWalletFilter(); const [wagmiConfig, setWagmiConfig] = useState(); const { chains, viemChains } = useRelayChains(MAINNET_RELAY_API, { includeChains: "bfb8677a-eefc-47fa-9388-beca0c6f9d17,e7f3d1fc-1d6e-4043-b57e-81db1a4301f7,32d4ad9e-0de1-4993-a07b-a27c27d869c4,52824ebe-d1ee-4e5e-a00f-9866218b44a1", referrer: "relay-demo", }); useEffect(() => { if (chains && viemChains && !wagmiConfig) { setWagmiConfig(createConfig({ chains: (viemChains && viemChains.length === 0 ? [ mainnet, arbitrum, ancient8, apeChain, arbitrumNova, avalanche, b3, base, blast, bob, boba, cyber, degen, forma, gnosis, ham, hychain, ink, linea, mantle, mint, mode, optimism, polygon, polygonZkEvm, scroll, redstone, sei, zksync, ] : viemChains), multiInjectedProviderDiscovery: false, transports: chains.reduce((transportsConfig, chain) => { transportsConfig[chain.id] = http(); return transportsConfig; }, {}), })); } }, [chains, viemChains]); // if (!wagmiConfig || !chains) { // return null; // } return (_jsx(ThemeProvider, { attribute: "class", defaultTheme: isDarkMode ? "dark" : "light", enableSystem: true, disableTransitionOnChange: true, children: _jsx(RelayKitProvider, { theme: theme, options: { baseApiUrl: MAINNET_RELAY_API, source: "relay-demo", logLevel: LogLevel.Verbose, duneConfig: { apiKey: duneApiKey, apiBaseUrl: "https://api.dune.com", }, chains, appName: "Nimbus", useGasFeeEstimations: true, pollingInterval: 1000, confirmationPollingInterval: 1000, appFees: fee && recipientAddress ? [ { recipient: recipientAddress, fee, }, ] : undefined, }, children: _jsx(WagmiProvider, { config: wagmiConfig || createConfig({ chains: [mainnet], multiInjectedProviderDiscovery: false, transports: { [mainnet.id]: http(), }, }), children: _jsx(DynamicContextProvider, { theme: isDarkMode ? "dark" : "light", settings: { logLevel: "INFO", environmentId: dynamicApiKey ?? "", walletConnectors: [ EthereumWalletConnectors, SolanaWalletConnectors, BitcoinWalletConnectors, EclipseWalletConnectors, SuiWalletConnectors, AbstractEvmWalletConnectors, ], cssOverrides: ` [data-testid="send-balance-button"] { display: none; } `, walletsFilter: walletFilter ? FilterChain(walletFilter) : undefined, overrides: { evmNetworks: () => { return chains ? chains .filter((chain) => chain.vmType === "evm") .map((chain) => { return convertRelayChainToDynamicNetwork(chain); }) : []; }, }, initialAuthenticationMode: "connect-only", events: { onAuthFlowClose: () => { setWalletFilter(undefined); }, }, }, children: _jsx(DynamicWagmiConnector, { children: _jsx(Bridge, { config: config }) }) }) }) }) })); }; //# sourceMappingURL=AppWrapped.js.map