@lifi/widget 3.27.0-beta.1 → 3.27.1

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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,28 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [3.27.1](https://github.com/lifinance/widget/compare/v3.27.0...v3.27.1) (2025-08-13)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * improve cache handling for fetched routes ([#508](https://github.com/lifinance/widget/issues/508)) ([0814365](https://github.com/lifinance/widget/commit/0814365d8be5e1e0499fb166edf0049203407aa1))
11
+ * scroll to index retry warnings ([#504](https://github.com/lifinance/widget/issues/504)) ([bc958eb](https://github.com/lifinance/widget/commit/bc958eb6f182a8b2986fe8a9dc54c14f52174d8a))
12
+
13
+ ## [3.27.0](https://github.com/lifinance/widget/compare/v3.26.1...v3.27.0) (2025-08-11)
14
+
15
+
16
+ ### Features
17
+
18
+ * add pure swap/bridge ([#491](https://github.com/lifinance/widget/issues/491)) ([d3a815b](https://github.com/lifinance/widget/commit/d3a815bc4245d4d61d9443f3c1025a042c55f24d))
19
+ * add taproot wallets, and UNS support ([#503](https://github.com/lifinance/widget/issues/503)) ([585777d](https://github.com/lifinance/widget/commit/585777df7c49dfc242b85d66c04906b69946a7a8))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * adjust tx links ([#505](https://github.com/lifinance/widget/issues/505)) ([8cfbdfa](https://github.com/lifinance/widget/commit/8cfbdfa7615e818ea6fe875084ba2d439d92f248))
25
+ * resolve drawer/modal focus traps ([#498](https://github.com/lifinance/widget/issues/498)) ([d2dda5b](https://github.com/lifinance/widget/commit/d2dda5b50702ffa2d5e3be04a5121927aade4dd1))
26
+
5
27
  ### [3.26.1](https://github.com/lifinance/widget/compare/v3.26.0...v3.26.1) (2025-08-06)
6
28
 
7
29
 
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useVirtualizer } from '@tanstack/react-virtual';
3
- import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';
3
+ import { useCallback, useEffect, useMemo, useRef } from 'react';
4
4
  import { useChainOrderStore } from '../../stores/chains/ChainOrderStore';
5
5
  import { List } from './ChainList.style';
6
6
  import { ChainListItem } from './ChainListItem';
@@ -29,7 +29,7 @@ export const VirtualizedChainList = ({ chains, onSelect, selectedChainId, itemsS
29
29
  const getItemKey = useCallback((index) => {
30
30
  return `${sortedChains[index].id}-${index}`;
31
31
  }, [sortedChains]);
32
- const { getVirtualItems, getTotalSize, measure, scrollToIndex, range } = useVirtualizer({
32
+ const { getVirtualItems, getTotalSize, measure, range, getOffsetForIndex } = useVirtualizer({
33
33
  count: sortedChains.length,
34
34
  overscan: 3,
35
35
  paddingEnd: 0,
@@ -48,7 +48,20 @@ export const VirtualizedChainList = ({ chains, onSelect, selectedChainId, itemsS
48
48
  measure();
49
49
  }
50
50
  }, [measure, scrollElementRef.current]);
51
- useLayoutEffect(() => {
51
+ const scrollToIndex = useCallback((index) => {
52
+ requestAnimationFrame(() => {
53
+ const offsetInfo = getOffsetForIndex(index, 'center');
54
+ if (!scrollElementRef.current || !offsetInfo) {
55
+ return;
56
+ }
57
+ scrollElementRef.current.scrollTo({
58
+ top: offsetInfo[0],
59
+ left: 0,
60
+ behavior: 'smooth',
61
+ });
62
+ });
63
+ }, [getOffsetForIndex, scrollElementRef.current]);
64
+ useEffect(() => {
52
65
  // Only scroll if sortedChains is not empty and we haven't scrolled yet
53
66
  if (!hasScrolledRef.current && sortedChains.length > 0 && range) {
54
67
  const selectedChainIndex = sortedChains.findIndex((chain) => chain.id === selectedChainIdRef.current);
@@ -57,12 +70,7 @@ export const VirtualizedChainList = ({ chains, onSelect, selectedChainId, itemsS
57
70
  // +1 and -1 to account for partially visible items
58
71
  if (range.startIndex + 1 > selectedChainIndex ||
59
72
  range.endIndex - 1 < selectedChainIndex) {
60
- requestAnimationFrame(() => {
61
- scrollToIndex(selectedChainIndex, {
62
- align: 'center',
63
- behavior: 'smooth',
64
- });
65
- });
73
+ scrollToIndex(selectedChainIndex);
66
74
  }
67
75
  }
68
76
  hasScrolledRef.current = true; // Mark as scrolled (when needed)
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualizedChainList.js","sourceRoot":"","sources":["../../../../src/components/Chains/VirtualizedChainList.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualizedChainList.js","sourceRoot":"","sources":["../../../../src/components/Chains/VirtualizedChainList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAW/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACnC,MAAM,EACN,QAAQ,EACR,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,gBAAgB,GACU,EAAE,EAAE;IAC9B,MAAM,kBAAkB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA,CAAC,6EAA6E;IAChI,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IACpC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG,kBAAkB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACnE,KAAK,CAAC,YAAY;QAClB,KAAK,CAAC,cAAc;KACrB,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,WAAW,CACvB,CAAC,OAAe,EAAE,EAAE;QAClB,cAAc,CAAC,OAAO,CAAC,CAAA;IACzB,CAAC,EACD,CAAC,cAAc,CAAC,CACjB,CAAA;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;YACzB,OAAO,MAAM,CAAA;QACf,CAAC;QACD,2DAA2D;QAC3D,MAAM,MAAM,GAAG,YAAY;aACxB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aAC5C,MAAM,CAAC,OAAO,CAAoB,CAAA;QACrC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7B,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAE1B,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,KAAa,EAAE,EAAE;QAChB,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,KAAK,EAAE,CAAA;IAC7C,CAAC,EACD,CAAC,YAAY,CAAC,CACf,CAAA;IAED,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,GACxE,cAAc,CAAC;QACb,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,gBAAgB,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,OAAO;QAChD,YAAY,EAAE,GAAG,EAAE;YACjB,OAAO,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACxC,CAAC;QACD,UAAU;KACX,CAAC,CAAA;IAEJ,0DAA0D;IAC1D,0DAA0D;IAC1D,qEAAqE;IACrE,+DAA+D;IAC/D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAA;QACX,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAA;IAEvC,MAAM,aAAa,GAAG,WAAW,CAC/B,CAAC,KAAa,EAAE,EAAE;QAChB,qBAAqB,CAAC,GAAG,EAAE;YACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACrD,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7C,OAAM;YACR,CAAC;YACD,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAChC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClB,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAC9C,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,uEAAuE;QACvE,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YAChE,MAAM,kBAAkB,GAAG,YAAY,CAAC,SAAS,CAC/C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,kBAAkB,CAAC,OAAO,CACnD,CAAA;YACD,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC9B,gEAAgE;gBAChE,mDAAmD;gBACnD,IACE,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,kBAAkB;oBACzC,KAAK,CAAC,QAAQ,GAAG,CAAC,GAAG,kBAAkB,EACvC,CAAC;oBACD,aAAa,CAAC,kBAAkB,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;YACD,cAAc,CAAC,OAAO,GAAG,IAAI,CAAA,CAAC,iCAAiC;QACjE,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAA;IAExC,OAAO,CACL,KAAC,IAAI,IACH,SAAS,EAAC,WAAW,EACrB,KAAK,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EACjC,cAAc,kBAEb,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC,OAAO,CACL,KAAC,aAAa,IAEZ,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,eAAe,EACtC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EACzC,KAAK,EAAE,KAAK,IATP,IAAI,CAAC,GAAG,CAUb,CACH,CAAA;QACH,CAAC,CAAC,GACG,CACR,CAAA;AACH,CAAC,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import type { ExtendedChain, Route } from '@lifi/sdk';
2
2
  interface RoutesContentProps {
3
- routes: Route[];
3
+ routes?: Route[];
4
4
  isFetching: boolean;
5
5
  isLoading: boolean;
6
6
  dataUpdatedAt: number;
@@ -14,13 +14,17 @@ export const RoutesExpanded = memo(function RoutesExpanded({ canOpen, setOpenExp
14
14
  const routesRef = useRef(undefined);
15
15
  const routesActiveRef = useRef(false);
16
16
  const { routes, isLoading, isFetching, isFetched, dataUpdatedAt, refetchTime, fromChain, refetch, setReviewableRoute, } = useRoutes();
17
- const onExit = () => {
17
+ const onExit = useCallback(() => {
18
18
  // Clean routes cache on exit
19
19
  routesRef.current = undefined;
20
- };
20
+ }, []);
21
21
  // We cache routes results in ref for a better exit animation
22
22
  if (routesRef.current && !routes) {
23
23
  routesActiveRef.current = false;
24
+ // If we are loading routes with a new queryKey, we need to clear the cache
25
+ if (isLoading) {
26
+ routesRef.current = undefined;
27
+ }
24
28
  }
25
29
  else {
26
30
  routesRef.current = routes;
@@ -43,6 +47,6 @@ export const RoutesExpanded = memo(function RoutesExpanded({ canOpen, setOpenExp
43
47
  useEffect(() => {
44
48
  emitter.emit(WidgetEvent.WidgetExpanded, expanded);
45
49
  }, [emitter, expanded]);
46
- return (_jsx(ExpansionTransition, { in: expanded, width: routesExpansionWidth, onExited: onExit, children: _jsx(RoutesContent, { routes: routesRef.current || [], isFetching: isFetching, isLoading: isLoading, dataUpdatedAt: dataUpdatedAt, refetchTime: refetchTime, fromChain: fromChain, refetch: refetch, onRouteClick: onRouteClick }) }));
50
+ return (_jsx(ExpansionTransition, { in: expanded, width: routesExpansionWidth, onExited: onExit, children: _jsx(RoutesContent, { routes: routesRef.current, isFetching: isFetching, isLoading: isLoading, dataUpdatedAt: dataUpdatedAt, refetchTime: refetchTime, fromChain: fromChain, refetch: refetch, onRouteClick: onRouteClick }) }));
47
51
  });
48
52
  //# sourceMappingURL=RoutesExpanded.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RoutesExpanded.js","sourceRoot":"","sources":["../../../../src/components/Routes/RoutesExpanded.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RoutesExpanded.js","sourceRoot":"","sources":["../../../../src/components/Routes/RoutesExpanded.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "3.27.0-beta.1";
2
+ export declare const version = "3.27.1";
@@ -1,3 +1,3 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '3.27.0-beta.1';
2
+ export const version = '3.27.1';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAA;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/config/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,IAAI,GAAG,cAAc,CAAA;AAClC,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.27.0-beta.1",
3
+ "version": "3.27.1",
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,16 +34,16 @@
34
34
  "@bigmi/core": "^0.4.3",
35
35
  "@emotion/react": "^11.14.0",
36
36
  "@emotion/styled": "^11.14.1",
37
- "@lifi/sdk": "^3.9.1-beta.0",
37
+ "@lifi/sdk": "^3.9.2",
38
38
  "@mui/icons-material": "^7.3.1",
39
39
  "@mui/material": "^7.3.1",
40
40
  "@mui/system": "^7.3.1",
41
- "@mysten/sui": "^1.37.1",
41
+ "@mysten/sui": "^1.37.2",
42
42
  "@solana/wallet-adapter-base": "^0.9.27",
43
43
  "@solana/wallet-adapter-coinbase": "^0.1.23",
44
44
  "@solana/web3.js": "^1.98.4",
45
45
  "@tanstack/react-virtual": "^3.13.12",
46
- "i18next": "^25.3.0",
46
+ "i18next": "^25.3.4",
47
47
  "microdiff": "^1.5.0",
48
48
  "mitt": "^3.0.1",
49
49
  "react-i18next": "^15.6.1",
@@ -52,11 +52,11 @@
52
52
  "react-transition-group": "^4.4.5",
53
53
  "viem": "^2.33.3",
54
54
  "zustand": "^5.0.7",
55
- "@lifi/wallet-management": "^3.14.2-beta.0"
55
+ "@lifi/wallet-management": "^3.14.3"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@bigmi/react": ">=0.4.0",
59
- "@mysten/dapp-kit": ">=0.16.0",
59
+ "@mysten/dapp-kit": ">=0.17.0",
60
60
  "@solana/wallet-adapter-react": ">=0.15.35",
61
61
  "@tanstack/react-query": ">=5.68.0",
62
62
  "react": ">=18",
package/package.json.tmp CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.27.0-beta.1",
3
+ "version": "3.27.1",
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": "./src/index.ts",
@@ -53,17 +53,17 @@
53
53
  "@bigmi/core": "^0.4.3",
54
54
  "@emotion/react": "^11.14.0",
55
55
  "@emotion/styled": "^11.14.1",
56
- "@lifi/sdk": "^3.9.1-beta.0",
56
+ "@lifi/sdk": "^3.9.2",
57
57
  "@lifi/wallet-management": "workspace:^",
58
58
  "@mui/icons-material": "^7.3.1",
59
59
  "@mui/material": "^7.3.1",
60
60
  "@mui/system": "^7.3.1",
61
- "@mysten/sui": "^1.37.1",
61
+ "@mysten/sui": "^1.37.2",
62
62
  "@solana/wallet-adapter-base": "^0.9.27",
63
63
  "@solana/wallet-adapter-coinbase": "^0.1.23",
64
64
  "@solana/web3.js": "^1.98.4",
65
65
  "@tanstack/react-virtual": "^3.13.12",
66
- "i18next": "^25.3.0",
66
+ "i18next": "^25.3.4",
67
67
  "microdiff": "^1.5.0",
68
68
  "mitt": "^3.0.1",
69
69
  "react-i18next": "^15.6.1",
@@ -75,7 +75,7 @@
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/react-transition-group": "^4.4.12",
78
- "cpy-cli": "^5.0.0",
78
+ "cpy-cli": "^6.0.0",
79
79
  "madge": "^8.0.0",
80
80
  "react": "^19.1.1",
81
81
  "react-dom": "^19.1.1",
@@ -84,7 +84,7 @@
84
84
  },
85
85
  "peerDependencies": {
86
86
  "@bigmi/react": ">=0.4.0",
87
- "@mysten/dapp-kit": ">=0.16.0",
87
+ "@mysten/dapp-kit": ">=0.17.0",
88
88
  "@solana/wallet-adapter-react": ">=0.15.35",
89
89
  "@tanstack/react-query": ">=5.68.0",
90
90
  "react": ">=18",
@@ -1,7 +1,7 @@
1
1
  import type { ExtendedChain } from '@lifi/sdk'
2
2
  import { useVirtualizer } from '@tanstack/react-virtual'
3
3
  import type { RefObject } from 'react'
4
- import { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react'
4
+ import { useCallback, useEffect, useMemo, useRef } from 'react'
5
5
  import { useChainOrderStore } from '../../stores/chains/ChainOrderStore'
6
6
  import { List } from './ChainList.style'
7
7
  import { ChainListItem } from './ChainListItem'
@@ -56,7 +56,7 @@ export const VirtualizedChainList = ({
56
56
  [sortedChains]
57
57
  )
58
58
 
59
- const { getVirtualItems, getTotalSize, measure, scrollToIndex, range } =
59
+ const { getVirtualItems, getTotalSize, measure, range, getOffsetForIndex } =
60
60
  useVirtualizer({
61
61
  count: sortedChains.length,
62
62
  overscan: 3,
@@ -78,7 +78,24 @@ export const VirtualizedChainList = ({
78
78
  }
79
79
  }, [measure, scrollElementRef.current])
80
80
 
81
- useLayoutEffect(() => {
81
+ const scrollToIndex = useCallback(
82
+ (index: number) => {
83
+ requestAnimationFrame(() => {
84
+ const offsetInfo = getOffsetForIndex(index, 'center')
85
+ if (!scrollElementRef.current || !offsetInfo) {
86
+ return
87
+ }
88
+ scrollElementRef.current.scrollTo({
89
+ top: offsetInfo[0],
90
+ left: 0,
91
+ behavior: 'smooth',
92
+ })
93
+ })
94
+ },
95
+ [getOffsetForIndex, scrollElementRef.current]
96
+ )
97
+
98
+ useEffect(() => {
82
99
  // Only scroll if sortedChains is not empty and we haven't scrolled yet
83
100
  if (!hasScrolledRef.current && sortedChains.length > 0 && range) {
84
101
  const selectedChainIndex = sortedChains.findIndex(
@@ -91,12 +108,7 @@ export const VirtualizedChainList = ({
91
108
  range.startIndex + 1 > selectedChainIndex ||
92
109
  range.endIndex - 1 < selectedChainIndex
93
110
  ) {
94
- requestAnimationFrame(() => {
95
- scrollToIndex(selectedChainIndex, {
96
- align: 'center',
97
- behavior: 'smooth',
98
- })
99
- })
111
+ scrollToIndex(selectedChainIndex)
100
112
  }
101
113
  }
102
114
  hasScrolledRef.current = true // Mark as scrolled (when needed)
@@ -14,7 +14,7 @@ import { RouteNotFoundCard } from '../RouteCard/RouteNotFoundCard.js'
14
14
  import { Container, Header } from './RoutesExpanded.style.js'
15
15
 
16
16
  interface RoutesContentProps {
17
- routes: Route[]
17
+ routes?: Route[]
18
18
  isFetching: boolean
19
19
  isLoading: boolean
20
20
  dataUpdatedAt: number
@@ -35,14 +35,18 @@ export const RoutesExpanded = memo(function RoutesExpanded({
35
35
  setReviewableRoute,
36
36
  } = useRoutes()
37
37
 
38
- const onExit = () => {
38
+ const onExit = useCallback(() => {
39
39
  // Clean routes cache on exit
40
40
  routesRef.current = undefined
41
- }
41
+ }, [])
42
42
 
43
43
  // We cache routes results in ref for a better exit animation
44
44
  if (routesRef.current && !routes) {
45
45
  routesActiveRef.current = false
46
+ // If we are loading routes with a new queryKey, we need to clear the cache
47
+ if (isLoading) {
48
+ routesRef.current = undefined
49
+ }
46
50
  } else {
47
51
  routesRef.current = routes
48
52
  routesActiveRef.current = Boolean(routes)
@@ -80,7 +84,7 @@ export const RoutesExpanded = memo(function RoutesExpanded({
80
84
  onExited={onExit}
81
85
  >
82
86
  <RoutesContent
83
- routes={routesRef.current || []}
87
+ routes={routesRef.current}
84
88
  isFetching={isFetching}
85
89
  isLoading={isLoading}
86
90
  dataUpdatedAt={dataUpdatedAt}
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '3.27.0-beta.1'
2
+ export const version = '3.27.1'