UNPKG

@sky-mavis/tanto-widget

Version:
95 lines (91 loc) 3.29 kB
'use strict'; var jsxRuntime = require('@emotion/react/jsx-runtime'); var react$1 = require('motion/react'); var react = require('react'); var wagmi = require('wagmi'); var analytic = require('../../analytic.cjs'); var index$1 = require('../../constants/index.cjs'); var useConnectCallback = require('../../hooks/useConnectCallback.cjs'); var useConnectorRequestAnalyticInterceptor = require('../../hooks/useConnectorRequestAnalyticInterceptor.cjs'); var usePreloadImages = require('../../hooks/usePreloadImages.cjs'); var useSolveRoninConnectionConflict = require('../../hooks/useSolveRoninConnectionConflict.cjs'); var useWalletConnectListener = require('../../hooks/useWalletConnectListener.cjs'); var index = require('../../utils/index.cjs'); var openWindow = require('../../utils/openWindow.cjs'); var ThemeProvider = require('../theme/ThemeProvider.cjs'); var WidgetModalProvider = require('../widget-modal/WidgetModalProvider.cjs'); var TantoContext = require('./TantoContext.cjs'); function TantoProvider({ config: customConfig, theme, customThemeToken, onConnect, onDisconnect, children }) { useSolveRoninConnectionConflict.useSolveRoninConnectionConflict(); usePreloadImages.usePreloadTantoImages(); useConnectCallback.useConnectCallback({ onConnect: data => { onConnect?.(data); analytic.analytic.updateSession({ userAddress: data.address, force: true }); analytic.analytic.sendEvent('wallet_connect_success', { wallet_id: data.connectorId, address: data.address, chain_id: data.chainId }); }, onDisconnect: () => { onDisconnect?.(); analytic.analytic.sendEvent('sdk_disconnect').then(() => { analytic.analytic.updateSession({ userAddress: undefined, force: true }); }); } }); useWalletConnectListener.useWalletConnectListener({ onSignRequest: () => { if (index.isMobile()) openWindow.openWindow(index$1.RONIN_WALLET_APP_DEEPLINK); } }); useConnectorRequestAnalyticInterceptor.useConnectorRequestAnalyticInterceptor(); const chains = wagmi.useChains(); const defaultTantoConfig = { reducedMotion: false, disableProfile: false, hideConnectSuccessPrompt: false, initialChainId: chains?.[0]?.id }; const config = react.useMemo(() => Object.assign({}, defaultTantoConfig, customConfig), [customConfig]); const contextValue = react.useMemo(() => ({ config }), [config]); /* Start Analytic Session */ react.useEffect(() => { analytic.analytic.updateSession({}); analytic.analytic.sendEvent('sdk_init'); }, []); return jsxRuntime.jsx(TantoContext.TantoContext.Provider, { value: contextValue, children: jsxRuntime.jsx(ThemeProvider.ThemeProvider, { theme: theme, customThemeToken: customThemeToken, children: jsxRuntime.jsx(react$1.MotionConfig, { reducedMotion: config.reducedMotion ? 'always' : 'never', children: jsxRuntime.jsx(react$1.LazyMotion, { features: react$1.domAnimation, strict: true, children: jsxRuntime.jsx(WidgetModalProvider.WidgetModalProvider, { children: children }) }) }) }) }); } exports.TantoProvider = TantoProvider;