@bze/bze-ui-kit 1.0.12 → 1.0.14
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/index.js +143 -111
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -38
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3616,34 +3616,34 @@ var registerBzeEncoders = (client) => {
|
|
|
3616
3616
|
|
|
3617
3617
|
// src/hooks/useSigningClient.ts
|
|
3618
3618
|
var useSigningClient = ({ chainName }) => {
|
|
3619
|
-
const { getSigningClient, signingClientError, wallet, chain } = (0, import_react4.useChain)(chainName != null ? chainName : getChainName());
|
|
3619
|
+
const { getSigningClient, signingClientError, wallet, chain, address } = (0, import_react4.useChain)(chainName != null ? chainName : getChainName());
|
|
3620
3620
|
const [signingClient, setSigningClient] = (0, import_react3.useState)(null);
|
|
3621
3621
|
const [isSigningClientReady, setIsSigningClientReady] = (0, import_react3.useState)(false);
|
|
3622
|
-
const
|
|
3622
|
+
const initializedForAddress = (0, import_react3.useRef)(null);
|
|
3623
3623
|
const createSigningClient = (0, import_react3.useCallback)(async () => {
|
|
3624
3624
|
return getSigningClient();
|
|
3625
3625
|
}, [getSigningClient]);
|
|
3626
3626
|
(0, import_react3.useEffect)(() => {
|
|
3627
|
-
if (!wallet || !chain) {
|
|
3628
|
-
if (
|
|
3627
|
+
if (!wallet || !chain || !address) {
|
|
3628
|
+
if (initializedForAddress.current !== null) {
|
|
3629
3629
|
setSigningClient(null);
|
|
3630
3630
|
setIsSigningClientReady(false);
|
|
3631
|
-
|
|
3631
|
+
initializedForAddress.current = null;
|
|
3632
3632
|
}
|
|
3633
3633
|
return;
|
|
3634
3634
|
}
|
|
3635
|
-
if (
|
|
3635
|
+
if (initializedForAddress.current === address) return;
|
|
3636
3636
|
const load = async () => {
|
|
3637
3637
|
const client = await createSigningClient();
|
|
3638
3638
|
if (client) {
|
|
3639
3639
|
registerBzeEncoders(client);
|
|
3640
3640
|
setSigningClient(client);
|
|
3641
3641
|
setIsSigningClientReady(true);
|
|
3642
|
-
|
|
3642
|
+
initializedForAddress.current = address;
|
|
3643
3643
|
}
|
|
3644
3644
|
};
|
|
3645
3645
|
load();
|
|
3646
|
-
}, [wallet, chain, createSigningClient]);
|
|
3646
|
+
}, [wallet, chain, address, createSigningClient]);
|
|
3647
3647
|
return {
|
|
3648
3648
|
signingClientError,
|
|
3649
3649
|
signingClient,
|
|
@@ -3652,15 +3652,37 @@ var useSigningClient = ({ chainName }) => {
|
|
|
3652
3652
|
};
|
|
3653
3653
|
|
|
3654
3654
|
// src/hooks/useWalletHealthCheck.ts
|
|
3655
|
-
var
|
|
3656
|
-
var
|
|
3655
|
+
var import_react6 = require("react");
|
|
3656
|
+
var import_react7 = require("@interchain-kit/react");
|
|
3657
3657
|
var import_core = require("@interchain-kit/core");
|
|
3658
|
+
|
|
3659
|
+
// src/components/toaster.tsx
|
|
3660
|
+
var import_react5 = require("@chakra-ui/react");
|
|
3661
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
3662
|
+
var toaster = (0, import_react5.createToaster)({
|
|
3663
|
+
placement: "top-end",
|
|
3664
|
+
pauseOnPageIdle: true
|
|
3665
|
+
});
|
|
3666
|
+
var Toaster = () => {
|
|
3667
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toaster, { toaster, insetInline: { mdDown: "4" }, children: (toast) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react5.Toast.Root, { width: { md: "sm" }, children: [
|
|
3668
|
+
toast.type === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Spinner, { size: "sm", color: "blue.solid" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toast.Indicator, {}),
|
|
3669
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react5.Stack, { gap: "1", flex: "1", maxWidth: "100%", children: [
|
|
3670
|
+
toast.title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toast.Title, { children: toast.title }),
|
|
3671
|
+
toast.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toast.Description, { children: toast.description })
|
|
3672
|
+
] }),
|
|
3673
|
+
toast.action && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toast.ActionTrigger, { children: toast.action.label }),
|
|
3674
|
+
toast.closable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react5.Toast.CloseTrigger, {})
|
|
3675
|
+
] }) }) });
|
|
3676
|
+
};
|
|
3677
|
+
|
|
3678
|
+
// src/hooks/useWalletHealthCheck.ts
|
|
3658
3679
|
var SIGNING_CLIENT_TIMEOUT_MS = 5e3;
|
|
3659
3680
|
var useWalletHealthCheck = (chainName) => {
|
|
3660
|
-
const { status, getSigningClient, disconnect } = (0,
|
|
3661
|
-
(0,
|
|
3681
|
+
const { status, getSigningClient, disconnect, address } = (0, import_react7.useChain)(chainName != null ? chainName : getChainName());
|
|
3682
|
+
(0, import_react6.useEffect)(() => {
|
|
3662
3683
|
if (status !== import_core.WalletState.Connected) return;
|
|
3663
3684
|
const validate = async () => {
|
|
3685
|
+
var _a2;
|
|
3664
3686
|
try {
|
|
3665
3687
|
const client = await Promise.race([
|
|
3666
3688
|
getSigningClient(),
|
|
@@ -3669,9 +3691,40 @@ var useWalletHealthCheck = (chainName) => {
|
|
|
3669
3691
|
)
|
|
3670
3692
|
]);
|
|
3671
3693
|
if (!client) {
|
|
3694
|
+
const msg = "[useWalletHealthCheck] Signing client unavailable or timed out \u2014 wallet may be locked. Disconnecting.";
|
|
3695
|
+
console.error(msg);
|
|
3696
|
+
toaster.create({
|
|
3697
|
+
title: "Wallet disconnected",
|
|
3698
|
+
description: "Could not reach your wallet extension. Please reconnect.",
|
|
3699
|
+
type: "error",
|
|
3700
|
+
duration: 8e3,
|
|
3701
|
+
closable: true
|
|
3702
|
+
});
|
|
3672
3703
|
disconnect();
|
|
3704
|
+
return;
|
|
3673
3705
|
}
|
|
3674
|
-
|
|
3706
|
+
const accounts = await ((_a2 = client.getAccounts) == null ? void 0 : _a2.call(client));
|
|
3707
|
+
if ((accounts == null ? void 0 : accounts.length) > 0 && accounts[0].address !== address) {
|
|
3708
|
+
const msg = `[useWalletHealthCheck] Address mismatch \u2014 interchain-kit cached "${address}" but signing client reports "${accounts[0].address}". Wallet was likely switched outside the UI. Disconnecting.`;
|
|
3709
|
+
console.error(msg);
|
|
3710
|
+
toaster.create({
|
|
3711
|
+
title: "Wallet account changed",
|
|
3712
|
+
description: "Your wallet account changed since your last visit. Please reconnect.",
|
|
3713
|
+
type: "warning",
|
|
3714
|
+
duration: 8e3,
|
|
3715
|
+
closable: true
|
|
3716
|
+
});
|
|
3717
|
+
disconnect();
|
|
3718
|
+
}
|
|
3719
|
+
} catch (err) {
|
|
3720
|
+
console.error("[useWalletHealthCheck] Error validating wallet connection:", err);
|
|
3721
|
+
toaster.create({
|
|
3722
|
+
title: "Wallet connection error",
|
|
3723
|
+
description: "Could not verify your wallet connection. Please reconnect.",
|
|
3724
|
+
type: "error",
|
|
3725
|
+
duration: 8e3,
|
|
3726
|
+
closable: true
|
|
3727
|
+
});
|
|
3675
3728
|
disconnect();
|
|
3676
3729
|
}
|
|
3677
3730
|
};
|
|
@@ -3680,12 +3733,12 @@ var useWalletHealthCheck = (chainName) => {
|
|
|
3680
3733
|
};
|
|
3681
3734
|
|
|
3682
3735
|
// src/hooks/usePrices.ts
|
|
3683
|
-
var
|
|
3736
|
+
var import_react8 = require("react");
|
|
3684
3737
|
function useAssetPrice(denom) {
|
|
3685
3738
|
const { usdPricesMap, marketsDataMap, isLoadingPrices } = useAssetsContext();
|
|
3686
|
-
const usdDenom = (0,
|
|
3687
|
-
const bzeDenom = (0,
|
|
3688
|
-
const change = (0,
|
|
3739
|
+
const usdDenom = (0, import_react8.useMemo)(() => getUSDCDenom(), []);
|
|
3740
|
+
const bzeDenom = (0, import_react8.useMemo)(() => getChainNativeAssetDenom(), []);
|
|
3741
|
+
const change = (0, import_react8.useMemo)(() => {
|
|
3689
3742
|
const marketData = marketsDataMap.get(createMarketId(denom, usdDenom));
|
|
3690
3743
|
if (marketData) {
|
|
3691
3744
|
return marketData.change;
|
|
@@ -3696,20 +3749,20 @@ function useAssetPrice(denom) {
|
|
|
3696
3749
|
}
|
|
3697
3750
|
return 0;
|
|
3698
3751
|
}, [marketsDataMap, denom, usdDenom, bzeDenom]);
|
|
3699
|
-
const price = (0,
|
|
3752
|
+
const price = (0, import_react8.useMemo)(() => {
|
|
3700
3753
|
const zeroBN = toBigNumber(0);
|
|
3701
3754
|
if (denom === "") return zeroBN;
|
|
3702
3755
|
if (denom === usdDenom) return toBigNumber(1);
|
|
3703
3756
|
return usdPricesMap.get(denom) || zeroBN;
|
|
3704
3757
|
}, [usdPricesMap, denom, usdDenom]);
|
|
3705
|
-
const totalUsdValue = (0,
|
|
3758
|
+
const totalUsdValue = (0, import_react8.useCallback)((amount) => {
|
|
3706
3759
|
return price.multipliedBy(amount);
|
|
3707
3760
|
}, [price]);
|
|
3708
|
-
const uAmountUsdValue = (0,
|
|
3761
|
+
const uAmountUsdValue = (0, import_react8.useCallback)((amount, decimals) => {
|
|
3709
3762
|
return totalUsdValue(uAmountToBigNumberAmount(amount, decimals));
|
|
3710
3763
|
}, [totalUsdValue]);
|
|
3711
|
-
const isUSDC = (0,
|
|
3712
|
-
const hasPrice = (0,
|
|
3764
|
+
const isUSDC = (0, import_react8.useMemo)(() => denom === usdDenom, [denom, usdDenom]);
|
|
3765
|
+
const hasPrice = (0, import_react8.useMemo)(() => price.gt(0), [price]);
|
|
3713
3766
|
return {
|
|
3714
3767
|
price,
|
|
3715
3768
|
change,
|
|
@@ -3722,36 +3775,36 @@ function useAssetPrice(denom) {
|
|
|
3722
3775
|
}
|
|
3723
3776
|
|
|
3724
3777
|
// src/hooks/useSettings.ts
|
|
3725
|
-
var
|
|
3778
|
+
var import_react9 = require("react");
|
|
3726
3779
|
function useSettings() {
|
|
3727
|
-
const [settings, setSettingsState] = (0,
|
|
3728
|
-
const [isLoaded, setIsLoaded] = (0,
|
|
3729
|
-
(0,
|
|
3780
|
+
const [settings, setSettingsState] = (0, import_react9.useState)(DEFAULT_SETTINGS);
|
|
3781
|
+
const [isLoaded, setIsLoaded] = (0, import_react9.useState)(false);
|
|
3782
|
+
(0, import_react9.useEffect)(() => {
|
|
3730
3783
|
setSettingsState(getSettings());
|
|
3731
3784
|
setIsLoaded(true);
|
|
3732
3785
|
}, []);
|
|
3733
|
-
const saveSettings = (0,
|
|
3786
|
+
const saveSettings = (0, import_react9.useCallback)((newSettings) => {
|
|
3734
3787
|
setSettings(newSettings);
|
|
3735
3788
|
setSettingsState(newSettings);
|
|
3736
3789
|
return true;
|
|
3737
3790
|
}, []);
|
|
3738
|
-
const updateEndpoints = (0,
|
|
3791
|
+
const updateEndpoints = (0, import_react9.useCallback)((endpoints) => {
|
|
3739
3792
|
const newSettings = __spreadProps(__spreadValues({}, settings), { endpoints });
|
|
3740
3793
|
return saveSettings(newSettings);
|
|
3741
3794
|
}, [settings, saveSettings]);
|
|
3742
|
-
const updatePreferredFeeDenom = (0,
|
|
3795
|
+
const updatePreferredFeeDenom = (0, import_react9.useCallback)((preferredFeeDenom) => {
|
|
3743
3796
|
const newSettings = __spreadProps(__spreadValues({}, settings), { preferredFeeDenom });
|
|
3744
3797
|
return saveSettings(newSettings);
|
|
3745
3798
|
}, [settings, saveSettings]);
|
|
3746
|
-
const resetToDefaults = (0,
|
|
3799
|
+
const resetToDefaults = (0, import_react9.useCallback)(() => {
|
|
3747
3800
|
saveSettings(DEFAULT_SETTINGS);
|
|
3748
3801
|
return true;
|
|
3749
3802
|
}, [saveSettings]);
|
|
3750
|
-
const getEndpoints = (0,
|
|
3803
|
+
const getEndpoints = (0, import_react9.useCallback)(() => {
|
|
3751
3804
|
return settings.endpoints;
|
|
3752
3805
|
}, [settings.endpoints]);
|
|
3753
|
-
const defaultSettings = (0,
|
|
3754
|
-
const feeDenom = (0,
|
|
3806
|
+
const defaultSettings = (0, import_react9.useMemo)(() => DEFAULT_SETTINGS, []);
|
|
3807
|
+
const feeDenom = (0, import_react9.useMemo)(() => settings.preferredFeeDenom || getChainNativeAssetDenom(), [settings.preferredFeeDenom]);
|
|
3755
3808
|
return {
|
|
3756
3809
|
settings,
|
|
3757
3810
|
isLoaded,
|
|
@@ -3767,14 +3820,14 @@ function useSettings() {
|
|
|
3767
3820
|
|
|
3768
3821
|
// src/hooks/useBalances.ts
|
|
3769
3822
|
var import_bignumber8 = __toESM(require("bignumber.js"));
|
|
3770
|
-
var
|
|
3823
|
+
var import_react10 = require("react");
|
|
3771
3824
|
function useBalances() {
|
|
3772
3825
|
const { balancesMap, isLoading, assetsMap, usdPricesMap } = useAssetsContext();
|
|
3773
|
-
const balances = (0,
|
|
3774
|
-
const getBalanceByDenom = (0,
|
|
3826
|
+
const balances = (0, import_react10.useMemo)(() => Array.from(balancesMap.values()), [balancesMap]);
|
|
3827
|
+
const getBalanceByDenom = (0, import_react10.useCallback)((denom) => {
|
|
3775
3828
|
return balancesMap.get(denom) || { denom, amount: (0, import_bignumber8.default)(0) };
|
|
3776
3829
|
}, [balancesMap]);
|
|
3777
|
-
const assetsBalances = (0,
|
|
3830
|
+
const assetsBalances = (0, import_react10.useMemo)(() => {
|
|
3778
3831
|
const result = [];
|
|
3779
3832
|
balances.map((bal) => {
|
|
3780
3833
|
const asset = assetsMap.get(bal.denom);
|
|
@@ -3804,14 +3857,14 @@ function useBalances() {
|
|
|
3804
3857
|
}
|
|
3805
3858
|
function useBalance(denom) {
|
|
3806
3859
|
const { balancesMap, isLoading } = useAssetsContext();
|
|
3807
|
-
const balance = (0,
|
|
3860
|
+
const balance = (0, import_react10.useMemo)(
|
|
3808
3861
|
() => balancesMap.get(denom) || {
|
|
3809
3862
|
denom,
|
|
3810
3863
|
amount: (0, import_bignumber8.default)(0)
|
|
3811
3864
|
},
|
|
3812
3865
|
[balancesMap, denom]
|
|
3813
3866
|
);
|
|
3814
|
-
const hasAmount = (0,
|
|
3867
|
+
const hasAmount = (0, import_react10.useCallback)((amount) => {
|
|
3815
3868
|
return balance.amount.gte(amount);
|
|
3816
3869
|
}, [balance]);
|
|
3817
3870
|
return {
|
|
@@ -3822,7 +3875,7 @@ function useBalance(denom) {
|
|
|
3822
3875
|
}
|
|
3823
3876
|
|
|
3824
3877
|
// src/hooks/useEpochs.ts
|
|
3825
|
-
var
|
|
3878
|
+
var import_react11 = require("react");
|
|
3826
3879
|
var import_bignumber9 = __toESM(require("bignumber.js"));
|
|
3827
3880
|
var EPOCH_HOUR2 = "hour";
|
|
3828
3881
|
var EPOCH_DAY2 = "day";
|
|
@@ -3842,28 +3895,28 @@ function getEpochDurationByIdentifier2(identifier) {
|
|
|
3842
3895
|
}
|
|
3843
3896
|
function useEpochs() {
|
|
3844
3897
|
const { epochs, isLoading, updateEpochs } = useAssetsContext();
|
|
3845
|
-
const getCurrentEpoch2 = (0,
|
|
3898
|
+
const getCurrentEpoch2 = (0, import_react11.useCallback)((identifier) => {
|
|
3846
3899
|
return epochs.get(identifier);
|
|
3847
3900
|
}, [epochs]);
|
|
3848
|
-
const hourEpochInfo = (0,
|
|
3901
|
+
const hourEpochInfo = (0, import_react11.useMemo)(() => {
|
|
3849
3902
|
return epochs.get(EPOCH_HOUR2);
|
|
3850
3903
|
}, [epochs]);
|
|
3851
|
-
const dayEpochInfo = (0,
|
|
3904
|
+
const dayEpochInfo = (0, import_react11.useMemo)(() => {
|
|
3852
3905
|
return epochs.get(EPOCH_DAY2);
|
|
3853
3906
|
}, [epochs]);
|
|
3854
|
-
const weekEpochInfo = (0,
|
|
3907
|
+
const weekEpochInfo = (0, import_react11.useMemo)(() => {
|
|
3855
3908
|
return epochs.get(EPOCH_WEEK2);
|
|
3856
3909
|
}, [epochs]);
|
|
3857
|
-
const getHourEpochInfo2 = (0,
|
|
3910
|
+
const getHourEpochInfo2 = (0, import_react11.useCallback)(() => {
|
|
3858
3911
|
return epochs.get(EPOCH_HOUR2);
|
|
3859
3912
|
}, [epochs]);
|
|
3860
|
-
const getDayEpochInfo = (0,
|
|
3913
|
+
const getDayEpochInfo = (0, import_react11.useCallback)(() => {
|
|
3861
3914
|
return epochs.get(EPOCH_DAY2);
|
|
3862
3915
|
}, [epochs]);
|
|
3863
|
-
const getWeekEpochInfo2 = (0,
|
|
3916
|
+
const getWeekEpochInfo2 = (0, import_react11.useCallback)(() => {
|
|
3864
3917
|
return epochs.get(EPOCH_WEEK2);
|
|
3865
3918
|
}, [epochs]);
|
|
3866
|
-
const getPeriodicEpochEndTime2 = (0,
|
|
3919
|
+
const getPeriodicEpochEndTime2 = (0, import_react11.useCallback)((identifier, modWeek = 1) => {
|
|
3867
3920
|
const epoch = epochs.get(identifier);
|
|
3868
3921
|
if (!epoch || !epoch.current_epoch_start_time) {
|
|
3869
3922
|
return void 0;
|
|
@@ -3878,13 +3931,13 @@ function useEpochs() {
|
|
|
3878
3931
|
startAt.setTime(startAt.getTime() + duration + duration * remainingEpochs);
|
|
3879
3932
|
return startAt;
|
|
3880
3933
|
}, [epochs]);
|
|
3881
|
-
const getCurrentWeekEpochEndTime2 = (0,
|
|
3934
|
+
const getCurrentWeekEpochEndTime2 = (0, import_react11.useCallback)(() => {
|
|
3882
3935
|
return getPeriodicEpochEndTime2(EPOCH_WEEK2);
|
|
3883
3936
|
}, [getPeriodicEpochEndTime2]);
|
|
3884
|
-
const getPeriodicWeekEpochEndTime2 = (0,
|
|
3937
|
+
const getPeriodicWeekEpochEndTime2 = (0, import_react11.useCallback)((modWeek = 1) => {
|
|
3885
3938
|
return getPeriodicEpochEndTime2(EPOCH_WEEK2, modWeek);
|
|
3886
3939
|
}, [getPeriodicEpochEndTime2]);
|
|
3887
|
-
const epochsList = (0,
|
|
3940
|
+
const epochsList = (0, import_react11.useMemo)(() => Array.from(epochs.values()), [epochs]);
|
|
3888
3941
|
return {
|
|
3889
3942
|
epochs: epochsList,
|
|
3890
3943
|
epochsMap: epochs,
|
|
@@ -3911,22 +3964,22 @@ function useEpochsManager() {
|
|
|
3911
3964
|
}
|
|
3912
3965
|
|
|
3913
3966
|
// src/hooks/useLiquidityPools.ts
|
|
3914
|
-
var
|
|
3967
|
+
var import_react12 = require("react");
|
|
3915
3968
|
var import_bignumber10 = __toESM(require("bignumber.js"));
|
|
3916
3969
|
function useLiquidityPools() {
|
|
3917
3970
|
const { poolsMap, poolsDataMap, updateLiquidityPools, isLoading, assetsMap } = useAssetsContext();
|
|
3918
|
-
const pools = (0,
|
|
3971
|
+
const pools = (0, import_react12.useMemo)(() => {
|
|
3919
3972
|
return Array.from(poolsMap.values());
|
|
3920
3973
|
}, [poolsMap]);
|
|
3921
3974
|
const getPoolByLpDenom = (lpDenom) => {
|
|
3922
3975
|
const poolId = poolIdFromPoolDenom(lpDenom);
|
|
3923
3976
|
return poolsMap.get(poolId);
|
|
3924
3977
|
};
|
|
3925
|
-
const getDenomsPool = (0,
|
|
3978
|
+
const getDenomsPool = (0, import_react12.useCallback)((denomA, denomB) => {
|
|
3926
3979
|
const poolId = createPoolId(denomA, denomB);
|
|
3927
3980
|
return poolsMap.get(poolId);
|
|
3928
3981
|
}, [poolsMap]);
|
|
3929
|
-
const liquidAssets = (0,
|
|
3982
|
+
const liquidAssets = (0, import_react12.useMemo)(() => {
|
|
3930
3983
|
if (!assetsMap || assetsMap.size === 0) return [];
|
|
3931
3984
|
const result = /* @__PURE__ */ new Map();
|
|
3932
3985
|
pools.forEach((pool) => {
|
|
@@ -3949,12 +4002,12 @@ function useLiquidityPools() {
|
|
|
3949
4002
|
}
|
|
3950
4003
|
function useAssetLiquidityPools(denom) {
|
|
3951
4004
|
const { poolsMap, poolsDataMap, isLoading } = useAssetsContext();
|
|
3952
|
-
const assetPools = (0,
|
|
4005
|
+
const assetPools = (0, import_react12.useMemo)(() => {
|
|
3953
4006
|
return Array.from(poolsMap.values()).filter(
|
|
3954
4007
|
(pool) => pool.base === denom || pool.quote === denom
|
|
3955
4008
|
);
|
|
3956
4009
|
}, [poolsMap, denom]);
|
|
3957
|
-
const assetPoolsData = (0,
|
|
4010
|
+
const assetPoolsData = (0, import_react12.useMemo)(() => {
|
|
3958
4011
|
const newMap = /* @__PURE__ */ new Map();
|
|
3959
4012
|
if (isLoading || denom === "") return newMap;
|
|
3960
4013
|
assetPools.forEach((pool) => {
|
|
@@ -3965,7 +4018,7 @@ function useAssetLiquidityPools(denom) {
|
|
|
3965
4018
|
});
|
|
3966
4019
|
return newMap;
|
|
3967
4020
|
}, [assetPools, poolsDataMap, isLoading, denom]);
|
|
3968
|
-
const asset24HoursVolume = (0,
|
|
4021
|
+
const asset24HoursVolume = (0, import_react12.useMemo)(() => {
|
|
3969
4022
|
let volume = (0, import_bignumber10.default)(0);
|
|
3970
4023
|
if (isLoading || denom === "") return volume;
|
|
3971
4024
|
assetPoolsData.forEach((poolData) => {
|
|
@@ -3987,47 +4040,47 @@ function useAssetLiquidityPools(denom) {
|
|
|
3987
4040
|
}
|
|
3988
4041
|
function useLiquidityPool(poolId) {
|
|
3989
4042
|
const { balancesMap, assetsMap, poolsMap, poolsDataMap, isLoading } = useAssetsContext();
|
|
3990
|
-
const pool = (0,
|
|
3991
|
-
const poolData = (0,
|
|
3992
|
-
const userShares = (0,
|
|
4043
|
+
const pool = (0, import_react12.useMemo)(() => poolsMap.get(poolId), [poolsMap, poolId]);
|
|
4044
|
+
const poolData = (0, import_react12.useMemo)(() => poolsDataMap.get(poolId), [poolsDataMap, poolId]);
|
|
4045
|
+
const userShares = (0, import_react12.useMemo)(() => {
|
|
3993
4046
|
if (!pool) return toBigNumber(0);
|
|
3994
4047
|
const balance = balancesMap.get(pool.lp_denom);
|
|
3995
4048
|
if (!balance) return toBigNumber(0);
|
|
3996
4049
|
return toBigNumber(balance.amount);
|
|
3997
4050
|
}, [balancesMap, pool]);
|
|
3998
|
-
const totalShares = (0,
|
|
4051
|
+
const totalShares = (0, import_react12.useMemo)(() => {
|
|
3999
4052
|
if (!assetsMap || !pool) return toBigNumber(0);
|
|
4000
4053
|
const sharesAsset = assetsMap.get(pool.lp_denom);
|
|
4001
4054
|
if (!sharesAsset) return toBigNumber(0);
|
|
4002
4055
|
return toBigNumber((sharesAsset == null ? void 0 : sharesAsset.supply) || 0);
|
|
4003
4056
|
}, [assetsMap, pool]);
|
|
4004
|
-
const userSharesPercentage = (0,
|
|
4057
|
+
const userSharesPercentage = (0, import_react12.useMemo)(() => {
|
|
4005
4058
|
if (!userShares || !totalShares || totalShares.isZero()) {
|
|
4006
4059
|
return toBigNumber(0);
|
|
4007
4060
|
}
|
|
4008
4061
|
return userShares.dividedBy(totalShares).multipliedBy(100).toFixed(2);
|
|
4009
4062
|
}, [userShares, totalShares]);
|
|
4010
|
-
const userReserveBase = (0,
|
|
4063
|
+
const userReserveBase = (0, import_react12.useMemo)(() => {
|
|
4011
4064
|
if (!pool || !userShares || !totalShares || totalShares.isZero()) {
|
|
4012
4065
|
return toBigNumber(0);
|
|
4013
4066
|
}
|
|
4014
4067
|
const reserveBase = toBigNumber(pool.reserve_base);
|
|
4015
4068
|
return userShares.dividedBy(totalShares).multipliedBy(reserveBase);
|
|
4016
4069
|
}, [pool, userShares, totalShares]);
|
|
4017
|
-
const userReserveQuote = (0,
|
|
4070
|
+
const userReserveQuote = (0, import_react12.useMemo)(() => {
|
|
4018
4071
|
if (!pool || !userShares || !totalShares || totalShares.isZero()) {
|
|
4019
4072
|
return toBigNumber(0);
|
|
4020
4073
|
}
|
|
4021
4074
|
const reserveQuote = toBigNumber(pool.reserve_quote);
|
|
4022
4075
|
return userShares.dividedBy(totalShares).multipliedBy(reserveQuote);
|
|
4023
4076
|
}, [pool, userShares, totalShares]);
|
|
4024
|
-
const calculateOppositeAmount = (0,
|
|
4077
|
+
const calculateOppositeAmount = (0, import_react12.useCallback)((amount, isBase) => {
|
|
4025
4078
|
if (!pool) {
|
|
4026
4079
|
return toBigNumber(0);
|
|
4027
4080
|
}
|
|
4028
4081
|
return calculatePoolOppositeAmount(pool, amount, isBase);
|
|
4029
4082
|
}, [pool]);
|
|
4030
|
-
const calculateSharesFromAmounts = (0,
|
|
4083
|
+
const calculateSharesFromAmounts = (0, import_react12.useCallback)((baseAmount, quoteAmount) => {
|
|
4031
4084
|
if (!pool || !totalShares) {
|
|
4032
4085
|
return toBigNumber(0);
|
|
4033
4086
|
}
|
|
@@ -4062,11 +4115,11 @@ function useLiquidityPool(poolId) {
|
|
|
4062
4115
|
}
|
|
4063
4116
|
|
|
4064
4117
|
// src/hooks/useAssetsValue.ts
|
|
4065
|
-
var
|
|
4118
|
+
var import_react13 = require("react");
|
|
4066
4119
|
var import_bignumber11 = __toESM(require("bignumber.js"));
|
|
4067
4120
|
function useAssetsValue() {
|
|
4068
4121
|
const { assetsMap, usdPricesMap, balancesMap, isLoading: isLoadingPrices } = useAssetsContext();
|
|
4069
|
-
const totalUsdValue = (0,
|
|
4122
|
+
const totalUsdValue = (0, import_react13.useCallback)((prettyBalances) => {
|
|
4070
4123
|
let usdValue = (0, import_bignumber11.default)(0);
|
|
4071
4124
|
prettyBalances.map((denomBalance) => {
|
|
4072
4125
|
const assetPrice = usdPricesMap.get(denomBalance.denom);
|
|
@@ -4076,7 +4129,7 @@ function useAssetsValue() {
|
|
|
4076
4129
|
});
|
|
4077
4130
|
return usdValue;
|
|
4078
4131
|
}, [usdPricesMap]);
|
|
4079
|
-
const walletTotalUsdValue = (0,
|
|
4132
|
+
const walletTotalUsdValue = (0, import_react13.useMemo)(() => {
|
|
4080
4133
|
let total = toBigNumber(0);
|
|
4081
4134
|
balancesMap.forEach((balance, denom) => {
|
|
4082
4135
|
const price = usdPricesMap.get(denom);
|
|
@@ -4087,14 +4140,14 @@ function useAssetsValue() {
|
|
|
4087
4140
|
});
|
|
4088
4141
|
return total;
|
|
4089
4142
|
}, [balancesMap, usdPricesMap, assetsMap]);
|
|
4090
|
-
const denomUsdValue = (0,
|
|
4143
|
+
const denomUsdValue = (0, import_react13.useCallback)((denom, uAmount) => {
|
|
4091
4144
|
const price = usdPricesMap.get(denom);
|
|
4092
4145
|
if (!price || !price.gt(0)) return toBigNumber(0);
|
|
4093
4146
|
const asset = assetsMap.get(denom);
|
|
4094
4147
|
if (!asset) return toBigNumber(0);
|
|
4095
4148
|
return price.multipliedBy(uAmountToBigNumberAmount(uAmount, asset.decimals));
|
|
4096
4149
|
}, [usdPricesMap, assetsMap]);
|
|
4097
|
-
const compareValues = (0,
|
|
4150
|
+
const compareValues = (0, import_react13.useCallback)((a, b) => {
|
|
4098
4151
|
var _a2;
|
|
4099
4152
|
let aValue = (0, import_bignumber11.default)(0);
|
|
4100
4153
|
const aPrice = usdPricesMap.get(a.denom);
|
|
@@ -4118,13 +4171,13 @@ function useAssetsValue() {
|
|
|
4118
4171
|
}
|
|
4119
4172
|
|
|
4120
4173
|
// src/hooks/useFeeTokens.ts
|
|
4121
|
-
var
|
|
4174
|
+
var import_react14 = require("react");
|
|
4122
4175
|
var MIN_LIQUIDITY_FOR_FEE_TOKEN = 5e10;
|
|
4123
4176
|
function useFeeTokens() {
|
|
4124
4177
|
const { pools, isLoading: poolsLoading } = useLiquidityPools();
|
|
4125
4178
|
const { assetsMap, isLoading: assetsLoading } = useAssetsContext();
|
|
4126
4179
|
const nativeDenom = getChainNativeAssetDenom();
|
|
4127
|
-
const feeTokens = (0,
|
|
4180
|
+
const feeTokens = (0, import_react14.useMemo)(() => {
|
|
4128
4181
|
if (poolsLoading || assetsLoading) {
|
|
4129
4182
|
return [];
|
|
4130
4183
|
}
|
|
@@ -4154,17 +4207,17 @@ function useFeeTokens() {
|
|
|
4154
4207
|
}
|
|
4155
4208
|
|
|
4156
4209
|
// src/hooks/useMarkets.ts
|
|
4157
|
-
var
|
|
4210
|
+
var import_react15 = require("react");
|
|
4158
4211
|
var import_bignumber12 = __toESM(require("bignumber.js"));
|
|
4159
4212
|
function useMarkets() {
|
|
4160
4213
|
const { marketsMap, marketsDataMap, updateMarkets, isLoading } = useAssetsContext();
|
|
4161
|
-
const markets = (0,
|
|
4214
|
+
const markets = (0, import_react15.useMemo)(() => {
|
|
4162
4215
|
return Array.from(marketsMap.values());
|
|
4163
4216
|
}, [marketsMap]);
|
|
4164
|
-
const marketsData = (0,
|
|
4165
|
-
const marketExists = (0,
|
|
4166
|
-
const getMarketData = (0,
|
|
4167
|
-
const getMarket = (0,
|
|
4217
|
+
const marketsData = (0, import_react15.useMemo)(() => Array.from(marketsDataMap.values()), [marketsDataMap]);
|
|
4218
|
+
const marketExists = (0, import_react15.useCallback)((marketId) => marketsMap.has(marketId), [marketsMap]);
|
|
4219
|
+
const getMarketData = (0, import_react15.useCallback)((marketId) => marketsDataMap.get(marketId), [marketsDataMap]);
|
|
4220
|
+
const getMarket = (0, import_react15.useCallback)((marketId) => marketsMap.get(marketId), [marketsMap]);
|
|
4168
4221
|
return {
|
|
4169
4222
|
markets,
|
|
4170
4223
|
marketsData,
|
|
@@ -4179,9 +4232,9 @@ function useMarkets() {
|
|
|
4179
4232
|
}
|
|
4180
4233
|
function useAssetMarkets(denom) {
|
|
4181
4234
|
const { isLoading, marketsMap, marketsDataMap } = useAssetsContext();
|
|
4182
|
-
const markets = (0,
|
|
4183
|
-
const marketsData = (0,
|
|
4184
|
-
const assetMarkets = (0,
|
|
4235
|
+
const markets = (0, import_react15.useMemo)(() => Array.from(marketsMap.values()), [marketsMap]);
|
|
4236
|
+
const marketsData = (0, import_react15.useMemo)(() => Array.from(marketsDataMap.values()), [marketsDataMap]);
|
|
4237
|
+
const assetMarkets = (0, import_react15.useMemo)(() => {
|
|
4185
4238
|
const baseMatches = [];
|
|
4186
4239
|
const quoteMatches = [];
|
|
4187
4240
|
for (const market of markets) {
|
|
@@ -4190,7 +4243,7 @@ function useAssetMarkets(denom) {
|
|
|
4190
4243
|
}
|
|
4191
4244
|
return [...baseMatches, ...quoteMatches];
|
|
4192
4245
|
}, [markets, denom]);
|
|
4193
|
-
const assetMarketsData = (0,
|
|
4246
|
+
const assetMarketsData = (0, import_react15.useMemo)(() => {
|
|
4194
4247
|
const baseMatches = [];
|
|
4195
4248
|
const quoteMatches = [];
|
|
4196
4249
|
for (const market of marketsData) {
|
|
@@ -4199,7 +4252,7 @@ function useAssetMarkets(denom) {
|
|
|
4199
4252
|
}
|
|
4200
4253
|
return [...baseMatches, ...quoteMatches];
|
|
4201
4254
|
}, [marketsData, denom]);
|
|
4202
|
-
const asset24hTradedVolume = (0,
|
|
4255
|
+
const asset24hTradedVolume = (0, import_react15.useMemo)(() => {
|
|
4203
4256
|
return assetMarketsData.reduce((acc, market) => {
|
|
4204
4257
|
if (denom === market.base) {
|
|
4205
4258
|
return acc.plus(market.base_volume || 0);
|
|
@@ -4218,8 +4271,8 @@ function useAssetMarkets(denom) {
|
|
|
4218
4271
|
}
|
|
4219
4272
|
function useMarket(marketId) {
|
|
4220
4273
|
const { marketsMap, marketsDataMap, isLoading, assetsMap } = useAssetsContext();
|
|
4221
|
-
const market = (0,
|
|
4222
|
-
const marketSymbol = (0,
|
|
4274
|
+
const market = (0, import_react15.useMemo)(() => marketsMap.get(marketId), [marketsMap, marketId]);
|
|
4275
|
+
const marketSymbol = (0, import_react15.useMemo)(() => {
|
|
4223
4276
|
var _a2, _b2;
|
|
4224
4277
|
if (isLoading) return "";
|
|
4225
4278
|
if (!market) return "";
|
|
@@ -4233,9 +4286,9 @@ function useMarket(marketId) {
|
|
|
4233
4286
|
}
|
|
4234
4287
|
return `${base}/${quote}`;
|
|
4235
4288
|
}, [market, isLoading, assetsMap]);
|
|
4236
|
-
const marketData = (0,
|
|
4237
|
-
const marketExists = (0,
|
|
4238
|
-
const volume24h = (0,
|
|
4289
|
+
const marketData = (0, import_react15.useMemo)(() => marketsDataMap.get(marketId), [marketsDataMap, marketId]);
|
|
4290
|
+
const marketExists = (0, import_react15.useMemo)(() => !!market, [market]);
|
|
4291
|
+
const volume24h = (0, import_react15.useMemo)(() => {
|
|
4239
4292
|
if (!marketData || !market) return toBigNumber(0);
|
|
4240
4293
|
const quoteAsset = assetsMap.get(market.quote);
|
|
4241
4294
|
if (!quoteAsset) return toBigNumber(0);
|
|
@@ -4261,27 +4314,6 @@ function useMarketsManager() {
|
|
|
4261
4314
|
|
|
4262
4315
|
// src/hooks/useToast.tsx
|
|
4263
4316
|
var import_react16 = require("react");
|
|
4264
|
-
|
|
4265
|
-
// src/components/toaster.tsx
|
|
4266
|
-
var import_react15 = require("@chakra-ui/react");
|
|
4267
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
|
4268
|
-
var toaster = (0, import_react15.createToaster)({
|
|
4269
|
-
placement: "top-end",
|
|
4270
|
-
pauseOnPageIdle: true
|
|
4271
|
-
});
|
|
4272
|
-
var Toaster = () => {
|
|
4273
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toaster, { toaster, insetInline: { mdDown: "4" }, children: (toast) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react15.Toast.Root, { width: { md: "sm" }, children: [
|
|
4274
|
-
toast.type === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Spinner, { size: "sm", color: "blue.solid" }) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toast.Indicator, {}),
|
|
4275
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react15.Stack, { gap: "1", flex: "1", maxWidth: "100%", children: [
|
|
4276
|
-
toast.title && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toast.Title, { children: toast.title }),
|
|
4277
|
-
toast.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toast.Description, { children: toast.description })
|
|
4278
|
-
] }),
|
|
4279
|
-
toast.action && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toast.ActionTrigger, { children: toast.action.label }),
|
|
4280
|
-
toast.closable && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react15.Toast.CloseTrigger, {})
|
|
4281
|
-
] }) }) });
|
|
4282
|
-
};
|
|
4283
|
-
|
|
4284
|
-
// src/hooks/useToast.tsx
|
|
4285
4317
|
var useToast = () => {
|
|
4286
4318
|
const clickableSuccess = (0, import_react16.useCallback)((title, actionFn, actionLabel, description, duration = 5e3) => {
|
|
4287
4319
|
toaster.create({
|