@lifi/widget 4.0.0-beta.0 → 4.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,9 +8,6 @@ import { WidgetProvider } from './providers/WidgetProvider/WidgetProvider.js';
8
8
  import { StoreProvider } from './stores/StoreProvider.js';
9
9
  import { SettingsStoreProvider } from './stores/settings/SettingsStore.js';
10
10
  export const AppProvider = ({ children, config, formRef, }) => {
11
- if (!config.providers?.length && process.env.NODE_ENV === 'development') {
12
- console.warn('No widget providers specified');
13
- }
14
11
  return (_jsx(QueryClientProvider, { children: _jsx(SettingsStoreProvider, { config: config, children: _jsx(WidgetProvider, { config: config, children: _jsx(I18nProvider, { children: _jsx(ThemeProvider, { children: _jsx(SDKClientProvider, { children: _jsx(WalletProvider, { providers: config.providers ?? [], children: _jsx(StoreProvider, { config: config, formRef: formRef, children: children }) }) }) }) }) }) }) }));
15
12
  };
16
13
  //# sourceMappingURL=AppProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppProvider.js","sourceRoot":"","sources":["../../src/AppProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG1E,MAAM,CAAC,MAAM,WAAW,GAAmD,CAAC,EAC1E,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,EAAE;IACH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,CACL,KAAC,mBAAmB,cAClB,KAAC,qBAAqB,IAAC,MAAM,EAAE,MAAM,YACnC,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,YAC5B,KAAC,YAAY,cACX,KAAC,aAAa,cACZ,KAAC,iBAAiB,cAChB,KAAC,cAAc,IAAC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,YAC/C,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,YAC5C,QAAQ,GACK,GACD,GACC,GACN,GACH,GACA,GACK,GACJ,CACvB,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"AppProvider.js","sourceRoot":"","sources":["../../src/AppProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAA;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAG1E,MAAM,CAAC,MAAM,WAAW,GAAmD,CAAC,EAC1E,QAAQ,EACR,MAAM,EACN,OAAO,GACR,EAAE,EAAE;IACH,OAAO,CACL,KAAC,mBAAmB,cAClB,KAAC,qBAAqB,IAAC,MAAM,EAAE,MAAM,YACnC,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,YAC5B,KAAC,YAAY,cACX,KAAC,aAAa,cACZ,KAAC,iBAAiB,cAChB,KAAC,cAAc,IAAC,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE,YAC/C,KAAC,aAAa,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,YAC5C,QAAQ,GACK,GACD,GACC,GACN,GACH,GACA,GACK,GACJ,CACvB,CAAA;AACH,CAAC,CAAA"}
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "4.0.0-beta.0";
2
+ export declare const version = "4.0.0-beta.3";
@@ -1,3 +1,3 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '4.0.0-beta.0';
2
+ export const version = '4.0.0-beta.3';
3
3
  //# sourceMappingURL=version.js.map
@@ -6,24 +6,32 @@ import { useWidgetConfig } from './WidgetProvider/WidgetProvider.js';
6
6
  const SDKClientContext = createContext({});
7
7
  export const useSDKClient = () => useContext(SDKClientContext);
