@xyo-network/react-chain-network 1.18.0 → 1.18.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/context/network/Provider.d.ts.map +1 -1
- package/dist/browser/context/network/state.d.ts +1 -1
- package/dist/browser/context/network/state.d.ts.map +1 -1
- package/dist/browser/hooks/provider/UseViewerInPage.stories.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkCurrentBlock.d.ts +67 -43
- package/dist/browser/hooks/provider/useActiveNetworkCurrentBlock.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkRunner.d.ts +1 -1
- package/dist/browser/hooks/provider/useActiveNetworkRunner.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useViewerInPage.d.ts +2 -2
- package/dist/browser/hooks/provider/useViewerInPage.d.ts.map +1 -1
- package/dist/browser/hooks/status/usePollNetworkStatus.d.ts +1 -1
- package/dist/browser/hooks/status/usePollNetworkStatus.d.ts.map +1 -1
- package/dist/browser/index.mjs +12 -10
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +14 -14
- package/src/context/network/Provider.tsx +8 -7
- package/src/context/network/state.ts +1 -1
- package/src/hooks/provider/UseViewerInPage.stories.tsx +9 -9
- package/src/hooks/provider/useActiveNetworkCurrentBlock.ts +1 -1
- package/src/hooks/provider/useViewerInPage.ts +1 -1
- package/src/hooks/status/usePollNetworkStatus.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAKd,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAC9D,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAA;CACpF;AAED,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA2DpE,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ContextExState } from '@xylabs/react-shared';
|
|
2
|
-
import type { NetworkBootstrap } from '@xyo-network/xl1-
|
|
2
|
+
import type { NetworkBootstrap } from '@xyo-network/xl1-sdk';
|
|
3
3
|
export type ChainNetworkState = ContextExState<{
|
|
4
4
|
activeNetwork?: NetworkBootstrap;
|
|
5
5
|
chainNetworkError?: Error;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/context/network/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/context/network/state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,MAAM,MAAM,iBAAiB,GAAG,cAAc,CAAC;IAC7C,aAAa,CAAC,EAAE,gBAAgB,CAAA;IAChC,iBAAiB,CAAC,EAAE,KAAK,CAAA;IACzB,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC7B,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;CAClE,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UseViewerInPage.stories.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/UseViewerInPage.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"UseViewerInPage.stories.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/UseViewerInPage.stories.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAA;AAQpD,OAAO,KAAgC,MAAM,OAAO,CAAA;AAQpD,QAAA,MAAM,4BAA4B,EAAE,KAAK,CAAC,EAMzC,CAAA;;;;;AAuDD,wBAGC;AAED,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,4BAA4B,CAAsD,CAAA;AAExH,QAAA,MAAM,OAAO,iGAAoB,CAAA;AAGjC,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
|
@@ -1,68 +1,92 @@
|
|
|
1
|
-
import type { XyoViewer } from '@xyo-network/xl1-
|
|
1
|
+
import type { XyoViewer } from '@xyo-network/xl1-sdk';
|
|
2
2
|
export declare const useActiveNetworkCurrentBlock: (refresh?: number, viewer?: XyoViewer) => [[{
|
|
3
3
|
schema: "network.xyo.boundwitness";
|
|
4
|
-
addresses:
|
|
5
|
-
|
|
4
|
+
addresses: (Lowercase<string> & {
|
|
5
|
+
readonly __hex: true;
|
|
6
|
+
} & {
|
|
7
|
+
readonly __address: true;
|
|
8
|
+
})[];
|
|
9
|
+
payload_hashes: import("@xylabs/hex").BrandedHash[];
|
|
6
10
|
payload_schemas: string[];
|
|
7
|
-
previous_hashes: (import("@xylabs/hex").
|
|
8
|
-
$signatures: import("@xylabs/hex").
|
|
9
|
-
block: import("@xyo-network/xl1-
|
|
10
|
-
chain: import("@xylabs/hex").
|
|
11
|
-
previous: import("@xylabs/hex").
|
|
11
|
+
previous_hashes: (import("@xylabs/hex").BrandedHash | null)[];
|
|
12
|
+
$signatures: (import("@xylabs/hex").BrandedHex | null)[];
|
|
13
|
+
block: import("@xyo-network/xl1-sdk").XL1BlockNumber;
|
|
14
|
+
chain: import("@xylabs/hex").BrandedHex;
|
|
15
|
+
previous: import("@xylabs/hex").BrandedHash | null;
|
|
12
16
|
$epoch: number;
|
|
13
|
-
_hash: import("@xylabs/hex").
|
|
14
|
-
_dataHash: import("@xylabs/hex").
|
|
15
|
-
$destination?:
|
|
16
|
-
|
|
17
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
18
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
19
|
+
$destination?: (Lowercase<string> & {
|
|
20
|
+
readonly __hex: true;
|
|
21
|
+
} & {
|
|
22
|
+
readonly __address: true;
|
|
23
|
+
}) | undefined;
|
|
24
|
+
$sourceQuery?: import("@xylabs/hex").BrandedHash | undefined;
|
|
17
25
|
protocol?: number | undefined;
|
|
18
|
-
step_hashes?: import("@xylabs/hex").
|
|
26
|
+
step_hashes?: import("@xylabs/hex").BrandedHash[] | undefined;
|
|
19
27
|
}, {
|
|
20
28
|
schema: string;
|
|
21
|
-
_hash: import("@xylabs/hex").
|
|
22
|
-
_dataHash: import("@xylabs/hex").
|
|
29
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
30
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
23
31
|
}[]] | undefined, Error | undefined, import("@xylabs/react-promise").UsePromiseState | undefined];
|
|
24
32
|
export declare const useActiveNetworkCurrentBlockInPage: (refresh?: number) => [[{
|
|
25
33
|
schema: "network.xyo.boundwitness";
|
|
26
|
-
addresses:
|
|
27
|
-
|
|
34
|
+
addresses: (Lowercase<string> & {
|
|
35
|
+
readonly __hex: true;
|
|
36
|
+
} & {
|
|
37
|
+
readonly __address: true;
|
|
38
|
+
})[];
|
|
39
|
+
payload_hashes: import("@xylabs/hex").BrandedHash[];
|
|
28
40
|
payload_schemas: string[];
|
|
29
|
-
previous_hashes: (import("@xylabs/hex").
|
|
30
|
-
$signatures: import("@xylabs/hex").
|
|
31
|
-
block: import("@xyo-network/xl1-
|
|
32
|
-
chain: import("@xylabs/hex").
|
|
33
|
-
previous: import("@xylabs/hex").
|
|
41
|
+
previous_hashes: (import("@xylabs/hex").BrandedHash | null)[];
|
|
42
|
+
$signatures: (import("@xylabs/hex").BrandedHex | null)[];
|
|
43
|
+
block: import("@xyo-network/xl1-sdk").XL1BlockNumber;
|
|
44
|
+
chain: import("@xylabs/hex").BrandedHex;
|
|
45
|
+
previous: import("@xylabs/hex").BrandedHash | null;
|
|
34
46
|
$epoch: number;
|
|
35
|
-
_hash: import("@xylabs/hex").
|
|
36
|
-
_dataHash: import("@xylabs/hex").
|
|
37
|
-
$destination?:
|
|
38
|
-
|
|
47
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
48
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
49
|
+
$destination?: (Lowercase<string> & {
|
|
50
|
+
readonly __hex: true;
|
|
51
|
+
} & {
|
|
52
|
+
readonly __address: true;
|
|
53
|
+
}) | undefined;
|
|
54
|
+
$sourceQuery?: import("@xylabs/hex").BrandedHash | undefined;
|
|
39
55
|
protocol?: number | undefined;
|
|
40
|
-
step_hashes?: import("@xylabs/hex").
|
|
56
|
+
step_hashes?: import("@xylabs/hex").BrandedHash[] | undefined;
|
|
41
57
|
}, {
|
|
42
58
|
schema: string;
|
|
43
|
-
_hash: import("@xylabs/hex").
|
|
44
|
-
_dataHash: import("@xylabs/hex").
|
|
59
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
60
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
45
61
|
}[]] | undefined, Error | undefined, import("@xylabs/react-promise").UsePromiseState | undefined];
|
|
46
62
|
export declare const useActiveNetworkCurrentBlockInWallet: (refresh?: number) => [[{
|
|
47
63
|
schema: "network.xyo.boundwitness";
|
|
48
|
-
addresses:
|
|
49
|
-
|
|
64
|
+
addresses: (Lowercase<string> & {
|
|
65
|
+
readonly __hex: true;
|
|
66
|
+
} & {
|
|
67
|
+
readonly __address: true;
|
|
68
|
+
})[];
|
|
69
|
+
payload_hashes: import("@xylabs/hex").BrandedHash[];
|
|
50
70
|
payload_schemas: string[];
|
|
51
|
-
previous_hashes: (import("@xylabs/hex").
|
|
52
|
-
$signatures: import("@xylabs/hex").
|
|
53
|
-
block: import("@xyo-network/xl1-
|
|
54
|
-
chain: import("@xylabs/hex").
|
|
55
|
-
previous: import("@xylabs/hex").
|
|
71
|
+
previous_hashes: (import("@xylabs/hex").BrandedHash | null)[];
|
|
72
|
+
$signatures: (import("@xylabs/hex").BrandedHex | null)[];
|
|
73
|
+
block: import("@xyo-network/xl1-sdk").XL1BlockNumber;
|
|
74
|
+
chain: import("@xylabs/hex").BrandedHex;
|
|
75
|
+
previous: import("@xylabs/hex").BrandedHash | null;
|
|
56
76
|
$epoch: number;
|
|
57
|
-
_hash: import("@xylabs/hex").
|
|
58
|
-
_dataHash: import("@xylabs/hex").
|
|
59
|
-
$destination?:
|
|
60
|
-
|
|
77
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
78
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
79
|
+
$destination?: (Lowercase<string> & {
|
|
80
|
+
readonly __hex: true;
|
|
81
|
+
} & {
|
|
82
|
+
readonly __address: true;
|
|
83
|
+
}) | undefined;
|
|
84
|
+
$sourceQuery?: import("@xylabs/hex").BrandedHash | undefined;
|
|
61
85
|
protocol?: number | undefined;
|
|
62
|
-
step_hashes?: import("@xylabs/hex").
|
|
86
|
+
step_hashes?: import("@xylabs/hex").BrandedHash[] | undefined;
|
|
63
87
|
}, {
|
|
64
88
|
schema: string;
|
|
65
|
-
_hash: import("@xylabs/hex").
|
|
66
|
-
_dataHash: import("@xylabs/hex").
|
|
89
|
+
_hash: import("@xylabs/hex").BrandedHash;
|
|
90
|
+
_dataHash: import("@xylabs/hex").BrandedHash;
|
|
67
91
|
}[]] | undefined, Error | undefined, import("@xylabs/react-promise").UsePromiseState | undefined];
|
|
68
92
|
//# sourceMappingURL=useActiveNetworkCurrentBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveNetworkCurrentBlock.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useActiveNetworkCurrentBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"useActiveNetworkCurrentBlock.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useActiveNetworkCurrentBlock.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAIrD,eAAO,MAAM,4BAA4B,GAAI,gBAAW,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGAI3E,CAAA;AAED,eAAO,MAAM,kCAAkC,GAAI,gBAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGAK7D,CAAA;AAED,eAAO,MAAM,oCAAoC,GAAI,gBAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iGAK/D,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const useActiveNetworkRunner: () => [import("@xyo-network/xl1-protocol-sdk").CreatableProviderInstance<import("@xyo-network/xl1-rpc").JsonRpcXyoRunner, import("@xyo-network/xl1-protocol-sdk").CreatableProviderParams<import("@xyo-network/xl1-protocol-sdk").CreatableProviderContext>, import("@xyo-network/xl1-protocol-sdk").CreatableProviderEventData> | undefined, Error | undefined, import("@xylabs/react-promise").UsePromiseState | undefined];
|
|
1
|
+
export declare const useActiveNetworkRunner: () => [import("@xyo-network/xl1-protocol-sdk").CreatableProviderInstance<import("@xyo-network/xl1-rpc").JsonRpcXyoRunner, string[], import("@xyo-network/xl1-protocol-sdk").CreatableProviderParams<import("@xyo-network/xl1-protocol-sdk").CreatableProviderContext>, import("@xyo-network/xl1-protocol-sdk").CreatableProviderEventData> | undefined, Error | undefined, import("@xylabs/react-promise").UsePromiseState | undefined];
|
|
2
2
|
//# sourceMappingURL=useActiveNetworkRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveNetworkRunner.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useActiveNetworkRunner.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"useActiveNetworkRunner.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useActiveNetworkRunner.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,sBAAsB,yaAKlC,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { type NetworkBootstrap } from '@xyo-network/xl1-
|
|
1
|
+
import { type NetworkBootstrap } from '@xyo-network/xl1-sdk';
|
|
2
2
|
/**
|
|
3
3
|
* Get the viewer for the active network, first from the wallet or fallback to HTTP RPC
|
|
4
4
|
* @returns - XyoViewer for the active network
|
|
5
5
|
*/
|
|
6
|
-
export declare const useViewerInPage: (networkOverride?: NetworkBootstrap) => import("@xyo-network/xl1-
|
|
6
|
+
export declare const useViewerInPage: (networkOverride?: NetworkBootstrap) => import("@xyo-network/xl1-sdk").XyoViewer | undefined;
|
|
7
7
|
//# sourceMappingURL=useViewerInPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useViewerInPage.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useViewerInPage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"useViewerInPage.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useViewerInPage.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAI5D;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,kBAAkB,gBAAgB,yDAUjE,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { NetworkStatus } from '@xyo-network/xl1-
|
|
1
|
+
import type { NetworkStatus } from '@xyo-network/xl1-sdk';
|
|
2
2
|
export declare const usePollNetworkStatus: () => readonly [NetworkStatus | undefined, Error | undefined];
|
|
3
3
|
//# sourceMappingURL=usePollNetworkStatus.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePollNetworkStatus.d.ts","sourceRoot":"","sources":["../../../../src/hooks/status/usePollNetworkStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"usePollNetworkStatus.d.ts","sourceRoot":"","sources":["../../../../src/hooks/status/usePollNetworkStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAOzD,eAAO,MAAM,oBAAoB,+DA+BhC,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -12,6 +12,7 @@ var ChainNetworkContext = createContextEx();
|
|
|
12
12
|
// src/context/network/Provider.tsx
|
|
13
13
|
import { ErrorRender } from "@xylabs/react-error";
|
|
14
14
|
import { usePromise } from "@xylabs/react-promise";
|
|
15
|
+
import { isDefined } from "@xylabs/sdk-js";
|
|
15
16
|
import { MainNetwork } from "@xyo-network/xl1-network-model";
|
|
16
17
|
import React, { useCallback, useMemo, useState } from "react";
|
|
17
18
|
var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal }) => {
|
|
@@ -30,13 +31,11 @@ var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork,
|
|
|
30
31
|
}, [
|
|
31
32
|
networks
|
|
32
33
|
]);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}
|
|
38
|
-
resolvedActiveNetwork
|
|
39
|
-
]);
|
|
34
|
+
const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState(resolvedActiveNetwork);
|
|
35
|
+
if (isDefined(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {
|
|
36
|
+
setActiveNetwork(resolvedActiveNetwork);
|
|
37
|
+
setPreviousResolvedActiveNetwork(resolvedActiveNetwork);
|
|
38
|
+
}
|
|
40
39
|
const updateActiveNetwork = useCallback((networkId) => {
|
|
41
40
|
setError(void 0);
|
|
42
41
|
const network = networks?.find((network2) => network2.id === networkId);
|
|
@@ -47,7 +46,8 @@ var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork,
|
|
|
47
46
|
setActiveNetwork(network);
|
|
48
47
|
void setActiveNetworkExternal?.(networkId);
|
|
49
48
|
}, [
|
|
50
|
-
networks
|
|
49
|
+
networks,
|
|
50
|
+
setActiveNetworkExternal
|
|
51
51
|
]);
|
|
52
52
|
const value = useMemo(() => ({
|
|
53
53
|
activeNetwork,
|
|
@@ -57,6 +57,8 @@ var ChainNetworkProvider = /* @__PURE__ */ __name(({ children, getActiveNetwork,
|
|
|
57
57
|
chainNetworkError: error ?? activeNetworkError
|
|
58
58
|
}), [
|
|
59
59
|
activeNetwork,
|
|
60
|
+
activeNetworkError,
|
|
61
|
+
error,
|
|
60
62
|
networks,
|
|
61
63
|
updateActiveNetwork
|
|
62
64
|
]);
|
|
@@ -217,12 +219,12 @@ import React7 from "react";
|
|
|
217
219
|
import { useCurrentBlock, useViewerFromWallet as useViewerFromWallet2 } from "@xyo-network/react-chain-provider";
|
|
218
220
|
|
|
219
221
|
// src/hooks/provider/useViewerInPage.ts
|
|
220
|
-
import { isDefined, isDefinedNotNull, isUndefined } from "@xylabs/sdk-js";
|
|
222
|
+
import { isDefined as isDefined2, isDefinedNotNull, isUndefined } from "@xylabs/sdk-js";
|
|
221
223
|
import { useHttpRpcViewer, useViewerFromWallet } from "@xyo-network/react-chain-provider";
|
|
222
224
|
var useViewerInPage = /* @__PURE__ */ __name((networkOverride) => {
|
|
223
225
|
let networkBootstrap;
|
|
224
226
|
const { activeNetwork } = useChainNetwork();
|
|
225
|
-
networkBootstrap =
|
|
227
|
+
networkBootstrap = isDefined2(networkOverride) ? networkOverride : activeNetwork;
|
|
226
228
|
const httpRpcViewer = useHttpRpcViewer(networkBootstrap?.url);
|
|
227
229
|
const [walletRpcViewer] = useViewerFromWallet(networkBootstrap?.id);
|
|
228
230
|
if (isUndefined(walletRpcViewer)) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/menu/Avatar.tsx","../../src/context/network/context.ts","../../src/context/network/Provider.tsx","../../src/context/network/use.ts","../../src/components/menu/Icon.tsx","../../src/components/menu/MenuItem.tsx","../../src/components/status/Alert.tsx","../../src/components/status/Dialog.tsx","../../src/components/status/NetworkStatus.tsx","../../src/hooks/provider/useActiveNetworkCurrentBlock.ts","../../src/hooks/provider/useViewerInPage.ts","../../src/hooks/provider/useActiveNetworkNetwork.ts","../../src/hooks/provider/useActiveNetworkRunner.ts","../../src/hooks/provider/useViewerInWallet.ts","../../src/hooks/status/usePollNetworkStatus.ts"],"sourcesContent":["import type { AvatarProps } from '@mui/material'\nimport { Avatar } from '@mui/material'\nimport type { CSSProperties } from 'react'\nimport React from 'react'\n\nimport { useChainNetwork } from '../../context/index.ts'\nimport { NetworkIcon } from './Icon.tsx'\n\nexport interface NetworkAvatarProps extends AvatarProps {\n icon?: string\n iconStyles?: CSSProperties\n name?: string\n}\n\nexport const NetworkAvatar: React.FC<NetworkAvatarProps> = ({\n icon, iconStyles, name, sx, ...props\n}) => {\n return (\n <Avatar\n sx={{ backgroundColor: 'white', ...sx }}\n alt={name}\n {...props}\n >\n <NetworkIcon\n icon={icon}\n style={{ ...iconStyles }}\n />\n </Avatar>\n )\n}\n\nexport const ActiveNetworkAvatar: React.FC<AvatarProps> = (props) => {\n const { activeNetwork } = useChainNetwork()\n\n return (\n <NetworkAvatar\n icon={activeNetwork?.icon}\n name={activeNetwork?.name}\n {...props}\n />\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainNetworkState } from './state.ts'\n\nexport const ChainNetworkContext = createContextEx<ChainNetworkState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-network-model'\nimport { MainNetwork } from '@xyo-network/xl1-network-model'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n\n // Set the active network upon initialization\n const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {\n // ensure networks are loaded\n if (!networks) return\n // get last saved active network\n const activeNetwork = await getActiveNetwork?.()\n // ensure the active network saved is found in the list of networks\n if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {\n // Set the active network if it exists\n return activeNetwork\n } else {\n // Set the default network if no active network exists\n const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]\n await setActiveNetworkExternal?.(defaultNetwork.id)\n\n // Set the active network in the context\n return defaultNetwork\n }\n }, [networks])\n\n useMemo(() => {\n if (resolvedActiveNetwork) {\n setActiveNetwork(resolvedActiveNetwork)\n }\n }, [resolvedActiveNetwork])\n\n const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {\n setError(undefined)\n const network = networks?.find(network => network.id === networkId)\n if (!network) {\n setError(new Error(`Network with id ${networkId} not found`))\n return\n }\n // set internally\n setActiveNetwork(network)\n // set externally\n void setActiveNetworkExternal?.(networkId)\n }, [networks])\n\n const value: ChainNetworkState = useMemo(() => ({\n activeNetwork,\n networks,\n provided: true,\n updateActiveNetwork,\n chainNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, networks, updateActiveNetwork])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"ChainNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx(ChainNetworkContext, 'ChainNetwork', required)\n","import type { DetailedHTMLProps, HtmlHTMLAttributes } from 'react'\nimport React from 'react'\n\nexport interface NetworkIconProps extends DetailedHTMLProps<HtmlHTMLAttributes<HTMLSpanElement>, HTMLSpanElement> {\n icon?: string\n}\n\nexport const NetworkIcon: React.FC<NetworkIconProps> = ({\n icon, style, ...props\n}) => {\n return (\n <span\n // eslint-disable-next-line react-dom/no-dangerously-set-innerhtml\n dangerouslySetInnerHTML={{ __html: icon ?? '' }} // Placeholder for SVG\\\n style={{\n display: 'inline-flex', width: 24, height: 24, ...style,\n }}\n {...props}\n />\n )\n}\n","import type { MenuItemProps } from '@mui/material'\nimport { ListItemText } from '@mui/material'\nimport { ActiveMenuItem } from '@xyo-network/react-chain-shared'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-network-model'\nimport type { NetworkId } from '@xyo-network/xl1-protocol'\nimport type { MouseEvent as ReactMouseEvent } from 'react'\nimport React from 'react'\n\nimport { NetworkAvatar } from './Avatar.tsx'\n\nexport interface NetworkMenuItemProps extends MenuItemProps {\n active?: boolean\n network?: NetworkBootstrap\n updateActiveNetwork?: (networkId: NetworkId) => void\n}\n\nexport const NetworkMenuItem: React.FC<NetworkMenuItemProps> = ({\n active, network, onClick, updateActiveNetwork, ...props\n}) => {\n const handleClick = (event: ReactMouseEvent<HTMLLIElement, MouseEvent>) => {\n if (network === undefined) throw new Error('Network is undefined')\n updateActiveNetwork?.(network.id)\n onClick?.(event)\n }\n\n return (\n <ActiveMenuItem\n title={network?.name}\n disableRipple\n onClick={handleClick}\n active={active}\n sx={{ py: 1 }}\n {...props}\n >\n <NetworkAvatar icon={network?.icon} name={network?.name} sx={{ width: 30, height: 30 }} />\n <ListItemText>{network?.name}</ListItemText>\n </ActiveMenuItem>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport {\n Alert, AlertTitle, Button,\n} from '@mui/material'\nimport type { NetworkStatus } from '@xyo-network/xl1-protocol'\nimport React, { useMemo, useState } from 'react'\n\nimport { NetworkStatusDialog } from './Dialog.tsx'\n\nexport interface NetworkStatusAlertProps extends AlertProps {\n status?: NetworkStatus\n}\n\nexport const NetworkStatusAlert: React.FC<NetworkStatusAlertProps> = ({ status, ...props }) => {\n const [open, setOpen] = useState(false)\n const handleClose = () => setOpen(false)\n\n const severity = useMemo(() => {\n if (!status) return\n switch (status.state) {\n case 'online': {\n return 'success'\n }\n case 'offline': {\n return 'error'\n }\n case 'degraded': {\n return 'warning'\n }\n case 'unknown': {\n return 'error'\n }\n }\n }, [status])\n\n return (\n <Alert severity={severity} {...props}>\n <AlertTitle>{status?.description}</AlertTitle>\n {status?.updates && status.updates.length > 0\n ? (\n <>\n <Button color={severity} variant=\"outlined\" size=\"small\" onClick={() => setOpen(true)}>\n Updates\n </Button>\n <NetworkStatusDialog open={open} onClose={handleClose} updates={status.updates} />\n </>\n )\n : null}\n </Alert>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, List, ListItem, Typography,\n} from '@mui/material'\nimport type { NetworkStatusUpdate } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nexport interface NetworkStatusDialogProps extends DialogProps {\n updates: NetworkStatusUpdate[]\n}\n\nexport const NetworkStatusDialog: React.FC<NetworkStatusDialogProps> = ({ updates, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Recent Status Updates</DialogTitle>\n <DialogContent>\n <List>\n {updates.map(({\n start, end, update,\n }) => (\n <ListItem\n key={start + update}\n sx={{\n flexDirection: 'column', alignItems: 'start', pl: 0,\n }}\n >\n <Typography>\n {update}\n </Typography>\n <Typography gutterBottom sx={{ opacity: 0.75, fontSize: '.8333rem' }}>\n Start:\n {' '}\n {new Date(start).toLocaleString()}\n {' '}\n <br />\n End:\n {' '}\n {new Date(end).toLocaleString()}\n </Typography>\n </ListItem>\n ))}\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={e => props.onClose?.(e, 'backdropClick')} color=\"primary\" variant=\"outlined\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { usePollNetworkStatus } from '../../hooks/index.ts'\nimport { NetworkStatusAlert } from './Alert.tsx'\n\nconst validNetworkStates = new Set(['online', 'unknown'])\n\nexport interface NetworkStatusProps extends PropsWithChildren<AlertProps> {}\n\nexport const NetworkStatus: React.FC<NetworkStatusProps> = ({ children, ...props }) => {\n const [networkStatus] = usePollNetworkStatus()\n const showStatus = networkStatus && !validNetworkStates.has(networkStatus.state)\n return (\n <>\n {showStatus ? <NetworkStatusAlert status={networkStatus} {...props} /> : null}\n {children}\n </>\n )\n}\n","import { useCurrentBlock, useViewerFromWallet } from '@xyo-network/react-chain-provider'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'\n\nimport { useViewerInPage } from './useViewerInPage.ts'\n\nexport const useActiveNetworkCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n\nexport const useActiveNetworkCurrentBlockInPage = (refresh = 1) => {\n const viewer = useViewerInPage()\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n\nexport const useActiveNetworkCurrentBlockInWallet = (refresh = 1) => {\n const [viewer] = useViewerFromWallet()\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n","import {\n isDefined, isDefinedNotNull, isUndefined,\n} from '@xylabs/sdk-js'\nimport { useHttpRpcViewer, useViewerFromWallet } from '@xyo-network/react-chain-provider'\nimport { type NetworkBootstrap } from '@xyo-network/xl1-network-model'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\n/**\n * Get the viewer for the active network, first from the wallet or fallback to HTTP RPC\n * @returns - XyoViewer for the active network\n */\nexport const useViewerInPage = (networkOverride?: NetworkBootstrap) => {\n let networkBootstrap: NetworkBootstrap | undefined\n const { activeNetwork } = useChainNetwork()\n networkBootstrap = isDefined(networkOverride) ? networkOverride : activeNetwork\n\n const httpRpcViewer = useHttpRpcViewer(networkBootstrap?.url)\n const [walletRpcViewer] = useViewerFromWallet(networkBootstrap?.id)\n\n if (isUndefined(walletRpcViewer)) return\n return isDefinedNotNull(walletRpcViewer) ? walletRpcViewer : httpRpcViewer\n}\n","import { useNetwork } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\nexport const useActiveNetworkNetwork = () => {\n const { activeNetwork } = useChainNetwork()\n const network = useNetwork(activeNetwork?.id)\n return network\n}\n","import { useHttpRpcRunner } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\nexport const useActiveNetworkRunner = () => {\n const { activeNetwork } = useChainNetwork()\n const runner = useHttpRpcRunner(activeNetwork?.url)\n\n return runner\n}\n","import { useHttpRpcViewer } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\n/**\n * Get the viewer directly from the active network\n * @returns - The viewer for the active network\n */\nexport const useViewerInWallet = () => {\n const { activeNetwork } = useChainNetwork()\n const walletViewer = useHttpRpcViewer(activeNetwork?.url)\n return walletViewer\n}\n","import { delay, isUndefined } from '@xylabs/sdk-js'\nimport type { NetworkStatus } from '@xyo-network/xl1-protocol'\nimport { useEffect, useState } from 'react'\n\nimport { useActiveNetworkNetwork } from '../index.ts'\n\nconst STATUS_CHECK_INTERVAL = 10_000\n\nexport const usePollNetworkStatus = () => {\n const network = useActiveNetworkNetwork()\n const [networkStatus, setNetworkStatus] = useState<NetworkStatus>()\n const [networkStatusError, setNetworkStatusError] = useState<Error>()\n\n // Check network status every 10 seconds\n useEffect(() => {\n let checkNetwork = true\n void (async () => {\n if (isUndefined(network)) return\n while (checkNetwork) {\n try {\n const response = await network.status()\n setNetworkStatus(response)\n setNetworkStatusError(undefined)\n } catch (error) {\n console.error('Error fetching network status:', error)\n setNetworkStatus(undefined)\n setNetworkStatusError(error as Error)\n }\n await delay(STATUS_CHECK_INTERVAL)\n }\n })()\n\n return () => {\n // Cleanup function to stop checking network status at the current statusUrl\n checkNetwork = false\n }\n }, [network])\n\n return [networkStatus, networkStatusError] as const\n}\n"],"mappings":"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","names":["Avatar","React","createContextEx","ChainNetworkContext","ErrorRender","usePromise","MainNetwork","React","useCallback","useMemo","useState","ChainNetworkProvider","children","getActiveNetwork","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","resolvedActiveNetwork","activeNetworkError","usePromise","find","network","id","defaultNetwork","MainNetwork","useMemo","updateActiveNetwork","useCallback","networkId","undefined","Error","value","provided","chainNetworkError","ChainNetworkContext","ErrorRender","scope","useContextEx","useChainNetwork","required","useContextEx","ChainNetworkContext","React","NetworkIcon","icon","style","props","React","span","dangerouslySetInnerHTML","__html","display","width","height","NetworkAvatar","icon","iconStyles","name","sx","props","React","Avatar","backgroundColor","alt","NetworkIcon","style","ActiveNetworkAvatar","activeNetwork","useChainNetwork","ListItemText","ActiveMenuItem","React","NetworkMenuItem","active","network","onClick","updateActiveNetwork","props","handleClick","event","undefined","Error","id","React","ActiveMenuItem","title","name","disableRipple","sx","py","NetworkAvatar","icon","width","height","ListItemText","Alert","AlertTitle","Button","React","useMemo","useState","Button","Dialog","DialogActions","DialogContent","DialogTitle","List","ListItem","Typography","React","NetworkStatusDialog","updates","props","React","Dialog","DialogTitle","DialogContent","List","map","start","end","update","ListItem","key","sx","flexDirection","alignItems","pl","Typography","gutterBottom","opacity","fontSize","Date","toLocaleString","br","DialogActions","Button","onClick","e","onClose","color","variant","NetworkStatusAlert","status","props","open","setOpen","useState","handleClose","severity","useMemo","state","React","Alert","AlertTitle","description","updates","length","Button","color","variant","size","onClick","NetworkStatusDialog","onClose","React","useCurrentBlock","useViewerFromWallet","isDefined","isDefinedNotNull","isUndefined","useHttpRpcViewer","useViewerFromWallet","useViewerInPage","networkOverride","networkBootstrap","activeNetwork","useChainNetwork","isDefined","httpRpcViewer","useHttpRpcViewer","url","walletRpcViewer","useViewerFromWallet","id","isUndefined","isDefinedNotNull","useActiveNetworkCurrentBlock","refresh","viewer","currentBlock","useCurrentBlock","useActiveNetworkCurrentBlockInPage","useViewerInPage","useActiveNetworkCurrentBlockInWallet","useViewerFromWallet","useNetwork","useActiveNetworkNetwork","activeNetwork","useChainNetwork","network","useNetwork","id","useHttpRpcRunner","useActiveNetworkRunner","activeNetwork","useChainNetwork","runner","useHttpRpcRunner","url","useHttpRpcViewer","useViewerInWallet","activeNetwork","useChainNetwork","walletViewer","useHttpRpcViewer","url","delay","isUndefined","useEffect","useState","STATUS_CHECK_INTERVAL","usePollNetworkStatus","network","useActiveNetworkNetwork","networkStatus","setNetworkStatus","useState","networkStatusError","setNetworkStatusError","useEffect","checkNetwork","isUndefined","response","status","undefined","error","console","delay","validNetworkStates","Set","NetworkStatus","children","props","networkStatus","usePollNetworkStatus","showStatus","has","state","React","NetworkStatusAlert","status"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/menu/Avatar.tsx","../../src/context/network/context.ts","../../src/context/network/Provider.tsx","../../src/context/network/use.ts","../../src/components/menu/Icon.tsx","../../src/components/menu/MenuItem.tsx","../../src/components/status/Alert.tsx","../../src/components/status/Dialog.tsx","../../src/components/status/NetworkStatus.tsx","../../src/hooks/provider/useActiveNetworkCurrentBlock.ts","../../src/hooks/provider/useViewerInPage.ts","../../src/hooks/provider/useActiveNetworkNetwork.ts","../../src/hooks/provider/useActiveNetworkRunner.ts","../../src/hooks/provider/useViewerInWallet.ts","../../src/hooks/status/usePollNetworkStatus.ts"],"sourcesContent":["import type { AvatarProps } from '@mui/material'\nimport { Avatar } from '@mui/material'\nimport type { CSSProperties } from 'react'\nimport React from 'react'\n\nimport { useChainNetwork } from '../../context/index.ts'\nimport { NetworkIcon } from './Icon.tsx'\n\nexport interface NetworkAvatarProps extends AvatarProps {\n icon?: string\n iconStyles?: CSSProperties\n name?: string\n}\n\nexport const NetworkAvatar: React.FC<NetworkAvatarProps> = ({\n icon, iconStyles, name, sx, ...props\n}) => {\n return (\n <Avatar\n sx={{ backgroundColor: 'white', ...sx }}\n alt={name}\n {...props}\n >\n <NetworkIcon\n icon={icon}\n style={{ ...iconStyles }}\n />\n </Avatar>\n )\n}\n\nexport const ActiveNetworkAvatar: React.FC<AvatarProps> = (props) => {\n const { activeNetwork } = useChainNetwork()\n\n return (\n <NetworkAvatar\n icon={activeNetwork?.icon}\n name={activeNetwork?.name}\n {...props}\n />\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainNetworkState } from './state.ts'\n\nexport const ChainNetworkContext = createContextEx<ChainNetworkState>()\n","import { ErrorRender } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-network-model'\nimport { MainNetwork } from '@xyo-network/xl1-network-model'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n\n // Set the active network upon initialization\n const [resolvedActiveNetwork, activeNetworkError] = usePromise(async () => {\n // ensure networks are loaded\n if (!networks) return\n // get last saved active network\n const activeNetwork = await getActiveNetwork?.()\n // ensure the active network saved is found in the list of networks\n if (activeNetwork && networks?.find(network => network.id === activeNetwork.id)) {\n // Set the active network if it exists\n return activeNetwork\n } else {\n // Set the default network if no active network exists\n const defaultNetwork = networks.find(network => network.id === MainNetwork.id) ?? networks[0]\n await setActiveNetworkExternal?.(defaultNetwork.id)\n\n // Set the active network in the context\n return defaultNetwork\n }\n }, [networks])\n\n const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState(resolvedActiveNetwork)\n if (isDefined(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {\n setActiveNetwork(resolvedActiveNetwork)\n setPreviousResolvedActiveNetwork(resolvedActiveNetwork)\n }\n\n const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {\n setError(undefined)\n const network = networks?.find(network => network.id === networkId)\n if (!network) {\n setError(new Error(`Network with id ${networkId} not found`))\n return\n }\n // set internally\n setActiveNetwork(network)\n // set externally\n void setActiveNetworkExternal?.(networkId)\n }, [networks, setActiveNetworkExternal])\n\n const value: ChainNetworkState = useMemo(() => ({\n activeNetwork,\n networks,\n provided: true,\n updateActiveNetwork,\n chainNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, activeNetworkError, error, networks, updateActiveNetwork])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"ChainNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx(ChainNetworkContext, 'ChainNetwork', required)\n","import type { DetailedHTMLProps, HtmlHTMLAttributes } from 'react'\nimport React from 'react'\n\nexport interface NetworkIconProps extends DetailedHTMLProps<HtmlHTMLAttributes<HTMLSpanElement>, HTMLSpanElement> {\n icon?: string\n}\n\nexport const NetworkIcon: React.FC<NetworkIconProps> = ({\n icon, style, ...props\n}) => {\n return (\n <span\n // eslint-disable-next-line react-dom/no-dangerously-set-innerhtml\n dangerouslySetInnerHTML={{ __html: icon ?? '' }} // Placeholder for SVG\\\n style={{\n display: 'inline-flex', width: 24, height: 24, ...style,\n }}\n {...props}\n />\n )\n}\n","import type { MenuItemProps } from '@mui/material'\nimport { ListItemText } from '@mui/material'\nimport { ActiveMenuItem } from '@xyo-network/react-chain-shared'\nimport type { NetworkBootstrap } from '@xyo-network/xl1-network-model'\nimport type { NetworkId } from '@xyo-network/xl1-protocol'\nimport type { MouseEvent as ReactMouseEvent } from 'react'\nimport React from 'react'\n\nimport { NetworkAvatar } from './Avatar.tsx'\n\nexport interface NetworkMenuItemProps extends MenuItemProps {\n active?: boolean\n network?: NetworkBootstrap\n updateActiveNetwork?: (networkId: NetworkId) => void\n}\n\nexport const NetworkMenuItem: React.FC<NetworkMenuItemProps> = ({\n active, network, onClick, updateActiveNetwork, ...props\n}) => {\n const handleClick = (event: ReactMouseEvent<HTMLLIElement, MouseEvent>) => {\n if (network === undefined) throw new Error('Network is undefined')\n updateActiveNetwork?.(network.id)\n onClick?.(event)\n }\n\n return (\n <ActiveMenuItem\n title={network?.name}\n disableRipple\n onClick={handleClick}\n active={active}\n sx={{ py: 1 }}\n {...props}\n >\n <NetworkAvatar icon={network?.icon} name={network?.name} sx={{ width: 30, height: 30 }} />\n <ListItemText>{network?.name}</ListItemText>\n </ActiveMenuItem>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport {\n Alert, AlertTitle, Button,\n} from '@mui/material'\nimport type { NetworkStatus } from '@xyo-network/xl1-protocol'\nimport React, { useMemo, useState } from 'react'\n\nimport { NetworkStatusDialog } from './Dialog.tsx'\n\nexport interface NetworkStatusAlertProps extends AlertProps {\n status?: NetworkStatus\n}\n\nexport const NetworkStatusAlert: React.FC<NetworkStatusAlertProps> = ({ status, ...props }) => {\n const [open, setOpen] = useState(false)\n const handleClose = () => setOpen(false)\n\n const severity = useMemo(() => {\n if (!status) return\n switch (status.state) {\n case 'online': {\n return 'success'\n }\n case 'offline': {\n return 'error'\n }\n case 'degraded': {\n return 'warning'\n }\n case 'unknown': {\n return 'error'\n }\n }\n }, [status])\n\n return (\n <Alert severity={severity} {...props}>\n <AlertTitle>{status?.description}</AlertTitle>\n {status?.updates && status.updates.length > 0\n ? (\n <>\n <Button color={severity} variant=\"outlined\" size=\"small\" onClick={() => setOpen(true)}>\n Updates\n </Button>\n <NetworkStatusDialog open={open} onClose={handleClose} updates={status.updates} />\n </>\n )\n : null}\n </Alert>\n )\n}\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent, DialogTitle, List, ListItem, Typography,\n} from '@mui/material'\nimport type { NetworkStatusUpdate } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nexport interface NetworkStatusDialogProps extends DialogProps {\n updates: NetworkStatusUpdate[]\n}\n\nexport const NetworkStatusDialog: React.FC<NetworkStatusDialogProps> = ({ updates, ...props }) => {\n return (\n <Dialog {...props}>\n <DialogTitle>Recent Status Updates</DialogTitle>\n <DialogContent>\n <List>\n {updates.map(({\n start, end, update,\n }) => (\n <ListItem\n key={start + update}\n sx={{\n flexDirection: 'column', alignItems: 'start', pl: 0,\n }}\n >\n <Typography>\n {update}\n </Typography>\n <Typography gutterBottom sx={{ opacity: 0.75, fontSize: '.8333rem' }}>\n Start:\n {' '}\n {new Date(start).toLocaleString()}\n {' '}\n <br />\n End:\n {' '}\n {new Date(end).toLocaleString()}\n </Typography>\n </ListItem>\n ))}\n </List>\n </DialogContent>\n <DialogActions>\n <Button onClick={e => props.onClose?.(e, 'backdropClick')} color=\"primary\" variant=\"outlined\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { AlertProps } from '@mui/material'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { usePollNetworkStatus } from '../../hooks/index.ts'\nimport { NetworkStatusAlert } from './Alert.tsx'\n\nconst validNetworkStates = new Set(['online', 'unknown'])\n\nexport interface NetworkStatusProps extends PropsWithChildren<AlertProps> {}\n\nexport const NetworkStatus: React.FC<NetworkStatusProps> = ({ children, ...props }) => {\n const [networkStatus] = usePollNetworkStatus()\n const showStatus = networkStatus && !validNetworkStates.has(networkStatus.state)\n return (\n <>\n {showStatus ? <NetworkStatusAlert status={networkStatus} {...props} /> : null}\n {children}\n </>\n )\n}\n","import { useCurrentBlock, useViewerFromWallet } from '@xyo-network/react-chain-provider'\nimport type { XyoViewer } from '@xyo-network/xl1-sdk'\n\nimport { useViewerInPage } from './useViewerInPage.ts'\n\nexport const useActiveNetworkCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n\nexport const useActiveNetworkCurrentBlockInPage = (refresh = 1) => {\n const viewer = useViewerInPage()\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n\nexport const useActiveNetworkCurrentBlockInWallet = (refresh = 1) => {\n const [viewer] = useViewerFromWallet()\n const currentBlock = useCurrentBlock(refresh, viewer)\n\n return currentBlock\n}\n","import {\n isDefined, isDefinedNotNull, isUndefined,\n} from '@xylabs/sdk-js'\nimport { useHttpRpcViewer, useViewerFromWallet } from '@xyo-network/react-chain-provider'\nimport { type NetworkBootstrap } from '@xyo-network/xl1-sdk'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\n/**\n * Get the viewer for the active network, first from the wallet or fallback to HTTP RPC\n * @returns - XyoViewer for the active network\n */\nexport const useViewerInPage = (networkOverride?: NetworkBootstrap) => {\n let networkBootstrap: NetworkBootstrap | undefined\n const { activeNetwork } = useChainNetwork()\n networkBootstrap = isDefined(networkOverride) ? networkOverride : activeNetwork\n\n const httpRpcViewer = useHttpRpcViewer(networkBootstrap?.url)\n const [walletRpcViewer] = useViewerFromWallet(networkBootstrap?.id)\n\n if (isUndefined(walletRpcViewer)) return\n return isDefinedNotNull(walletRpcViewer) ? walletRpcViewer : httpRpcViewer\n}\n","import { useNetwork } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\nexport const useActiveNetworkNetwork = () => {\n const { activeNetwork } = useChainNetwork()\n const network = useNetwork(activeNetwork?.id)\n return network\n}\n","import { useHttpRpcRunner } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\nexport const useActiveNetworkRunner = () => {\n const { activeNetwork } = useChainNetwork()\n const runner = useHttpRpcRunner(activeNetwork?.url)\n\n return runner\n}\n","import { useHttpRpcViewer } from '@xyo-network/react-chain-provider'\n\nimport { useChainNetwork } from '../../context/index.ts'\n\n/**\n * Get the viewer directly from the active network\n * @returns - The viewer for the active network\n */\nexport const useViewerInWallet = () => {\n const { activeNetwork } = useChainNetwork()\n const walletViewer = useHttpRpcViewer(activeNetwork?.url)\n return walletViewer\n}\n","import { delay, isUndefined } from '@xylabs/sdk-js'\nimport type { NetworkStatus } from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nimport { useActiveNetworkNetwork } from '../index.ts'\n\nconst STATUS_CHECK_INTERVAL = 10_000\n\nexport const usePollNetworkStatus = () => {\n const network = useActiveNetworkNetwork()\n const [networkStatus, setNetworkStatus] = useState<NetworkStatus>()\n const [networkStatusError, setNetworkStatusError] = useState<Error>()\n\n // Check network status every 10 seconds\n useEffect(() => {\n let checkNetwork = true\n void (async () => {\n if (isUndefined(network)) return\n while (checkNetwork) {\n try {\n const response = await network.status()\n setNetworkStatus(response)\n setNetworkStatusError(undefined)\n } catch (error) {\n console.error('Error fetching network status:', error)\n setNetworkStatus(undefined)\n setNetworkStatusError(error as Error)\n }\n await delay(STATUS_CHECK_INTERVAL)\n }\n })()\n\n return () => {\n // Cleanup function to stop checking network status at the current statusUrl\n checkNetwork = false\n }\n }, [network])\n\n return [networkStatus, networkStatusError] as const\n}\n"],"mappings":"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","names":["Avatar","React","createContextEx","ChainNetworkContext","ErrorRender","usePromise","isDefined","MainNetwork","React","useCallback","useMemo","useState","ChainNetworkProvider","children","getActiveNetwork","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","resolvedActiveNetwork","activeNetworkError","usePromise","find","network","id","defaultNetwork","MainNetwork","previousResolvedActiveNetwork","setPreviousResolvedActiveNetwork","isDefined","updateActiveNetwork","useCallback","networkId","undefined","Error","value","useMemo","provided","chainNetworkError","ChainNetworkContext","ErrorRender","scope","useContextEx","useChainNetwork","required","useContextEx","ChainNetworkContext","React","NetworkIcon","icon","style","props","React","span","dangerouslySetInnerHTML","__html","display","width","height","NetworkAvatar","icon","iconStyles","name","sx","props","React","Avatar","backgroundColor","alt","NetworkIcon","style","ActiveNetworkAvatar","activeNetwork","useChainNetwork","ListItemText","ActiveMenuItem","React","NetworkMenuItem","active","network","onClick","updateActiveNetwork","props","handleClick","event","undefined","Error","id","React","ActiveMenuItem","title","name","disableRipple","sx","py","NetworkAvatar","icon","width","height","ListItemText","Alert","AlertTitle","Button","React","useMemo","useState","Button","Dialog","DialogActions","DialogContent","DialogTitle","List","ListItem","Typography","React","NetworkStatusDialog","updates","props","React","Dialog","DialogTitle","DialogContent","List","map","start","end","update","ListItem","key","sx","flexDirection","alignItems","pl","Typography","gutterBottom","opacity","fontSize","Date","toLocaleString","br","DialogActions","Button","onClick","e","onClose","color","variant","NetworkStatusAlert","status","props","open","setOpen","useState","handleClose","severity","useMemo","state","React","Alert","AlertTitle","description","updates","length","Button","color","variant","size","onClick","NetworkStatusDialog","onClose","React","useCurrentBlock","useViewerFromWallet","isDefined","isDefinedNotNull","isUndefined","useHttpRpcViewer","useViewerFromWallet","useViewerInPage","networkOverride","networkBootstrap","activeNetwork","useChainNetwork","isDefined","httpRpcViewer","useHttpRpcViewer","url","walletRpcViewer","useViewerFromWallet","id","isUndefined","isDefinedNotNull","useActiveNetworkCurrentBlock","refresh","viewer","currentBlock","useCurrentBlock","useActiveNetworkCurrentBlockInPage","useViewerInPage","useActiveNetworkCurrentBlockInWallet","useViewerFromWallet","useNetwork","useActiveNetworkNetwork","activeNetwork","useChainNetwork","network","useNetwork","id","useHttpRpcRunner","useActiveNetworkRunner","activeNetwork","useChainNetwork","runner","useHttpRpcRunner","url","useHttpRpcViewer","useViewerInWallet","activeNetwork","useChainNetwork","walletViewer","useHttpRpcViewer","url","delay","isUndefined","useEffect","useState","STATUS_CHECK_INTERVAL","usePollNetworkStatus","network","useActiveNetworkNetwork","networkStatus","setNetworkStatus","useState","networkStatusError","setNetworkStatusError","useEffect","checkNetwork","isUndefined","response","status","undefined","error","console","delay","validNetworkStates","Set","NetworkStatus","children","props","networkStatus","usePollNetworkStatus","showStatus","has","state","React","NetworkStatusAlert","status"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/react-chain-network",
|
|
4
|
-
"version": "1.18.
|
|
4
|
+
"version": "1.18.1",
|
|
5
5
|
"description": "XYO Layer One React SDK",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -51,30 +51,30 @@
|
|
|
51
51
|
"@xylabs/react-error": "~7.1.9",
|
|
52
52
|
"@xylabs/react-promise": "~7.1.9",
|
|
53
53
|
"@xylabs/react-shared": "~7.1.9",
|
|
54
|
-
"@xylabs/sdk-js": "~5.0.
|
|
55
|
-
"@xyo-network/react-chain-provider": "~1.18.
|
|
56
|
-
"@xyo-network/react-chain-shared": "~1.18.
|
|
57
|
-
"@xyo-network/xl1-network-model": "~1.18.
|
|
58
|
-
"@xyo-network/xl1-
|
|
59
|
-
"@xyo-network/xl1-protocol-sdk": "~1.18.0"
|
|
54
|
+
"@xylabs/sdk-js": "~5.0.61",
|
|
55
|
+
"@xyo-network/react-chain-provider": "~1.18.1",
|
|
56
|
+
"@xyo-network/react-chain-shared": "~1.18.1",
|
|
57
|
+
"@xyo-network/xl1-network-model": "~1.18.14",
|
|
58
|
+
"@xyo-network/xl1-sdk": "~1.18.2"
|
|
60
59
|
},
|
|
61
60
|
"devDependencies": {
|
|
62
61
|
"@emotion/react": "~11.14.0",
|
|
63
62
|
"@emotion/styled": "~11.14.1",
|
|
64
|
-
"@mui/icons-material": "~7.3.
|
|
65
|
-
"@mui/material": "~7.3.
|
|
66
|
-
"@storybook/react-vite": "~10.1.
|
|
67
|
-
"@types/react": "~19.2.
|
|
63
|
+
"@mui/icons-material": "~7.3.7",
|
|
64
|
+
"@mui/material": "~7.3.7",
|
|
65
|
+
"@storybook/react-vite": "~10.1.11",
|
|
66
|
+
"@types/react": "~19.2.8",
|
|
68
67
|
"@xylabs/react-button": "~7.1.9",
|
|
69
68
|
"@xylabs/ts-scripts-yarn3": "~7.2.32",
|
|
70
69
|
"@xylabs/tsconfig": "~7.2.32",
|
|
71
70
|
"@xylabs/tsconfig-dom": "~7.2.32",
|
|
72
71
|
"@xylabs/tsconfig-react": "~7.2.32",
|
|
73
|
-
"@xyo-network/react-chain-model": "~1.18.
|
|
72
|
+
"@xyo-network/react-chain-model": "~1.18.1",
|
|
73
|
+
"@xyo-network/xl1-protocol": "~1.18.14",
|
|
74
74
|
"eslint": "^9.39.2",
|
|
75
75
|
"react": "~19.2.3",
|
|
76
76
|
"react-dom": "~19.2.3",
|
|
77
|
-
"react-router-dom": "^7.
|
|
77
|
+
"react-router-dom": "^7.12.0",
|
|
78
78
|
"typescript": "~5.9.3"
|
|
79
79
|
},
|
|
80
80
|
"peerDependencies": {
|
|
@@ -95,4 +95,4 @@
|
|
|
95
95
|
"access": "public"
|
|
96
96
|
},
|
|
97
97
|
"docs": "dist/docs.json"
|
|
98
|
-
}
|
|
98
|
+
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ErrorRender } from '@xylabs/react-error'
|
|
2
2
|
import { usePromise } from '@xylabs/react-promise'
|
|
3
|
+
import { isDefined } from '@xylabs/sdk-js'
|
|
3
4
|
import type { NetworkBootstrap } from '@xyo-network/xl1-network-model'
|
|
4
5
|
import { MainNetwork } from '@xyo-network/xl1-network-model'
|
|
5
6
|
import type { PropsWithChildren } from 'react'
|
|
@@ -42,11 +43,11 @@ export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
|
|
|
42
43
|
}
|
|
43
44
|
}, [networks])
|
|
44
45
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
46
|
+
const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState(resolvedActiveNetwork)
|
|
47
|
+
if (isDefined(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {
|
|
48
|
+
setActiveNetwork(resolvedActiveNetwork)
|
|
49
|
+
setPreviousResolvedActiveNetwork(resolvedActiveNetwork)
|
|
50
|
+
}
|
|
50
51
|
|
|
51
52
|
const updateActiveNetwork = useCallback((networkId: NetworkBootstrap['id']) => {
|
|
52
53
|
setError(undefined)
|
|
@@ -59,7 +60,7 @@ export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
|
|
|
59
60
|
setActiveNetwork(network)
|
|
60
61
|
// set externally
|
|
61
62
|
void setActiveNetworkExternal?.(networkId)
|
|
62
|
-
}, [networks])
|
|
63
|
+
}, [networks, setActiveNetworkExternal])
|
|
63
64
|
|
|
64
65
|
const value: ChainNetworkState = useMemo(() => ({
|
|
65
66
|
activeNetwork,
|
|
@@ -67,7 +68,7 @@ export const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({
|
|
|
67
68
|
provided: true,
|
|
68
69
|
updateActiveNetwork,
|
|
69
70
|
chainNetworkError: error ?? activeNetworkError,
|
|
70
|
-
}), [activeNetwork, networks, updateActiveNetwork])
|
|
71
|
+
}), [activeNetwork, activeNetworkError, error, networks, updateActiveNetwork])
|
|
71
72
|
|
|
72
73
|
return (
|
|
73
74
|
<ChainNetworkContext value={value}>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ContextExState } from '@xylabs/react-shared'
|
|
2
|
-
import type { NetworkBootstrap } from '@xyo-network/xl1-
|
|
2
|
+
import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'
|
|
3
3
|
|
|
4
4
|
export type ChainNetworkState = ContextExState<{
|
|
5
5
|
activeNetwork?: NetworkBootstrap
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Alert, Stack } from '@mui/material'
|
|
2
2
|
import type { StoryFn } from '@storybook/react-vite'
|
|
3
3
|
import { ButtonEx } from '@xylabs/react-button'
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
isDefined, isDefinedNotNull, isUndefined,
|
|
6
|
+
} from '@xylabs/sdk-js'
|
|
5
7
|
import { isXyoGlobal } from '@xyo-network/react-chain-model'
|
|
6
8
|
import { LocalNetwork } from '@xyo-network/xl1-network-model'
|
|
7
9
|
import type { HydratedBlock } from '@xyo-network/xl1-protocol'
|
|
8
|
-
import React, {
|
|
10
|
+
import React, { useCallback, useState } from 'react'
|
|
9
11
|
|
|
10
12
|
import { ChainNetworkProvider } from '../../context/index.ts'
|
|
11
13
|
import { useViewerInPage } from './useViewerInPage.ts'
|
|
@@ -27,13 +29,7 @@ const UseViewerInPageStoryTemplateInner: React.FC = () => {
|
|
|
27
29
|
const [result, setResult] = useState<HydratedBlock | null | undefined>()
|
|
28
30
|
const [loading, setLoading] = useState(false)
|
|
29
31
|
|
|
30
|
-
|
|
31
|
-
if (isDefined(viewer)) {
|
|
32
|
-
void handleClick()
|
|
33
|
-
}
|
|
34
|
-
}, [viewer])
|
|
35
|
-
|
|
36
|
-
const handleClick = async () => {
|
|
32
|
+
const handleClick = useCallback(async () => {
|
|
37
33
|
if (isDefinedNotNull(viewer)) {
|
|
38
34
|
try {
|
|
39
35
|
setLoading(true)
|
|
@@ -47,6 +43,10 @@ const UseViewerInPageStoryTemplateInner: React.FC = () => {
|
|
|
47
43
|
setLoading(false)
|
|
48
44
|
}
|
|
49
45
|
}
|
|
46
|
+
}, [viewer])
|
|
47
|
+
|
|
48
|
+
if (isDefined(viewer) && isUndefined(result) && !loading) {
|
|
49
|
+
void handleClick()
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
return (
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCurrentBlock, useViewerFromWallet } from '@xyo-network/react-chain-provider'
|
|
2
|
-
import type { XyoViewer } from '@xyo-network/xl1-
|
|
2
|
+
import type { XyoViewer } from '@xyo-network/xl1-sdk'
|
|
3
3
|
|
|
4
4
|
import { useViewerInPage } from './useViewerInPage.ts'
|
|
5
5
|
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
isDefined, isDefinedNotNull, isUndefined,
|
|
3
3
|
} from '@xylabs/sdk-js'
|
|
4
4
|
import { useHttpRpcViewer, useViewerFromWallet } from '@xyo-network/react-chain-provider'
|
|
5
|
-
import { type NetworkBootstrap } from '@xyo-network/xl1-
|
|
5
|
+
import { type NetworkBootstrap } from '@xyo-network/xl1-sdk'
|
|
6
6
|
|
|
7
7
|
import { useChainNetwork } from '../../context/index.ts'
|
|
8
8
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { delay, isUndefined } from '@xylabs/sdk-js'
|
|
2
|
-
import type { NetworkStatus } from '@xyo-network/xl1-
|
|
2
|
+
import type { NetworkStatus } from '@xyo-network/xl1-sdk'
|
|
3
3
|
import { useEffect, useState } from 'react'
|
|
4
4
|
|
|
5
5
|
import { useActiveNetworkNetwork } from '../index.ts'
|