@cosmos-kit/react
Version:
cosmos-kit wallet connector
25 lines (24 loc) • 1.94 kB
JavaScript
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);
};