8
8
  export const SDKClientProvider = ({ children }) => {
9
- const widgetConfig = useWidgetConfig();
9
+ const { sdkConfig, apiKey, integrator, feeConfig, fee, referrer, routePriority, slippage, } = useWidgetConfig();
10
10
  const client = useMemo(() => {
11
11
  return createClient({
12
- ...widgetConfig.sdkConfig,
13
- apiKey: widgetConfig.apiKey,
14
- integrator: widgetConfig.integrator ?? window?.location.hostname,
12
+ ...sdkConfig,
13
+ apiKey,
14
+ integrator: integrator ?? window?.location.hostname,
15
15
  routeOptions: {
16
- fee: widgetConfig.feeConfig?.fee || widgetConfig.fee,
17
- referrer: widgetConfig.referrer,
18
- order: widgetConfig.routePriority,
19
- slippage: widgetConfig.slippage,
20
- ...widgetConfig.sdkConfig?.routeOptions,
16
+ fee: feeConfig?.fee || fee,
17
+ referrer,
18
+ order: routePriority,
19
+ slippage,
20
+ ...sdkConfig?.routeOptions,
21
21
  },
22
22
  disableVersionCheck: true,
23
23
  widgetVersion: version,
24
- // debug: true,
25
24
  });
26
- }, [widgetConfig]);
25
+ }, [
26
+ sdkConfig,
27
+ apiKey,
28
+ integrator,
29
+ feeConfig,
30
+ fee,
31
+ referrer,
32
+ routePriority,
33
+ slippage,
34
+ ]);
27
35
  return (_jsx(SDKClientContext.Provider, { value: client, children: children }));
28
36
  };
29
37
  //# sourceMappingURL=SDKClientProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SDKClientProvider.js","sourceRoot":"","sources":["../../../src/providers/SDKClientProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,WAAW,CAAA;AACxD,OAAO,EACL,aAAa,EAEb,UAAU,EACV,OAAO,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEpE,MAAM,gBAAgB,GAAG,aAAa,CAAY,EAAe,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACnE,MAAM,YAAY,GAAG,eAAe,EAAE,CAAA;IAEtC,MAAM,MAAM,GAAc,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,YAAY,CAAC;YAClB,GAAG,YAAY,CAAC,SAAS;YACzB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;YAChE,YAAY,EAAE;gBACZ,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG;gBACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,KAAK,EAAE,YAAY,CAAC,aAAa;gBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;gBAC/B,GAAG,YAAY,CAAC,SAAS,EAAE,YAAY;aACxC;YACD,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,OAAO;YACtB,eAAe;SAChB,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACrC,QAAQ,GACiB,CAC7B,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"SDKClientProvider.js","sourceRoot":"","sources":["../../../src/providers/SDKClientProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,WAAW,CAAA;AACxD,OAAO,EACL,aAAa,EAEb,UAAU,EACV,OAAO,GACR,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AAEpE,MAAM,gBAAgB,GAAG,aAAa,CAAY,EAAe,CAAC,CAAA;AAElE,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AAE9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAAE,QAAQ,EAAqB,EAAE,EAAE;IACnE,MAAM,EACJ,SAAS,EACT,MAAM,EACN,UAAU,EACV,SAAS,EACT,GAAG,EACH,QAAQ,EACR,aAAa,EACb,QAAQ,GACT,GAAG,eAAe,EAAE,CAAA;IAErB,MAAM,MAAM,GAAc,OAAO,CAAC,GAAG,EAAE;QACrC,OAAO,YAAY,CAAC;YAClB,GAAG,SAAS;YACZ,MAAM;YACN,UAAU,EAAE,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;YACnD,YAAY,EAAE;gBACZ,GAAG,EAAE,SAAS,EAAE,GAAG,IAAI,GAAG;gBAC1B,QAAQ;gBACR,KAAK,EAAE,aAAa;gBACpB,QAAQ;gBACR,GAAG,SAAS,EAAE,YAAY;aAC3B;YACD,mBAAmB,EAAE,IAAI;YACzB,aAAa,EAAE,OAAO;SACvB,CAAC,CAAA;IACJ,CAAC,EAAE;QACD,SAAS;QACT,MAAM;QACN,UAAU;QACV,SAAS;QACT,GAAG;QACH,QAAQ;QACR,aAAa;QACb,QAAQ;KACT,CAAC,CAAA;IAEF,OAAO,CACL,KAAC,gBAAgB,CAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,YACrC,QAAQ,GACiB,CAC7B,CAAA;AACH,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { WalletManagementProvider } from '@lifi/wallet-management';
