@bze/bze-ui-kit 1.0.9 → 1.0.11
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/README.md +73 -61
- package/dist/index.d.mts +18 -1
- package/dist/index.d.ts +18 -1
- package/dist/index.js +355 -319
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +62 -27
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -3355,21 +3355,27 @@ var useSigningClient = ({ chainName }) => {
|
|
|
3355
3355
|
const { getSigningClient, signingClientError, wallet, chain } = useChain(chainName != null ? chainName : getChainName());
|
|
3356
3356
|
const [signingClient, setSigningClient] = useState(null);
|
|
3357
3357
|
const [isSigningClientReady, setIsSigningClientReady] = useState(false);
|
|
3358
|
-
const
|
|
3358
|
+
const initializedForWallet = useRef(null);
|
|
3359
3359
|
const createSigningClient = useCallback2(async () => {
|
|
3360
3360
|
return getSigningClient();
|
|
3361
3361
|
}, [getSigningClient]);
|
|
3362
3362
|
useEffect(() => {
|
|
3363
|
-
if (!wallet || !chain
|
|
3363
|
+
if (!wallet || !chain) {
|
|
3364
|
+
if (initializedForWallet.current !== null) {
|
|
3365
|
+
setSigningClient(null);
|
|
3366
|
+
setIsSigningClientReady(false);
|
|
3367
|
+
initializedForWallet.current = null;
|
|
3368
|
+
}
|
|
3364
3369
|
return;
|
|
3365
3370
|
}
|
|
3371
|
+
if (initializedForWallet.current === wallet) return;
|
|
3366
3372
|
const load = async () => {
|
|
3367
3373
|
const client = await createSigningClient();
|
|
3368
3374
|
if (client) {
|
|
3369
3375
|
registerBzeEncoders(client);
|
|
3370
3376
|
setSigningClient(client);
|
|
3371
3377
|
setIsSigningClientReady(true);
|
|
3372
|
-
|
|
3378
|
+
initializedForWallet.current = wallet;
|
|
3373
3379
|
}
|
|
3374
3380
|
};
|
|
3375
3381
|
load();
|
|
@@ -3381,6 +3387,34 @@ var useSigningClient = ({ chainName }) => {
|
|
|
3381
3387
|
};
|
|
3382
3388
|
};
|
|
3383
3389
|
|
|
3390
|
+
// src/hooks/useWalletHealthCheck.ts
|
|
3391
|
+
import { useEffect as useEffect2 } from "react";
|
|
3392
|
+
import { useChain as useChain2 } from "@interchain-kit/react";
|
|
3393
|
+
import { WalletState } from "@interchain-kit/core";
|
|
3394
|
+
var SIGNING_CLIENT_TIMEOUT_MS = 5e3;
|
|
3395
|
+
var useWalletHealthCheck = (chainName) => {
|
|
3396
|
+
const { status, getSigningClient, disconnect } = useChain2(chainName != null ? chainName : getChainName());
|
|
3397
|
+
useEffect2(() => {
|
|
3398
|
+
if (status !== WalletState.Connected) return;
|
|
3399
|
+
const validate = async () => {
|
|
3400
|
+
try {
|
|
3401
|
+
const client = await Promise.race([
|
|
3402
|
+
getSigningClient(),
|
|
3403
|
+
new Promise(
|
|
3404
|
+
(resolve) => setTimeout(() => resolve(null), SIGNING_CLIENT_TIMEOUT_MS)
|
|
3405
|
+
)
|
|
3406
|
+
]);
|
|
3407
|
+
if (!client) {
|
|
3408
|
+
disconnect();
|
|
3409
|
+
}
|
|
3410
|
+
} catch (e) {
|
|
3411
|
+
disconnect();
|
|
3412
|
+
}
|
|
3413
|
+
};
|
|
3414
|
+
validate();
|
|
3415
|
+
}, []);
|
|
3416
|
+
};
|
|
3417
|
+
|
|
3384
3418
|
// src/hooks/usePrices.ts
|
|
3385
3419
|
import { useCallback as useCallback3, useMemo as useMemo2 } from "react";
|
|
3386
3420
|
function useAssetPrice(denom) {
|
|
@@ -3424,11 +3458,11 @@ function useAssetPrice(denom) {
|
|
|
3424
3458
|
}
|
|
3425
3459
|
|
|
3426
3460
|
// src/hooks/useSettings.ts
|
|
3427
|
-
import { useState as useState2, useEffect as
|
|
3461
|
+
import { useState as useState2, useEffect as useEffect3, useCallback as useCallback4, useMemo as useMemo3 } from "react";
|
|
3428
3462
|
function useSettings() {
|
|
3429
3463
|
const [settings, setSettingsState] = useState2(DEFAULT_SETTINGS);
|
|
3430
3464
|
const [isLoaded, setIsLoaded] = useState2(false);
|
|
3431
|
-
|
|
3465
|
+
useEffect3(() => {
|
|
3432
3466
|
setSettingsState(getSettings());
|
|
3433
3467
|
setIsLoaded(true);
|
|
3434
3468
|
}, []);
|
|
@@ -4066,7 +4100,7 @@ var useToast = () => {
|
|
|
4066
4100
|
|
|
4067
4101
|
// src/hooks/useTx.tsx
|
|
4068
4102
|
import { TxBody, SignerInfo } from "@bze/bzejs/cosmos/tx/v1beta1/tx";
|
|
4069
|
-
import { useChain as
|
|
4103
|
+
import { useChain as useChain3 } from "@interchain-kit/react";
|
|
4070
4104
|
import BigNumber13 from "bignumber.js";
|
|
4071
4105
|
import { useCallback as useCallback11, useMemo as useMemo11, useState as useState3 } from "react";
|
|
4072
4106
|
var TxStatus = /* @__PURE__ */ ((TxStatus2) => {
|
|
@@ -4101,7 +4135,7 @@ var useIBCTx = (chainName) => {
|
|
|
4101
4135
|
};
|
|
4102
4136
|
};
|
|
4103
4137
|
var useTx = (chainName) => {
|
|
4104
|
-
const { address, disconnect } =
|
|
4138
|
+
const { address, disconnect } = useChain3(chainName);
|
|
4105
4139
|
const { toast } = useToast();
|
|
4106
4140
|
const { signingClient, isSigningClientReady, signingClientError } = useSigningClient({ chainName });
|
|
4107
4141
|
const [progressTrack, setProgressTrack] = useState3("");
|
|
@@ -4232,7 +4266,7 @@ var useTx = (chainName) => {
|
|
|
4232
4266
|
};
|
|
4233
4267
|
|
|
4234
4268
|
// src/hooks/useValidatorLogos.ts
|
|
4235
|
-
import { useCallback as useCallback12, useEffect as
|
|
4269
|
+
import { useCallback as useCallback12, useEffect as useEffect4, useRef as useRef2, useState as useState4 } from "react";
|
|
4236
4270
|
var KEYBASE_API_URL = "https://keybase.io/_/api/1.0/user/lookup.json";
|
|
4237
4271
|
var LOGOS_STORAGE_KEY = "validator_logos";
|
|
4238
4272
|
var LOGOS_TTL = 24 * 60 * 60 * 1e3;
|
|
@@ -4304,7 +4338,7 @@ var useValidatorLogos = (validators) => {
|
|
|
4304
4338
|
}
|
|
4305
4339
|
return result;
|
|
4306
4340
|
}, []);
|
|
4307
|
-
|
|
4341
|
+
useEffect4(() => {
|
|
4308
4342
|
if (!validators || validators.length === 0) return;
|
|
4309
4343
|
if (fetchedRef.current && validatorCountRef.current === validators.length) return;
|
|
4310
4344
|
const identities = validators.map((v) => {
|
|
@@ -4328,7 +4362,7 @@ var useValidatorLogos = (validators) => {
|
|
|
4328
4362
|
|
|
4329
4363
|
// src/components/highlight.tsx
|
|
4330
4364
|
import { Text } from "@chakra-ui/react";
|
|
4331
|
-
import { useEffect as
|
|
4365
|
+
import { useEffect as useEffect5, useRef as useRef3, useState as useState5 } from "react";
|
|
4332
4366
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
4333
4367
|
var HighlightText = (_a2) => {
|
|
4334
4368
|
var _b2 = _a2, {
|
|
@@ -4351,7 +4385,7 @@ var HighlightText = (_a2) => {
|
|
|
4351
4385
|
const previousValueRef = useRef3(childrenString);
|
|
4352
4386
|
const highlightOpacity = highlightIntensity === "subtle" ? "15" : "50";
|
|
4353
4387
|
const boxShadowStrength = highlightIntensity === "subtle" ? "10" : "25";
|
|
4354
|
-
|
|
4388
|
+
useEffect5(() => {
|
|
4355
4389
|
if (!isMountedRef.current) {
|
|
4356
4390
|
isMountedRef.current = true;
|
|
4357
4391
|
if (highlightOnMount) {
|
|
@@ -4524,7 +4558,7 @@ import {
|
|
|
4524
4558
|
} from "@chakra-ui/react";
|
|
4525
4559
|
import { Select, Portal as Portal3 } from "@chakra-ui/react";
|
|
4526
4560
|
import { useTheme } from "next-themes";
|
|
4527
|
-
import { useState as useState7, useEffect as
|
|
4561
|
+
import { useState as useState7, useEffect as useEffect6, useMemo as useMemo12, useCallback as useCallback13 } from "react";
|
|
4528
4562
|
import { jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
4529
4563
|
var SettingsSidebarContent = ({ accentColor = "blue" }) => {
|
|
4530
4564
|
const { setTheme, resolvedTheme } = useTheme();
|
|
@@ -4537,7 +4571,7 @@ var SettingsSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
4537
4571
|
const [isValidating, setIsValidating] = useState7(false);
|
|
4538
4572
|
const [validationResults, setValidationResults] = useState7({});
|
|
4539
4573
|
const [preferredFeeDenom, setPreferredFeeDenom] = useState7(void 0);
|
|
4540
|
-
|
|
4574
|
+
useEffect6(() => {
|
|
4541
4575
|
if (isLoaded) {
|
|
4542
4576
|
setRestEndpoint(settings.endpoints.restEndpoint);
|
|
4543
4577
|
setRpcEndpoint(settings.endpoints.rpcEndpoint);
|
|
@@ -4774,7 +4808,7 @@ var SettingsSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
4774
4808
|
|
|
4775
4809
|
// src/components/sidebar/wallet-sidebar.tsx
|
|
4776
4810
|
import "@interchain-kit/react/styles.css";
|
|
4777
|
-
import { InterchainWalletModal, useChain as
|
|
4811
|
+
import { InterchainWalletModal, useChain as useChain4 } from "@interchain-kit/react";
|
|
4778
4812
|
import {
|
|
4779
4813
|
Badge as Badge2,
|
|
4780
4814
|
Box as Box2,
|
|
@@ -4793,8 +4827,8 @@ import {
|
|
|
4793
4827
|
VStack as VStack2
|
|
4794
4828
|
} from "@chakra-ui/react";
|
|
4795
4829
|
import { LuCopy, LuExternalLink, LuX as LuX2 } from "react-icons/lu";
|
|
4796
|
-
import { useCallback as useCallback14, useEffect as
|
|
4797
|
-
import { WalletState } from "@interchain-kit/core";
|
|
4830
|
+
import { useCallback as useCallback14, useEffect as useEffect7, useMemo as useMemo13, useRef as useRef4, useState as useState8 } from "react";
|
|
4831
|
+
import { WalletState as WalletState2 } from "@interchain-kit/core";
|
|
4798
4832
|
import BigNumber14 from "bignumber.js";
|
|
4799
4833
|
import { cosmos } from "@bze/bzejs";
|
|
4800
4834
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
@@ -4880,7 +4914,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
|
|
|
4880
4914
|
const [memo, setMemo] = useState8("");
|
|
4881
4915
|
const [memoError, setMemoError] = useState8("");
|
|
4882
4916
|
const { toast } = useToast();
|
|
4883
|
-
const { status, address } =
|
|
4917
|
+
const { status, address } = useChain4(getChainName());
|
|
4884
4918
|
const { tx } = useSDKTx(getChainName());
|
|
4885
4919
|
const coinsCollection = createListCollection2({
|
|
4886
4920
|
items: balances.map((item) => {
|
|
@@ -4907,7 +4941,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
|
|
|
4907
4941
|
toast.error("Can not send coins!", "Please check the input data.");
|
|
4908
4942
|
return;
|
|
4909
4943
|
}
|
|
4910
|
-
if (status !==
|
|
4944
|
+
if (status !== WalletState2.Connected) {
|
|
4911
4945
|
toast.error("Wallet not connected!", "Please connect your wallet first.");
|
|
4912
4946
|
return;
|
|
4913
4947
|
}
|
|
@@ -4969,7 +5003,7 @@ var SendForm = ({ balances, onClose, selectedTicker, accentColor }) => {
|
|
|
4969
5003
|
setMemoError("");
|
|
4970
5004
|
}
|
|
4971
5005
|
}, []);
|
|
4972
|
-
|
|
5006
|
+
useEffect7(() => {
|
|
4973
5007
|
if (selectedTicker !== "") {
|
|
4974
5008
|
onCoinSelectChange(selectedTicker);
|
|
4975
5009
|
}
|
|
@@ -5143,7 +5177,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
5143
5177
|
address,
|
|
5144
5178
|
disconnect,
|
|
5145
5179
|
connect
|
|
5146
|
-
} =
|
|
5180
|
+
} = useChain4(getChainName());
|
|
5147
5181
|
const { assetsBalances, isLoading: assetsLoading } = useBalances();
|
|
5148
5182
|
const balancesWithoutLps = useMemo13(() => {
|
|
5149
5183
|
if (assetsLoading) return [];
|
|
@@ -5254,11 +5288,11 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
5254
5288
|
] });
|
|
5255
5289
|
const statusColor = useMemo13(() => {
|
|
5256
5290
|
switch (status) {
|
|
5257
|
-
case
|
|
5291
|
+
case WalletState2.Connected:
|
|
5258
5292
|
return "green";
|
|
5259
|
-
case
|
|
5293
|
+
case WalletState2.Connecting:
|
|
5260
5294
|
return "yellow";
|
|
5261
|
-
case
|
|
5295
|
+
case WalletState2.Disconnected:
|
|
5262
5296
|
return "red";
|
|
5263
5297
|
default:
|
|
5264
5298
|
return "gray";
|
|
@@ -5271,7 +5305,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
5271
5305
|
/* @__PURE__ */ jsx5(Text3, { fontSize: "sm", fontWeight: "medium", children: "Wallet Status" }),
|
|
5272
5306
|
/* @__PURE__ */ jsx5(Badge2, { colorPalette: statusColor, size: "sm", children: status })
|
|
5273
5307
|
] }),
|
|
5274
|
-
status ===
|
|
5308
|
+
status === WalletState2.Connected && /* @__PURE__ */ jsxs4(
|
|
5275
5309
|
Box2,
|
|
5276
5310
|
{
|
|
5277
5311
|
p: "3",
|
|
@@ -5322,7 +5356,7 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
5322
5356
|
]
|
|
5323
5357
|
}
|
|
5324
5358
|
),
|
|
5325
|
-
status !==
|
|
5359
|
+
status !== WalletState2.Connected && /* @__PURE__ */ jsx5(
|
|
5326
5360
|
Button2,
|
|
5327
5361
|
{
|
|
5328
5362
|
size: "sm",
|
|
@@ -5334,8 +5368,8 @@ var WalletSidebarContent = ({ accentColor = "blue" }) => {
|
|
|
5334
5368
|
)
|
|
5335
5369
|
] }),
|
|
5336
5370
|
/* @__PURE__ */ jsx5(Separator2, {}),
|
|
5337
|
-
status ===
|
|
5338
|
-
status ===
|
|
5371
|
+
status === WalletState2.Connected && viewState === "balances" && renderBalancesView(),
|
|
5372
|
+
status === WalletState2.Connected && viewState === "send" && /* @__PURE__ */ jsx5(SendForm, { balances: sortedBalances, onClose: handleCancel, selectedTicker: clickedBalance, accentColor })
|
|
5339
5373
|
] });
|
|
5340
5374
|
};
|
|
5341
5375
|
|
|
@@ -5646,6 +5680,7 @@ export {
|
|
|
5646
5680
|
useSigningClient,
|
|
5647
5681
|
useToast,
|
|
5648
5682
|
useValidatorLogos,
|
|
5683
|
+
useWalletHealthCheck,
|
|
5649
5684
|
validateBZEBech32Address,
|
|
5650
5685
|
validateBech32Address,
|
|
5651
5686
|
validateEndpoints,
|