@wheelx-widget/widget 0.1.4 → 0.1.6
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/LICENSE +21 -21
- package/README.md +197 -197
- package/dist/index.css +3 -0
- package/dist/index.css.map +1 -1
- package/dist/index.js +877 -434
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +882 -439
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React5 = require('react');
|
|
4
|
+
var react = require('@chakra-ui/react');
|
|
4
5
|
var reactQuery = require('@tanstack/react-query');
|
|
5
6
|
var sdkReactCore = require('@dynamic-labs/sdk-react-core');
|
|
6
7
|
var ethereum = require('@dynamic-labs/ethereum');
|
|
7
8
|
var solana = require('@dynamic-labs/solana');
|
|
8
9
|
var wagmiConnector = require('@dynamic-labs/wagmi-connector');
|
|
9
10
|
var wagmi = require('wagmi');
|
|
11
|
+
var viem = require('viem');
|
|
10
12
|
var chains$1 = require('wagmi/chains');
|
|
11
13
|
var react$1 = require('@emotion/react');
|
|
12
14
|
var jsxRuntime = require('react/jsx-runtime');
|
|
13
15
|
var axios6 = require('axios');
|
|
14
16
|
var zustand = require('zustand');
|
|
15
|
-
var react = require('@chakra-ui/react');
|
|
16
17
|
var biFraction = require('bi-fraction');
|
|
17
|
-
var viem = require('viem');
|
|
18
18
|
var chains = require('viem/chains');
|
|
19
19
|
var web3_js = require('@solana/web3.js');
|
|
20
20
|
var utils = require('viem/utils');
|
|
@@ -26,6 +26,8 @@ var io5 = require('react-icons/io5');
|
|
|
26
26
|
var fa6 = require('react-icons/fa6');
|
|
27
27
|
var io = require('react-icons/io');
|
|
28
28
|
var bs = require('react-icons/bs');
|
|
29
|
+
var hi2 = require('react-icons/hi2');
|
|
30
|
+
var ri = require('react-icons/ri');
|
|
29
31
|
|
|
30
32
|
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
31
33
|
|
|
@@ -181,7 +183,11 @@ var useWalletConnectedStore = zustand.create((set, get) => ({
|
|
|
181
183
|
evmWalletConnectorId: null,
|
|
182
184
|
setEvmWalletInfo: (address, connectorId) => set({ evmWalletAddress: address, evmWalletConnectorId: connectorId }),
|
|
183
185
|
isEvmWalletMetamask: false,
|
|
184
|
-
setIsEvmWalletMetamask: (isEvmWalletMetamask) => set({ isEvmWalletMetamask })
|
|
186
|
+
setIsEvmWalletMetamask: (isEvmWalletMetamask) => set({ isEvmWalletMetamask }),
|
|
187
|
+
isLoggingOut: false,
|
|
188
|
+
setIsLoggingOut: (isLoggingOut) => set({ isLoggingOut }),
|
|
189
|
+
lastDisconnectTimestamp: 0,
|
|
190
|
+
setLastDisconnectTimestamp: (ts) => set({ lastDisconnectTimestamp: ts })
|
|
185
191
|
}));
|
|
186
192
|
|
|
187
193
|
// src/stores/useSyncWalletConnectedStore.ts
|
|
@@ -191,14 +197,25 @@ var getEvmConnectorId = (wallet) => {
|
|
|
191
197
|
};
|
|
192
198
|
var useSyncWalletConnectedStore = () => {
|
|
193
199
|
const userWallets = sdkReactCore.useUserWallets();
|
|
194
|
-
const { address: wagmiAddress, connector: wagmiConnector
|
|
200
|
+
const { address: wagmiAddress, connector: wagmiConnector } = wagmi.useAccount();
|
|
195
201
|
const {
|
|
196
202
|
setSolanaWalletAddress,
|
|
197
203
|
setIsSolanaWalletConnected,
|
|
198
204
|
setEvmWalletInfo,
|
|
199
|
-
setIsEthWalletConnected
|
|
205
|
+
setIsEthWalletConnected,
|
|
206
|
+
isLoggingOut,
|
|
207
|
+
lastDisconnectTimestamp
|
|
200
208
|
} = useWalletConnectedStore();
|
|
201
209
|
React5.useEffect(() => {
|
|
210
|
+
if (isLoggingOut) return;
|
|
211
|
+
const msSinceDisconnect = Date.now() - lastDisconnectTimestamp;
|
|
212
|
+
if (msSinceDisconnect < 2e3) {
|
|
213
|
+
const { isEthWalletConnected, isSolanaWalletConnected } = useWalletConnectedStore.getState();
|
|
214
|
+
const hasNoConnectedWallets = !isEthWalletConnected && !isSolanaWalletConnected;
|
|
215
|
+
if (hasNoConnectedWallets) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
202
219
|
const solanaWallet = userWallets.find((wallet) => {
|
|
203
220
|
const chain = String(
|
|
204
221
|
wallet.chain ?? ""
|
|
@@ -214,15 +231,16 @@ var useSyncWalletConnectedStore = () => {
|
|
|
214
231
|
).toLowerCase();
|
|
215
232
|
return chain.includes("evm");
|
|
216
233
|
});
|
|
217
|
-
const evmAddress = evmWallet?.address ?? wagmiAddress ?? null;
|
|
234
|
+
const evmAddress = evmWallet?.address ?? (evmWallet ? wagmiAddress : null) ?? null;
|
|
218
235
|
const evmConnectorId = wagmiConnector?.id ?? getEvmConnectorId(evmWallet) ?? null;
|
|
219
236
|
setEvmWalletInfo(evmAddress, evmConnectorId);
|
|
220
|
-
setIsEthWalletConnected(Boolean(evmAddress
|
|
237
|
+
setIsEthWalletConnected(Boolean(evmAddress));
|
|
221
238
|
}, [
|
|
222
239
|
userWallets,
|
|
223
240
|
wagmiAddress,
|
|
224
241
|
wagmiConnector?.id,
|
|
225
|
-
|
|
242
|
+
isLoggingOut,
|
|
243
|
+
lastDisconnectTimestamp,
|
|
226
244
|
setSolanaWalletAddress,
|
|
227
245
|
setIsSolanaWalletConnected,
|
|
228
246
|
setEvmWalletInfo,
|
|
@@ -231,7 +249,8 @@ var useSyncWalletConnectedStore = () => {
|
|
|
231
249
|
};
|
|
232
250
|
var useEvmAddress = () => {
|
|
233
251
|
const { address } = wagmi.useAccount();
|
|
234
|
-
const { evmWalletAddress } = useWalletConnectedStore();
|
|
252
|
+
const { evmWalletAddress, isEthWalletConnected } = useWalletConnectedStore();
|
|
253
|
+
if (!isEthWalletConnected) return void 0;
|
|
235
254
|
return evmWalletAddress || address;
|
|
236
255
|
};
|
|
237
256
|
var FavoritesContext = React5.createContext({
|
|
@@ -434,21 +453,140 @@ var useTokenFavoritesContext = () => {
|
|
|
434
453
|
if (c === void 0) throw new Error("useTokenFavoritesContext must be used within TokenFavoritesProvider");
|
|
435
454
|
return c;
|
|
436
455
|
};
|
|
437
|
-
var
|
|
456
|
+
var tempo = viem.defineChain({
|
|
457
|
+
id: 4217,
|
|
458
|
+
name: "Tempo",
|
|
459
|
+
network: "Tempo",
|
|
460
|
+
nativeCurrency: { name: "USD", symbol: "USD", decimals: 6 },
|
|
461
|
+
rpcUrls: { default: { http: ["https://rpc.tempo.xyz"] } },
|
|
462
|
+
blockExplorers: { default: { name: "Tempo Explorer", url: "https://explore.tempo.xyz" } },
|
|
463
|
+
testnet: true
|
|
464
|
+
});
|
|
465
|
+
var katana = viem.defineChain({ id: 747474, name: "Katana", network: "Katana", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.katana.network"] } }, blockExplorers: { default: { name: "Katana Explorer", url: "https://explorer.katanarpc.com" } } });
|
|
466
|
+
var hyperevm = viem.defineChain({ id: 999, name: "HyperEVM", network: "HyperEVM", nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.hyperliquid.xyz/evm", "https://rpc.hypurrscan.io"] } }, blockExplorers: { default: { name: "Purrsec", url: "https://hyperevmscan.io" } } });
|
|
467
|
+
var stable = viem.defineChain({ id: 988, name: "Stable", network: "Stable", nativeCurrency: { name: "STB", symbol: "STB", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.stable.xyz"] } }, blockExplorers: { default: { name: "Stablescan", url: "https://stablescan.xyz" } } });
|
|
468
|
+
var monad = viem.defineChain({ id: 143, name: "Monad", network: "Monad", nativeCurrency: { name: "MON", symbol: "MON", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.monad.xyz", "https://rpc1.monad.xyz"] } }, blockExplorers: { default: { name: "MonadVision", url: "https://monadvision.com" } } });
|
|
469
|
+
var metis = viem.defineChain({ id: 1088, name: "Metis", network: "Metis", nativeCurrency: { name: "METIS", symbol: "METIS", decimals: 18 }, rpcUrls: { default: { http: ["https://metis.api.onfinality.io/public", "https://metis-public.nodies.app"] } }, blockExplorers: { default: { name: "Metis Explorer", url: "https://explorer.metis.io" } } });
|
|
470
|
+
var polygonZkEvm = viem.defineChain({ id: 1101, name: "Polygon zkEVM", network: "Polygon zkEVM", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://zkevm-rpc.com"] } }, blockExplorers: { default: { name: "PolygonScan zkEVM", url: "https://www.oklink.com/polygon-zkevm" } } });
|
|
471
|
+
var megaeth = viem.defineChain({ id: 4326, name: "MegaETH", network: "MegaETH", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://mainnet.megaeth.com/rpc"] } }, blockExplorers: { default: { name: "MegaETH Explorer", url: "https://megaeth.blockscout.com/" } } });
|
|
472
|
+
var pharos = viem.defineChain({ id: 1672, name: "Pharos", network: "Pharos", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.pharos.xyz"] } }, blockExplorers: { default: { name: "Pharoscan", url: "https://pharosscan.xyz" } } });
|
|
473
|
+
var kite = viem.defineChain({ id: 2366, name: "Kite", network: "Kite", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.gokite.ai/"] } }, blockExplorers: { default: { name: "Kitescan", url: "https://kitescan.ai/" } } });
|
|
474
|
+
var plasma = viem.defineChain({ id: 9745, name: "Plasma", network: "Plasma", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.plasma.to"] } }, blockExplorers: { default: { name: "Plasma Explorer", url: "https://plasmascan.to" } }, testnet: true });
|
|
475
|
+
var rari = viem.defineChain({ id: 1380012617, name: "RARI", network: "RARI", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://mainnet.rpc.rarichain.org/http"] } }, blockExplorers: { default: { name: "RARI Explorer", url: "https://mainnet.explorer.rarichain.org/" } }, testnet: true });
|
|
476
|
+
var stabletestnet = viem.defineChain({ id: 2201, name: "Stable Testnet", network: "Stable Testnet", nativeCurrency: { name: "STB", symbol: "STB", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.testnet.stable.xyz"] } }, blockExplorers: { default: { name: "Stablescan Testnet", url: "https://testnet.stablescan.xyz" } }, testnet: true });
|
|
477
|
+
var giwa = viem.defineChain({ id: 91342, name: "GIWA Testnet", network: "GIWA Testnet", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://sepolia-rpc.giwa.io"] } }, blockExplorers: { default: { name: "GIWA Explorer", url: "https://sepolia-explorer.giwa.io" } }, testnet: true });
|
|
478
|
+
var robinhoodTestnet = viem.defineChain({ id: 46630, name: "Robinhood Testnet", network: "Robinhood Testnet", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://rpc.testnet.chain.robinhood.com"] } }, blockExplorers: { default: { name: "Robinhood Explorer", url: "https://explorer.testnet.chain.robinhood.com/" } }, testnet: true });
|
|
479
|
+
var litvm = viem.defineChain({ id: 4441, name: "LitVM Testnet", network: "LitVM Testnet", nativeCurrency: { name: "ETH", symbol: "ETH", decimals: 18 }, rpcUrls: { default: { http: ["https://liteforge.rpc.caldera.xyz/http"] } }, blockExplorers: { default: { name: "LitVM Explorer", url: "https://liteforge.explorer.caldera.xyz" } }, testnet: true });
|
|
480
|
+
var supportedChains = [
|
|
481
|
+
// Mainnet (wagmi/chains)
|
|
482
|
+
chains$1.mainnet,
|
|
483
|
+
chains$1.arbitrum,
|
|
484
|
+
chains$1.optimism,
|
|
485
|
+
chains$1.unichain,
|
|
486
|
+
chains$1.base,
|
|
487
|
+
chains$1.ink,
|
|
488
|
+
chains$1.linea,
|
|
489
|
+
chains$1.soneium,
|
|
490
|
+
chains$1.bsc,
|
|
491
|
+
chains$1.worldchain,
|
|
492
|
+
chains$1.opBNB,
|
|
493
|
+
chains$1.mode,
|
|
494
|
+
chains$1.lisk,
|
|
495
|
+
chains$1.zksync,
|
|
496
|
+
chains$1.celo,
|
|
497
|
+
chains$1.polygon,
|
|
498
|
+
chains$1.avalanche,
|
|
499
|
+
chains$1.plumeMainnet,
|
|
500
|
+
chains$1.zora,
|
|
501
|
+
chains$1.sonic,
|
|
502
|
+
chains$1.berachain,
|
|
503
|
+
chains$1.bob,
|
|
504
|
+
chains$1.abstract,
|
|
505
|
+
chains$1.morph,
|
|
506
|
+
chains$1.taiko,
|
|
507
|
+
chains$1.scroll,
|
|
508
|
+
chains$1.hemi,
|
|
509
|
+
chains$1.xLayer,
|
|
510
|
+
chains$1.mantle,
|
|
511
|
+
chains$1.cronos,
|
|
512
|
+
chains$1.gravity,
|
|
513
|
+
chains$1.blast,
|
|
514
|
+
chains$1.manta,
|
|
515
|
+
chains$1.zircuit,
|
|
516
|
+
chains$1.xdc,
|
|
517
|
+
chains$1.sei,
|
|
518
|
+
chains$1.plume,
|
|
519
|
+
chains$1.gnosis,
|
|
520
|
+
chains$1.hashkey,
|
|
521
|
+
chains$1.flowMainnet,
|
|
522
|
+
chains$1.etherlink,
|
|
523
|
+
chains$1.ronin,
|
|
524
|
+
chains$1.flare,
|
|
525
|
+
chains$1.rootstock,
|
|
526
|
+
chains$1.iota,
|
|
527
|
+
chains$1.pulsechain,
|
|
528
|
+
// Mainnet (custom chains — not in wagmi/chains)
|
|
529
|
+
katana,
|
|
530
|
+
hyperevm,
|
|
531
|
+
stable,
|
|
532
|
+
monad,
|
|
533
|
+
metis,
|
|
534
|
+
polygonZkEvm,
|
|
535
|
+
megaeth,
|
|
536
|
+
pharos,
|
|
537
|
+
kite,
|
|
538
|
+
tempo,
|
|
539
|
+
plasma,
|
|
540
|
+
rari,
|
|
541
|
+
// Testnet (wagmi/chains)
|
|
542
|
+
chains$1.sepolia,
|
|
543
|
+
chains$1.arbitrumSepolia,
|
|
544
|
+
chains$1.optimismSepolia,
|
|
545
|
+
chains$1.baseSepolia,
|
|
546
|
+
chains$1.unichainSepolia,
|
|
547
|
+
chains$1.arcTestnet,
|
|
548
|
+
// Testnet (custom chains — not in wagmi/chains)
|
|
549
|
+
stabletestnet,
|
|
550
|
+
giwa,
|
|
551
|
+
robinhoodTestnet,
|
|
552
|
+
litvm
|
|
553
|
+
];
|
|
438
554
|
var CORS_FRIENDLY_RPC_MAP = {
|
|
555
|
+
// wagmi/chains mainnet
|
|
439
556
|
1: "https://eth-mainnet.public.blastapi.io",
|
|
440
557
|
8453: "https://mainnet.base.org",
|
|
441
558
|
1868: "https://soneium.rpc.scs.startale.com",
|
|
442
559
|
137: "https://polygon-rpc.com",
|
|
560
|
+
56: "https://bsc-dataseed.binance.org",
|
|
561
|
+
130: "https://rpc.therpc.io/unichain",
|
|
562
|
+
196: "https://rpc.xlayer.io",
|
|
443
563
|
42161: "https://arbitrum.gateway.tenderly.co",
|
|
444
564
|
10: "https://optimism.gateway.tenderly.co",
|
|
565
|
+
// Custom chains (mainnet)
|
|
566
|
+
4217: "https://rpc.tempo.xyz",
|
|
567
|
+
747474: "https://rpc.katana.network",
|
|
568
|
+
999: "https://rpc.hyperliquid.xyz/evm",
|
|
569
|
+
988: "https://rpc.stable.xyz",
|
|
570
|
+
143: "https://rpc.monad.xyz",
|
|
571
|
+
1088: "https://metis.api.onfinality.io/public",
|
|
572
|
+
1101: "https://zkevm-rpc.com",
|
|
573
|
+
4326: "https://mainnet.megaeth.com/rpc",
|
|
574
|
+
1672: "https://rpc.pharos.xyz",
|
|
575
|
+
2366: "https://rpc.gokite.ai/",
|
|
576
|
+
9745: "https://rpc.plasma.to",
|
|
577
|
+
1380012617: "https://mainnet.rpc.rarichain.org/http",
|
|
445
578
|
// Testnet
|
|
446
579
|
11155111: "https://ethereum-sepolia.publicnode.com",
|
|
447
580
|
421614: "https://sepolia-rollup.arbitrum.io/rpc",
|
|
448
581
|
11155420: "https://optimism-sepolia.gateway.tenderly.co",
|
|
449
582
|
84532: "https://sepolia.base.org",
|
|
450
583
|
1301: "https://sepolia.unichain.org",
|
|
451
|
-
5042002: "https://rpc.testnet.arc.network"
|
|
584
|
+
5042002: "https://rpc.testnet.arc.network",
|
|
585
|
+
// Custom chains (testnet)
|
|
586
|
+
2201: "https://rpc.testnet.stable.xyz",
|
|
587
|
+
91342: "https://sepolia-rpc.giwa.io",
|
|
588
|
+
46630: "https://rpc.testnet.chain.robinhood.com",
|
|
589
|
+
4441: "https://liteforge.rpc.caldera.xyz/http"
|
|
452
590
|
};
|
|
453
591
|
function buildStableTransports() {
|
|
454
592
|
const transports = {};
|
|
@@ -474,6 +612,37 @@ function WalletConnectionStateSync() {
|
|
|
474
612
|
useSyncWalletConnectedStore();
|
|
475
613
|
return null;
|
|
476
614
|
}
|
|
615
|
+
function LoadingSkeleton() {
|
|
616
|
+
const { theme } = useWidgetTheme();
|
|
617
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
618
|
+
react.Box,
|
|
619
|
+
{
|
|
620
|
+
display: "flex",
|
|
621
|
+
flexDirection: "column",
|
|
622
|
+
alignItems: "center",
|
|
623
|
+
justifyContent: "center",
|
|
624
|
+
w: { base: "100%", md: "480px" },
|
|
625
|
+
h: { base: "400px", md: "440px" },
|
|
626
|
+
borderRadius: "24px",
|
|
627
|
+
bg: theme.assistBgColor,
|
|
628
|
+
gap: 4,
|
|
629
|
+
children: [
|
|
630
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
631
|
+
react.Box,
|
|
632
|
+
{
|
|
633
|
+
w: "40px",
|
|
634
|
+
h: "40px",
|
|
635
|
+
borderRadius: "full",
|
|
636
|
+
bg: theme.defaultBorderColor,
|
|
637
|
+
opacity: 0.4,
|
|
638
|
+
animation: "pulse 1.5s ease-in-out infinite"
|
|
639
|
+
}
|
|
640
|
+
),
|
|
641
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Text, { fontSize: "14px", color: theme.defaultTextColor, children: "Loading chains and tokens..." })
|
|
642
|
+
]
|
|
643
|
+
}
|
|
644
|
+
);
|
|
645
|
+
}
|
|
477
646
|
function ChainsAndTokensLoader({ children, config }) {
|
|
478
647
|
const { data } = useChainsAndTokens(true);
|
|
479
648
|
const { setChains, setSlippagePolicies } = useChainsStore();
|
|
@@ -530,7 +699,7 @@ function ChainsAndTokensLoader({ children, config }) {
|
|
|
530
699
|
}, [filteredChains, filteredTokens, data, setChains, setTokens, setSlippagePolicies]);
|
|
531
700
|
const isReady = filteredChains && filteredTokens;
|
|
532
701
|
if (!isReady) {
|
|
533
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
702
|
+
return /* @__PURE__ */ jsxRuntime.jsx(LoadingSkeleton, {});
|
|
534
703
|
}
|
|
535
704
|
return /* @__PURE__ */ jsxRuntime.jsx(FavoritesProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(TokenFavoritesProvider, { children: [
|
|
536
705
|
/* @__PURE__ */ jsxRuntime.jsx(WalletConnectionStateSync, {}),
|
|
@@ -857,6 +1026,16 @@ var formatDate = (dateString) => {
|
|
|
857
1026
|
const formattedTime = `${month}/${day}/${year} ${hours}:${minutes}:${seconds}`;
|
|
858
1027
|
return formattedTime;
|
|
859
1028
|
};
|
|
1029
|
+
var dateFormatter = (isoString) => {
|
|
1030
|
+
const date = new Date(isoString);
|
|
1031
|
+
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
1032
|
+
const day = String(date.getDate()).padStart(2, "0");
|
|
1033
|
+
const year = date.getFullYear();
|
|
1034
|
+
const hours = String(date.getHours()).padStart(2, "0");
|
|
1035
|
+
const minutes = String(date.getMinutes()).padStart(2, "0");
|
|
1036
|
+
const seconds = String(date.getSeconds()).padStart(2, "0");
|
|
1037
|
+
return `${month}/${day}/${year} ${hours}:${minutes}:${seconds}`;
|
|
1038
|
+
};
|
|
860
1039
|
|
|
861
1040
|
// src/utils/address.ts
|
|
862
1041
|
var sliceAddress = (address, startLength = 4, endLength = 4) => {
|
|
@@ -928,25 +1107,6 @@ var isSolanaChain = (chain_id) => {
|
|
|
928
1107
|
return chain_id === SOLANA_MAINNET.chain_id;
|
|
929
1108
|
};
|
|
930
1109
|
|
|
931
|
-
// src/utils/shortLinkRegex.ts
|
|
932
|
-
var toRegex = /^\/[a-zA-Z0-9]+$/;
|
|
933
|
-
var toAndTokenRegex = /^\/(?!from)[a-zA-Z0-9-+]+&[a-zA-Z0-9-+.₮Ï]+$/;
|
|
934
|
-
var fromRegex = /^\/from&[a-zA-Z0-9-+]+$/;
|
|
935
|
-
var fromAndTokenRegex = /^\/from&[a-zA-Z0-9-+]+&[a-zA-Z0-9-+.₮Ï]+$/;
|
|
936
|
-
var fromAndToRegex = /^\/[a-zA-Z0-9-+]+\/[a-zA-Z0-9-+]+$/;
|
|
937
|
-
var fromAndTokenAndToAndTokenRegex = /^\/[a-zA-Z0-9-+]+&[a-zA-Z0-9-+.₮Ï]+\/[a-zA-Z0-9-+]+&[a-zA-Z0-9-+.₮Ï]+$/;
|
|
938
|
-
var allRegexPatterns = [
|
|
939
|
-
toRegex,
|
|
940
|
-
toAndTokenRegex,
|
|
941
|
-
fromRegex,
|
|
942
|
-
fromAndTokenRegex,
|
|
943
|
-
fromAndToRegex,
|
|
944
|
-
fromAndTokenAndToAndTokenRegex
|
|
945
|
-
];
|
|
946
|
-
function matchesAnyPatternUsingArray(inputString) {
|
|
947
|
-
return allRegexPatterns.some((regex) => regex.test(inputString));
|
|
948
|
-
}
|
|
949
|
-
|
|
950
1110
|
// src/utils/tokenSelectionCache.ts
|
|
951
1111
|
var TOKEN_SELECTION = "tokenSelection";
|
|
952
1112
|
var tokenSelectionStore = new localstorage_default(TOKEN_SELECTION);
|
|
@@ -1034,7 +1194,7 @@ var logger = {
|
|
|
1034
1194
|
error: errorWithTimestamp,
|
|
1035
1195
|
debug: debugWithTimestamp
|
|
1036
1196
|
};
|
|
1037
|
-
var wagmiSupportedChains = [chains$1.mainnet, chains$1.base, chains$1.soneium, chains$1.polygon, chains$1.arbitrum, chains$1.optimism];
|
|
1197
|
+
var wagmiSupportedChains = [chains$1.mainnet, chains$1.base, chains$1.soneium, chains$1.polygon, chains$1.arbitrum, chains$1.optimism, chains$1.bsc];
|
|
1038
1198
|
var getTxLink = (txHash, chainId) => {
|
|
1039
1199
|
if (isSolanaChain(chainId)) {
|
|
1040
1200
|
return `${SOLANA_MAINNET.explorerUrl}/tx/${txHash}`;
|
|
@@ -1106,20 +1266,6 @@ var isSolanaChain2 = (chain_id) => {
|
|
|
1106
1266
|
};
|
|
1107
1267
|
|
|
1108
1268
|
// src/core/hooks/useSwapAndBridgeContextStore.ts
|
|
1109
|
-
function findItemByName(arr, targetName) {
|
|
1110
|
-
const foundItem = arr.find(
|
|
1111
|
-
(item) => item.name.replace(/\s+/g, "").toLowerCase() === targetName.replace(/\s+/g, "").toLowerCase()
|
|
1112
|
-
);
|
|
1113
|
-
return [foundItem !== void 0, foundItem];
|
|
1114
|
-
}
|
|
1115
|
-
function findItemBySymbol(arr, targetName, chainId, platform_id) {
|
|
1116
|
-
const foundItem = arr.find((item) => {
|
|
1117
|
-
{
|
|
1118
|
-
return item.symbol.replace(/\s+/g, "").toLowerCase() === targetName.replace(/\s+/g, "").toLowerCase() && item.chain_id === chainId;
|
|
1119
|
-
}
|
|
1120
|
-
});
|
|
1121
|
-
return [foundItem !== void 0, foundItem];
|
|
1122
|
-
}
|
|
1123
1269
|
var DEFAULT_FROM_TOKEN = {
|
|
1124
1270
|
name: "Base",
|
|
1125
1271
|
address: viem.zeroAddress,
|
|
@@ -1222,8 +1368,6 @@ var useInitSwapAndBridgeState = (config) => {
|
|
|
1222
1368
|
const {
|
|
1223
1369
|
setFromTokenInfo,
|
|
1224
1370
|
setToTokenInfo,
|
|
1225
|
-
setIsShortLink,
|
|
1226
|
-
setShortLink,
|
|
1227
1371
|
setFromAmount,
|
|
1228
1372
|
setToAmount
|
|
1229
1373
|
} = useSwapAndBridgeContextStore();
|
|
@@ -1233,11 +1377,6 @@ var useInitSwapAndBridgeState = (config) => {
|
|
|
1233
1377
|
const address = useEvmAddress();
|
|
1234
1378
|
const { resetTxState } = useTxStateContextStore();
|
|
1235
1379
|
const hasInitialized = React5.useRef(false);
|
|
1236
|
-
const currentPathname = React5.useMemo(() => {
|
|
1237
|
-
if (typeof window === "undefined") return "/";
|
|
1238
|
-
return window.location.pathname;
|
|
1239
|
-
}, []);
|
|
1240
|
-
const pathname = currentPathname;
|
|
1241
1380
|
React5.useEffect(() => {
|
|
1242
1381
|
if (hasInitialized.current) return;
|
|
1243
1382
|
if (!chains || !tokens) return;
|
|
@@ -1279,46 +1418,8 @@ var useInitSwapAndBridgeState = (config) => {
|
|
|
1279
1418
|
}
|
|
1280
1419
|
}
|
|
1281
1420
|
}
|
|
1282
|
-
if (matchesAnyPatternUsingArray(pathname) && chains && tokens) {
|
|
1283
|
-
setIsShortLink(true);
|
|
1284
|
-
setShortLink(pathname);
|
|
1285
|
-
try {
|
|
1286
|
-
const decodedPath = decodeURIComponent(pathname);
|
|
1287
|
-
const match = decodedPath.match(
|
|
1288
|
-
/^\/([a-zA-Z0-9-+]+)&([a-zA-Z0-9-+.₮Ï]+)\/([a-zA-Z0-9-+]+)&([a-zA-Z0-9-+.₮Ï]+)$/
|
|
1289
|
-
);
|
|
1290
|
-
if (match) {
|
|
1291
|
-
const [, fromChainName, fromTokenSymbol, toChainName, toTokenSymbol] = match;
|
|
1292
|
-
const [, foundFromChain] = findItemByName(
|
|
1293
|
-
chains,
|
|
1294
|
-
fromChainName
|
|
1295
|
-
);
|
|
1296
|
-
const [, foundToChain] = findItemByName(
|
|
1297
|
-
chains,
|
|
1298
|
-
toChainName
|
|
1299
|
-
);
|
|
1300
|
-
if (foundFromChain && foundToChain && tokens) {
|
|
1301
|
-
const [, foundFromToken] = findItemBySymbol(
|
|
1302
|
-
tokens,
|
|
1303
|
-
fromTokenSymbol,
|
|
1304
|
-
foundFromChain.chain_id
|
|
1305
|
-
);
|
|
1306
|
-
const [, foundToToken] = findItemBySymbol(
|
|
1307
|
-
tokens,
|
|
1308
|
-
toTokenSymbol,
|
|
1309
|
-
foundToChain.chain_id
|
|
1310
|
-
);
|
|
1311
|
-
if (foundFromToken && foundToToken) {
|
|
1312
|
-
setFromTokenInfo(foundFromToken);
|
|
1313
|
-
setToTokenInfo(foundToToken);
|
|
1314
|
-
}
|
|
1315
|
-
}
|
|
1316
|
-
}
|
|
1317
|
-
} catch {
|
|
1318
|
-
}
|
|
1319
|
-
}
|
|
1320
1421
|
const cached = tokenSelectionStore.get(address || "default");
|
|
1321
|
-
if (cached?.from && cached?.to
|
|
1422
|
+
if (cached?.from && cached?.to) {
|
|
1322
1423
|
setFromTokenInfo(cached.from);
|
|
1323
1424
|
setToTokenInfo(cached.to);
|
|
1324
1425
|
}
|
|
@@ -1330,15 +1431,12 @@ var useInitSwapAndBridgeState = (config) => {
|
|
|
1330
1431
|
resetTxState();
|
|
1331
1432
|
};
|
|
1332
1433
|
}, [
|
|
1333
|
-
pathname,
|
|
1334
1434
|
address,
|
|
1335
1435
|
chains,
|
|
1336
1436
|
tokens,
|
|
1337
1437
|
config,
|
|
1338
1438
|
setFromTokenInfo,
|
|
1339
1439
|
setToTokenInfo,
|
|
1340
|
-
setIsShortLink,
|
|
1341
|
-
setShortLink,
|
|
1342
1440
|
setFromAmount,
|
|
1343
1441
|
setToAmount,
|
|
1344
1442
|
setDifferentAddress,
|
|
@@ -2858,13 +2956,17 @@ var extractVPathSegment = () => {
|
|
|
2858
2956
|
const match = pathname.match(/^\/v\/([a-zA-Z0-9-+]+)/);
|
|
2859
2957
|
return match ? match[1] : "";
|
|
2860
2958
|
};
|
|
2861
|
-
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
|
|
2866
|
-
|
|
2867
|
-
|
|
2959
|
+
function toBigInt(balance, decimals = 6) {
|
|
2960
|
+
const balanceStr = typeof balance === "number" ? balance.toString() : balance;
|
|
2961
|
+
const [integerPart, decimalPart = ""] = balanceStr.split(".");
|
|
2962
|
+
const integerBigInt = BigInt(integerPart);
|
|
2963
|
+
const neededDecimalDigits = Math.min(decimalPart.length, decimals);
|
|
2964
|
+
const trimmedDecimal = decimalPart.slice(0, neededDecimalDigits);
|
|
2965
|
+
const paddedDecimal = trimmedDecimal.padEnd(decimals, "0");
|
|
2966
|
+
const decimalBigInt = BigInt(paddedDecimal);
|
|
2967
|
+
const multiplier = BigInt(10 ** decimals);
|
|
2968
|
+
return integerBigInt * multiplier + decimalBigInt;
|
|
2969
|
+
}
|
|
2868
2970
|
function BackIcon(props = {}) {
|
|
2869
2971
|
return React5.createElement("svg", {
|
|
2870
2972
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -2886,7 +2988,7 @@ function ArrowRightIcon(props = {}) {
|
|
|
2886
2988
|
height: props.size || 16,
|
|
2887
2989
|
...props,
|
|
2888
2990
|
style: { display: "inline-block", verticalAlign: "middle", ...props.style || {} },
|
|
2889
|
-
dangerouslySetInnerHTML: { __html: `<circle cx="23.0434" cy="23.5005" r="22.9565" fill="
|
|
2991
|
+
dangerouslySetInnerHTML: { __html: `<circle cx="23.0434" cy="23.5005" r="22.9565" fill="currentColor" />
|
|
2890
2992
|
<path
|
|
2891
2993
|
d="M14.0898 22.8301C14.0896 22.822 14.0889 22.8138 14.0889 22.8057C14.0889 22.3529 14.463 21.9813 14.9424 21.9365L15.0391 21.9316L29.0293 21.9316L25.582 18.7607C25.1215 18.3371 25.0489 17.7165 25.4199 17.375C25.7913 17.0335 26.466 17.1007 26.9268 17.5244L31.7939 22.001C32.1346 22.1339 32.374 22.4439 32.374 22.8057C32.374 22.8251 32.3715 22.8442 32.3701 22.8633C32.3705 22.874 32.3721 22.8847 32.3721 22.8955C32.3718 23.2561 32.1341 23.5657 31.7949 23.6992L26.9268 28.1768C26.4661 28.6002 25.7912 28.6674 25.4199 28.3262C25.0488 27.9848 25.1218 27.3641 25.582 26.9404L29.0293 23.7695L15.0371 23.7695L14.9404 23.7646C14.4611 23.7198 14.0872 23.3481 14.0869 22.8955C14.0869 22.8735 14.0881 22.8517 14.0898 22.8301Z"
|
|
2892
2994
|
fill="white" />` }
|
|
@@ -3242,7 +3344,7 @@ var textRecipe = react.defineRecipe({
|
|
|
3242
3344
|
}
|
|
3243
3345
|
});
|
|
3244
3346
|
var Heading = react.chakra("h2", headingRecipe);
|
|
3245
|
-
var
|
|
3347
|
+
var Text2 = react.chakra("p", textRecipe);
|
|
3246
3348
|
var isTouchDevice = () => {
|
|
3247
3349
|
if (typeof window === "undefined") return false;
|
|
3248
3350
|
return "ontouchstart" in window || navigator.maxTouchPoints > 0;
|
|
@@ -3370,6 +3472,12 @@ var FormButton = ({
|
|
|
3370
3472
|
}) => {
|
|
3371
3473
|
const { theme } = useWidgetTheme();
|
|
3372
3474
|
const address = useEvmAddress();
|
|
3475
|
+
const {
|
|
3476
|
+
solanaWalletAddress,
|
|
3477
|
+
isSolanaWalletConnected,
|
|
3478
|
+
isEthWalletConnected,
|
|
3479
|
+
evmWalletConnectorId
|
|
3480
|
+
} = useWalletConnectedStore();
|
|
3373
3481
|
const {
|
|
3374
3482
|
address: wagmiAddress,
|
|
3375
3483
|
connector,
|
|
@@ -3387,8 +3495,11 @@ var FormButton = ({
|
|
|
3387
3495
|
return dynamicEvmWallet?.address || void 0;
|
|
3388
3496
|
}, [userWallets]);
|
|
3389
3497
|
const effectiveEvmAddress = React5.useMemo(
|
|
3390
|
-
() =>
|
|
3391
|
-
|
|
3498
|
+
() => {
|
|
3499
|
+
if (!isEthWalletConnected) return void 0;
|
|
3500
|
+
return address || wagmiAddress || dynamicEvmWalletAddress || void 0;
|
|
3501
|
+
},
|
|
3502
|
+
[address, wagmiAddress, dynamicEvmWalletAddress, isEthWalletConnected]
|
|
3392
3503
|
);
|
|
3393
3504
|
const { openModal, openConnectModal } = useWalletConnectModal();
|
|
3394
3505
|
const slippage = address ? slippageStore.get(address) : void 0;
|
|
@@ -3417,15 +3528,9 @@ var FormButton = ({
|
|
|
3417
3528
|
} = useUSDTHandler(fromTokenInfo.chain_id);
|
|
3418
3529
|
const { isSelectPredictionChain, slippagePolicies, chains } = useChainsStore();
|
|
3419
3530
|
const { differentAddress } = useDifferentAddressStore();
|
|
3420
|
-
const {
|
|
3421
|
-
solanaWalletAddress,
|
|
3422
|
-
isSolanaWalletConnected,
|
|
3423
|
-
isEthWalletConnected,
|
|
3424
|
-
evmWalletConnectorId
|
|
3425
|
-
} = useWalletConnectedStore();
|
|
3426
3531
|
const connectors = wagmi.useConnectors();
|
|
3427
3532
|
const hasEvmUiWallet = Boolean(
|
|
3428
|
-
effectiveEvmAddress || isEthWalletConnected
|
|
3533
|
+
effectiveEvmAddress || isEthWalletConnected
|
|
3429
3534
|
);
|
|
3430
3535
|
const hasEvmExecutionWallet = Boolean(
|
|
3431
3536
|
effectiveEvmAddress && (isWagmiConnected && connector || evmWalletConnectorId && connectors.some((c) => c.id === evmWalletConnectorId) || isEthWalletConnected && connectors.length > 0)
|
|
@@ -3919,7 +4024,7 @@ var FormButton = ({
|
|
|
3919
4024
|
const renderButton = () => {
|
|
3920
4025
|
if (errorMessage || quoteMessage) {
|
|
3921
4026
|
return /* @__PURE__ */ jsxRuntime.jsx(react.Button, { ...buttonStyles, disabled: true, bg: theme.disabledButtonBg, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
3922
|
-
|
|
4027
|
+
Text2,
|
|
3923
4028
|
{
|
|
3924
4029
|
variant: {
|
|
3925
4030
|
base: "content9",
|
|
@@ -3985,7 +4090,7 @@ var FormButton = ({
|
|
|
3985
4090
|
}
|
|
3986
4091
|
),
|
|
3987
4092
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
3988
|
-
|
|
4093
|
+
Text2,
|
|
3989
4094
|
{
|
|
3990
4095
|
position: "absolute",
|
|
3991
4096
|
w: "28px",
|
|
@@ -4000,7 +4105,7 @@ var FormButton = ({
|
|
|
4000
4105
|
]
|
|
4001
4106
|
}
|
|
4002
4107
|
),
|
|
4003
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
4108
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { children: "AI is Thinking the Best Price" })
|
|
4004
4109
|
] }) })
|
|
4005
4110
|
}
|
|
4006
4111
|
);
|
|
@@ -4192,13 +4297,13 @@ function filterTokenUnType(items, excludeTypes) {
|
|
|
4192
4297
|
var mainnet3 = { id: 1 };
|
|
4193
4298
|
|
|
4194
4299
|
// src/consts/monad.ts
|
|
4195
|
-
var
|
|
4300
|
+
var monad2 = { id: 10143 };
|
|
4196
4301
|
|
|
4197
4302
|
// src/consts/stable.ts
|
|
4198
|
-
var
|
|
4303
|
+
var stable2 = { id: 1 };
|
|
4199
4304
|
|
|
4200
4305
|
// src/core/SelectTokenModal/hooks/useChainsAndTokensForSelect.ts
|
|
4201
|
-
[mainnet3.id, chains.base.id, chains.ink.id, chains.bsc.id,
|
|
4306
|
+
[mainnet3.id, chains.base.id, chains.ink.id, chains.bsc.id, monad2.id, chains.soneium.id, stable2.id];
|
|
4202
4307
|
var useChainsAndTokensForSelect = ({
|
|
4203
4308
|
data,
|
|
4204
4309
|
selectedChain,
|
|
@@ -4596,7 +4701,7 @@ var Network = ({
|
|
|
4596
4701
|
}
|
|
4597
4702
|
),
|
|
4598
4703
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
4599
|
-
|
|
4704
|
+
Text2,
|
|
4600
4705
|
{
|
|
4601
4706
|
variant: {
|
|
4602
4707
|
base: "content7",
|
|
@@ -4664,20 +4769,6 @@ function countLeadingZerosAfterDecimal(numStr) {
|
|
|
4664
4769
|
if (firstNonZeroIndex === -1) return 0;
|
|
4665
4770
|
return firstNonZeroIndex;
|
|
4666
4771
|
}
|
|
4667
|
-
function findItemByName2(arr, targetName) {
|
|
4668
|
-
const foundItem = arr.find(
|
|
4669
|
-
(item) => item.name.replace(/\s+/g, "").toLowerCase() === targetName.replace(/\s+/g, "").toLowerCase()
|
|
4670
|
-
);
|
|
4671
|
-
return [foundItem !== void 0, foundItem];
|
|
4672
|
-
}
|
|
4673
|
-
function findItemBySymbol2(arr, targetName, chainId, platform_id) {
|
|
4674
|
-
const foundItem = arr.find((item) => {
|
|
4675
|
-
{
|
|
4676
|
-
return item.symbol.replace(/\s+/g, "").toLowerCase() === targetName.replace(/\s+/g, "").toLowerCase() && item.chain_id === chainId;
|
|
4677
|
-
}
|
|
4678
|
-
});
|
|
4679
|
-
return [foundItem !== void 0, foundItem];
|
|
4680
|
-
}
|
|
4681
4772
|
var TokenAmountHeading = ({
|
|
4682
4773
|
amount,
|
|
4683
4774
|
decimals,
|
|
@@ -4685,13 +4776,14 @@ var TokenAmountHeading = ({
|
|
|
4685
4776
|
suffix,
|
|
4686
4777
|
...props
|
|
4687
4778
|
}) => {
|
|
4779
|
+
const { theme } = useWidgetTheme();
|
|
4688
4780
|
const _amount = formatTokenAmount({
|
|
4689
4781
|
amount,
|
|
4690
4782
|
decimals
|
|
4691
4783
|
});
|
|
4692
4784
|
const leadingZeros = countLeadingZerosAfterDecimal(_amount);
|
|
4693
4785
|
if (leadingZeros > 5) {
|
|
4694
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Heading, { variant: "heading8", ...props, as: "div", children: [
|
|
4786
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Heading, { variant: "heading8", ...props, as: "div", color: theme.defaultTextColor, whiteSpace: "nowrap", children: [
|
|
4695
4787
|
prefix,
|
|
4696
4788
|
" ",
|
|
4697
4789
|
_amount.slice(0, 3),
|
|
@@ -4710,7 +4802,7 @@ var TokenAmountHeading = ({
|
|
|
4710
4802
|
suffix
|
|
4711
4803
|
] });
|
|
4712
4804
|
}
|
|
4713
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(Heading, { variant: "heading11", ...props, as: "div", children: [
|
|
4805
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Heading, { variant: "heading11", ...props, as: "div", color: theme.defaultTextColor, whiteSpace: "nowrap", children: [
|
|
4714
4806
|
prefix,
|
|
4715
4807
|
" ",
|
|
4716
4808
|
_amount,
|
|
@@ -4731,7 +4823,7 @@ var TokenAmountText = ({
|
|
|
4731
4823
|
});
|
|
4732
4824
|
const leadingZeros = countLeadingZerosAfterDecimal(_amount);
|
|
4733
4825
|
if (leadingZeros > 5) {
|
|
4734
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4826
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: "content8", ...props, children: [
|
|
4735
4827
|
prefix,
|
|
4736
4828
|
" ",
|
|
4737
4829
|
_amount.slice(0, 3),
|
|
@@ -4750,7 +4842,7 @@ var TokenAmountText = ({
|
|
|
4750
4842
|
suffix
|
|
4751
4843
|
] });
|
|
4752
4844
|
}
|
|
4753
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
4845
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: "content7", ...props, children: [
|
|
4754
4846
|
prefix,
|
|
4755
4847
|
" ",
|
|
4756
4848
|
_amount,
|
|
@@ -5063,7 +5155,7 @@ var TokenAndAddress = ({
|
|
|
5063
5155
|
)
|
|
5064
5156
|
] }),
|
|
5065
5157
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5066
|
-
|
|
5158
|
+
Text2,
|
|
5067
5159
|
{
|
|
5068
5160
|
variant: {
|
|
5069
5161
|
base: "content9",
|
|
@@ -5091,7 +5183,7 @@ var TokenAndAddress = ({
|
|
|
5091
5183
|
}
|
|
5092
5184
|
),
|
|
5093
5185
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5094
|
-
|
|
5186
|
+
Text2,
|
|
5095
5187
|
{
|
|
5096
5188
|
variant: {
|
|
5097
5189
|
base: "content9",
|
|
@@ -5295,7 +5387,7 @@ var TokenList = ({
|
|
|
5295
5387
|
}
|
|
5296
5388
|
} else {
|
|
5297
5389
|
return /* @__PURE__ */ jsxRuntime.jsx(react.HStack, { w: "100%", h: "50px", justify: "center", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
5298
|
-
|
|
5390
|
+
Text2,
|
|
5299
5391
|
{
|
|
5300
5392
|
color: theme.weakTextColor,
|
|
5301
5393
|
variant: {
|
|
@@ -5394,7 +5486,7 @@ var TokenList = ({
|
|
|
5394
5486
|
cursor: "pointer",
|
|
5395
5487
|
children: [
|
|
5396
5488
|
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: item.icon, boxSize: "14px" }),
|
|
5397
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5489
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { children: item.name })
|
|
5398
5490
|
]
|
|
5399
5491
|
},
|
|
5400
5492
|
index
|
|
@@ -5694,7 +5786,7 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5694
5786
|
objectFit: "cover"
|
|
5695
5787
|
}
|
|
5696
5788
|
) }),
|
|
5697
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: ArrowDownIcon, boxSize: "16px" })
|
|
5789
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: ArrowDownIcon, boxSize: "16px", color: theme.defaultTextColor })
|
|
5698
5790
|
]
|
|
5699
5791
|
}
|
|
5700
5792
|
)
|
|
@@ -5750,10 +5842,10 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5750
5842
|
children: [
|
|
5751
5843
|
/* @__PURE__ */ jsxRuntime.jsx(AllChainsIcon, {}),
|
|
5752
5844
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5753
|
-
|
|
5845
|
+
Text2,
|
|
5754
5846
|
{
|
|
5755
5847
|
variant: "content6_1",
|
|
5756
|
-
color:
|
|
5848
|
+
color: theme.defaultTextColor,
|
|
5757
5849
|
whiteSpace: "nowrap",
|
|
5758
5850
|
children: "Chains with assets"
|
|
5759
5851
|
}
|
|
@@ -5765,7 +5857,7 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5765
5857
|
]
|
|
5766
5858
|
}
|
|
5767
5859
|
),
|
|
5768
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5860
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Popular" }),
|
|
5769
5861
|
/* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { w: "100%", align: "start", gap: 0, children: [
|
|
5770
5862
|
popularChains?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5771
5863
|
Network,
|
|
@@ -5801,7 +5893,7 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5801
5893
|
chain.chain_id + "fav-chains"
|
|
5802
5894
|
))
|
|
5803
5895
|
] }),
|
|
5804
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5896
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Chains (A-Z)" }),
|
|
5805
5897
|
/* @__PURE__ */ jsxRuntime.jsx(react.VStack, { w: "100%", align: "start", gap: 0, children: orderedChains?.filter((chain) => chain.is_testnet !== true)?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5806
5898
|
Network,
|
|
5807
5899
|
{
|
|
@@ -5818,7 +5910,7 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5818
5910
|
chain.chain_id + "ordered-chains"
|
|
5819
5911
|
)) }),
|
|
5820
5912
|
!isSelectingFromToken && !isPreconfigured && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
5821
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
5913
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Prediction" }),
|
|
5822
5914
|
orderedPredictionChains?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5823
5915
|
Network,
|
|
5824
5916
|
{
|
|
@@ -5836,7 +5928,7 @@ var MobileContent = React5.memo(function MobileContent2({
|
|
|
5836
5928
|
chain.chain_id + "prediction-chains"
|
|
5837
5929
|
))
|
|
5838
5930
|
] }),
|
|
5839
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
5931
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Testnet" }),
|
|
5840
5932
|
orderedChains?.filter((chain) => chain.is_testnet === true)?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
5841
5933
|
Network,
|
|
5842
5934
|
{
|
|
@@ -6030,7 +6122,7 @@ var DesktopContent = ({
|
|
|
6030
6122
|
children: [
|
|
6031
6123
|
/* @__PURE__ */ jsxRuntime.jsx(AllChainsIcon, {}),
|
|
6032
6124
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6033
|
-
|
|
6125
|
+
Text2,
|
|
6034
6126
|
{
|
|
6035
6127
|
variant: "content6_1",
|
|
6036
6128
|
color: theme.defaultTextColor,
|
|
@@ -6057,7 +6149,7 @@ var DesktopContent = ({
|
|
|
6057
6149
|
},
|
|
6058
6150
|
chain.chain_id + "search-chains"
|
|
6059
6151
|
)) }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6060
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6152
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", mb: 2, children: "Popular" }),
|
|
6061
6153
|
popularChains?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6062
6154
|
Network,
|
|
6063
6155
|
{
|
|
@@ -6085,7 +6177,7 @@ var DesktopContent = ({
|
|
|
6085
6177
|
},
|
|
6086
6178
|
chain.chain_id + "fav-chains"
|
|
6087
6179
|
)),
|
|
6088
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6180
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Chains (A-Z)" }),
|
|
6089
6181
|
orderedChains?.filter((chain) => chain.is_testnet === false)?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6090
6182
|
Network,
|
|
6091
6183
|
{
|
|
@@ -6101,7 +6193,7 @@ var DesktopContent = ({
|
|
|
6101
6193
|
)),
|
|
6102
6194
|
!isSelectingFromToken && !isPreconfigured && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
6103
6195
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6104
|
-
|
|
6196
|
+
Text2,
|
|
6105
6197
|
{
|
|
6106
6198
|
px: 2,
|
|
6107
6199
|
color: theme.weakTextColor,
|
|
@@ -6127,7 +6219,7 @@ var DesktopContent = ({
|
|
|
6127
6219
|
chain.chain_id + "prediction-chains"
|
|
6128
6220
|
))
|
|
6129
6221
|
] }),
|
|
6130
|
-
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(
|
|
6222
|
+
!isPreconfigured && /* @__PURE__ */ jsxRuntime.jsx(Text2, { px: 2, color: theme.weakTextColor, variant: "content7", my: 2, children: "Testnet" }),
|
|
6131
6223
|
orderedChains?.filter((chain) => chain.is_testnet === true)?.map((chain) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
6132
6224
|
Network,
|
|
6133
6225
|
{
|
|
@@ -6258,6 +6350,7 @@ var SelectTokenModal = ({
|
|
|
6258
6350
|
allTokens: tokens
|
|
6259
6351
|
});
|
|
6260
6352
|
const { userHasSelectedFromNetwork, setUserHasSelectedFromNetwork } = useUserHasSelectedFromNetwork();
|
|
6353
|
+
const prevUserHasSelectedRef = React5.useRef(userHasSelectedFromNetwork);
|
|
6261
6354
|
const { chains } = useChainsStore();
|
|
6262
6355
|
const [disableTestnetLimit, setDisableTestnetLimit] = React5.useState(false);
|
|
6263
6356
|
const [tempSelectAll, setTempSelectAll] = React5.useState(false);
|
|
@@ -6292,6 +6385,8 @@ var SelectTokenModal = ({
|
|
|
6292
6385
|
setTempSelectedPlatformId(null);
|
|
6293
6386
|
}
|
|
6294
6387
|
}
|
|
6388
|
+
const userJustSelected = userHasSelectedFromNetwork && !prevUserHasSelectedRef.current;
|
|
6389
|
+
prevUserHasSelectedRef.current = userHasSelectedFromNetwork;
|
|
6295
6390
|
if (isSelectingFromToken) {
|
|
6296
6391
|
if (isLoadingUserBalances) return;
|
|
6297
6392
|
if (isArcTestnetShortLink) {
|
|
@@ -6305,7 +6400,9 @@ var SelectTokenModal = ({
|
|
|
6305
6400
|
setSelectedChain(null);
|
|
6306
6401
|
} else {
|
|
6307
6402
|
setIsSelectAll(false);
|
|
6308
|
-
|
|
6403
|
+
if (!userJustSelected) {
|
|
6404
|
+
setSelectedChain(fromChainId);
|
|
6405
|
+
}
|
|
6309
6406
|
}
|
|
6310
6407
|
} else {
|
|
6311
6408
|
setIsSelectAll(false);
|
|
@@ -6557,7 +6654,7 @@ var TokenInfoCom = ({ tokenInfo, priority = false }) => {
|
|
|
6557
6654
|
}
|
|
6558
6655
|
),
|
|
6559
6656
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6560
|
-
|
|
6657
|
+
Text2,
|
|
6561
6658
|
{
|
|
6562
6659
|
variant: {
|
|
6563
6660
|
base: "content9",
|
|
@@ -6638,7 +6735,9 @@ var TokenSelectAndInput = ({
|
|
|
6638
6735
|
const toTokenBalanceHyper = {
|
|
6639
6736
|
formatted: toTokenBalanceHyperBack?.withdrawable,
|
|
6640
6737
|
value: toBigInt(
|
|
6641
|
-
toTokenBalanceHyperBack?.withdrawable ? toTokenBalanceHyperBack?.withdrawable : "0"
|
|
6738
|
+
toTokenBalanceHyperBack?.withdrawable ? toTokenBalanceHyperBack?.withdrawable : "0",
|
|
6739
|
+
6
|
|
6740
|
+
)
|
|
6642
6741
|
};
|
|
6643
6742
|
React5.useEffect(() => {
|
|
6644
6743
|
if (!isFrom) {
|
|
@@ -6827,7 +6926,7 @@ var TokenSelectAndInput = ({
|
|
|
6827
6926
|
const loss = -(+toAmountToUsd - +fromAmountToUsd) / +fromAmountToUsd;
|
|
6828
6927
|
if (loss >= 0.1) {
|
|
6829
6928
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
6830
|
-
|
|
6929
|
+
Text2,
|
|
6831
6930
|
{
|
|
6832
6931
|
as: "span",
|
|
6833
6932
|
color: "#ff4267",
|
|
@@ -6862,7 +6961,7 @@ var TokenSelectAndInput = ({
|
|
|
6862
6961
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
6863
6962
|
renderSolanaWalletIcon(),
|
|
6864
6963
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6865
|
-
|
|
6964
|
+
Text2,
|
|
6866
6965
|
{
|
|
6867
6966
|
variant: "content8",
|
|
6868
6967
|
backgroundColor: theme.highlightBgColor,
|
|
@@ -6879,7 +6978,7 @@ var TokenSelectAndInput = ({
|
|
|
6879
6978
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
6880
6979
|
walletIcon,
|
|
6881
6980
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6882
|
-
|
|
6981
|
+
Text2,
|
|
6883
6982
|
{
|
|
6884
6983
|
variant: "content8",
|
|
6885
6984
|
backgroundColor: theme.highlightBgColor,
|
|
@@ -6898,7 +6997,7 @@ var TokenSelectAndInput = ({
|
|
|
6898
6997
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
6899
6998
|
walletIcon,
|
|
6900
6999
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6901
|
-
|
|
7000
|
+
Text2,
|
|
6902
7001
|
{
|
|
6903
7002
|
variant: "content8",
|
|
6904
7003
|
backgroundColor: theme.assistBgColor,
|
|
@@ -6912,7 +7011,7 @@ var TokenSelectAndInput = ({
|
|
|
6912
7011
|
}
|
|
6913
7012
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
6914
7013
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6915
|
-
|
|
7014
|
+
Text2,
|
|
6916
7015
|
{
|
|
6917
7016
|
variant: "content8",
|
|
6918
7017
|
backgroundColor: theme.assistBgColor,
|
|
@@ -6941,7 +7040,7 @@ var TokenSelectAndInput = ({
|
|
|
6941
7040
|
cursor: "pointer",
|
|
6942
7041
|
children: [
|
|
6943
7042
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6944
|
-
|
|
7043
|
+
Text2,
|
|
6945
7044
|
{
|
|
6946
7045
|
variant: "content8",
|
|
6947
7046
|
backgroundColor: theme.assistBgColor,
|
|
@@ -6980,7 +7079,7 @@ var TokenSelectAndInput = ({
|
|
|
6980
7079
|
cursor: "pointer",
|
|
6981
7080
|
children: [
|
|
6982
7081
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
6983
|
-
|
|
7082
|
+
Text2,
|
|
6984
7083
|
{
|
|
6985
7084
|
variant: "content8",
|
|
6986
7085
|
backgroundColor: theme.assistBgColor,
|
|
@@ -7014,7 +7113,7 @@ var TokenSelectAndInput = ({
|
|
|
7014
7113
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
7015
7114
|
walletIcon,
|
|
7016
7115
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7017
|
-
|
|
7116
|
+
Text2,
|
|
7018
7117
|
{
|
|
7019
7118
|
variant: "content8",
|
|
7020
7119
|
backgroundColor: theme.assistBgColor,
|
|
@@ -7074,7 +7173,7 @@ var TokenSelectAndInput = ({
|
|
|
7074
7173
|
border: "1px solid",
|
|
7075
7174
|
borderColor: theme.highlightTextColor,
|
|
7076
7175
|
onClick: () => handleQuickInput("50%"),
|
|
7077
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7176
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content9", color: theme.highlightTextColor, children: "50%" })
|
|
7078
7177
|
}
|
|
7079
7178
|
),
|
|
7080
7179
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7087,10 +7186,10 @@ var TokenSelectAndInput = ({
|
|
|
7087
7186
|
borderRadius: "4px",
|
|
7088
7187
|
bg: theme.highlightButtonBg,
|
|
7089
7188
|
onClick: () => handleQuickInput("Max"),
|
|
7090
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7189
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content9", color: theme.highlightButtonText, children: "Max" })
|
|
7091
7190
|
}
|
|
7092
7191
|
),
|
|
7093
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7192
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: "content8", color: theme.weakTextColor, children: [
|
|
7094
7193
|
"Balance:",
|
|
7095
7194
|
" ",
|
|
7096
7195
|
tokenInfo.isSolana && solanaBalance ? solanaBalance.formatted : balance
|
|
@@ -7207,7 +7306,7 @@ var TokenSelectAndInput = ({
|
|
|
7207
7306
|
}
|
|
7208
7307
|
),
|
|
7209
7308
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7210
|
-
|
|
7309
|
+
Text2,
|
|
7211
7310
|
{
|
|
7212
7311
|
variant: {
|
|
7213
7312
|
base: "content9",
|
|
@@ -7245,10 +7344,10 @@ var TokenSelectAndInput = ({
|
|
|
7245
7344
|
bottom: ["6px", "8px"],
|
|
7246
7345
|
left: 0,
|
|
7247
7346
|
paddingRight: [2, 4],
|
|
7248
|
-
children: !isFrom && !isDepositPlatformToken && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: tokenInfo.isSolana ? solanaWalletAddress && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7347
|
+
children: !isFrom && !isDepositPlatformToken && /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: tokenInfo.isSolana ? solanaWalletAddress && /* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: "content8", children: [
|
|
7249
7348
|
"Balance: ",
|
|
7250
7349
|
displayBalance
|
|
7251
|
-
] }) : address && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7350
|
+
] }) : address && /* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: "content8", children: [
|
|
7252
7351
|
"Balance: ",
|
|
7253
7352
|
displayBalance
|
|
7254
7353
|
] }) })
|
|
@@ -7342,7 +7441,7 @@ var TipsContent = ({
|
|
|
7342
7441
|
const renderFee = (fee) => {
|
|
7343
7442
|
if (fee === "0") {
|
|
7344
7443
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7345
|
-
|
|
7444
|
+
Text2,
|
|
7346
7445
|
{
|
|
7347
7446
|
variant: "content9",
|
|
7348
7447
|
color: "white",
|
|
@@ -7354,7 +7453,7 @@ var TipsContent = ({
|
|
|
7354
7453
|
);
|
|
7355
7454
|
}
|
|
7356
7455
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7357
|
-
|
|
7456
|
+
Text2,
|
|
7358
7457
|
{
|
|
7359
7458
|
variant: {
|
|
7360
7459
|
base: "content9",
|
|
@@ -7379,7 +7478,7 @@ var TipsContent = ({
|
|
|
7379
7478
|
const sif = +swapImpactFee();
|
|
7380
7479
|
if (toAmountToUsd === null) {
|
|
7381
7480
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7382
|
-
|
|
7481
|
+
Text2,
|
|
7383
7482
|
{
|
|
7384
7483
|
variant: {
|
|
7385
7484
|
base: "content9",
|
|
@@ -7392,7 +7491,7 @@ var TipsContent = ({
|
|
|
7392
7491
|
}
|
|
7393
7492
|
if (sif > 0 || sif === 0) {
|
|
7394
7493
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7395
|
-
|
|
7494
|
+
Text2,
|
|
7396
7495
|
{
|
|
7397
7496
|
variant: {
|
|
7398
7497
|
base: "content9",
|
|
@@ -7407,7 +7506,7 @@ var TipsContent = ({
|
|
|
7407
7506
|
);
|
|
7408
7507
|
}
|
|
7409
7508
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7410
|
-
|
|
7509
|
+
Text2,
|
|
7411
7510
|
{
|
|
7412
7511
|
variant: {
|
|
7413
7512
|
base: "content9",
|
|
@@ -7442,7 +7541,7 @@ var TipsContent = ({
|
|
|
7442
7541
|
),
|
|
7443
7542
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
7444
7543
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7445
|
-
|
|
7544
|
+
Text2,
|
|
7446
7545
|
{
|
|
7447
7546
|
variant: {
|
|
7448
7547
|
base: "content9",
|
|
@@ -7456,7 +7555,7 @@ var TipsContent = ({
|
|
|
7456
7555
|
] }),
|
|
7457
7556
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
7458
7557
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7459
|
-
|
|
7558
|
+
Text2,
|
|
7460
7559
|
{
|
|
7461
7560
|
variant: {
|
|
7462
7561
|
base: "content9",
|
|
@@ -7467,7 +7566,7 @@ var TipsContent = ({
|
|
|
7467
7566
|
}
|
|
7468
7567
|
),
|
|
7469
7568
|
points === "0" && !fromTokenInfo.isSolana ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7470
|
-
|
|
7569
|
+
Text2,
|
|
7471
7570
|
{
|
|
7472
7571
|
variant: "content9",
|
|
7473
7572
|
color: "white",
|
|
@@ -7506,7 +7605,7 @@ var TipsContent = ({
|
|
|
7506
7605
|
),
|
|
7507
7606
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
7508
7607
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7509
|
-
|
|
7608
|
+
Text2,
|
|
7510
7609
|
{
|
|
7511
7610
|
variant: {
|
|
7512
7611
|
base: "content9",
|
|
@@ -7520,7 +7619,7 @@ var TipsContent = ({
|
|
|
7520
7619
|
] }),
|
|
7521
7620
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
7522
7621
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7523
|
-
|
|
7622
|
+
Text2,
|
|
7524
7623
|
{
|
|
7525
7624
|
variant: {
|
|
7526
7625
|
base: "content9",
|
|
@@ -7537,7 +7636,7 @@ var TipsContent = ({
|
|
|
7537
7636
|
] }),
|
|
7538
7637
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
7539
7638
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7540
|
-
|
|
7639
|
+
Text2,
|
|
7541
7640
|
{
|
|
7542
7641
|
variant: {
|
|
7543
7642
|
base: "content9",
|
|
@@ -7548,7 +7647,7 @@ var TipsContent = ({
|
|
|
7548
7647
|
}
|
|
7549
7648
|
),
|
|
7550
7649
|
points === "0" && !fromTokenInfo.isSolana ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7551
|
-
|
|
7650
|
+
Text2,
|
|
7552
7651
|
{
|
|
7553
7652
|
variant: "content9",
|
|
7554
7653
|
color: "white",
|
|
@@ -7605,7 +7704,7 @@ var TxInfo = ({
|
|
|
7605
7704
|
const renderPriceImpactPercentage = () => {
|
|
7606
7705
|
if (priceImpact.bridgeFee === "0" && priceImpact.dstGasFee === "0" && priceImpact.swapFee === "0") {
|
|
7607
7706
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7608
|
-
|
|
7707
|
+
Text2,
|
|
7609
7708
|
{
|
|
7610
7709
|
variant: "content9",
|
|
7611
7710
|
color: theme.highlightButtonText,
|
|
@@ -7620,17 +7719,17 @@ var TxInfo = ({
|
|
|
7620
7719
|
const inPrice = Number(fromAmountToUsd.replace(/,/g, ""));
|
|
7621
7720
|
const outPrice = Number(toAmountToUsd.replace(/,/g, ""));
|
|
7622
7721
|
if (outPrice > inPrice) {
|
|
7623
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7722
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.defaultTextColor, children: `+${((outPrice - inPrice) / inPrice * 100).toFixed(2)}%` });
|
|
7624
7723
|
}
|
|
7625
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7724
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.defaultTextColor, children: `-${((inPrice - outPrice) / inPrice * 100).toFixed(2)}%` });
|
|
7626
7725
|
}
|
|
7627
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7726
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.defaultTextColor, children: "-" });
|
|
7628
7727
|
};
|
|
7629
7728
|
const renderSoneiumScore = React5.useMemo(() => {
|
|
7630
7729
|
if (fromTokenInfo.chain_id === 1868 && toTokenInfo.chain_id !== 1868 || fromTokenInfo.chain_id === 1868 && toTokenInfo.chain_id === 1868) {
|
|
7631
7730
|
return /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7632
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7633
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7731
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Soneium Score" }),
|
|
7732
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, children: "+ 1" })
|
|
7634
7733
|
] });
|
|
7635
7734
|
}
|
|
7636
7735
|
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
|
|
@@ -7649,7 +7748,7 @@ var TxInfo = ({
|
|
|
7649
7748
|
alignItems: "center",
|
|
7650
7749
|
children: [
|
|
7651
7750
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7652
|
-
|
|
7751
|
+
Text2,
|
|
7653
7752
|
{
|
|
7654
7753
|
variant: textVariant,
|
|
7655
7754
|
fontSize: ["10px", "12px"],
|
|
@@ -7666,7 +7765,7 @@ var TxInfo = ({
|
|
|
7666
7765
|
margin: "0 2px"
|
|
7667
7766
|
}
|
|
7668
7767
|
),
|
|
7669
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7768
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, fontSize: ["10px", "12px"], children: "Score" })
|
|
7670
7769
|
]
|
|
7671
7770
|
}
|
|
7672
7771
|
);
|
|
@@ -7732,7 +7831,7 @@ var TxInfo = ({
|
|
|
7732
7831
|
] }, index);
|
|
7733
7832
|
}) });
|
|
7734
7833
|
}
|
|
7735
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
7834
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, children: router });
|
|
7736
7835
|
};
|
|
7737
7836
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
7738
7837
|
react.Collapsible.Root,
|
|
@@ -7762,7 +7861,7 @@ var TxInfo = ({
|
|
|
7762
7861
|
h: "14px"
|
|
7763
7862
|
}
|
|
7764
7863
|
),
|
|
7765
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7864
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, whiteSpace: "nowrap", children: isRateReversed ? `1 ${toTokenInfo.symbol} = ${fromAmountInUnit} ${fromTokenInfo.symbol}` : `1 ${fromTokenInfo.symbol} = ${toAmountInUnitStr} ${toTokenInfo.symbol}` })
|
|
7766
7865
|
]
|
|
7767
7866
|
}
|
|
7768
7867
|
),
|
|
@@ -7784,7 +7883,7 @@ var TxInfo = ({
|
|
|
7784
7883
|
/* @__PURE__ */ jsxRuntime.jsx(react.Collapsible.Content, { w: "100%", pb: 1.5, color: theme.defaultTextColor, children: /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { w: "100%", align: "start", fontSize: "xs", gap: 3, children: [
|
|
7785
7884
|
/* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { bg: theme.defaultBgColor, p: 3, borderRadius: "12px", w: "100%", children: [
|
|
7786
7885
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7787
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7886
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Price Impact" }),
|
|
7788
7887
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
7789
7888
|
renderPriceImpactPercentage(),
|
|
7790
7889
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -7814,14 +7913,14 @@ var TxInfo = ({
|
|
|
7814
7913
|
] })
|
|
7815
7914
|
] }),
|
|
7816
7915
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7817
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7818
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7916
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Slippage" }),
|
|
7917
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: textVariant, children: [
|
|
7819
7918
|
formatSlippage(slippage),
|
|
7820
7919
|
"%"
|
|
7821
7920
|
] })
|
|
7822
7921
|
] }),
|
|
7823
7922
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7824
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7923
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Min. Received" }),
|
|
7825
7924
|
/* @__PURE__ */ jsxRuntime.jsx(react.HStack, { gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
7826
7925
|
TokenAmountText,
|
|
7827
7926
|
{
|
|
@@ -7834,10 +7933,10 @@ var TxInfo = ({
|
|
|
7834
7933
|
] }),
|
|
7835
7934
|
/* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { bg: theme.defaultBgColor, p: 3, borderRadius: "12px", w: "100%", children: [
|
|
7836
7935
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7837
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7936
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Estimated Time" }),
|
|
7838
7937
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
7839
7938
|
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { boxSize: "14px", children: /* @__PURE__ */ jsxRuntime.jsx(TimeIcon, {}) }),
|
|
7840
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
7939
|
+
/* @__PURE__ */ jsxRuntime.jsxs(Text2, { variant: textVariant, children: [
|
|
7841
7940
|
"~",
|
|
7842
7941
|
estimatedTime,
|
|
7843
7942
|
"s"
|
|
@@ -7845,11 +7944,11 @@ var TxInfo = ({
|
|
|
7845
7944
|
] })
|
|
7846
7945
|
] }),
|
|
7847
7946
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7848
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7849
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7947
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "Recipient Address" }),
|
|
7948
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, children: sliceAddress(recipient) })
|
|
7850
7949
|
] }),
|
|
7851
7950
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", children: [
|
|
7852
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
7951
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: textVariant, color: theme.weakTextColor, children: "AI Router" }),
|
|
7853
7952
|
renderAiRouter()
|
|
7854
7953
|
] }),
|
|
7855
7954
|
renderSoneiumScore
|
|
@@ -8256,10 +8355,6 @@ var DifferentAddressDialog = ({
|
|
|
8256
8355
|
);
|
|
8257
8356
|
};
|
|
8258
8357
|
var DifferentAddressDialog_default = DifferentAddressDialog;
|
|
8259
|
-
var useRouter = () => ({ push: (_url) => {
|
|
8260
|
-
}, replace: (_url) => {
|
|
8261
|
-
} });
|
|
8262
|
-
var usePathname = () => "";
|
|
8263
8358
|
var FormBody = ({
|
|
8264
8359
|
getQuote,
|
|
8265
8360
|
quoteInfo,
|
|
@@ -8271,6 +8366,7 @@ var FormBody = ({
|
|
|
8271
8366
|
refetchQuote,
|
|
8272
8367
|
config
|
|
8273
8368
|
}) => {
|
|
8369
|
+
const { theme } = useWidgetTheme();
|
|
8274
8370
|
const {
|
|
8275
8371
|
fromAmount,
|
|
8276
8372
|
toAmount,
|
|
@@ -8286,129 +8382,8 @@ var FormBody = ({
|
|
|
8286
8382
|
} = useSwapAndBridgeContextStore();
|
|
8287
8383
|
const { chains } = useChainsStore();
|
|
8288
8384
|
const { tokens } = useTokensStore();
|
|
8289
|
-
const { replace: replaceLink } = useRouter();
|
|
8290
|
-
const pathname = usePathname();
|
|
8291
|
-
const { isTrendingOpen, setTrendingClientReact, setIsTrendingLonger } = { isTrendingOpen: false, setTrendingClientReact: (_v) => {
|
|
8292
|
-
}, setIsTrendingLonger: (_v) => {
|
|
8293
|
-
} };
|
|
8294
|
-
const isMobile = react.useBreakpointValue({ base: true, md: false });
|
|
8295
8385
|
const [isFromHyperChain, setIsFromHyperChain] = React5.useState(false);
|
|
8296
8386
|
const [isToHyperChain, setIsToHyperChain] = React5.useState(false);
|
|
8297
|
-
const updateSearchParams = React5.useCallback(
|
|
8298
|
-
(params) => {
|
|
8299
|
-
if (typeof window === "undefined") return;
|
|
8300
|
-
const searchParams = window?.location?.search;
|
|
8301
|
-
const newParams = new URLSearchParams(searchParams);
|
|
8302
|
-
Object.entries(params).forEach(([key, value]) => {
|
|
8303
|
-
newParams.set(key, value);
|
|
8304
|
-
});
|
|
8305
|
-
const newPath = decodeURIComponent(pathname.replace(/\/+$/, ""));
|
|
8306
|
-
if (tokens && chains && matchesAnyPatternUsingArray(newPath)) {
|
|
8307
|
-
if (toRegex.test(newPath)) {
|
|
8308
|
-
const [exists, chainsInfo2] = findItemByName2(
|
|
8309
|
-
chains || [],
|
|
8310
|
-
newPath.replace("/", "")
|
|
8311
|
-
);
|
|
8312
|
-
if (!exists) return;
|
|
8313
|
-
const foundItem = tokens.find(
|
|
8314
|
-
(item) => item.chain_id === chainsInfo2?.chain_id
|
|
8315
|
-
);
|
|
8316
|
-
if (foundItem) {
|
|
8317
|
-
newParams.set("to_chain", foundItem.chain_id.toString());
|
|
8318
|
-
newParams.set("to_token", foundItem.address.toString());
|
|
8319
|
-
}
|
|
8320
|
-
} else if (toAndTokenRegex.test(newPath)) {
|
|
8321
|
-
const arr = newPath.replace("/", "").split("&");
|
|
8322
|
-
const [exists, chainsInfo2] = findItemByName2(chains, arr[0]);
|
|
8323
|
-
if (!exists) return;
|
|
8324
|
-
const [result, foundItem] = findItemBySymbol2(
|
|
8325
|
-
tokens,
|
|
8326
|
-
arr[1],
|
|
8327
|
-
chainsInfo2?.chain_id
|
|
8328
|
-
);
|
|
8329
|
-
if (!result) return;
|
|
8330
|
-
if (result && foundItem) {
|
|
8331
|
-
newParams.set("to_chain", foundItem.chain_id.toString());
|
|
8332
|
-
newParams.set("to_token", foundItem.address.toString());
|
|
8333
|
-
}
|
|
8334
|
-
} else if (fromRegex.test(newPath)) {
|
|
8335
|
-
const arr = newPath.split("&");
|
|
8336
|
-
const [exists, chainsInfo2] = findItemByName2(chains, arr[1]);
|
|
8337
|
-
if (!exists) return;
|
|
8338
|
-
const foundItem = tokens.find(
|
|
8339
|
-
(item) => item.chain_id === chainsInfo2?.chain_id
|
|
8340
|
-
);
|
|
8341
|
-
if (foundItem) {
|
|
8342
|
-
newParams.set("from_chain", foundItem.chain_id.toString());
|
|
8343
|
-
newParams.set("from_token", foundItem.address.toString());
|
|
8344
|
-
}
|
|
8345
|
-
} else if (fromAndTokenRegex.test(newPath)) {
|
|
8346
|
-
const arr = newPath.replace("/", "").split("&");
|
|
8347
|
-
const [exists, chainsInfo2] = findItemByName2(chains, arr[0]);
|
|
8348
|
-
if (!exists) return;
|
|
8349
|
-
const [result, foundItem] = findItemBySymbol2(
|
|
8350
|
-
tokens,
|
|
8351
|
-
arr[1],
|
|
8352
|
-
chainsInfo2?.chain_id
|
|
8353
|
-
);
|
|
8354
|
-
if (!result) return;
|
|
8355
|
-
if (result && foundItem) {
|
|
8356
|
-
newParams.set("from_chain", foundItem.chain_id.toString());
|
|
8357
|
-
newParams.set("from_token", foundItem.address.toString());
|
|
8358
|
-
}
|
|
8359
|
-
} else if (fromAndToRegex.test(newPath)) {
|
|
8360
|
-
const arr = newPath.split("/");
|
|
8361
|
-
const [resultFrom, fromChainsInfo] = findItemByName2(chains, arr[1]);
|
|
8362
|
-
if (!resultFrom) return;
|
|
8363
|
-
const foundFromItem = tokens.find(
|
|
8364
|
-
(item) => item.chain_id === fromChainsInfo?.chain_id
|
|
8365
|
-
);
|
|
8366
|
-
if (!foundFromItem) return;
|
|
8367
|
-
newParams.set("from_chain", foundFromItem.chain_id.toString());
|
|
8368
|
-
newParams.set("from_token", foundFromItem.address.toString());
|
|
8369
|
-
const [resultTo, toChainsInfo] = findItemByName2(chains, arr[2]);
|
|
8370
|
-
if (!resultTo) return;
|
|
8371
|
-
const foundToItem = tokens.find(
|
|
8372
|
-
(item) => item.chain_id === toChainsInfo?.chain_id
|
|
8373
|
-
);
|
|
8374
|
-
if (!foundToItem) return;
|
|
8375
|
-
newParams.set("to_chain", foundToItem.chain_id.toString());
|
|
8376
|
-
newParams.set("to_token", foundToItem.address.toString());
|
|
8377
|
-
} else if (fromAndTokenAndToAndTokenRegex.test(newPath)) {
|
|
8378
|
-
const arr = newPath.split("/");
|
|
8379
|
-
const arrFrom = arr[1].split("&");
|
|
8380
|
-
const [resultFrom, fromChainsInfo] = findItemByName2(
|
|
8381
|
-
chains,
|
|
8382
|
-
arrFrom[0]
|
|
8383
|
-
);
|
|
8384
|
-
if (!resultFrom) return;
|
|
8385
|
-
const [resultFromToken, fromTokenInfo2] = findItemBySymbol2(
|
|
8386
|
-
tokens,
|
|
8387
|
-
arrFrom[1],
|
|
8388
|
-
fromChainsInfo?.chain_id
|
|
8389
|
-
);
|
|
8390
|
-
if (!resultFromToken) return;
|
|
8391
|
-
const arrTo = arr[2].split("&");
|
|
8392
|
-
const [resultTo, toChainsInfo] = findItemByName2(chains, arrTo[0]);
|
|
8393
|
-
if (!resultTo) return;
|
|
8394
|
-
const [resultToToken, toTokenInfo2] = findItemBySymbol2(
|
|
8395
|
-
tokens,
|
|
8396
|
-
arrTo[1],
|
|
8397
|
-
toChainsInfo?.chain_id
|
|
8398
|
-
);
|
|
8399
|
-
if (!resultToToken) return;
|
|
8400
|
-
if (fromTokenInfo2 && toTokenInfo2) {
|
|
8401
|
-
newParams.set("to_chain", toTokenInfo2.chain_id.toString());
|
|
8402
|
-
newParams.set("to_token", toTokenInfo2.address.toString());
|
|
8403
|
-
newParams.set("from_chain", fromTokenInfo2.chain_id.toString());
|
|
8404
|
-
newParams.set("from_token", fromTokenInfo2.address.toString());
|
|
8405
|
-
}
|
|
8406
|
-
}
|
|
8407
|
-
}
|
|
8408
|
-
replaceLink(`${pathname.replace(pathname, "")}/?${newParams.toString()}`);
|
|
8409
|
-
},
|
|
8410
|
-
[pathname, replaceLink, chains, tokens]
|
|
8411
|
-
);
|
|
8412
8387
|
const [isModalOpen, setIsModalOpen] = React5.useState(false);
|
|
8413
8388
|
const [isDifferentAddressDialogOpen, setIsDifferentAddressDialogOpen] = React5.useState(false);
|
|
8414
8389
|
const [isSelectingFromToken, setIsSelectingFromToken] = React5.useState(false);
|
|
@@ -8432,20 +8407,24 @@ var FormBody = ({
|
|
|
8432
8407
|
address,
|
|
8433
8408
|
isToHyperChain
|
|
8434
8409
|
);
|
|
8435
|
-
const fromTokenBalanceHyper = {
|
|
8410
|
+
const fromTokenBalanceHyper = React5.useMemo(() => ({
|
|
8436
8411
|
decimals: 6,
|
|
8437
8412
|
formatted: fromTokenBalanceHyperBack?.withdrawable,
|
|
8438
8413
|
symbol: "USDC",
|
|
8439
8414
|
value: toBigInt(
|
|
8440
|
-
fromTokenBalanceHyperBack?.withdrawable ? fromTokenBalanceHyperBack?.withdrawable : "0"
|
|
8441
|
-
|
|
8442
|
-
|
|
8415
|
+
fromTokenBalanceHyperBack?.withdrawable ? fromTokenBalanceHyperBack?.withdrawable : "0",
|
|
8416
|
+
6
|
|
8417
|
+
)
|
|
8418
|
+
}), [fromTokenBalanceHyperBack?.withdrawable]);
|
|
8419
|
+
const toTokenBalanceHyper = React5.useMemo(() => ({
|
|
8443
8420
|
decimals: 6,
|
|
8444
8421
|
formatted: toTokenBalanceHyperBack?.withdrawable,
|
|
8445
8422
|
symbol: "USDC",
|
|
8446
8423
|
value: toBigInt(
|
|
8447
|
-
toTokenBalanceHyperBack?.withdrawable ? toTokenBalanceHyperBack?.withdrawable : "0"
|
|
8448
|
-
|
|
8424
|
+
toTokenBalanceHyperBack?.withdrawable ? toTokenBalanceHyperBack?.withdrawable : "0",
|
|
8425
|
+
6
|
|
8426
|
+
)
|
|
8427
|
+
}), [toTokenBalanceHyperBack?.withdrawable]);
|
|
8449
8428
|
React5.useEffect(() => {
|
|
8450
8429
|
if (fromTokenInfo.chain_id === hyperliquidChainId) {
|
|
8451
8430
|
setIsFromHyperChain(true);
|
|
@@ -8615,15 +8594,12 @@ var FormBody = ({
|
|
|
8615
8594
|
}, [tokens]);
|
|
8616
8595
|
const handleSelectToken = React5.useCallback(
|
|
8617
8596
|
(tokenInfo) => {
|
|
8618
|
-
const params = {};
|
|
8619
8597
|
const isTestnetChain = (chainId) => {
|
|
8620
8598
|
const chainInfo = chains?.find((chain) => chain.chain_id === chainId);
|
|
8621
8599
|
return chainInfo?.is_testnet === true;
|
|
8622
8600
|
};
|
|
8623
8601
|
if (isSelectingFromToken) {
|
|
8624
8602
|
setFromTokenInfo(tokenInfo);
|
|
8625
|
-
params.from_chain = tokenInfo.chain_id.toString();
|
|
8626
|
-
params.from_token = tokenInfo.address;
|
|
8627
8603
|
if (isTestnetChain(tokenInfo.chain_id)) {
|
|
8628
8604
|
const isNativeToken = tokenInfo.tags?.includes("native") || tokenInfo.address === viem.zeroAddress;
|
|
8629
8605
|
if (isNativeToken) {
|
|
@@ -8632,8 +8608,6 @@ var FormBody = ({
|
|
|
8632
8608
|
);
|
|
8633
8609
|
if (otherToken) {
|
|
8634
8610
|
setToTokenInfo(otherToken);
|
|
8635
|
-
params.to_chain = otherToken.chain_id.toString();
|
|
8636
|
-
params.to_token = otherToken.address;
|
|
8637
8611
|
}
|
|
8638
8612
|
} else {
|
|
8639
8613
|
const nativeToken = tokens?.find(
|
|
@@ -8641,16 +8615,12 @@ var FormBody = ({
|
|
|
8641
8615
|
);
|
|
8642
8616
|
if (nativeToken && (nativeToken.chain_id !== toTokenInfo?.chain_id || nativeToken.address !== toTokenInfo?.address)) {
|
|
8643
8617
|
setToTokenInfo(nativeToken);
|
|
8644
|
-
params.to_chain = nativeToken.chain_id.toString();
|
|
8645
|
-
params.to_token = nativeToken.address;
|
|
8646
8618
|
} else if (!nativeToken) {
|
|
8647
8619
|
const otherToken = tokens?.find(
|
|
8648
8620
|
(t) => t.chain_id === tokenInfo.chain_id && t.address !== tokenInfo.address
|
|
8649
8621
|
);
|
|
8650
8622
|
if (otherToken) {
|
|
8651
8623
|
setToTokenInfo(otherToken);
|
|
8652
|
-
params.to_chain = otherToken.chain_id.toString();
|
|
8653
|
-
params.to_token = otherToken.address;
|
|
8654
8624
|
}
|
|
8655
8625
|
}
|
|
8656
8626
|
}
|
|
@@ -8661,15 +8631,11 @@ var FormBody = ({
|
|
|
8661
8631
|
);
|
|
8662
8632
|
if (baseEthToken) {
|
|
8663
8633
|
setToTokenInfo(baseEthToken);
|
|
8664
|
-
params.to_chain = baseEthToken.chain_id.toString();
|
|
8665
|
-
params.to_token = baseEthToken.address;
|
|
8666
8634
|
}
|
|
8667
8635
|
}
|
|
8668
8636
|
}
|
|
8669
8637
|
} else {
|
|
8670
8638
|
setToTokenInfo(tokenInfo);
|
|
8671
|
-
params.to_chain = tokenInfo.chain_id.toString();
|
|
8672
|
-
params.to_token = tokenInfo.address;
|
|
8673
8639
|
if (isTestnetChain(tokenInfo.chain_id)) {
|
|
8674
8640
|
const isNativeToken = tokenInfo.tags?.includes("native") || tokenInfo.address === viem.zeroAddress;
|
|
8675
8641
|
if (isNativeToken) {
|
|
@@ -8678,8 +8644,6 @@ var FormBody = ({
|
|
|
8678
8644
|
);
|
|
8679
8645
|
if (otherToken) {
|
|
8680
8646
|
setFromTokenInfo(otherToken);
|
|
8681
|
-
params.from_chain = otherToken.chain_id.toString();
|
|
8682
|
-
params.from_token = otherToken.address;
|
|
8683
8647
|
}
|
|
8684
8648
|
} else {
|
|
8685
8649
|
const nativeToken = tokens?.find(
|
|
@@ -8687,16 +8651,12 @@ var FormBody = ({
|
|
|
8687
8651
|
);
|
|
8688
8652
|
if (nativeToken && (nativeToken.chain_id !== fromTokenInfo?.chain_id || nativeToken.address !== fromTokenInfo?.address)) {
|
|
8689
8653
|
setFromTokenInfo(nativeToken);
|
|
8690
|
-
params.from_chain = nativeToken.chain_id.toString();
|
|
8691
|
-
params.from_token = nativeToken.address;
|
|
8692
8654
|
} else if (!nativeToken) {
|
|
8693
8655
|
const otherToken = tokens?.find(
|
|
8694
8656
|
(t) => t.chain_id === tokenInfo.chain_id && t.address !== tokenInfo.address
|
|
8695
8657
|
);
|
|
8696
8658
|
if (otherToken) {
|
|
8697
8659
|
setFromTokenInfo(otherToken);
|
|
8698
|
-
params.from_chain = otherToken.chain_id.toString();
|
|
8699
|
-
params.from_token = otherToken.address;
|
|
8700
8660
|
}
|
|
8701
8661
|
}
|
|
8702
8662
|
}
|
|
@@ -8707,13 +8667,10 @@ var FormBody = ({
|
|
|
8707
8667
|
);
|
|
8708
8668
|
if (soneiumEthToken) {
|
|
8709
8669
|
setFromTokenInfo(soneiumEthToken);
|
|
8710
|
-
params.from_chain = soneiumEthToken.chain_id.toString();
|
|
8711
|
-
params.from_token = soneiumEthToken.address;
|
|
8712
8670
|
}
|
|
8713
8671
|
}
|
|
8714
8672
|
}
|
|
8715
8673
|
}
|
|
8716
|
-
updateSearchParams(params);
|
|
8717
8674
|
handleCloseModal();
|
|
8718
8675
|
setQuoteInfo(initialQuoteInfo);
|
|
8719
8676
|
saveTokenSelection();
|
|
@@ -8724,7 +8681,6 @@ var FormBody = ({
|
|
|
8724
8681
|
setFromTokenInfo,
|
|
8725
8682
|
setQuoteInfo,
|
|
8726
8683
|
setToTokenInfo,
|
|
8727
|
-
updateSearchParams,
|
|
8728
8684
|
tokens,
|
|
8729
8685
|
fromTokenInfo,
|
|
8730
8686
|
toTokenInfo,
|
|
@@ -8742,12 +8698,6 @@ var FormBody = ({
|
|
|
8742
8698
|
const _fromAmount = toAmount;
|
|
8743
8699
|
setDifferentAddress(void 0);
|
|
8744
8700
|
switchTokens();
|
|
8745
|
-
updateSearchParams({
|
|
8746
|
-
from_chain: _fromTokenInfo.chain_id.toString(),
|
|
8747
|
-
from_token: _fromTokenInfo.address,
|
|
8748
|
-
to_chain: _toTokenInfo.chain_id.toString(),
|
|
8749
|
-
to_token: _toTokenInfo.address
|
|
8750
|
-
});
|
|
8751
8701
|
const _fromAddress = () => {
|
|
8752
8702
|
if (_fromTokenInfo.isSolana) {
|
|
8753
8703
|
return solanaWalletAddress || "";
|
|
@@ -8802,15 +8752,6 @@ var FormBody = ({
|
|
|
8802
8752
|
const handleToAmountChange = (value) => {
|
|
8803
8753
|
setToAmount(value);
|
|
8804
8754
|
};
|
|
8805
|
-
React5.useEffect(() => {
|
|
8806
|
-
document.getElementById("js_main_form");
|
|
8807
|
-
}, [
|
|
8808
|
-
isMobile,
|
|
8809
|
-
isTrendingOpen,
|
|
8810
|
-
setTrendingClientReact,
|
|
8811
|
-
quoteInfo,
|
|
8812
|
-
setIsTrendingLonger
|
|
8813
|
-
]);
|
|
8814
8755
|
React5.useEffect(() => {
|
|
8815
8756
|
const refetchQuote2 = async () => {
|
|
8816
8757
|
await getQuote({
|
|
@@ -8866,7 +8807,7 @@ var FormBody = ({
|
|
|
8866
8807
|
transform: ["translate(-50%, -100%)", "translate(-50%, -82.5%)"],
|
|
8867
8808
|
cursor: toTokenInfo.chain_id === hyperliquidChainId ? "default" : "pointer",
|
|
8868
8809
|
onClick: handleSwitchTokens,
|
|
8869
|
-
color:
|
|
8810
|
+
color: theme.weakTextColor,
|
|
8870
8811
|
boxSize: {
|
|
8871
8812
|
base: "20px",
|
|
8872
8813
|
md: "30px"
|
|
@@ -9111,7 +9052,9 @@ var SlippageSettings = ({ refetchQuote }) => {
|
|
|
9111
9052
|
base: "20px",
|
|
9112
9053
|
md: "22px"
|
|
9113
9054
|
},
|
|
9114
|
-
as: SettingsIcon
|
|
9055
|
+
as: SettingsIcon,
|
|
9056
|
+
position: "relative",
|
|
9057
|
+
top: "-2px"
|
|
9115
9058
|
}
|
|
9116
9059
|
),
|
|
9117
9060
|
showYellowDot && /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -9159,7 +9102,7 @@ var SlippageSettings = ({ refetchQuote }) => {
|
|
|
9159
9102
|
boxShadow: "0px 0px 10px 0px rgba(0, 0, 0, 0.1)"
|
|
9160
9103
|
},
|
|
9161
9104
|
content: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9162
|
-
|
|
9105
|
+
Text2,
|
|
9163
9106
|
{
|
|
9164
9107
|
variant: {
|
|
9165
9108
|
base: "content8",
|
|
@@ -9194,7 +9137,7 @@ var SlippageSettings = ({ refetchQuote }) => {
|
|
|
9194
9137
|
top: 0,
|
|
9195
9138
|
right: 0,
|
|
9196
9139
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9197
|
-
|
|
9140
|
+
Text2,
|
|
9198
9141
|
{
|
|
9199
9142
|
variant: {
|
|
9200
9143
|
base: "content9",
|
|
@@ -9225,7 +9168,7 @@ var SlippageSettings = ({ refetchQuote }) => {
|
|
|
9225
9168
|
borderRadius: "10px",
|
|
9226
9169
|
onClick: () => handlePresetClick(presetValue),
|
|
9227
9170
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9228
|
-
|
|
9171
|
+
Text2,
|
|
9229
9172
|
{
|
|
9230
9173
|
variant: {
|
|
9231
9174
|
base: "content9",
|
|
@@ -9313,7 +9256,7 @@ var SlippageSettings = ({ refetchQuote }) => {
|
|
|
9313
9256
|
}
|
|
9314
9257
|
),
|
|
9315
9258
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9316
|
-
|
|
9259
|
+
Text2,
|
|
9317
9260
|
{
|
|
9318
9261
|
variant: {
|
|
9319
9262
|
base: "content9",
|
|
@@ -9338,10 +9281,92 @@ var FormTop = ({
|
|
|
9338
9281
|
quoteInfo,
|
|
9339
9282
|
clearLockedRequestId,
|
|
9340
9283
|
refreshInterval = 30,
|
|
9341
|
-
hideCountdown = false
|
|
9284
|
+
hideCountdown = false,
|
|
9285
|
+
onHistoryClick
|
|
9342
9286
|
}) => {
|
|
9343
9287
|
const { isLoading: isLoadingRefresh } = useRefreshLoading();
|
|
9344
9288
|
const { theme } = useWidgetTheme();
|
|
9289
|
+
const { disconnect } = wagmi.useDisconnect();
|
|
9290
|
+
const connectors = wagmi.useConnectors();
|
|
9291
|
+
const { connector: wagmiConnector } = wagmi.useAccount();
|
|
9292
|
+
const { removeWallet } = sdkReactCore.useDynamicContext();
|
|
9293
|
+
const userWallets = sdkReactCore.useUserWallets();
|
|
9294
|
+
const {
|
|
9295
|
+
isEthWalletConnected,
|
|
9296
|
+
evmWalletConnectorId,
|
|
9297
|
+
isSolanaWalletConnected,
|
|
9298
|
+
setEvmWalletInfo,
|
|
9299
|
+
setIsEthWalletConnected,
|
|
9300
|
+
setSolanaWalletAddress,
|
|
9301
|
+
setIsSolanaWalletConnected,
|
|
9302
|
+
setIsLoggingOut: setStoreLoggingOut,
|
|
9303
|
+
setLastDisconnectTimestamp
|
|
9304
|
+
} = useWalletConnectedStore();
|
|
9305
|
+
const isAnyWalletConnected = isEthWalletConnected || isSolanaWalletConnected;
|
|
9306
|
+
const [isLogoutDialogOpen, setIsLogoutDialogOpen] = React5.useState(false);
|
|
9307
|
+
const [isLoggingOut, setIsLoggingOut] = React5.useState(false);
|
|
9308
|
+
const handleLogout = React5.useCallback(async () => {
|
|
9309
|
+
setIsLoggingOut(true);
|
|
9310
|
+
setStoreLoggingOut(true);
|
|
9311
|
+
const currentEvmConnectorId = evmWalletConnectorId;
|
|
9312
|
+
try {
|
|
9313
|
+
for (const wallet of userWallets) {
|
|
9314
|
+
const walletId = wallet.id || wallet.walletId;
|
|
9315
|
+
if (walletId) {
|
|
9316
|
+
try {
|
|
9317
|
+
await removeWallet(walletId);
|
|
9318
|
+
} catch (e) {
|
|
9319
|
+
console.error("Dynamic removeWallet failed:", e);
|
|
9320
|
+
}
|
|
9321
|
+
}
|
|
9322
|
+
}
|
|
9323
|
+
const evmConnector = connectors.find((c) => c.id === currentEvmConnectorId);
|
|
9324
|
+
if (evmConnector) {
|
|
9325
|
+
disconnect({ connector: evmConnector });
|
|
9326
|
+
} else if (wagmiConnector) {
|
|
9327
|
+
disconnect({ connector: wagmiConnector });
|
|
9328
|
+
}
|
|
9329
|
+
if (typeof window !== "undefined") {
|
|
9330
|
+
window.localStorage.removeItem("wagmi.cache");
|
|
9331
|
+
window.localStorage.removeItem("wagmi.wallet");
|
|
9332
|
+
window.sessionStorage.removeItem("wagmi.cache");
|
|
9333
|
+
window.sessionStorage.removeItem("wagmi.wallet");
|
|
9334
|
+
const storages = [window.localStorage, window.sessionStorage];
|
|
9335
|
+
storages.forEach((storage) => {
|
|
9336
|
+
const keysToRemove = [];
|
|
9337
|
+
for (let i = 0; i < storage.length; i++) {
|
|
9338
|
+
const key = storage.key(i);
|
|
9339
|
+
if (key && (key.startsWith("dynamic_") || key.includes("_dynamic_"))) {
|
|
9340
|
+
keysToRemove.push(key);
|
|
9341
|
+
}
|
|
9342
|
+
}
|
|
9343
|
+
keysToRemove.forEach((key) => storage.removeItem(key));
|
|
9344
|
+
});
|
|
9345
|
+
}
|
|
9346
|
+
setEvmWalletInfo(null, null);
|
|
9347
|
+
setIsEthWalletConnected(false);
|
|
9348
|
+
setSolanaWalletAddress(null);
|
|
9349
|
+
setIsSolanaWalletConnected(false);
|
|
9350
|
+
setLastDisconnectTimestamp(Date.now());
|
|
9351
|
+
} finally {
|
|
9352
|
+
setStoreLoggingOut(false);
|
|
9353
|
+
setIsLoggingOut(false);
|
|
9354
|
+
setIsLogoutDialogOpen(false);
|
|
9355
|
+
}
|
|
9356
|
+
}, [
|
|
9357
|
+
userWallets,
|
|
9358
|
+
removeWallet,
|
|
9359
|
+
connectors,
|
|
9360
|
+
evmWalletConnectorId,
|
|
9361
|
+
wagmiConnector,
|
|
9362
|
+
disconnect,
|
|
9363
|
+
setEvmWalletInfo,
|
|
9364
|
+
setIsEthWalletConnected,
|
|
9365
|
+
setSolanaWalletAddress,
|
|
9366
|
+
setIsSolanaWalletConnected,
|
|
9367
|
+
setStoreLoggingOut,
|
|
9368
|
+
setLastDisconnectTimestamp
|
|
9369
|
+
]);
|
|
9345
9370
|
const isPolling = Boolean(quoteInfo?.request_id && !isLoadingRefresh);
|
|
9346
9371
|
const [countdown, setCountdown] = React5.useState(refreshInterval);
|
|
9347
9372
|
React5.useEffect(() => {
|
|
@@ -9379,7 +9404,24 @@ var FormTop = ({
|
|
|
9379
9404
|
children: "Bridge & Swap"
|
|
9380
9405
|
}
|
|
9381
9406
|
),
|
|
9382
|
-
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { color: theme.weakTextColor
|
|
9407
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { color: theme.weakTextColor, children: [
|
|
9408
|
+
isAnyWalletConnected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9409
|
+
react.Box,
|
|
9410
|
+
{
|
|
9411
|
+
w: "21px",
|
|
9412
|
+
h: "21px",
|
|
9413
|
+
display: "flex",
|
|
9414
|
+
alignItems: "center",
|
|
9415
|
+
justifyContent: "center",
|
|
9416
|
+
cursor: "pointer",
|
|
9417
|
+
onClick: onHistoryClick,
|
|
9418
|
+
title: "Transaction history",
|
|
9419
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 32 32", children: [
|
|
9420
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { fill: theme.weakTextColor, d: "M14 2l-8 8v20h22v-28h-14zM14 4.8v5.2h-5.2l5.2-5.2zM26 28h-18v-16h8v-8h10v24z" }),
|
|
9421
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { fill: theme.weakTextColor, d: "M10 14h14v2h-14v-2zM10 18h14v2h-14v-2zM10 22h14v2h-14v-2z" })
|
|
9422
|
+
] })
|
|
9423
|
+
}
|
|
9424
|
+
),
|
|
9383
9425
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
9384
9426
|
react.HStack,
|
|
9385
9427
|
{
|
|
@@ -9442,15 +9484,43 @@ var FormTop = ({
|
|
|
9442
9484
|
textAlign: "center",
|
|
9443
9485
|
lineHeight: "28px",
|
|
9444
9486
|
fontSize: "10px",
|
|
9445
|
-
color: countdown <= 10 ?
|
|
9487
|
+
color: countdown <= 10 ? theme.defaultTextColor : theme.highlightTextColor,
|
|
9446
9488
|
children: isPolling && !hideCountdown && countdown > 0 ? countdown : ""
|
|
9447
9489
|
}
|
|
9448
9490
|
)
|
|
9449
9491
|
]
|
|
9450
9492
|
}
|
|
9451
9493
|
),
|
|
9452
|
-
/* @__PURE__ */ jsxRuntime.jsx(SlippageSettings, { refetchQuote })
|
|
9453
|
-
|
|
9494
|
+
/* @__PURE__ */ jsxRuntime.jsx(SlippageSettings, { refetchQuote }),
|
|
9495
|
+
isAnyWalletConnected && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9496
|
+
react.HStack,
|
|
9497
|
+
{
|
|
9498
|
+
w: "30px",
|
|
9499
|
+
h: "30px",
|
|
9500
|
+
display: "flex",
|
|
9501
|
+
alignItems: "center",
|
|
9502
|
+
justifyContent: "center",
|
|
9503
|
+
cursor: "pointer",
|
|
9504
|
+
title: "Disconnect all wallets",
|
|
9505
|
+
onClick: () => setIsLogoutDialogOpen(true),
|
|
9506
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(io.IoMdLogOut, { style: { width: "22px", height: "22px" }, color: theme.weakTextColor })
|
|
9507
|
+
}
|
|
9508
|
+
)
|
|
9509
|
+
] }),
|
|
9510
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.Root, { open: isLogoutDialogOpen, onOpenChange: (e) => setIsLogoutDialogOpen(e.open), children: /* @__PURE__ */ jsxRuntime.jsxs(react.Portal, { children: [
|
|
9511
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.Backdrop, {}),
|
|
9512
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.Positioner, { justifyContent: "center", alignItems: "center", children: /* @__PURE__ */ jsxRuntime.jsxs(react.Dialog.Content, { bgColor: theme.defaultBgColor, color: theme.defaultTextColor, width: ["90vw", "400px"], children: [
|
|
9513
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Dialog.Header, { justifyContent: "center", children: [
|
|
9514
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.Title, { padding: "15px 0", children: "Disconnect Wallet" }),
|
|
9515
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.CloseTrigger, {})
|
|
9516
|
+
] }),
|
|
9517
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.Body, { marginBottom: "20px", children: /* @__PURE__ */ jsxRuntime.jsx(react.Text, { textAlign: "center", padding: ["0 15px", "0 30px"], children: "This operation will disconnect all connected wallets." }) }),
|
|
9518
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.Dialog.Footer, { padding: ["10px 20px 20px"], justifyContent: "center", children: [
|
|
9519
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Dialog.ActionTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsx(react.Button, { variant: "outline", disabled: isLoggingOut, w: "100px", bgColor: theme.normalButtonBg, color: theme.normalButtonText, children: "Cancel" }) }),
|
|
9520
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Button, { bgColor: theme.highlightButtonBg, color: theme.highlightButtonText, onClick: handleLogout, loading: isLoggingOut, w: "100px", children: "Disconnect" })
|
|
9521
|
+
] })
|
|
9522
|
+
] }) })
|
|
9523
|
+
] }) })
|
|
9454
9524
|
] });
|
|
9455
9525
|
};
|
|
9456
9526
|
var Timer = ({ stop, onTick }) => {
|
|
@@ -9497,7 +9567,7 @@ var Timer = ({ stop, onTick }) => {
|
|
|
9497
9567
|
}
|
|
9498
9568
|
}, [stop]);
|
|
9499
9569
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9500
|
-
|
|
9570
|
+
Text2,
|
|
9501
9571
|
{
|
|
9502
9572
|
variant: {
|
|
9503
9573
|
base: "content8",
|
|
@@ -9879,7 +9949,7 @@ var TxState = ({
|
|
|
9879
9949
|
if (isSolanaTransaction && solanaFromTxHash) {
|
|
9880
9950
|
if (solanaStatus === "confirmed") {
|
|
9881
9951
|
return /* @__PURE__ */ jsxRuntime.jsx(react.Link, { href: getSolanaTxLink(solanaFromTxHash), target: "_blank", children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9882
|
-
|
|
9952
|
+
Text2,
|
|
9883
9953
|
{
|
|
9884
9954
|
variant: {
|
|
9885
9955
|
base: "content9",
|
|
@@ -9897,7 +9967,7 @@ var TxState = ({
|
|
|
9897
9967
|
}
|
|
9898
9968
|
if (solanaStatus === "failed") {
|
|
9899
9969
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9900
|
-
|
|
9970
|
+
Text2,
|
|
9901
9971
|
{
|
|
9902
9972
|
variant: {
|
|
9903
9973
|
base: "content9",
|
|
@@ -9909,7 +9979,7 @@ var TxState = ({
|
|
|
9909
9979
|
);
|
|
9910
9980
|
}
|
|
9911
9981
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9912
|
-
|
|
9982
|
+
Text2,
|
|
9913
9983
|
{
|
|
9914
9984
|
variant: {
|
|
9915
9985
|
base: "content9",
|
|
@@ -9927,7 +9997,7 @@ var TxState = ({
|
|
|
9927
9997
|
href: getTxLink(fromTxHash, fromTokenInfo.chain_id),
|
|
9928
9998
|
target: "_blank",
|
|
9929
9999
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9930
|
-
|
|
10000
|
+
Text2,
|
|
9931
10001
|
{
|
|
9932
10002
|
variant: {
|
|
9933
10003
|
base: "content9",
|
|
@@ -9947,7 +10017,7 @@ var TxState = ({
|
|
|
9947
10017
|
}
|
|
9948
10018
|
if (fromTxHash && receiptStatus === "failed" || isFetched) {
|
|
9949
10019
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9950
|
-
|
|
10020
|
+
Text2,
|
|
9951
10021
|
{
|
|
9952
10022
|
variant: {
|
|
9953
10023
|
base: "content9",
|
|
@@ -9960,7 +10030,7 @@ var TxState = ({
|
|
|
9960
10030
|
}
|
|
9961
10031
|
if (isTransactionBlocked) {
|
|
9962
10032
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9963
|
-
|
|
10033
|
+
Text2,
|
|
9964
10034
|
{
|
|
9965
10035
|
variant: {
|
|
9966
10036
|
base: "content9",
|
|
@@ -9972,7 +10042,7 @@ var TxState = ({
|
|
|
9972
10042
|
);
|
|
9973
10043
|
}
|
|
9974
10044
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9975
|
-
|
|
10045
|
+
Text2,
|
|
9976
10046
|
{
|
|
9977
10047
|
variant: {
|
|
9978
10048
|
base: "content9",
|
|
@@ -10122,7 +10192,7 @@ var TxState = ({
|
|
|
10122
10192
|
}
|
|
10123
10193
|
),
|
|
10124
10194
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10125
|
-
|
|
10195
|
+
Text2,
|
|
10126
10196
|
{
|
|
10127
10197
|
variant: {
|
|
10128
10198
|
base: "content8",
|
|
@@ -10134,7 +10204,7 @@ var TxState = ({
|
|
|
10134
10204
|
)
|
|
10135
10205
|
] }),
|
|
10136
10206
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10137
|
-
|
|
10207
|
+
Text2,
|
|
10138
10208
|
{
|
|
10139
10209
|
variant: {
|
|
10140
10210
|
base: "content8",
|
|
@@ -10186,6 +10256,7 @@ var TxState = ({
|
|
|
10186
10256
|
md: "16px"
|
|
10187
10257
|
},
|
|
10188
10258
|
w: "100%",
|
|
10259
|
+
backgroundColor: theme.assistBgColor,
|
|
10189
10260
|
children: /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", gap: 1, children: [
|
|
10190
10261
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10191
10262
|
BoxWithBg,
|
|
@@ -10229,6 +10300,7 @@ var TxState = ({
|
|
|
10229
10300
|
base: "20px",
|
|
10230
10301
|
md: "32px"
|
|
10231
10302
|
},
|
|
10303
|
+
color: theme.weakTextColor,
|
|
10232
10304
|
as: ArrowRightIcon
|
|
10233
10305
|
}
|
|
10234
10306
|
),
|
|
@@ -10275,7 +10347,7 @@ var TxState = ({
|
|
|
10275
10347
|
),
|
|
10276
10348
|
target: "_blank",
|
|
10277
10349
|
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10278
|
-
|
|
10350
|
+
Text2,
|
|
10279
10351
|
{
|
|
10280
10352
|
variant: {
|
|
10281
10353
|
base: "content9",
|
|
@@ -10292,7 +10364,7 @@ var TxState = ({
|
|
|
10292
10364
|
)
|
|
10293
10365
|
}
|
|
10294
10366
|
) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
10295
|
-
|
|
10367
|
+
Text2,
|
|
10296
10368
|
{
|
|
10297
10369
|
variant: {
|
|
10298
10370
|
base: "content9",
|
|
@@ -10326,7 +10398,7 @@ var TxState = ({
|
|
|
10326
10398
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
10327
10399
|
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: DateIcon }),
|
|
10328
10400
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10329
|
-
|
|
10401
|
+
Text2,
|
|
10330
10402
|
{
|
|
10331
10403
|
variant: {
|
|
10332
10404
|
base: "content8",
|
|
@@ -10338,7 +10410,7 @@ var TxState = ({
|
|
|
10338
10410
|
)
|
|
10339
10411
|
] }),
|
|
10340
10412
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10341
|
-
|
|
10413
|
+
Text2,
|
|
10342
10414
|
{
|
|
10343
10415
|
variant: {
|
|
10344
10416
|
base: "content8",
|
|
@@ -10353,7 +10425,7 @@ var TxState = ({
|
|
|
10353
10425
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
10354
10426
|
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: TimeIcon }),
|
|
10355
10427
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10356
|
-
|
|
10428
|
+
Text2,
|
|
10357
10429
|
{
|
|
10358
10430
|
variant: {
|
|
10359
10431
|
base: "content8",
|
|
@@ -10376,7 +10448,7 @@ var TxState = ({
|
|
|
10376
10448
|
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1, children: [
|
|
10377
10449
|
/* @__PURE__ */ jsxRuntime.jsx(react.Icon, { as: MoneyIcon }),
|
|
10378
10450
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10379
|
-
|
|
10451
|
+
Text2,
|
|
10380
10452
|
{
|
|
10381
10453
|
variant: {
|
|
10382
10454
|
base: "content8",
|
|
@@ -10388,7 +10460,7 @@ var TxState = ({
|
|
|
10388
10460
|
)
|
|
10389
10461
|
] }),
|
|
10390
10462
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10391
|
-
|
|
10463
|
+
Text2,
|
|
10392
10464
|
{
|
|
10393
10465
|
variant: {
|
|
10394
10466
|
base: "content8",
|
|
@@ -10409,6 +10481,381 @@ var TxState = ({
|
|
|
10409
10481
|
}
|
|
10410
10482
|
) });
|
|
10411
10483
|
};
|
|
10484
|
+
async function getOrderHistory(address, offset = 0, limit = 4) {
|
|
10485
|
+
const url = `${BASE_API_URL}/v1/orders`;
|
|
10486
|
+
const res = await axios6__default.default.get(url, {
|
|
10487
|
+
params: {
|
|
10488
|
+
address: Array.isArray(address) ? address : [address],
|
|
10489
|
+
offset,
|
|
10490
|
+
limit
|
|
10491
|
+
},
|
|
10492
|
+
paramsSerializer: {
|
|
10493
|
+
indexes: null
|
|
10494
|
+
}
|
|
10495
|
+
});
|
|
10496
|
+
return res.data;
|
|
10497
|
+
}
|
|
10498
|
+
var useOrderHistory = (address, address2, offset, limit) => {
|
|
10499
|
+
const addresses = address && address2 ? [address, address2] : address;
|
|
10500
|
+
return reactQuery.useQuery({
|
|
10501
|
+
queryKey: ["orderHistory", addresses, offset],
|
|
10502
|
+
queryFn: () => addresses ? getOrderHistory(addresses, offset, limit) : Promise.reject("No address provided"),
|
|
10503
|
+
enabled: !!addresses,
|
|
10504
|
+
placeholderData: reactQuery.keepPreviousData,
|
|
10505
|
+
refetchOnWindowFocus: false
|
|
10506
|
+
});
|
|
10507
|
+
};
|
|
10508
|
+
function SuccessIcon() {
|
|
10509
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "16px", h: "16px", borderRadius: "full", bg: "#00CBB3", display: "flex", alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "10", height: "8", viewBox: "0 0 10 8", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 4L3.5 6.5L9 1", stroke: "white", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }) }) });
|
|
10510
|
+
}
|
|
10511
|
+
function ErrorIcon() {
|
|
10512
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "16px", h: "16px", borderRadius: "full", bg: "#FF4267", display: "flex", alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 1L7 7M7 1L1 7", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round" }) }) });
|
|
10513
|
+
}
|
|
10514
|
+
function PendingIcon() {
|
|
10515
|
+
return /* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "16px", h: "16px", borderRadius: "full", bg: "#FFD200", display: "flex", alignItems: "center", justifyContent: "center", children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "8", height: "8", viewBox: "0 0 8 8", fill: "none", children: /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "4", cy: "4", r: "3", stroke: "white", strokeWidth: "1.5" }) }) });
|
|
10516
|
+
}
|
|
10517
|
+
function getStatusIcon(status) {
|
|
10518
|
+
switch (status) {
|
|
10519
|
+
case "Filled":
|
|
10520
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SuccessIcon, {});
|
|
10521
|
+
case "Refund":
|
|
10522
|
+
case "Failed":
|
|
10523
|
+
return /* @__PURE__ */ jsxRuntime.jsx(ErrorIcon, {});
|
|
10524
|
+
case "Open":
|
|
10525
|
+
return /* @__PURE__ */ jsxRuntime.jsx(PendingIcon, {});
|
|
10526
|
+
default:
|
|
10527
|
+
return /* @__PURE__ */ jsxRuntime.jsx(SuccessIcon, {});
|
|
10528
|
+
}
|
|
10529
|
+
}
|
|
10530
|
+
function OrderHistoryItem({ order }) {
|
|
10531
|
+
const { theme } = useWidgetTheme();
|
|
10532
|
+
const fromTokenInfo = order.from_token_info;
|
|
10533
|
+
const toTokenInfo = order.to_token_info;
|
|
10534
|
+
const isSameChainSwap = order.from_chain === order.to_chain;
|
|
10535
|
+
const renderTxLink = (txHash, chainId, label) => {
|
|
10536
|
+
const link = getTxLink(txHash, chainId);
|
|
10537
|
+
if (!link) {
|
|
10538
|
+
return /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content8", color: theme.defaultTextColor, children: sliceAddress(txHash, 6) });
|
|
10539
|
+
}
|
|
10540
|
+
return /* @__PURE__ */ jsxRuntime.jsx("a", { href: link, target: "_blank", rel: "noreferrer", style: { textDecoration: "none" }, children: /* @__PURE__ */ jsxRuntime.jsx(react.HStack, { gap: 1, children: /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content8", color: theme.highlightTextColor, children: sliceAddress(txHash, 6) }) }) });
|
|
10541
|
+
};
|
|
10542
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10543
|
+
react.Box,
|
|
10544
|
+
{
|
|
10545
|
+
w: "100%",
|
|
10546
|
+
borderRadius: "12px",
|
|
10547
|
+
p: "10px 15px",
|
|
10548
|
+
bg: theme.assistBgColor,
|
|
10549
|
+
_hover: { bg: theme.highlightBgColor },
|
|
10550
|
+
transition: "background 0.15s",
|
|
10551
|
+
children: [
|
|
10552
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "center", mb: 2, children: [
|
|
10553
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 1.5, children: [
|
|
10554
|
+
getStatusIcon(isSameChainSwap ? "Filled" : order.status),
|
|
10555
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10556
|
+
Text2,
|
|
10557
|
+
{
|
|
10558
|
+
variant: "content7",
|
|
10559
|
+
color: theme.defaultTextColor || "#15003E",
|
|
10560
|
+
fontWeight: 500,
|
|
10561
|
+
children: isSameChainSwap ? "Filled" : order.status
|
|
10562
|
+
}
|
|
10563
|
+
)
|
|
10564
|
+
] }),
|
|
10565
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content8", color: theme.weakTextColor || "#81728C", children: dateFormatter(order.open_timestamp) })
|
|
10566
|
+
] }),
|
|
10567
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { justify: "space-between", w: "100%", children: [
|
|
10568
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 2, mb: 1.5, children: [
|
|
10569
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "32px", h: "32px", flexShrink: 0, marginRight: "10px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10570
|
+
TokenIconWithNetworkLogo,
|
|
10571
|
+
{
|
|
10572
|
+
w: "100%",
|
|
10573
|
+
h: "100%",
|
|
10574
|
+
tokenInfo: fromTokenInfo
|
|
10575
|
+
}
|
|
10576
|
+
) }),
|
|
10577
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { align: "start", gap: 0.5, flex: 1, w: "80px", children: [
|
|
10578
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10579
|
+
TokenAmountHeading,
|
|
10580
|
+
{
|
|
10581
|
+
amount: new biFraction.Fraction(order.from_amount),
|
|
10582
|
+
decimals: fromTokenInfo?.decimals,
|
|
10583
|
+
suffix: fromTokenInfo?.symbol,
|
|
10584
|
+
variant: "heading12"
|
|
10585
|
+
}
|
|
10586
|
+
),
|
|
10587
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.HStack, { gap: 1, children: renderTxLink(order.open_tx_hash, order.from_chain) })
|
|
10588
|
+
] })
|
|
10589
|
+
] }),
|
|
10590
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.HStack, { justify: "center", my: 0.5, flex: 1, children: /* @__PURE__ */ jsxRuntime.jsx(hi2.HiMiniArrowRight, { color: theme.weakTextColor, width: "30px", height: "30px" }) }),
|
|
10591
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 2, mt: 0, children: [
|
|
10592
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { align: "start", gap: 0.5, flex: 1, w: "80px", children: [
|
|
10593
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10594
|
+
TokenAmountHeading,
|
|
10595
|
+
{
|
|
10596
|
+
amount: new biFraction.Fraction(order.to_amount || order.amount_out || "0"),
|
|
10597
|
+
decimals: toTokenInfo?.decimals,
|
|
10598
|
+
suffix: toTokenInfo?.symbol,
|
|
10599
|
+
variant: "heading12",
|
|
10600
|
+
justifyContent: "flex-end",
|
|
10601
|
+
width: "100%",
|
|
10602
|
+
display: "flex"
|
|
10603
|
+
}
|
|
10604
|
+
),
|
|
10605
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.HStack, { gap: 1, justifyContent: "flex-end", w: "100%", children: isSameChainSwap ? renderTxLink(order.open_tx_hash, order.from_chain) : order.fill_tx_hash ? renderTxLink(order.fill_tx_hash, order.to_chain) : /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content8", color: theme.defaultTextColor, children: "Receiving..." }) })
|
|
10606
|
+
] }),
|
|
10607
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "32px", h: "32px", flexShrink: 0, marginRight: "10px", marginLeft: "3px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10608
|
+
TokenIconWithNetworkLogo,
|
|
10609
|
+
{
|
|
10610
|
+
w: "100%",
|
|
10611
|
+
h: "100%",
|
|
10612
|
+
tokenInfo: toTokenInfo
|
|
10613
|
+
}
|
|
10614
|
+
) })
|
|
10615
|
+
] })
|
|
10616
|
+
] })
|
|
10617
|
+
]
|
|
10618
|
+
}
|
|
10619
|
+
);
|
|
10620
|
+
}
|
|
10621
|
+
var PaginationButton = ({
|
|
10622
|
+
currentPage,
|
|
10623
|
+
page,
|
|
10624
|
+
onClick
|
|
10625
|
+
}) => {
|
|
10626
|
+
const { theme } = useWidgetTheme();
|
|
10627
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10628
|
+
react.Box,
|
|
10629
|
+
{
|
|
10630
|
+
bg: currentPage === page ? theme.highlightButtonBg : "transparent",
|
|
10631
|
+
color: currentPage === page ? theme.highlightButtonText : theme.weakTextColor,
|
|
10632
|
+
w: "24px",
|
|
10633
|
+
h: "24px",
|
|
10634
|
+
borderRadius: "full",
|
|
10635
|
+
display: "flex",
|
|
10636
|
+
alignItems: "center",
|
|
10637
|
+
justifyContent: "center",
|
|
10638
|
+
cursor: "pointer",
|
|
10639
|
+
onClick,
|
|
10640
|
+
fontSize: "12px",
|
|
10641
|
+
fontWeight: 500,
|
|
10642
|
+
transition: "all 0.2s",
|
|
10643
|
+
children: page
|
|
10644
|
+
}
|
|
10645
|
+
);
|
|
10646
|
+
};
|
|
10647
|
+
function OrderHistoryPagination({
|
|
10648
|
+
currentPage,
|
|
10649
|
+
totalPages,
|
|
10650
|
+
setCurrentPage
|
|
10651
|
+
}) {
|
|
10652
|
+
const { theme } = useWidgetTheme();
|
|
10653
|
+
const handlePrevious = () => {
|
|
10654
|
+
if (currentPage > 1) setCurrentPage(currentPage - 1);
|
|
10655
|
+
};
|
|
10656
|
+
const handleNext = () => {
|
|
10657
|
+
if (currentPage < totalPages) setCurrentPage(currentPage + 1);
|
|
10658
|
+
};
|
|
10659
|
+
if (totalPages <= 1) return null;
|
|
10660
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10661
|
+
react.HStack,
|
|
10662
|
+
{
|
|
10663
|
+
justify: "space-between",
|
|
10664
|
+
align: "center",
|
|
10665
|
+
pt: 2,
|
|
10666
|
+
pb: 1,
|
|
10667
|
+
gap: 2,
|
|
10668
|
+
w: "100%",
|
|
10669
|
+
children: [
|
|
10670
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10671
|
+
react.Button,
|
|
10672
|
+
{
|
|
10673
|
+
variant: "plain",
|
|
10674
|
+
onClick: handlePrevious,
|
|
10675
|
+
disabled: currentPage === 1,
|
|
10676
|
+
h: "28px",
|
|
10677
|
+
minW: "28px",
|
|
10678
|
+
p: 0,
|
|
10679
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { gap: 0, color: currentPage === 1 ? theme.disabledButtonText || "#B5B5B5" : theme.defaultTextColor || "#15003E", children: [
|
|
10680
|
+
/* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 20 }),
|
|
10681
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", fontSize: "11px", children: "Prev" })
|
|
10682
|
+
] })
|
|
10683
|
+
}
|
|
10684
|
+
),
|
|
10685
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.HStack, { gap: 1, color: theme.weakTextColor || "#81728C", children: totalPages <= 7 ? Array.from({ length: totalPages }, (_, i) => i + 1).map((page) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
10686
|
+
PaginationButton,
|
|
10687
|
+
{
|
|
10688
|
+
currentPage,
|
|
10689
|
+
page,
|
|
10690
|
+
onClick: () => setCurrentPage(page)
|
|
10691
|
+
},
|
|
10692
|
+
page
|
|
10693
|
+
)) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10694
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10695
|
+
PaginationButton,
|
|
10696
|
+
{
|
|
10697
|
+
currentPage,
|
|
10698
|
+
page: 1,
|
|
10699
|
+
onClick: () => setCurrentPage(1)
|
|
10700
|
+
}
|
|
10701
|
+
),
|
|
10702
|
+
currentPage > 4 && /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", fontSize: "12px", children: "..." }),
|
|
10703
|
+
Array.from({ length: 3 }, (_, i) => {
|
|
10704
|
+
const page = currentPage - 1 + i;
|
|
10705
|
+
if (page > 1 && page < totalPages) {
|
|
10706
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10707
|
+
PaginationButton,
|
|
10708
|
+
{
|
|
10709
|
+
currentPage,
|
|
10710
|
+
page,
|
|
10711
|
+
onClick: () => setCurrentPage(page)
|
|
10712
|
+
},
|
|
10713
|
+
page
|
|
10714
|
+
);
|
|
10715
|
+
}
|
|
10716
|
+
return null;
|
|
10717
|
+
}),
|
|
10718
|
+
currentPage < totalPages - 3 && /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", fontSize: "12px", children: "..." }),
|
|
10719
|
+
totalPages > 1 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10720
|
+
PaginationButton,
|
|
10721
|
+
{
|
|
10722
|
+
currentPage,
|
|
10723
|
+
page: totalPages,
|
|
10724
|
+
onClick: () => setCurrentPage(totalPages)
|
|
10725
|
+
}
|
|
10726
|
+
)
|
|
10727
|
+
] }) }),
|
|
10728
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10729
|
+
react.Button,
|
|
10730
|
+
{
|
|
10731
|
+
variant: "plain",
|
|
10732
|
+
onClick: handleNext,
|
|
10733
|
+
disabled: currentPage === totalPages,
|
|
10734
|
+
h: "28px",
|
|
10735
|
+
minW: "28px",
|
|
10736
|
+
p: 0,
|
|
10737
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10738
|
+
react.HStack,
|
|
10739
|
+
{
|
|
10740
|
+
gap: 0,
|
|
10741
|
+
color: currentPage === totalPages ? theme.disabledButtonText || "#B5B5B5" : theme.defaultTextColor || "#15003E",
|
|
10742
|
+
children: [
|
|
10743
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", fontSize: "11px", children: "Next" }),
|
|
10744
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { transform: "rotate(180deg)", children: /* @__PURE__ */ jsxRuntime.jsx(BackIcon, { size: 20 }) })
|
|
10745
|
+
]
|
|
10746
|
+
}
|
|
10747
|
+
)
|
|
10748
|
+
}
|
|
10749
|
+
)
|
|
10750
|
+
]
|
|
10751
|
+
}
|
|
10752
|
+
);
|
|
10753
|
+
}
|
|
10754
|
+
var PAGE_SIZE = 4;
|
|
10755
|
+
function OrderHistory({ address, solanaAddress, onBack }) {
|
|
10756
|
+
const { theme } = useWidgetTheme();
|
|
10757
|
+
const [currentPage, setCurrentPage] = React5.useState(1);
|
|
10758
|
+
const [offset, setOffset] = React5.useState(0);
|
|
10759
|
+
const { data, isLoading, error, isFetching } = useOrderHistory(
|
|
10760
|
+
address,
|
|
10761
|
+
solanaAddress,
|
|
10762
|
+
offset,
|
|
10763
|
+
PAGE_SIZE
|
|
10764
|
+
);
|
|
10765
|
+
const totalItems = data?.total || 0;
|
|
10766
|
+
const totalPages = Math.ceil(totalItems / PAGE_SIZE);
|
|
10767
|
+
const currentOrders = data?.orders || [];
|
|
10768
|
+
const handlePageChange = (page) => {
|
|
10769
|
+
const newOffset = (page - 1) * PAGE_SIZE;
|
|
10770
|
+
setOffset(newOffset);
|
|
10771
|
+
setCurrentPage(page);
|
|
10772
|
+
};
|
|
10773
|
+
const renderContent = () => {
|
|
10774
|
+
if (isLoading) {
|
|
10775
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { gap: 4, py: 10, align: "center", w: "100%", children: [
|
|
10776
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Spinner, { size: "md", color: theme.highlightTextColor }),
|
|
10777
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", color: theme.weakTextColor || "#81728C", children: "Loading transactions..." })
|
|
10778
|
+
] });
|
|
10779
|
+
}
|
|
10780
|
+
if (error) {
|
|
10781
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
10782
|
+
react.Box,
|
|
10783
|
+
{
|
|
10784
|
+
border: "1px solid #FF4267",
|
|
10785
|
+
borderRadius: "8px",
|
|
10786
|
+
p: 3,
|
|
10787
|
+
my: 4,
|
|
10788
|
+
bg: "#FFF5F5",
|
|
10789
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", color: "#FF4267", textAlign: "center", children: "Failed to load transaction history. Please try again." })
|
|
10790
|
+
}
|
|
10791
|
+
);
|
|
10792
|
+
}
|
|
10793
|
+
if (currentOrders.length === 0) {
|
|
10794
|
+
const emptyColor = theme.defaultBorderColor || "#E0D8E8";
|
|
10795
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { gap: 4, py: 10, align: "center", w: "100%", children: [
|
|
10796
|
+
/* @__PURE__ */ jsxRuntime.jsxs("svg", { width: "48", height: "48", viewBox: "0 0 48 48", fill: "none", children: [
|
|
10797
|
+
/* @__PURE__ */ jsxRuntime.jsx("rect", { x: "4", y: "8", width: "40", height: "32", rx: "4", stroke: emptyColor, strokeWidth: "2", fill: "none" }),
|
|
10798
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 20H32", stroke: emptyColor, strokeWidth: "2", strokeLinecap: "round" }),
|
|
10799
|
+
/* @__PURE__ */ jsxRuntime.jsx("path", { d: "M16 28H28", stroke: emptyColor, strokeWidth: "2", strokeLinecap: "round" })
|
|
10800
|
+
] }),
|
|
10801
|
+
/* @__PURE__ */ jsxRuntime.jsx(Text2, { variant: "content7", color: theme.weakTextColor || "#81728C", textAlign: "center", children: "No transaction history yet" })
|
|
10802
|
+
] });
|
|
10803
|
+
}
|
|
10804
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.Box, { position: "relative", w: "100%", children: [
|
|
10805
|
+
isFetching && /* @__PURE__ */ jsxRuntime.jsx(
|
|
10806
|
+
react.Box,
|
|
10807
|
+
{
|
|
10808
|
+
position: "absolute",
|
|
10809
|
+
zIndex: 10,
|
|
10810
|
+
top: 0,
|
|
10811
|
+
left: 0,
|
|
10812
|
+
right: 0,
|
|
10813
|
+
bottom: 0,
|
|
10814
|
+
display: "flex",
|
|
10815
|
+
alignItems: "center",
|
|
10816
|
+
justifyContent: "center",
|
|
10817
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(react.Spinner, { size: "sm", color: theme.highlightTextColor })
|
|
10818
|
+
}
|
|
10819
|
+
),
|
|
10820
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.VStack, { gap: 2.5, w: "100%", children: currentOrders.map((order) => /* @__PURE__ */ jsxRuntime.jsx(OrderHistoryItem, { order }, order.order_id)) }),
|
|
10821
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10822
|
+
OrderHistoryPagination,
|
|
10823
|
+
{
|
|
10824
|
+
currentPage,
|
|
10825
|
+
totalPages,
|
|
10826
|
+
setCurrentPage: handlePageChange
|
|
10827
|
+
}
|
|
10828
|
+
)
|
|
10829
|
+
] });
|
|
10830
|
+
};
|
|
10831
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(react.VStack, { w: "100%", gap: 4, align: "start", children: [
|
|
10832
|
+
/* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { w: "100%", justify: "space-between", align: "center", children: [
|
|
10833
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10834
|
+
react.Button,
|
|
10835
|
+
{
|
|
10836
|
+
variant: "plain",
|
|
10837
|
+
onClick: onBack,
|
|
10838
|
+
h: "24px",
|
|
10839
|
+
minW: "24px",
|
|
10840
|
+
p: 0,
|
|
10841
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(ri.RiArrowGoBackFill, { color: theme.defaultTextColor, size: 20 })
|
|
10842
|
+
}
|
|
10843
|
+
),
|
|
10844
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10845
|
+
Text2,
|
|
10846
|
+
{
|
|
10847
|
+
color: theme.defaultTextColor,
|
|
10848
|
+
textAlign: "center",
|
|
10849
|
+
fontWeight: 600,
|
|
10850
|
+
fontSize: "16px",
|
|
10851
|
+
children: "Transaction history"
|
|
10852
|
+
}
|
|
10853
|
+
),
|
|
10854
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { w: "24px" })
|
|
10855
|
+
] }),
|
|
10856
|
+
renderContent()
|
|
10857
|
+
] });
|
|
10858
|
+
}
|
|
10412
10859
|
var initialQuoteInfo = {
|
|
10413
10860
|
isFetching: false,
|
|
10414
10861
|
error: null,
|
|
@@ -10457,6 +10904,7 @@ var MainForm = ({ config }) => {
|
|
|
10457
10904
|
const refreshIntervalRef = React5.useRef(30);
|
|
10458
10905
|
const timerRef = React5.useRef(null);
|
|
10459
10906
|
const isQuoteStoppedRef = React5.useRef(false);
|
|
10907
|
+
const [showHistory, setShowHistory] = React5.useState(false);
|
|
10460
10908
|
const { differentAddress } = useDifferentAddressStore();
|
|
10461
10909
|
const { chains, slippagePolicies } = useChainsStore();
|
|
10462
10910
|
const prevAddressRef = React5.useRef(address);
|
|
@@ -10861,6 +11309,16 @@ var MainForm = ({ config }) => {
|
|
|
10861
11309
|
}
|
|
10862
11310
|
) });
|
|
10863
11311
|
}
|
|
11312
|
+
if (showHistory) {
|
|
11313
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11314
|
+
OrderHistory,
|
|
11315
|
+
{
|
|
11316
|
+
address,
|
|
11317
|
+
solanaAddress: solanaWalletAddress || void 0,
|
|
11318
|
+
onBack: () => setShowHistory(false)
|
|
11319
|
+
}
|
|
11320
|
+
);
|
|
11321
|
+
}
|
|
10864
11322
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10865
11323
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10866
11324
|
FormTop,
|
|
@@ -10869,7 +11327,8 @@ var MainForm = ({ config }) => {
|
|
|
10869
11327
|
quoteInfo,
|
|
10870
11328
|
clearLockedRequestId,
|
|
10871
11329
|
refreshInterval,
|
|
10872
|
-
hideCountdown: isETHtoETHBridge(fromTokenInfo, toTokenInfo, chains)
|
|
11330
|
+
hideCountdown: isETHtoETHBridge(fromTokenInfo, toTokenInfo, chains),
|
|
11331
|
+
onHistoryClick: () => setShowHistory(true)
|
|
10873
11332
|
}
|
|
10874
11333
|
),
|
|
10875
11334
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -10940,7 +11399,23 @@ var MainForm = ({ config }) => {
|
|
|
10940
11399
|
src: "https://wheelx.fi/images/success-sprites.png",
|
|
10941
11400
|
alt: "success"
|
|
10942
11401
|
}
|
|
10943
|
-
)
|
|
11402
|
+
),
|
|
11403
|
+
!showHistory && /* @__PURE__ */ jsxRuntime.jsx(react.HStack, { w: "100%", justifyContent: "center", alignItems: "center", opacity: "0.7", fontSize: "13px", children: /* @__PURE__ */ jsxRuntime.jsx("a", { href: "https://wheelx.fi/", target: "_blank", style: { display: "block" }, children: /* @__PURE__ */ jsxRuntime.jsxs(react.HStack, { color: theme.weakTextColor, fontSize: "12px", alignContent: "center", alignItems: "center", w: "100%", children: [
|
|
11404
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { children: "Powered by" }),
|
|
11405
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
11406
|
+
react.Box,
|
|
11407
|
+
{
|
|
11408
|
+
w: "14px",
|
|
11409
|
+
h: "14px",
|
|
11410
|
+
backgroundColor: "currentColor",
|
|
11411
|
+
maskSize: "contain",
|
|
11412
|
+
maskRepeat: "no-repeat",
|
|
11413
|
+
maskPosition: "center center",
|
|
11414
|
+
maskImage: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA/CAMAAACLtlvuAAAAeFBMVEUAAAAVAD4VAD4VAD4VAD4VAD4dAEAUAD8VAD4VAD8VAD4VAD4VAD8XAD8VAD4VAD4VAD4XAD8XAD8VAD4VAD4VAD8VAD8XAD8XAD8VAD4WAD8WAD8WAD8VAD4XAD8XAD8XAD8WAD4VAD4VAD4WAD8WAD8VAD4TAD0voTQoAAAAJnRSTlMA+ufG7bEXnPRh0KlsPuHZj3RDvLZWSiwfl1wwE6MmDAaIfcE6USqlGmwAAAMlSURBVEjHnZbpgqowDEZTFqnsiCgoAm4f7/+GVypMpkivjueXSo6pNWlD/2GfC+E29BU7KKKv5BgK/8vE36deT/L9Czma5D19wRWKLX3CJk1v2gfu4AaGGJ3tLLSJKjw4rYvWEMMEUHijObwVthS5A0Be2t8x1dw9YqQc9soCrocVkSWGQstiIF89XnCM4Y/Z0cqHc6AHSla06ZDvzjE6xc+3boCCiOWRFP4FI5uZXMuxGD24RAsylRYEFFZLM0I8EWvSZeYERX+gFwoH2Ma4klG2AenA2tEC3ZFC2HAN8srpd2fcqaNljv2ZqvlvZndNFFtkQiZE5MFdkGtrcKnpTwb3giNNNsucl2NeaXEiYptldh+IqyFxSZMdsKy7lC33t2MTEedmWbm8Pm9pq3EgzVaycrWy2IoF+YyaZnYGpG2n9plZa+tehWm4IvJjIs2+JnggJfRyLBFSmaVhzUfshoRLDFfy68mBs2p+Ef10uLzJ8/z8m9jPH1hQdkkenrgy1I86/HA2LCklC08cBx8iMJKTjyeJE+c2kyccbQ0P+ImFEZcu09qcTL9fWQ4Nyw5pTG2TqF7O4uVrMrHzUSFqh28KOrJsvU18YPG+6XBRd4nXPavktlKXC5F2boSe2pUT9AK44T4otfbhYepU7oVS4vZT51zGLb1Q4/zbPXBXVZodJ7RALrS8LGu5j7z5ek0VWl6W2eatmZM4nFeXyZv2vMHFNEhk7LKs5fZBBk5oeM26TJXKHfbm8SZJ6mTKyzLn3uNinEnWheTLl2W2E2TZZkHtrgCsGD69uyVd40ziS2dlkDcSit44kyRRjHBRDpDIdzPJjVw40YucAbvo7Uzy8CIHTtb+kksPsGu6v5tJLNWluxiQQbhx5O1+sQHkpRZjmEmmAikzHxACAsC26LSYNb1QWEC8m+9iRZ0pRmffkI4fe4heYj7D7hty+4i+Ieg3qo2aL9zz2F0O6j+7WZ+N5wqsv7oFV/C+t//mRr37+03wF7fpfX0Z6eduPblsZ594a991gxjbdLu1nzeId90GlUQeuHb1Rk7xQDiCm8cax5oHCen8A09+fN7BIX4wAAAAAElFTkSuQmCC)"
|
|
11415
|
+
}
|
|
11416
|
+
),
|
|
11417
|
+
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { children: "WheelX" })
|
|
11418
|
+
] }) }) })
|
|
10944
11419
|
]
|
|
10945
11420
|
}
|
|
10946
11421
|
),
|
|
@@ -10954,39 +11429,7 @@ var MainForm = ({ config }) => {
|
|
|
10954
11429
|
md: "480px"
|
|
10955
11430
|
}
|
|
10956
11431
|
}
|
|
10957
|
-
)
|
|
10958
|
-
/* @__PURE__ */ jsxRuntime.jsx(react.Box, { marginTop: "30px", fontSize: "14px", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
10959
|
-
"a",
|
|
10960
|
-
{
|
|
10961
|
-
href: "https://github.com/wheelx-fi/wheelx-contracts/blob/main/audits/ABDK_WheelX_WheelXContracts_v_1_0.pdf",
|
|
10962
|
-
target: "_blank",
|
|
10963
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10964
|
-
Text,
|
|
10965
|
-
{
|
|
10966
|
-
color: "#5D6270",
|
|
10967
|
-
display: "flex",
|
|
10968
|
-
alignItems: "center",
|
|
10969
|
-
justifyContent: "center",
|
|
10970
|
-
children: [
|
|
10971
|
-
"Audited By",
|
|
10972
|
-
" ",
|
|
10973
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
10974
|
-
react.Image,
|
|
10975
|
-
{
|
|
10976
|
-
display: "block",
|
|
10977
|
-
width: "70px",
|
|
10978
|
-
height: "28px",
|
|
10979
|
-
marginLeft: "2px",
|
|
10980
|
-
objectFit: "contain",
|
|
10981
|
-
src: "https://wheelx.fi/images/adbk.png",
|
|
10982
|
-
alt: ""
|
|
10983
|
-
}
|
|
10984
|
-
)
|
|
10985
|
-
]
|
|
10986
|
-
}
|
|
10987
|
-
)
|
|
10988
|
-
}
|
|
10989
|
-
) })
|
|
11432
|
+
)
|
|
10990
11433
|
] })
|
|
10991
11434
|
}
|
|
10992
11435
|
),
|