3
- import { useMemo, useRef, } from 'react';
2
+ import { WalletManagementProviders } from '@lifi/wallet-management';
3
+ import { useMemo } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
5
  import { useAvailableChains } from '../../hooks/useAvailableChains.js';
6
6
  import { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js';
@@ -9,36 +9,27 @@ import { useExternalWalletProvider } from './useExternalWalletProvider.js';
9
9
  export const WalletProvider = ({ children, providers, }) => {
10
10
  const { walletConfig } = useWidgetConfig();
11
11
  const { chains } = useAvailableChains();
12
- const prevProvidersRef = useRef(providers);
13
- // Memoize providers to maintain referential stability and prevent remounts
14
- const memoizedProviders = useMemo(() => {
15
- if (prevProvidersRef.current.length === providers.length &&
16
- prevProvidersRef.current.every((provider, index) => provider === providers[index])) {
17
- return prevProvidersRef.current;
18
- }
19
- prevProvidersRef.current = providers;
20
- return providers;
21
- }, [providers]);
22
- const baseContent = _jsx(WalletMenuProvider, { children: children });
23
- return memoizedProviders.reduceRight((acc, ProviderComponent) => (_jsx(ProviderComponent, { forceInternalWalletManagement: walletConfig?.forceInternalWalletManagement, chains: chains ?? [], children: acc }, ProviderComponent.name)), baseContent);
24
- };
25
- const WalletMenuProvider = ({ children }) => {
26
- const { walletConfig } = useWidgetConfig();
27
12
  const { i18n } = useTranslation();
28
- const { internalChainTypes } = useExternalWalletProvider();
29
- // Initialize SDK client with providers wrapping the wallet menu provider
30
- useInitializeSDKProviders();
31
- const config = useMemo(() => {
32
- return {
33
- locale: i18n.resolvedLanguage,
34
- enabledChainTypes: internalChainTypes,
35
- walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,
36
- };
37
- }, [
13
+ const { useExternalWalletProvidersOnly, internalChainTypes } = useExternalWalletProvider();
14
+ if (!providers.length &&
15
+ !useExternalWalletProvidersOnly &&
16
+ process.env.NODE_ENV === 'development') {
17
+ console.warn('No widget providers specified');
18
+ }
19
+ const effectiveProviders = useExternalWalletProvidersOnly ? [] : providers;
20
+ const walletManagementConfig = useMemo(() => ({
21
+ locale: i18n.resolvedLanguage,
22
+ enabledChainTypes: internalChainTypes,
23
+ walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,
24
+ }), [
38
25
  i18n.resolvedLanguage,
39
26
  internalChainTypes,
40
27
  walletConfig?.walletEcosystemsOrder,
41
28
  ]);
42
- return (_jsx(WalletManagementProvider, { config: config, children: children }));
29
+ return (_jsx(WalletManagementProviders, { config: walletManagementConfig, providers: effectiveProviders, chains: chains, forceInternalWalletManagement: walletConfig?.forceInternalWalletManagement, children: _jsx(SDKProviderInitializer, { children: children }) }));
30
+ };
31
+ const SDKProviderInitializer = ({ children }) => {
32
+ useInitializeSDKProviders();
33
+ return children;
43
34
  };
44
35
  //# sourceMappingURL=WalletProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/WalletProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAElE,OAAO,EAIL,OAAO,EACP,MAAM,GACP,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAM1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,SAAS,GAC8B,EAAE,EAAE;IAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAA;IAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEvC,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;IAE1C,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IACE,gBAAgB,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;YACpD,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAC5B,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,CACnD,EACD,CAAC;YACD,OAAO,gBAAgB,CAAC,OAAO,CAAA;QACjC,CAAC;QACD,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAA;QACpC,OAAO,SAAS,CAAA;IAClB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,MAAM,WAAW,GAAG,KAAC,kBAAkB,cAAE,QAAQ,GAAsB,CAAA;IAEvE,OAAO,iBAAiB,CAAC,WAAW,CAClC,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAC1B,KAAC,iBAAiB,IAEhB,6BAA6B,EAC3B,YAAY,EAAE,6BAA6B,EAE7C,MAAM,EAAE,MAAM,IAAI,EAAE,YAEnB,GAAG,IANC,iBAAiB,CAAC,IAAI,CAOT,CACrB,EACD,WAAW,CACZ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,kBAAkB,GAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACjE,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAA;IAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;IACjC,MAAM,EAAE,kBAAkB,EAAE,GAAG,yBAAyB,EAAE,CAAA;IAE1D,yEAAyE;IACzE,yBAAyB,EAAE,CAAA;IAE3B,MAAM,MAAM,GAA2B,OAAO,CAAC,GAAG,EAAE;QAClD,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,gBAAyB;YACtC,iBAAiB,EAAE,kBAAkB;YACrC,qBAAqB,EAAE,YAAY,EAAE,qBAAqB;SAC3D,CAAA;IACH,CAAC,EAAE;QACD,IAAI,CAAC,gBAAgB;QACrB,kBAAkB;QAClB,YAAY,EAAE,qBAAqB;KACpC,CAAC,CAAA;IAEF,OAAO,CACL,KAAC,wBAAwB,IAAC,MAAM,EAAE,MAAM,YACrC,QAAQ,GACgB,CAC5B,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../../../src/providers/WalletProvider/WalletProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEnE,OAAO,EAAmD,OAAO,EAAE,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAM1E,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,SAAS,GAC8B,EAAE,EAAE;IAC3C,MAAM,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAA;IAC1C,MAAM,EAAE,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAA;IACvC,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,EAAE,CAAA;IACjC,MAAM,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,GAC1D,yBAAyB,EAAE,CAAA;IAE7B,IACE,CAAC,SAAS,CAAC,MAAM;QACjB,CAAC,8BAA8B;QAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EACtC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAA;IAC/C,CAAC;IAED,MAAM,kBAAkB,GAAG,8BAA8B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAE1E,MAAM,sBAAsB,GAAG,OAAO,CACpC,GAAG,EAAE,CAAC,CAAC;QACL,MAAM,EAAE,IAAI,CAAC,gBAAyB;QACtC,iBAAiB,EAAE,kBAAkB;QACrC,qBAAqB,EAAE,YAAY,EAAE,qBAAqB;KAC3D,CAAC,EACF;QACE,IAAI,CAAC,gBAAgB;QACrB,kBAAkB;QAClB,YAAY,EAAE,qBAAqB;KACpC,CACF,CAAA;IAED,OAAO,CACL,KAAC,yBAAyB,IACxB,MAAM,EAAE,sBAAsB,EAC9B,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,MAAM,EACd,6BAA6B,EAC3B,YAAY,EAAE,6BAA6B,YAG7C,KAAC,sBAAsB,cAAE,QAAQ,GAA0B,GACjC,CAC7B,CAAA;AACH,CAAC,CAAA;AAED,MAAM,sBAAsB,GAA0B,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACrE,yBAAyB,EAAE,CAAA;IAC3B,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "4.0.0-beta.0",
3
+ "version": "4.0.0-beta.3",
4
4
  "description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
5
5
  "type": "module",
6
6
  "main": "./dist/esm/index.js",
@@ -34,21 +34,21 @@
34
34
  "dependencies": {
35
35
  "@emotion/react": "^11.14.0",
36
36
  "@emotion/styled": "^11.14.1",
37
- "@lifi/sdk": "4.0.0-beta.1",
37
+ "@lifi/sdk": "^4.0.0-beta.3",
38
38
  "@mui/icons-material": "^7.3.6",
39
39
  "@mui/material": "^7.3.6",
40
40
  "@mui/system": "^7.3.6",
41
- "@tanstack/react-router": "^1.167.4",
41
+ "@tanstack/react-router": "^1.168.3",
42
42
  "@tanstack/react-virtual": "^3.13.23",
43
- "i18next": "^25.8.18",
43
+ "i18next": "^25.10.9",
44
44
  "microdiff": "^1.5.0",
45
45
  "mitt": "^3.0.1",
46
- "react-i18next": "^16.5.8",
46
+ "react-i18next": "^16.6.5",
47
47
  "react-intersection-observer": "^9.16.0",
48
48
  "react-transition-group": "^4.4.5",
49
49
  "zustand": "^5.0.12",
50
- "@lifi/wallet-management": "4.0.0-beta.0",
51
- "@lifi/widget-provider": "4.0.0-beta.0"
50
+ "@lifi/wallet-management": "4.0.0-beta.3",
51
+ "@lifi/widget-provider": "4.0.0-beta.3"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@tanstack/react-query": ">=5.90.0",
@@ -14,9 +14,6 @@ export const AppProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({
14
14
  config,
15
15
  formRef,
16
16
  }) => {
17
- if (!config.providers?.length && process.env.NODE_ENV === 'development') {
18
- console.warn('No widget providers specified')
19
- }
20
17
  return (
21
18
  <QueryClientProvider>
22
19
  <SettingsStoreProvider config={config}>
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '4.0.0-beta.0'
2
+ export const version = '4.0.0-beta.3'
@@ -13,25 +13,42 @@ const SDKClientContext = createContext<SDKClient>({} as SDKClient)
13
13
  export const useSDKClient = () => useContext(SDKClientContext)
14
14
 
15
15
  export const SDKClientProvider = ({ children }: PropsWithChildren) => {
16
- const widgetConfig = useWidgetConfig()
16
+ const {
17
+ sdkConfig,
18
+ apiKey,
19
+ integrator,
20
+ feeConfig,
21
+ fee,
22
+ referrer,
23
+ routePriority,
24
+ slippage,
25
+ } = useWidgetConfig()
17
26
 
18
27
  const client: SDKClient = useMemo(() => {
19
28
  return createClient({
20
- ...widgetConfig.sdkConfig,
21
- apiKey: widgetConfig.apiKey,
22
- integrator: widgetConfig.integrator ?? window?.location.hostname,
29
+ ...sdkConfig,
30
+ apiKey,
31
+ integrator: integrator ?? window?.location.hostname,
23
32
  routeOptions: {
24
- fee: widgetConfig.feeConfig?.fee || widgetConfig.fee,
25
- referrer: widgetConfig.referrer,
26
- order: widgetConfig.routePriority,
27
- slippage: widgetConfig.slippage,
28
- ...widgetConfig.sdkConfig?.routeOptions,
33
+ fee: feeConfig?.fee || fee,
34
+ referrer,
35
+ order: routePriority,
36
+ slippage,
37
+ ...sdkConfig?.routeOptions,
29
38
  },
30
39
  disableVersionCheck: true,
31
40
  widgetVersion: version,
32
- // debug: true,
33
41
  })
34
- }, [widgetConfig])
42
+ }, [
43
+ sdkConfig,
44
+ apiKey,
45
+ integrator,
46
+ feeConfig,
47
+ fee,
48
+ referrer,
49
+ routePriority,
50
+ slippage,
51
+ ])
35
52
 
36
53
  return (
37
54
  <SDKClientContext.Provider value={client}>
@@ -1,13 +1,6 @@
1
- import type { WalletManagementConfig } from '@lifi/wallet-management'
2
- import { WalletManagementProvider } from '@lifi/wallet-management'
1
+ import { WalletManagementProviders } from '@lifi/wallet-management'
3
2
  import type { WidgetProviderProps } from '@lifi/widget-provider'
4
- import {
5
- type FC,
6
- type PropsWithChildren,
7
- type ReactNode,
8
- useMemo,
9
- useRef,
10
- } from 'react'
3
+ import { type FC, type PropsWithChildren, type ReactNode, useMemo } from 'react'
11
4
  import { useTranslation } from 'react-i18next'
12
5
  import { useAvailableChains } from '../../hooks/useAvailableChains.js'
13
6
  import { useInitializeSDKProviders } from '../../hooks/useInitializeSDKProviders.js'
@@ -24,64 +17,48 @@ export const WalletProvider = ({
24
17
  }: PropsWithChildren<WalletProviderProps>) => {
25
18
  const { walletConfig } = useWidgetConfig()
26
19
  const { chains } = useAvailableChains()
27
-
28
- const prevProvidersRef = useRef(providers)
29
-
30
- // Memoize providers to maintain referential stability and prevent remounts
31
- const memoizedProviders = useMemo(() => {
32
- if (
33
- prevProvidersRef.current.length === providers.length &&
34
- prevProvidersRef.current.every(
35
- (provider, index) => provider === providers[index]
36
- )
37
- ) {
38
- return prevProvidersRef.current
39
- }
40
- prevProvidersRef.current = providers
41
- return providers
42
- }, [providers])
43
-
44
- const baseContent = <WalletMenuProvider>{children}</WalletMenuProvider>
45
-
46
- return memoizedProviders.reduceRight(
47
- (acc, ProviderComponent) => (
48
- <ProviderComponent
49
- key={ProviderComponent.name}
50
- forceInternalWalletManagement={
51
- walletConfig?.forceInternalWalletManagement
52
- }
53
- chains={chains ?? []}
54
- >
55
- {acc}
56
- </ProviderComponent>
57
- ),
58
- baseContent
59
- )
60
- }
61
-
62
- const WalletMenuProvider: FC<PropsWithChildren> = ({ children }) => {
63
- const { walletConfig } = useWidgetConfig()
64
20
  const { i18n } = useTranslation()
65
- const { internalChainTypes } = useExternalWalletProvider()
21
+ const { useExternalWalletProvidersOnly, internalChainTypes } =
22
+ useExternalWalletProvider()
66
23
 
67
- // Initialize SDK client with providers wrapping the wallet menu provider
68
- useInitializeSDKProviders()
24
+ if (
25
+ !providers.length &&
26
+ !useExternalWalletProvidersOnly &&
27
+ process.env.NODE_ENV === 'development'
28
+ ) {
29
+ console.warn('No widget providers specified')
30
+ }
69
31
 
70
- const config: WalletManagementConfig = useMemo(() => {
71
- return {
32
+ const effectiveProviders = useExternalWalletProvidersOnly ? [] : providers
33
+
34
+ const walletManagementConfig = useMemo(
35
+ () => ({
72
36
  locale: i18n.resolvedLanguage as never,
73
37
  enabledChainTypes: internalChainTypes,
74
38
  walletEcosystemsOrder: walletConfig?.walletEcosystemsOrder,
75
- }
76
- }, [
77
- i18n.resolvedLanguage,
78
- internalChainTypes,
79
- walletConfig?.walletEcosystemsOrder,
80
- ])
39
+ }),
40
+ [
41
+ i18n.resolvedLanguage,
42
+ internalChainTypes,
43
+ walletConfig?.walletEcosystemsOrder,
44
+ ]
45
+ )
81
46
 
82
47
  return (
83
- <WalletManagementProvider config={config}>
84
- {children}
85
- </WalletManagementProvider>
48
+ <WalletManagementProviders
49
+ config={walletManagementConfig}
50
+ providers={effectiveProviders}
51
+ chains={chains}
52
+ forceInternalWalletManagement={
53
+ walletConfig?.forceInternalWalletManagement
54
+ }
55
+ >
56
+ <SDKProviderInitializer>{children}</SDKProviderInitializer>
57
+ </WalletManagementProviders>
86
58
  )
87
59
  }
60
+
61
+ const SDKProviderInitializer: FC<PropsWithChildren> = ({ children }) => {
62
+ useInitializeSDKProviders()
63
+ return children
64
+ }