UNPKG

@cosmos-kit/react

Version:
25 lines (24 loc) 1.94 kB
import { jsx as _jsx } from "react/jsx-runtime"; import { Logger, } from '@cosmos-kit/core'; import { ChainProvider as ChainProviderLite } from '@cosmos-kit/react-lite'; import { useCallback, useMemo } from 'react'; import { SelectedWalletRepoProvider } from './context'; import { WalletModal } from './modal'; import { defaultModalViews } from './modal/components/views'; export const ChainProvider = ({ chains, assetLists, wallets, walletModal, modalViews, throwErrors: propThrowErrors, subscribeConnectEvents = true, defaultNameService = 'icns', walletConnectOptions, signerOptions, endpointOptions, sessionOptions, logLevel = 'WARN', allowedIframeParentOrigins, children, modalTheme = {}, modalOptions, }) => { const logger = useMemo(() => new Logger(logLevel), []); const throwErrors = propThrowErrors === 'connect_only' ? false : Boolean(propThrowErrors); const withChainProvider = (modal) => { return (_jsx(SelectedWalletRepoProvider, { children: _jsx(ChainProviderLite, { chains: chains, assetLists: assetLists, wallets: wallets, walletModal: modal, throwErrors: throwErrors, subscribeConnectEvents: subscribeConnectEvents, defaultNameService: defaultNameService, walletConnectOptions: walletConnectOptions, signerOptions: signerOptions, endpointOptions: endpointOptions, sessionOptions: sessionOptions, logLevel: logLevel, allowedIframeParentOrigins: allowedIframeParentOrigins, children: children }) })); }; if (walletModal) { logger.debug('Using provided wallet modal.'); return withChainProvider(walletModal); } logger.debug('Using default wallet modal.'); const defaultModal = useCallback((props) => (_jsx(WalletModal, { ...props, ...modalTheme, modalViews: { ...defaultModalViews, ...modalViews, }, modalOptions: modalOptions })), [defaultModalViews, modalTheme, modalViews, modalOptions]); return withChainProvider(defaultModal); };