@rash2x/bridge-widget 0.6.34 → 0.6.35
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/dist/evaa-bridge.cjs +1 -1
- package/dist/evaa-bridge.mjs +1 -1
- package/dist/{index-DvjGvKnp.cjs → index-BXp-N4UF.cjs} +140 -65
- package/dist/index-BXp-N4UF.cjs.map +1 -0
- package/dist/{index-sU0Z-m5M.js → index-Cd_UnZsU.js} +2 -2
- package/dist/{index-sU0Z-m5M.js.map → index-Cd_UnZsU.js.map} +1 -1
- package/dist/{index-CmbarigA.cjs → index-DJbbVeMD.cjs} +2 -2
- package/dist/{index-CmbarigA.cjs.map → index-DJbbVeMD.cjs.map} +1 -1
- package/dist/{index-CO2PQtBo.js → index-DvKN7Y1C.js} +141 -66
- package/dist/index-DvKN7Y1C.js.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +15 -4
- package/dist/index-CO2PQtBo.js.map +0 -1
- package/dist/index-DvjGvKnp.cjs.map +0 -1
|
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
3
|
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
4
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
5
|
-
import { useEffect, useMemo, createContext, useContext, useState, useCallback, forwardRef, useRef } from "react";
|
|
5
|
+
import { useEffect, useMemo, createContext, useContext, useState, useCallback, forwardRef, useRef, useLayoutEffect } from "react";
|
|
6
6
|
import { initReactI18next, I18nextProvider, useTranslation } from "react-i18next";
|
|
7
7
|
import i18n from "i18next";
|
|
8
8
|
import { Button } from "@/components/ui/button";
|
|
@@ -30,6 +30,7 @@ import { isAddress, formatUnits, parseUnits } from "viem";
|
|
|
30
30
|
import { TronLinkAdapterName } from "@tronweb3/tronwallet-adapters";
|
|
31
31
|
import { TronWeb } from "tronweb";
|
|
32
32
|
import { CardHeader, CardTitle, CardAction, Card, CardContent, CardFooter } from "@/components/ui/card";
|
|
33
|
+
import { FixedSizeList } from "react-window";
|
|
33
34
|
const common$1 = { "connecting": "Connecting…", "initializing": "Initializing...", "loading": "Loading...", "paste": "paste", "close": "Close", "zeroPlaceholder": "0", "nativeToken": "Native Token" };
|
|
34
35
|
const wallets$1 = { "addTonWallet": "Add TON wallet", "addEvmWallet": "Add EVM wallet", "connectTonWallet": "Connect TON wallet", "connectEvmWallet": "Connect EVM wallet", "initializingMetamask": "Initializing MetaMask SDK...", "initializingTronlink": "Initializing TronLink...", "failedToConnectTon": "Failed to connect to TON wallet", "failedToDisconnect": "Failed to disconnect", "metamaskConnectionError": "MetaMask connection error", "failedToConnectMetamask": "Failed to connect to MetaMask", "failedToDisconnectMetamask": "Failed to disconnect from MetaMask", "selectWallet": "Select Wallet", "tonWallets": "TON", "evmWallets": "EVM", "tronWallets": "TRON", "tonconnect": "TonConnect", "metaMask": "WalletConnect", "walletConnect": "WalletConnect", "tronLink": "TronLink", "addTronWallet": "Add Tron wallet", "comingSoon": "Coming Soon", "connected": "CONNECTED", "connectedStatus": "Connected", "disconnect": "Disconnect", "chooseWallet": "Connect wallet", "oneWalletPerEnv": "You can only connect one wallet per environment.", "connect": "Connect", "connectTronWallet": "Connect Tron wallet", "connectWallet": "Connect wallet" };
|
|
35
36
|
const bridge$1 = { "max": "Max", "sourceNetwork": "Source network", "destinationNetwork": "Destination network", "selectToken": "Select token", "selectNetwork": "Select network", "selectSourceNetwork": "Select source network", "selectDestinationNetwork": "Select destination network", "searchToken": "Search token", "myTokens": "My tokens", "allTokens": "All tokens", "search": "Search", "select": "Select", "willChangeSourceChain": "Will change source network", "willChangeSourceNetworkAndToken": "Will change source token", "noBalancesFound": "No balances found.", "noResults": "No results", "tokenNotFound": "We couldn't find a token with that name or symbol. Please try again.", "chainNotFound": "We couldn't find a chain with that name. Please try again.", "sendToAnotherAddress": "Send to another address", "youWillReceive": "You will receive", "anotherAddressPlaceholder": "Address", "addressDoesntMatch": "Address doesn't match the {{network}} network", "checkBeforeTransfer": "Check correctness before transfer" };
|
|
@@ -6714,6 +6715,7 @@ const SettingsModal = ({ isOpen, onClose }) => {
|
|
|
6714
6715
|
}
|
|
6715
6716
|
) });
|
|
6716
6717
|
};
|
|
6718
|
+
const TOKEN_ROW_HEIGHT = 52;
|
|
6717
6719
|
const TokenRow = ({
|
|
6718
6720
|
symbol,
|
|
6719
6721
|
name,
|
|
@@ -6765,17 +6767,21 @@ const TokenSelectModal = ({
|
|
|
6765
6767
|
const [query, setQuery] = useState("");
|
|
6766
6768
|
const [tab, setTab] = useState("my");
|
|
6767
6769
|
const [manualTabSwitch, setManualTabSwitch] = useState(false);
|
|
6770
|
+
const [listHeight, setListHeight] = useState(400);
|
|
6768
6771
|
const { srcAddress } = useAddresses();
|
|
6769
6772
|
const { fromChain, setFromChain, chains } = useChainsStore();
|
|
6770
6773
|
const { assetMatrix, selectedAssetSymbol } = useTokensStore();
|
|
6771
|
-
const { hasAnyWallet } = useConnectedWalletsStore();
|
|
6774
|
+
const { hasAnyWallet, hasWalletForChain } = useConnectedWalletsStore();
|
|
6772
6775
|
const { getBalance, query: balancesQuery } = useBalances(
|
|
6773
6776
|
fromChain?.chainKey,
|
|
6774
6777
|
srcAddress
|
|
6775
6778
|
);
|
|
6779
|
+
const hasSourceWallet = useCallback(() => {
|
|
6780
|
+
return hasWalletForChain(fromChain?.chainKey);
|
|
6781
|
+
}, [hasWalletForChain, fromChain?.chainKey]);
|
|
6776
6782
|
useEffect(() => {
|
|
6777
|
-
if (!
|
|
6778
|
-
}, [
|
|
6783
|
+
if (!hasSourceWallet()) setTab("all");
|
|
6784
|
+
}, [hasSourceWallet]);
|
|
6779
6785
|
const getTokenUsdValue = useCallback(
|
|
6780
6786
|
(symbol, price) => {
|
|
6781
6787
|
const bal = getBalance(symbol);
|
|
@@ -6842,7 +6848,7 @@ const TokenSelectModal = ({
|
|
|
6842
6848
|
getTokenUsdValue
|
|
6843
6849
|
]);
|
|
6844
6850
|
const myTokens = groupedTokens.withBalance;
|
|
6845
|
-
const effectiveTab =
|
|
6851
|
+
const effectiveTab = hasSourceWallet() ? tab === "my" && myTokens.length === 0 && !manualTabSwitch ? "all" : tab : "all";
|
|
6846
6852
|
useEffect(() => {
|
|
6847
6853
|
if (query.trim() !== "" && tab === "my" && myTokens.length === 0 && !manualTabSwitch) {
|
|
6848
6854
|
setTab("all");
|
|
@@ -6869,14 +6875,17 @@ const TokenSelectModal = ({
|
|
|
6869
6875
|
if (!isOpen) resetState();
|
|
6870
6876
|
}, [isOpen, resetState]);
|
|
6871
6877
|
useEffect(() => () => resetState(), [resetState]);
|
|
6872
|
-
const onPick = (
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
|
|
6877
|
-
|
|
6878
|
-
|
|
6879
|
-
|
|
6878
|
+
const onPick = useCallback(
|
|
6879
|
+
(sym, willChangeSrcChain = false) => {
|
|
6880
|
+
if (willChangeSrcChain) {
|
|
6881
|
+
const newChain = findFirstAvailableChain(sym);
|
|
6882
|
+
if (newChain && setFromChain) setFromChain(newChain);
|
|
6883
|
+
}
|
|
6884
|
+
onChangeAsset(sym);
|
|
6885
|
+
handleClose();
|
|
6886
|
+
},
|
|
6887
|
+
[findFirstAvailableChain, handleClose, onChangeAsset, setFromChain]
|
|
6888
|
+
);
|
|
6880
6889
|
const tokensToRender = useMemo(() => {
|
|
6881
6890
|
if (effectiveTab === "my") {
|
|
6882
6891
|
return myTokens.map((token) => ({
|
|
@@ -6904,6 +6913,103 @@ const TokenSelectModal = ({
|
|
|
6904
6913
|
[groupedTokens.willChangeSrcChain]
|
|
6905
6914
|
);
|
|
6906
6915
|
const hasNoResults = tokensToRender.length === 0 && willChangeSrcTokens.length === 0;
|
|
6916
|
+
const virtualItems = useMemo(() => {
|
|
6917
|
+
const items2 = tokensToRender.map(
|
|
6918
|
+
({ token, willChangeSrc }) => ({
|
|
6919
|
+
type: "token",
|
|
6920
|
+
data: { token, willChangeSrc }
|
|
6921
|
+
})
|
|
6922
|
+
);
|
|
6923
|
+
if (effectiveTab === "all" && willChangeSrcTokens.length > 0) {
|
|
6924
|
+
items2.push({
|
|
6925
|
+
type: "header",
|
|
6926
|
+
text: t2("bridge.willChangeSourceChain")
|
|
6927
|
+
});
|
|
6928
|
+
items2.push(
|
|
6929
|
+
...willChangeSrcTokens.map(({ token, willChangeSrc }) => ({
|
|
6930
|
+
type: "token",
|
|
6931
|
+
data: { token, willChangeSrc }
|
|
6932
|
+
}))
|
|
6933
|
+
);
|
|
6934
|
+
}
|
|
6935
|
+
return items2;
|
|
6936
|
+
}, [effectiveTab, tokensToRender, t2, willChangeSrcTokens]);
|
|
6937
|
+
useLayoutEffect(() => {
|
|
6938
|
+
const updateHeight = () => {
|
|
6939
|
+
const container2 = document.getElementById("token-select-list");
|
|
6940
|
+
console.log("CONTAINER", container2);
|
|
6941
|
+
if (!container2) return;
|
|
6942
|
+
const height = container2.getBoundingClientRect().height;
|
|
6943
|
+
if (height > 0) {
|
|
6944
|
+
setListHeight(height);
|
|
6945
|
+
}
|
|
6946
|
+
};
|
|
6947
|
+
updateHeight();
|
|
6948
|
+
const timeout1 = setTimeout(updateHeight, 0);
|
|
6949
|
+
const timeout2 = setTimeout(updateHeight, 300);
|
|
6950
|
+
const resizeObserver = typeof ResizeObserver !== "undefined" ? new ResizeObserver(() => {
|
|
6951
|
+
updateHeight();
|
|
6952
|
+
}) : void 0;
|
|
6953
|
+
const container = document.getElementById("token-select-list");
|
|
6954
|
+
if (container) resizeObserver?.observe(container);
|
|
6955
|
+
return () => {
|
|
6956
|
+
clearTimeout(timeout1);
|
|
6957
|
+
clearTimeout(timeout2);
|
|
6958
|
+
resizeObserver?.disconnect();
|
|
6959
|
+
};
|
|
6960
|
+
}, [isOpen, hasSourceWallet]);
|
|
6961
|
+
const VirtualRow = useCallback(
|
|
6962
|
+
({ index, style }) => {
|
|
6963
|
+
const item = virtualItems[index];
|
|
6964
|
+
if (!item) return null;
|
|
6965
|
+
if (item.type === "header") {
|
|
6966
|
+
return /* @__PURE__ */ jsx(
|
|
6967
|
+
"div",
|
|
6968
|
+
{
|
|
6969
|
+
style: { ...style, height: TOKEN_ROW_HEIGHT },
|
|
6970
|
+
className: "px-5 flex leading-4 text-base py-2 text-muted-foreground uppercase mt-8",
|
|
6971
|
+
children: /* @__PURE__ */ jsx("p", { children: item.text })
|
|
6972
|
+
}
|
|
6973
|
+
);
|
|
6974
|
+
}
|
|
6975
|
+
const { token, willChangeSrc } = item.data;
|
|
6976
|
+
const bal = getBalance(token.symbol);
|
|
6977
|
+
const usd = getTokenUsdValue(token.symbol, token.price?.usd);
|
|
6978
|
+
const isSelected = selectedAssetSymbol?.toUpperCase() === token.symbol.toUpperCase();
|
|
6979
|
+
return /* @__PURE__ */ jsx("div", { style: { ...style, height: TOKEN_ROW_HEIGHT }, children: /* @__PURE__ */ jsx(
|
|
6980
|
+
TokenRow,
|
|
6981
|
+
{
|
|
6982
|
+
symbol: token.symbol,
|
|
6983
|
+
name: token.name,
|
|
6984
|
+
isSelected: !!isSelected,
|
|
6985
|
+
hasAnyWallet: hasAnyWallet(),
|
|
6986
|
+
balance: bal,
|
|
6987
|
+
usdValue: usd,
|
|
6988
|
+
isBalanceLoading: balancesQuery.isLoading || balancesQuery.isFetching,
|
|
6989
|
+
onPick: () => onPick(token.symbol, willChangeSrc)
|
|
6990
|
+
}
|
|
6991
|
+
) });
|
|
6992
|
+
},
|
|
6993
|
+
[
|
|
6994
|
+
balancesQuery.isFetching,
|
|
6995
|
+
balancesQuery.isLoading,
|
|
6996
|
+
getBalance,
|
|
6997
|
+
getTokenUsdValue,
|
|
6998
|
+
hasAnyWallet,
|
|
6999
|
+
onPick,
|
|
7000
|
+
selectedAssetSymbol,
|
|
7001
|
+
virtualItems
|
|
7002
|
+
]
|
|
7003
|
+
);
|
|
7004
|
+
const itemKey = useCallback(
|
|
7005
|
+
(index) => {
|
|
7006
|
+
const item = virtualItems[index];
|
|
7007
|
+
if (!item) return index;
|
|
7008
|
+
if (item.type === "header") return `header-${index}-${item.text}`;
|
|
7009
|
+
return `${effectiveTab}:${item.data.token.symbol}:${item.data.willChangeSrc ? "will" : "on"}`;
|
|
7010
|
+
},
|
|
7011
|
+
[effectiveTab, virtualItems]
|
|
7012
|
+
);
|
|
6907
7013
|
return /* @__PURE__ */ jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && handleClose(), children: /* @__PURE__ */ jsxs(DialogContent, { className: "max-h-[90dvh] h-[90dvh] overflow-hidden flex flex-col p-10 pt-7", children: [
|
|
6908
7014
|
/* @__PURE__ */ jsx(DialogHeader, { className: "text-left", children: /* @__PURE__ */ jsx(DialogTitle, { className: "text-2xl leading-8", children: t2("bridge.selectToken") }) }),
|
|
6909
7015
|
/* @__PURE__ */ jsx(
|
|
@@ -6914,11 +7020,11 @@ const TokenSelectModal = ({
|
|
|
6914
7020
|
onChange: setQuery
|
|
6915
7021
|
}
|
|
6916
7022
|
),
|
|
6917
|
-
|
|
6918
|
-
|
|
7023
|
+
hasSourceWallet() && /* @__PURE__ */ jsxs("div", { className: "flex gap-2", children: [
|
|
7024
|
+
/* @__PURE__ */ jsx(
|
|
6919
7025
|
Button,
|
|
6920
7026
|
{
|
|
6921
|
-
variant:
|
|
7027
|
+
variant: effectiveTab === "my" ? "default" : "ghost",
|
|
6922
7028
|
onClick: () => {
|
|
6923
7029
|
setTab("my");
|
|
6924
7030
|
setManualTabSwitch(true);
|
|
@@ -6926,7 +7032,7 @@ const TokenSelectModal = ({
|
|
|
6926
7032
|
size: "sm",
|
|
6927
7033
|
className: cn$2(
|
|
6928
7034
|
"px-4 cursor-pointer",
|
|
6929
|
-
|
|
7035
|
+
effectiveTab !== "my" && "bg-muted hover:bg-accent"
|
|
6930
7036
|
),
|
|
6931
7037
|
children: t2("bridge.myTokens")
|
|
6932
7038
|
}
|
|
@@ -6934,7 +7040,7 @@ const TokenSelectModal = ({
|
|
|
6934
7040
|
/* @__PURE__ */ jsx(
|
|
6935
7041
|
Button,
|
|
6936
7042
|
{
|
|
6937
|
-
variant:
|
|
7043
|
+
variant: effectiveTab === "all" ? "default" : "ghost",
|
|
6938
7044
|
onClick: () => {
|
|
6939
7045
|
setTab("all");
|
|
6940
7046
|
setManualTabSwitch(true);
|
|
@@ -6942,58 +7048,27 @@ const TokenSelectModal = ({
|
|
|
6942
7048
|
size: "sm",
|
|
6943
7049
|
className: cn$2(
|
|
6944
7050
|
"px-4 cursor-pointer",
|
|
6945
|
-
|
|
7051
|
+
effectiveTab !== "all" && "bg-muted hover:bg-accent"
|
|
6946
7052
|
),
|
|
6947
7053
|
children: t2("bridge.allTokens")
|
|
6948
7054
|
}
|
|
6949
7055
|
)
|
|
6950
7056
|
] }),
|
|
6951
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1
|
|
7057
|
+
/* @__PURE__ */ jsx("div", { id: "token-select-list", className: "flex-1 -mx-5 min-h-0", children: hasNoResults ? /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground px-12 py-2 h-28 flex items-center justify-center text-center", children: t2("bridge.tokenNotFound") }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6952
7058
|
effectiveTab === "my" && myTokens.length === 0 && /* @__PURE__ */ jsx("p", { className: "leading-4 px-5 text-base text-muted-foreground uppercase py-2", children: t2("bridge.noBalancesFound") }),
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
6964
|
-
|
|
6965
|
-
|
|
6966
|
-
isBalanceLoading: balancesQuery.isLoading || balancesQuery.isFetching,
|
|
6967
|
-
onPick: () => onPick(token.symbol, willChangeSrc)
|
|
6968
|
-
},
|
|
6969
|
-
`${effectiveTab}:${token.symbol}`
|
|
6970
|
-
);
|
|
6971
|
-
}),
|
|
6972
|
-
effectiveTab === "all" && willChangeSrcTokens.length > 0 && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
6973
|
-
/* @__PURE__ */ jsx("div", { className: "px-5 flex leading-4 text-base py-2 text-muted-foreground uppercase mt-8", children: /* @__PURE__ */ jsx("p", { children: t2("bridge.willChangeSourceChain") }) }),
|
|
6974
|
-
willChangeSrcTokens.map(({ token, willChangeSrc }) => {
|
|
6975
|
-
const bal = getBalance(token.symbol);
|
|
6976
|
-
const usd = getTokenUsdValue(
|
|
6977
|
-
token.symbol,
|
|
6978
|
-
token.price?.usd
|
|
6979
|
-
);
|
|
6980
|
-
const isSelected = selectedAssetSymbol?.toUpperCase() === token.symbol.toUpperCase();
|
|
6981
|
-
return /* @__PURE__ */ jsx(
|
|
6982
|
-
TokenRow,
|
|
6983
|
-
{
|
|
6984
|
-
symbol: token.symbol,
|
|
6985
|
-
name: token.name,
|
|
6986
|
-
isSelected: !!isSelected,
|
|
6987
|
-
hasAnyWallet: hasAnyWallet(),
|
|
6988
|
-
balance: bal,
|
|
6989
|
-
usdValue: usd,
|
|
6990
|
-
isBalanceLoading: balancesQuery.isLoading || balancesQuery.isFetching,
|
|
6991
|
-
onPick: () => onPick(token.symbol, willChangeSrc)
|
|
6992
|
-
},
|
|
6993
|
-
`will:${token.symbol}`
|
|
6994
|
-
);
|
|
6995
|
-
})
|
|
6996
|
-
] })
|
|
7059
|
+
/* @__PURE__ */ jsx(
|
|
7060
|
+
FixedSizeList,
|
|
7061
|
+
{
|
|
7062
|
+
height: listHeight,
|
|
7063
|
+
itemCount: virtualItems.length,
|
|
7064
|
+
itemSize: TOKEN_ROW_HEIGHT,
|
|
7065
|
+
width: "100%",
|
|
7066
|
+
itemKey,
|
|
7067
|
+
className: "[&::-webkit-scrollbar]:w-1 [&::-webkit-scrollbar-track]:bg-transparent [&::-webkit-scrollbar-thumb]:bg-muted-foreground/20 [&::-webkit-scrollbar-thumb]:rounded-full hover:[&::-webkit-scrollbar-thumb]:bg-muted-foreground/30",
|
|
7068
|
+
overscanCount: 5,
|
|
7069
|
+
children: VirtualRow
|
|
7070
|
+
}
|
|
7071
|
+
)
|
|
6997
7072
|
] }) })
|
|
6998
7073
|
] }) });
|
|
6999
7074
|
};
|
|
@@ -25839,7 +25914,7 @@ class WalletConnectModal {
|
|
|
25839
25914
|
}
|
|
25840
25915
|
async initUi() {
|
|
25841
25916
|
if (typeof window !== "undefined") {
|
|
25842
|
-
await import("./index-
|
|
25917
|
+
await import("./index-Cd_UnZsU.js");
|
|
25843
25918
|
const modal = document.createElement("wcm-modal");
|
|
25844
25919
|
document.body.insertAdjacentElement("beforeend", modal);
|
|
25845
25920
|
OptionsCtrl.setIsUiLoaded(true);
|
|
@@ -26563,4 +26638,4 @@ export {
|
|
|
26563
26638
|
getQuoteFees as y,
|
|
26564
26639
|
calculateMinReceived as z
|
|
26565
26640
|
};
|
|
26566
|
-
//# sourceMappingURL=index-
|
|
26641
|
+
//# sourceMappingURL=index-DvKN7Y1C.js.map
|