@lifi/widget 3.20.5 → 3.21.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 +15 -0
- package/dist/esm/App.d.ts +1 -1
- package/dist/esm/components/Card/Card.js +1 -0
- package/dist/esm/components/Card/Card.js.map +1 -1
- package/dist/esm/components/Card/CardIconButton.d.ts +1 -1
- package/dist/esm/components/Tabs/Tabs.style.d.ts +1 -1
- package/dist/esm/components/TokenList/TokenList.style.d.ts +2 -2
- package/dist/esm/components/TokenList/TokenListItem.js +2 -2
- package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/hooks/useAvailableChains.js +6 -1
- package/dist/esm/hooks/useAvailableChains.js.map +1 -1
- package/dist/esm/hooks/useDebouncedWatch.d.ts +1 -1
- package/dist/esm/hooks/useExplorer.d.ts +1 -0
- package/dist/esm/hooks/useExplorer.js +11 -1
- package/dist/esm/hooks/useExplorer.js.map +1 -1
- package/dist/esm/hooks/useIsContractAddress.d.ts +1 -1
- package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
- package/dist/esm/hooks/useTokens.js +8 -1
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/hooks/useWidgetEvents.d.ts +3 -3
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js +6 -2
- package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SDKProviders.js +16 -2
- package/dist/esm/providers/WalletProvider/SDKProviders.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SVMBaseProvider.js +2 -1
- package/dist/esm/providers/WalletProvider/SVMBaseProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/SuiBaseProvider.d.ts +2 -0
- package/dist/esm/providers/WalletProvider/SuiBaseProvider.js +22 -0
- package/dist/esm/providers/WalletProvider/SuiBaseProvider.js.map +1 -0
- package/dist/esm/providers/WalletProvider/SuiExternalContext.d.ts +1 -0
- package/dist/esm/providers/WalletProvider/SuiExternalContext.js +3 -0
- package/dist/esm/providers/WalletProvider/SuiExternalContext.js.map +1 -0
- package/dist/esm/providers/WalletProvider/SuiProvider.d.ts +3 -0
- package/dist/esm/providers/WalletProvider/SuiProvider.js +18 -0
- package/dist/esm/providers/WalletProvider/SuiProvider.js.map +1 -0
- package/dist/esm/providers/WalletProvider/UTXOBaseProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js +2 -1
- package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js +16 -2
- package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
- package/dist/esm/providers/WidgetProvider/WidgetProvider.js +1 -1
- package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
- package/dist/esm/providers/WidgetProvider/utils.d.ts +1 -1
- package/dist/esm/utils/chainType.js +2 -1
- package/dist/esm/utils/chainType.js.map +1 -1
- package/package.json +14 -11
- package/package.json.tmp +14 -11
- package/src/components/Card/Card.tsx +1 -0
- package/src/components/TokenList/TokenListItem.tsx +2 -2
- package/src/config/version.ts +1 -1
- package/src/hooks/useAvailableChains.ts +6 -1
- package/src/hooks/useExplorer.ts +13 -2
- package/src/hooks/useIsContractAddress.ts +6 -1
- package/src/hooks/useTokens.ts +8 -1
- package/src/pages/TransactionPage/StartTransactionButton.tsx +7 -2
- package/src/providers/WalletProvider/SDKProviders.tsx +20 -2
- package/src/providers/WalletProvider/SVMBaseProvider.tsx +2 -1
- package/src/providers/WalletProvider/SuiBaseProvider.tsx +37 -0
- package/src/providers/WalletProvider/SuiExternalContext.ts +3 -0
- package/src/providers/WalletProvider/SuiProvider.tsx +26 -0
- package/src/providers/WalletProvider/UTXOBaseProvider.tsx +8 -4
- package/src/providers/WalletProvider/WalletProvider.tsx +5 -2
- package/src/providers/WalletProvider/useExternalWalletProvider.ts +16 -3
- package/src/providers/WidgetProvider/WidgetProvider.tsx +1 -1
- package/src/utils/chainType.ts +2 -1
- package/tsconfig.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetProvider.js","sourceRoot":"","sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAGhF,MAAM,cAAc,GAAuB;IACzC,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,aAAa,GAAG,aAAa,CAAqB,cAAc,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAuB,EAAE,CACtD,UAAU,CAAC,aAAa,CAAC,CAAA;AAE3B,IAAI,cAAc,GAAG,KAAK,CAAA;AAE1B,MAAM,CAAC,MAAM,cAAc,GAEvB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;IACzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;IACzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAuB,EAAE;QAC7C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,KAAK,GAAG;gBACZ,GAAG,YAAY;gBACf,SAAS;aACY,CAAA;YAEvB,iDAAiD;YACjD,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAEzB,gBAAgB;YAChB,MAAM,OAAO,GAAc;gBACzB,GAAG,YAAY,CAAC,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;gBAChE,YAAY,EAAE;oBACZ,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG;oBACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,aAAa;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,GAAG,YAAY,CAAC,SAAS,EAAE,YAAY;iBACxC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,aAAa,EAAE,OAAO;gBACtB,
|
|
1
|
+
{"version":3,"file":"WidgetProvider.js","sourceRoot":"","sources":["../../../../src/providers/WidgetProvider/WidgetProvider.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAGhF,MAAM,cAAc,GAAuB;IACzC,SAAS,EAAE,EAAE;IACb,UAAU,EAAE,EAAE;CACf,CAAA;AAED,MAAM,aAAa,GAAG,aAAa,CAAqB,cAAc,CAAC,CAAA;AAEvE,MAAM,CAAC,MAAM,eAAe,GAAG,GAAuB,EAAE,CACtD,UAAU,CAAC,aAAa,CAAC,CAAA;AAE3B,IAAI,cAAc,GAAG,KAAK,CAAA;AAE1B,MAAM,CAAC,MAAM,cAAc,GAEvB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE;IACzC,MAAM,SAAS,GAAG,KAAK,EAAE,CAAA;IACzB,MAAM,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,EAAE,CAAA;IAEnD,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,GAAuB,EAAE;QAC7C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,KAAK,GAAG;gBACZ,GAAG,YAAY;gBACf,SAAS;aACY,CAAA;YAEvB,iDAAiD;YACjD,kBAAkB,CAAC,KAAK,CAAC,CAAA;YAEzB,gBAAgB;YAChB,MAAM,OAAO,GAAc;gBACzB,GAAG,YAAY,CAAC,SAAS;gBACzB,MAAM,EAAE,YAAY,CAAC,MAAM;gBAC3B,UAAU,EAAE,YAAY,CAAC,UAAU,IAAI,MAAM,EAAE,QAAQ,CAAC,QAAQ;gBAChE,YAAY,EAAE;oBACZ,GAAG,EAAE,YAAY,CAAC,SAAS,EAAE,GAAG,IAAI,YAAY,CAAC,GAAG;oBACpD,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,KAAK,EAAE,YAAY,CAAC,aAAa;oBACjC,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,GAAG,YAAY,CAAC,SAAS,EAAE,YAAY;iBACxC;gBACD,mBAAmB,EAAE,IAAI;gBACzB,aAAa,EAAE,OAAO;gBACtB,aAAa,EAAE,KAAK;gBACpB,eAAe;aAChB,CAAA;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,YAAY,CAAC,OAAO,CAAC,CAAA;gBACrB,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;YACrB,CAAC;YAED,OAAO,KAAK,CAAA;QACd,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACf,OAAO;gBACL,GAAG,YAAY;gBACf,SAAS;gBACT,UAAU,EAAE,YAAY,CAAC,UAAU;aACpC,CAAA;QACH,CAAC;IACH,CAAC,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAA;IACjD,OAAO,CACL,KAAC,aAAa,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAA0B,CAC1E,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WidgetConfig } from '../../types/widget.js';
|
|
2
|
-
export declare const attemptToFindMatchingToAddressInConfig: (address: string, config: WidgetConfig) => import("../../
|
|
2
|
+
export declare const attemptToFindMatchingToAddressInConfig: (address: string, config: WidgetConfig) => import("../../index.js").ToAddress | {
|
|
3
3
|
address: string;
|
|
4
4
|
chainType: import("@lifi/sdk").ChainType | undefined;
|
|
5
5
|
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { isUTXOAddress } from '@bigmi/core';
|
|
2
2
|
import { ChainId, ChainType, isSVMAddress } from '@lifi/sdk';
|
|
3
|
+
import { isValidSuiAddress } from '@mysten/sui/utils';
|
|
3
4
|
import { isAddress as isEVMAddress } from 'viem';
|
|
4
5
|
const chainTypeAddressValidation = {
|
|
5
6
|
[ChainType.EVM]: isEVMAddress,
|
|
6
7
|
[ChainType.SVM]: isSVMAddress,
|
|
8
|
+
[ChainType.MVM]: isValidSuiAddress,
|
|
7
9
|
[ChainType.UTXO]: isUTXOAddress,
|
|
8
|
-
[ChainType.MVM]: () => false,
|
|
9
10
|
};
|
|
10
11
|
export const getChainTypeFromAddress = (address) => {
|
|
11
12
|
for (const chainType in chainTypeAddressValidation) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chainType.js","sourceRoot":"","sources":["../../../src/utils/chainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,MAAM,CAAA;AAEhD,MAAM,0BAA0B,GAAG;IACjC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"chainType.js","sourceRoot":"","sources":["../../../src/utils/chainType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,MAAM,CAAA;AAEhD,MAAM,0BAA0B,GAAG;IACjC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,YAAY;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,iBAAiB;IAClC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa;CAChC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACrC,OAAe,EACQ,EAAE;IACzB,KAAK,MAAM,SAAS,IAAI,0BAA0B,EAAE,CAAC;QACnD,MAAM,WAAW,GACf,0BAA0B,CAAC,SAAsB,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7D,IAAI,WAAW,EAAE,CAAC;YAChB,OAAO,SAAsB,CAAA;QAC/B,CAAC;IACH,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5B,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG;IAC7B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG;CAC7B,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.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",
|
|
@@ -30,29 +30,32 @@
|
|
|
30
30
|
"lifi"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@bigmi/client": "^0.
|
|
34
|
-
"@bigmi/core": "^0.
|
|
33
|
+
"@bigmi/client": "^0.2.1",
|
|
34
|
+
"@bigmi/core": "^0.2.1",
|
|
35
35
|
"@emotion/react": "^11.14.0",
|
|
36
36
|
"@emotion/styled": "^11.14.0",
|
|
37
|
-
"@lifi/sdk": "^3.
|
|
37
|
+
"@lifi/sdk": "^3.7.1",
|
|
38
38
|
"@mui/icons-material": "^7.1.0",
|
|
39
39
|
"@mui/material": "^7.1.0",
|
|
40
40
|
"@mui/system": "^7.1.0",
|
|
41
|
-
"@
|
|
42
|
-
"@solana/
|
|
43
|
-
"@
|
|
44
|
-
"
|
|
41
|
+
"@mysten/sui": "^1.29.1",
|
|
42
|
+
"@solana/wallet-adapter-base": "^0.9.26",
|
|
43
|
+
"@solana/wallet-adapter-coinbase": "^0.1.22",
|
|
44
|
+
"@solana/web3.js": "^1.98.2",
|
|
45
|
+
"@tanstack/react-virtual": "^3.13.9",
|
|
46
|
+
"i18next": "^25.2.0",
|
|
45
47
|
"microdiff": "^1.5.0",
|
|
46
48
|
"mitt": "^3.0.1",
|
|
47
49
|
"react-i18next": "^15.5.1",
|
|
48
50
|
"react-intersection-observer": "^9.16.0",
|
|
49
51
|
"react-router-dom": "^6.30.0",
|
|
50
|
-
"viem": "^2.
|
|
52
|
+
"viem": "^2.30.0",
|
|
51
53
|
"zustand": "^5.0.4",
|
|
52
|
-
"@lifi/wallet-management": "^3.
|
|
54
|
+
"@lifi/wallet-management": "^3.9.1"
|
|
53
55
|
},
|
|
54
56
|
"peerDependencies": {
|
|
55
|
-
"@bigmi/react": ">=0.1
|
|
57
|
+
"@bigmi/react": ">=0.2.1",
|
|
58
|
+
"@mysten/dapp-kit": ">=0.16.0",
|
|
56
59
|
"@solana/wallet-adapter-react": ">=0.15.35",
|
|
57
60
|
"@tanstack/react-query": ">=5.68.0",
|
|
58
61
|
"react": ">=18",
|
package/package.json.tmp
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.21.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",
|
|
@@ -49,25 +49,27 @@
|
|
|
49
49
|
"lifi"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@bigmi/client": "^0.
|
|
53
|
-
"@bigmi/core": "^0.
|
|
52
|
+
"@bigmi/client": "^0.2.1",
|
|
53
|
+
"@bigmi/core": "^0.2.1",
|
|
54
54
|
"@emotion/react": "^11.14.0",
|
|
55
55
|
"@emotion/styled": "^11.14.0",
|
|
56
|
-
"@lifi/sdk": "^3.
|
|
56
|
+
"@lifi/sdk": "^3.7.1",
|
|
57
57
|
"@lifi/wallet-management": "workspace:^",
|
|
58
58
|
"@mui/icons-material": "^7.1.0",
|
|
59
59
|
"@mui/material": "^7.1.0",
|
|
60
60
|
"@mui/system": "^7.1.0",
|
|
61
|
-
"@
|
|
62
|
-
"@solana/
|
|
63
|
-
"@
|
|
64
|
-
"
|
|
61
|
+
"@mysten/sui": "^1.29.1",
|
|
62
|
+
"@solana/wallet-adapter-base": "^0.9.26",
|
|
63
|
+
"@solana/wallet-adapter-coinbase": "^0.1.22",
|
|
64
|
+
"@solana/web3.js": "^1.98.2",
|
|
65
|
+
"@tanstack/react-virtual": "^3.13.9",
|
|
66
|
+
"i18next": "^25.2.0",
|
|
65
67
|
"microdiff": "^1.5.0",
|
|
66
68
|
"mitt": "^3.0.1",
|
|
67
69
|
"react-i18next": "^15.5.1",
|
|
68
70
|
"react-intersection-observer": "^9.16.0",
|
|
69
71
|
"react-router-dom": "^6.30.0",
|
|
70
|
-
"viem": "^2.
|
|
72
|
+
"viem": "^2.30.0",
|
|
71
73
|
"zustand": "^5.0.4"
|
|
72
74
|
},
|
|
73
75
|
"devDependencies": {
|
|
@@ -76,10 +78,11 @@
|
|
|
76
78
|
"react": "^19.1.0",
|
|
77
79
|
"react-dom": "^19.1.0",
|
|
78
80
|
"typescript": "^5.8.3",
|
|
79
|
-
"vitest": "^3.1.
|
|
81
|
+
"vitest": "^3.1.4"
|
|
80
82
|
},
|
|
81
83
|
"peerDependencies": {
|
|
82
|
-
"@bigmi/react": ">=0.1
|
|
84
|
+
"@bigmi/react": ">=0.2.1",
|
|
85
|
+
"@mysten/dapp-kit": ">=0.16.0",
|
|
83
86
|
"@solana/wallet-adapter-react": ">=0.15.35",
|
|
84
87
|
"@tanstack/react-query": ">=5.68.0",
|
|
85
88
|
"react": ">=18",
|
|
@@ -85,7 +85,7 @@ export const TokenListItemButton: React.FC<TokenListItemButtonProps> = ({
|
|
|
85
85
|
isBalanceLoading,
|
|
86
86
|
}) => {
|
|
87
87
|
const { t } = useTranslation()
|
|
88
|
-
const {
|
|
88
|
+
const { getTokenAddressLink } = useExplorer()
|
|
89
89
|
|
|
90
90
|
const container = useRef(null)
|
|
91
91
|
const timeoutId = useRef<ReturnType<typeof setTimeout>>(undefined)
|
|
@@ -184,7 +184,7 @@ export const TokenListItemButton: React.FC<TokenListItemButtonProps> = ({
|
|
|
184
184
|
<IconButton
|
|
185
185
|
size="small"
|
|
186
186
|
LinkComponent={Link}
|
|
187
|
-
href={
|
|
187
|
+
href={getTokenAddressLink(tokenAddress!, chain)}
|
|
188
188
|
target="_blank"
|
|
189
189
|
rel="nofollow noreferrer"
|
|
190
190
|
onClick={(e) => e.stopPropagation()}
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/widget'
|
|
2
|
-
export const version = '3.
|
|
2
|
+
export const version = '3.21.1'
|
|
@@ -10,7 +10,12 @@ export type GetChainById = (
|
|
|
10
10
|
chains?: ExtendedChain[]
|
|
11
11
|
) => ExtendedChain | undefined
|
|
12
12
|
|
|
13
|
-
const supportedChainTypes = [
|
|
13
|
+
const supportedChainTypes = [
|
|
14
|
+
ChainType.EVM,
|
|
15
|
+
ChainType.SVM,
|
|
16
|
+
ChainType.UTXO,
|
|
17
|
+
ChainType.MVM,
|
|
18
|
+
]
|
|
14
19
|
|
|
15
20
|
export const useAvailableChains = (chainTypes?: ChainType[]) => {
|
|
16
21
|
const { chains } = useWidgetConfig()
|
package/src/hooks/useExplorer.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { Chain } from '@lifi/sdk'
|
|
1
|
+
import type { Chain, EVMChain } from '@lifi/sdk'
|
|
2
|
+
import { ChainId } from '@lifi/sdk'
|
|
2
3
|
import { lifiExplorerUrl } from '../config/constants.js'
|
|
3
4
|
import { useAvailableChains } from '../hooks/useAvailableChains.js'
|
|
4
5
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
@@ -46,7 +47,8 @@ export const useExplorer = () => {
|
|
|
46
47
|
return `${baseUrl}/tx/${txHash}`
|
|
47
48
|
}
|
|
48
49
|
const resolvedChain = resolveChain(chain)
|
|
49
|
-
|
|
50
|
+
const txPathSegment = resolvedChain?.id === ChainId.SUI ? 'txblock' : 'tx'
|
|
51
|
+
return `${resolvedChain ? getBaseUrl(resolvedChain) : lifiExplorerUrl}/${txPathSegment}/${txHash}`
|
|
50
52
|
}
|
|
51
53
|
|
|
52
54
|
const getAddressLink = (address: string, chain?: Chain | number) => {
|
|
@@ -61,8 +63,17 @@ export const useExplorer = () => {
|
|
|
61
63
|
return `${resolvedChain ? getBaseUrl(resolvedChain) : lifiExplorerUrl}/address/${address}`
|
|
62
64
|
}
|
|
63
65
|
|
|
66
|
+
const getTokenAddressLink = (address: string, chain?: Chain | number) => {
|
|
67
|
+
const link = getAddressLink(address, chain)
|
|
68
|
+
if (chain === ChainId.SUI || (chain as EVMChain)?.id === ChainId.SUI) {
|
|
69
|
+
return link.replace('address', 'coin')
|
|
70
|
+
}
|
|
71
|
+
return link
|
|
72
|
+
}
|
|
73
|
+
|
|
64
74
|
return {
|
|
65
75
|
getTransactionLink,
|
|
66
76
|
getAddressLink,
|
|
77
|
+
getTokenAddressLink,
|
|
67
78
|
}
|
|
68
79
|
}
|
|
@@ -6,7 +6,12 @@ export const useIsContractAddress = (
|
|
|
6
6
|
address?: string,
|
|
7
7
|
chainId?: number,
|
|
8
8
|
chainType?: ChainType
|
|
9
|
-
)
|
|
9
|
+
): {
|
|
10
|
+
isContractAddress: boolean
|
|
11
|
+
contractCode?: string
|
|
12
|
+
isLoading: boolean
|
|
13
|
+
isFetched: boolean
|
|
14
|
+
} => {
|
|
10
15
|
const {
|
|
11
16
|
data: contractCode,
|
|
12
17
|
isLoading,
|
package/src/hooks/useTokens.ts
CHANGED
|
@@ -10,7 +10,14 @@ export const useTokens = (selectedChainId?: number) => {
|
|
|
10
10
|
const { data, isLoading } = useQuery({
|
|
11
11
|
queryKey: ['tokens'],
|
|
12
12
|
queryFn: () =>
|
|
13
|
-
getTokens({
|
|
13
|
+
getTokens({
|
|
14
|
+
chainTypes: [
|
|
15
|
+
ChainType.EVM,
|
|
16
|
+
ChainType.SVM,
|
|
17
|
+
ChainType.UTXO,
|
|
18
|
+
ChainType.MVM,
|
|
19
|
+
],
|
|
20
|
+
}),
|
|
14
21
|
refetchInterval: 3_600_000,
|
|
15
22
|
staleTime: 3_600_000,
|
|
16
23
|
})
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useMemo } from 'react'
|
|
1
2
|
import { BaseTransactionButton } from '../../components/BaseTransactionButton/BaseTransactionButton.js'
|
|
2
3
|
import { useMessageQueue } from '../../components/Messages/useMessageQueue.js'
|
|
3
4
|
import type { StartTransactionButtonProps } from './types.js'
|
|
@@ -8,13 +9,17 @@ export const StartTransactionButton: React.FC<StartTransactionButtonProps> = ({
|
|
|
8
9
|
text,
|
|
9
10
|
loading,
|
|
10
11
|
}) => {
|
|
11
|
-
const {
|
|
12
|
+
const { messages, isLoading } = useMessageQueue(route, true)
|
|
13
|
+
|
|
14
|
+
const hasNonGasMessages = useMemo(() => {
|
|
15
|
+
return messages.some((message) => message.id !== 'INSUFFICIENT_GAS')
|
|
16
|
+
}, [messages])
|
|
12
17
|
|
|
13
18
|
return (
|
|
14
19
|
<BaseTransactionButton
|
|
15
20
|
onClick={onClick}
|
|
16
21
|
text={text}
|
|
17
|
-
disabled={
|
|
22
|
+
disabled={hasNonGasMessages}
|
|
18
23
|
loading={isLoading || loading}
|
|
19
24
|
/>
|
|
20
25
|
)
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { getConnectorClient as getBigmiConnectorClient } from '@bigmi/client'
|
|
2
2
|
import { useConfig as useBigmiConfig } from '@bigmi/react'
|
|
3
3
|
import type { SDKProvider } from '@lifi/sdk'
|
|
4
|
-
import { ChainType, EVM, Solana, UTXO, config } from '@lifi/sdk'
|
|
4
|
+
import { ChainType, EVM, Solana, Sui, UTXO, config } from '@lifi/sdk'
|
|
5
|
+
import { useCurrentWallet } from '@mysten/dapp-kit'
|
|
5
6
|
import type { SignerWalletAdapter } from '@solana/wallet-adapter-base'
|
|
6
7
|
import { useWallet } from '@solana/wallet-adapter-react'
|
|
7
8
|
import { useEffect } from 'react'
|
|
@@ -17,6 +18,7 @@ export const SDKProviders = () => {
|
|
|
17
18
|
const { wallet } = useWallet()
|
|
18
19
|
const wagmiConfig = useWagmiConfig()
|
|
19
20
|
const bigmiConfig = useBigmiConfig()
|
|
21
|
+
const { currentWallet } = useCurrentWallet()
|
|
20
22
|
|
|
21
23
|
useEffect(() => {
|
|
22
24
|
// Configure SDK Providers
|
|
@@ -30,6 +32,9 @@ export const SDKProviders = () => {
|
|
|
30
32
|
const hasConfiguredUTXOProvider = sdkConfig?.providers?.some(
|
|
31
33
|
(provider) => provider.type === ChainType.UTXO
|
|
32
34
|
)
|
|
35
|
+
const hasConfiguredSuiProvider = sdkConfig?.providers?.some(
|
|
36
|
+
(provider) => provider.type === ChainType.MVM
|
|
37
|
+
)
|
|
33
38
|
if (!hasConfiguredEVMProvider) {
|
|
34
39
|
providers.push(
|
|
35
40
|
EVM({
|
|
@@ -57,11 +62,24 @@ export const SDKProviders = () => {
|
|
|
57
62
|
})
|
|
58
63
|
)
|
|
59
64
|
}
|
|
65
|
+
if (!hasConfiguredSuiProvider) {
|
|
66
|
+
providers.push(
|
|
67
|
+
Sui({
|
|
68
|
+
getWallet: async () => currentWallet!,
|
|
69
|
+
})
|
|
70
|
+
)
|
|
71
|
+
}
|
|
60
72
|
if (sdkConfig?.providers?.length) {
|
|
61
73
|
providers.push(...sdkConfig.providers)
|
|
62
74
|
}
|
|
63
75
|
config.setProviders(providers)
|
|
64
|
-
}, [
|
|
76
|
+
}, [
|
|
77
|
+
bigmiConfig,
|
|
78
|
+
currentWallet,
|
|
79
|
+
sdkConfig?.providers,
|
|
80
|
+
wagmiConfig,
|
|
81
|
+
wallet?.adapter,
|
|
82
|
+
])
|
|
65
83
|
|
|
66
84
|
return null
|
|
67
85
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Adapter } from '@solana/wallet-adapter-base'
|
|
2
2
|
import { WalletAdapterNetwork } from '@solana/wallet-adapter-base'
|
|
3
|
+
import { CoinbaseWalletAdapter } from '@solana/wallet-adapter-coinbase'
|
|
3
4
|
import {
|
|
4
5
|
ConnectionProvider,
|
|
5
6
|
WalletProvider,
|
|
@@ -20,7 +21,7 @@ const endpoint = clusterApiUrl(WalletAdapterNetwork.Mainnet)
|
|
|
20
21
|
* instantiate its legacy wallet adapter here. Common legacy adapters can be found
|
|
21
22
|
* in the npm package `@solana/wallet-adapter-wallets`.
|
|
22
23
|
*/
|
|
23
|
-
const wallets: Adapter[] = []
|
|
24
|
+
const wallets: Adapter[] = [new CoinbaseWalletAdapter()]
|
|
24
25
|
|
|
25
26
|
export const SVMBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
26
27
|
return (
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChainId } from '@lifi/sdk'
|
|
2
|
+
import {
|
|
3
|
+
SuiClientProvider,
|
|
4
|
+
WalletProvider,
|
|
5
|
+
createNetworkConfig,
|
|
6
|
+
} from '@mysten/dapp-kit'
|
|
7
|
+
import { getFullnodeUrl } from '@mysten/sui/client'
|
|
8
|
+
import { type FC, type PropsWithChildren, useMemo } from 'react'
|
|
9
|
+
import { useAvailableChains } from '../../hooks/useAvailableChains.js'
|
|
10
|
+
|
|
11
|
+
export const SuiBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
12
|
+
const { chains } = useAvailableChains()
|
|
13
|
+
|
|
14
|
+
const config = useMemo(() => {
|
|
15
|
+
const sui = chains?.find((chain) => chain.id === ChainId.SUI)
|
|
16
|
+
if (sui) {
|
|
17
|
+
return createNetworkConfig({
|
|
18
|
+
mainnet: { url: sui.metamask?.rpcUrls[0] ?? getFullnodeUrl('mainnet') },
|
|
19
|
+
})
|
|
20
|
+
}
|
|
21
|
+
}, [chains])
|
|
22
|
+
|
|
23
|
+
if (!config?.networkConfig) {
|
|
24
|
+
return null
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<SuiClientProvider networks={config.networkConfig} defaultNetwork="mainnet">
|
|
29
|
+
<WalletProvider
|
|
30
|
+
storageKey="li.fi-widget-sui-wallet-connection"
|
|
31
|
+
autoConnect
|
|
32
|
+
>
|
|
33
|
+
{children}
|
|
34
|
+
</WalletProvider>
|
|
35
|
+
</SuiClientProvider>
|
|
36
|
+
)
|
|
37
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { ChainType } from '@lifi/sdk'
|
|
2
|
+
import { SuiClientContext } from '@mysten/dapp-kit'
|
|
3
|
+
import { type FC, type PropsWithChildren, useContext } from 'react'
|
|
4
|
+
import { isItemAllowed } from '../../utils/item.js'
|
|
5
|
+
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
6
|
+
import { SuiBaseProvider } from './SuiBaseProvider.js'
|
|
7
|
+
import { SuiExternalContext } from './SuiExternalContext.js'
|
|
8
|
+
|
|
9
|
+
export function useInSuiContext(): boolean {
|
|
10
|
+
const { chains } = useWidgetConfig()
|
|
11
|
+
const context = useContext(SuiClientContext)
|
|
12
|
+
|
|
13
|
+
return Boolean(context) && isItemAllowed(ChainType.MVM, chains?.types)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const SuiProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
17
|
+
const inSuiContext = useInSuiContext()
|
|
18
|
+
|
|
19
|
+
return inSuiContext ? (
|
|
20
|
+
<SuiExternalContext.Provider value={inSuiContext}>
|
|
21
|
+
{children}
|
|
22
|
+
</SuiExternalContext.Provider>
|
|
23
|
+
) : (
|
|
24
|
+
<SuiBaseProvider>{children}</SuiBaseProvider>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
import type { Config } from '@bigmi/client'
|
|
1
2
|
import { BigmiProvider, useReconnect } from '@bigmi/react'
|
|
2
|
-
import type {
|
|
3
|
+
import type { DefaultBigmiConfigResult } from '@lifi/wallet-management'
|
|
3
4
|
import { createDefaultBigmiConfig } from '@lifi/wallet-management'
|
|
4
5
|
import { type FC, type PropsWithChildren, useRef } from 'react'
|
|
5
6
|
|
|
6
7
|
export const UTXOBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
7
|
-
const bigmi = useRef<
|
|
8
|
+
const bigmi = useRef<DefaultBigmiConfigResult>(null)
|
|
8
9
|
|
|
9
10
|
if (!bigmi.current) {
|
|
10
11
|
bigmi.current = createDefaultBigmiConfig({
|
|
@@ -15,10 +16,13 @@ export const UTXOBaseProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
|
15
16
|
})
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
useReconnect(bigmi.current.config)
|
|
19
|
+
useReconnect(bigmi.current.config as Config)
|
|
19
20
|
|
|
20
21
|
return (
|
|
21
|
-
<BigmiProvider
|
|
22
|
+
<BigmiProvider
|
|
23
|
+
config={bigmi.current.config as Config}
|
|
24
|
+
reconnectOnMount={false}
|
|
25
|
+
>
|
|
22
26
|
{children}
|
|
23
27
|
</BigmiProvider>
|
|
24
28
|
)
|
|
@@ -6,6 +6,7 @@ import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
|
6
6
|
import { EVMProvider } from './EVMProvider.js'
|
|
7
7
|
import { SDKProviders } from './SDKProviders.js'
|
|
8
8
|
import { SVMProvider } from './SVMProvider.js'
|
|
9
|
+
import { SuiProvider } from './SuiProvider.js'
|
|
9
10
|
import { UTXOProvider } from './UTXOProvider.js'
|
|
10
11
|
import { useExternalWalletProvider } from './useExternalWalletProvider.js'
|
|
11
12
|
|
|
@@ -14,8 +15,10 @@ export const WalletProvider: FC<PropsWithChildren> = ({ children }) => {
|
|
|
14
15
|
<EVMProvider>
|
|
15
16
|
<SVMProvider>
|
|
16
17
|
<UTXOProvider>
|
|
17
|
-
<
|
|
18
|
-
|
|
18
|
+
<SuiProvider>
|
|
19
|
+
<SDKProviders />
|
|
20
|
+
<WalletMenuProvider>{children}</WalletMenuProvider>
|
|
21
|
+
</SuiProvider>
|
|
19
22
|
</UTXOProvider>
|
|
20
23
|
</SVMProvider>
|
|
21
24
|
</EVMProvider>
|
|
@@ -3,6 +3,7 @@ import { useContext, useMemo } from 'react'
|
|
|
3
3
|
import { useWidgetConfig } from '../WidgetProvider/WidgetProvider.js'
|
|
4
4
|
import { EVMExternalContext } from './EVMExternalContext.js'
|
|
5
5
|
import { SVMExternalContext } from './SVMExternalContext.js'
|
|
6
|
+
import { SuiExternalContext } from './SuiExternalContext.js'
|
|
6
7
|
import { UTXOExternalContext } from './UTXOExternalContext.js'
|
|
7
8
|
|
|
8
9
|
interface ExternalWalletProvider {
|
|
@@ -11,14 +12,19 @@ interface ExternalWalletProvider {
|
|
|
11
12
|
internalChainTypes: ChainType[]
|
|
12
13
|
}
|
|
13
14
|
|
|
14
|
-
const internalChainTypes = [
|
|
15
|
+
const internalChainTypes = [
|
|
16
|
+
ChainType.EVM,
|
|
17
|
+
ChainType.SVM,
|
|
18
|
+
ChainType.UTXO,
|
|
19
|
+
ChainType.MVM,
|
|
20
|
+
]
|
|
15
21
|
|
|
16
22
|
export function useExternalWalletProvider(): ExternalWalletProvider {
|
|
17
23
|
const { walletConfig } = useWidgetConfig()
|
|
18
24
|
const hasExternalEVMContext = useContext(EVMExternalContext)
|
|
19
25
|
const hasExternalSVMContext = useContext(SVMExternalContext)
|
|
20
26
|
const hasExternalUTXOContext = useContext(UTXOExternalContext)
|
|
21
|
-
|
|
27
|
+
const hasExternalSuiContext = useContext(SuiExternalContext)
|
|
22
28
|
const data = useMemo(() => {
|
|
23
29
|
const providers: ChainType[] = []
|
|
24
30
|
if (hasExternalEVMContext) {
|
|
@@ -30,8 +36,14 @@ export function useExternalWalletProvider(): ExternalWalletProvider {
|
|
|
30
36
|
if (hasExternalUTXOContext) {
|
|
31
37
|
providers.push(ChainType.UTXO)
|
|
32
38
|
}
|
|
39
|
+
if (hasExternalSuiContext) {
|
|
40
|
+
providers.push(ChainType.MVM)
|
|
41
|
+
}
|
|
33
42
|
const hasExternalProvider =
|
|
34
|
-
hasExternalEVMContext ||
|
|
43
|
+
hasExternalEVMContext ||
|
|
44
|
+
hasExternalSVMContext ||
|
|
45
|
+
hasExternalUTXOContext ||
|
|
46
|
+
hasExternalSuiContext
|
|
35
47
|
|
|
36
48
|
const useExternalWalletProvidersOnly =
|
|
37
49
|
hasExternalProvider && !walletConfig?.usePartialWalletManagement
|
|
@@ -46,6 +58,7 @@ export function useExternalWalletProvider(): ExternalWalletProvider {
|
|
|
46
58
|
hasExternalEVMContext,
|
|
47
59
|
hasExternalSVMContext,
|
|
48
60
|
hasExternalUTXOContext,
|
|
61
|
+
hasExternalSuiContext,
|
|
49
62
|
walletConfig?.usePartialWalletManagement,
|
|
50
63
|
])
|
|
51
64
|
|
package/src/utils/chainType.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { isUTXOAddress } from '@bigmi/core'
|
|
2
2
|
import { ChainId, ChainType, isSVMAddress } from '@lifi/sdk'
|
|
3
|
+
import { isValidSuiAddress } from '@mysten/sui/utils'
|
|
3
4
|
import { isAddress as isEVMAddress } from 'viem'
|
|
4
5
|
|
|
5
6
|
const chainTypeAddressValidation = {
|
|
6
7
|
[ChainType.EVM]: isEVMAddress,
|
|
7
8
|
[ChainType.SVM]: isSVMAddress,
|
|
9
|
+
[ChainType.MVM]: isValidSuiAddress,
|
|
8
10
|
[ChainType.UTXO]: isUTXOAddress,
|
|
9
|
-
[ChainType.MVM]: () => false,
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
export const getChainTypeFromAddress = (
|
package/tsconfig.json
CHANGED