@sky-mavis/tanto-widget
Version:
Tanto Widget
64 lines (60 loc) • 1.97 kB
JavaScript
;
var jsxRuntime = require('@emotion/react/jsx-runtime');
var react$1 = require('motion/react');
var react = require('react');
var useConnectCallback = require('../../hooks/useConnectCallback.cjs');
var AuthProvider = require('../auth/AuthProvider.cjs');
var ThemeProvider = require('../theme/ThemeProvider.cjs');
var WidgetModalProvider = require('../widget-modal/WidgetModalProvider.cjs');
var TantoContext = require('./TantoContext.cjs');
var useConnectionAnalytics = require('./useConnectionAnalytics.cjs');
var useDeeplinkHandler = require('./useDeeplinkHandler.cjs');
var useTantoSetup = require('./useTantoSetup.cjs');
function TantoProvider({
config: customConfig = {},
theme,
children,
onConnect,
onDisconnect
}) {
const config = useTantoSetup.useTantoSetup(customConfig);
const contextValue = react.useMemo(() => ({
config
}), [config]);
return jsxRuntime.jsx(TantoContext.TantoContext.Provider, {
value: contextValue,
children: jsxRuntime.jsx(ThemeProvider.ThemeProvider, {
theme: theme,
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(AuthProvider.AuthProvider, {
children: jsxRuntime.jsx(ConnectionHandler, {
onConnect: onConnect,
onDisconnect: onDisconnect,
children: children
})
})
})
})
})
});
}
function ConnectionHandler({
children,
onConnect,
onDisconnect
}) {
useDeeplinkHandler.useDeeplinkHandler();
useConnectionAnalytics.useConnectionAnalytics();
useConnectCallback.useConnectCallback({
onConnect,
onDisconnect
});
return jsxRuntime.jsx(WidgetModalProvider.WidgetModalProvider, {
children: children
});
}
exports.TantoProvider = TantoProvider;