@xyo-network/react-chain-network 2.0.17 → 3.0.0
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/components/broadcast/details/SummaryStack.d.ts.map +1 -1
- package/dist/browser/components/status/Dialog.d.ts.map +1 -1
- package/dist/browser/components/status/NetworkStatus.d.ts.map +1 -1
- package/dist/browser/context/network/Provider.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useRpcBroadcastListener.d.ts.map +1 -1
- package/dist/browser/index.mjs +80 -63
- package/dist/browser/index.mjs.map +3 -3
- package/package.json +41 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummaryStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/broadcast/details/SummaryStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAIjE,OAAO,EAEoB,KAAK,UAAU,EAEzC,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"SummaryStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/broadcast/details/SummaryStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAIjE,OAAO,EAEoB,KAAK,UAAU,EAEzC,MAAM,eAAe,CAAA;AAMtB,OAAO,KAAkB,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,wCAAyC,SAAQ,UAAU;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,aAAa,CAAA;IACtB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;IACzC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,qCAAqC,EAAE,KAAK,CAAC,EAAE,CAAC,wCAAwC,CA8EpG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/status/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../../src/components/status/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC/D,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,OAAO,EAAE,mBAAmB,EAAE,CAAA;CAC/B;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA+ClE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NetworkStatus.d.ts","sourceRoot":"","sources":["../../../../src/components/status/NetworkStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"NetworkStatus.d.ts","sourceRoot":"","sources":["../../../../src/components/status/NetworkStatus.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB,CAAC,UAAU,CAAC;CAAG;AAE5E,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAStD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAI/D,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAC9D,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,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,
|
|
1
|
+
{"version":3,"file":"Provider.d.ts","sourceRoot":"","sources":["../../../../src/context/network/Provider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAE5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAA;AAC9C,OAAO,KAEN,MAAM,OAAO,CAAA;AAGd,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAI/D,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;IAC9D,eAAe,CAAC,EAAE,oBAAoB,CAAA;IACtC,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,CA6DpE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRpcBroadcastListener.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useRpcBroadcastListener.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACmC,2BAA2B,EACzE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"useRpcBroadcastListener.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useRpcBroadcastListener.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACmC,2BAA2B,EACzE,MAAM,sBAAsB,CAAA;AA4B7B,eAAO,MAAM,uBAAuB;;;CA+CnC,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -13,6 +13,11 @@ import { useState as useState7 } from "react";
|
|
|
13
13
|
import { isJsonRpcRequest, isJsonRpcResponse } from "@metamask/utils";
|
|
14
14
|
import { isDefined, isString } from "@xylabs/sdk-js";
|
|
15
15
|
import { useEffect, useState } from "react";
|
|
16
|
+
var isParsedBroadcastDetail = (value) => {
|
|
17
|
+
if (typeof value !== "object" || value === null) return false;
|
|
18
|
+
const candidate = value;
|
|
19
|
+
return (isJsonRpcRequest(candidate.data) || isJsonRpcResponse(candidate.data)) && isString(candidate.source);
|
|
20
|
+
};
|
|
16
21
|
var parseRpcCall = (acc, event) => {
|
|
17
22
|
if (isJsonRpcResponse(event.rpcCall)) {
|
|
18
23
|
const castedEvent = event;
|
|
@@ -31,39 +36,42 @@ var useRpcBroadcastListener = () => {
|
|
|
31
36
|
const clearEvents = () => setEvents({});
|
|
32
37
|
useEffect(() => {
|
|
33
38
|
const listener = (e) => {
|
|
34
|
-
if ("detail" in e)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
source,
|
|
43
|
-
timestamp: Date.now()
|
|
44
|
-
};
|
|
45
|
-
setEvents((prev) => {
|
|
46
|
-
const { id } = broadcastedRpcCall.rpcCall;
|
|
47
|
-
const newState = { ...prev };
|
|
48
|
-
if (isDefined(newState[id])) {
|
|
49
|
-
parseRpcCall(newState, broadcastedRpcCall);
|
|
50
|
-
} else {
|
|
51
|
-
newState[id] = {};
|
|
52
|
-
parseRpcCall(newState, broadcastedRpcCall);
|
|
53
|
-
}
|
|
54
|
-
return newState;
|
|
55
|
-
});
|
|
56
|
-
} catch (err) {
|
|
57
|
-
console.error(err);
|
|
58
|
-
}
|
|
39
|
+
if (!("detail" in e)) return;
|
|
40
|
+
const { detail } = e;
|
|
41
|
+
if (!isString(detail)) return;
|
|
42
|
+
try {
|
|
43
|
+
const parsedDetail = JSON.parse(detail);
|
|
44
|
+
if (!isParsedBroadcastDetail(parsedDetail)) {
|
|
45
|
+
console.error("Invalid broadcast RPC detail", parsedDetail);
|
|
46
|
+
return;
|
|
59
47
|
}
|
|
48
|
+
const { data: rpcCall, source } = parsedDetail;
|
|
49
|
+
const broadcastedRpcCall = {
|
|
50
|
+
rpcCall,
|
|
51
|
+
source,
|
|
52
|
+
timestamp: Date.now()
|
|
53
|
+
};
|
|
54
|
+
setEvents((prev) => {
|
|
55
|
+
const { id } = broadcastedRpcCall.rpcCall;
|
|
56
|
+
const newState = { ...prev };
|
|
57
|
+
if (isDefined(newState[id])) {
|
|
58
|
+
parseRpcCall(newState, broadcastedRpcCall);
|
|
59
|
+
} else {
|
|
60
|
+
newState[id] = {};
|
|
61
|
+
parseRpcCall(newState, broadcastedRpcCall);
|
|
62
|
+
}
|
|
63
|
+
return newState;
|
|
64
|
+
});
|
|
65
|
+
} catch (err) {
|
|
66
|
+
console.error(err);
|
|
60
67
|
}
|
|
61
68
|
};
|
|
62
|
-
|
|
63
|
-
|
|
69
|
+
const controller = new AbortController();
|
|
70
|
+
const options = { signal: controller.signal };
|
|
71
|
+
addEventListener("xyo:broadcast-rpc-request", listener, options);
|
|
72
|
+
addEventListener("xyo:broadcast-rpc-response", listener, options);
|
|
64
73
|
return () => {
|
|
65
|
-
|
|
66
|
-
globalThis.removeEventListener("xyo:broadcast-rpc-response", listener);
|
|
74
|
+
controller.abort();
|
|
67
75
|
};
|
|
68
76
|
}, []);
|
|
69
77
|
return { events, clearEvents };
|
|
@@ -135,11 +143,10 @@ var ChainNetworkProvider = ({
|
|
|
135
143
|
const activeNetwork2 = await getActiveNetwork?.();
|
|
136
144
|
if (activeNetwork2 && networks?.find((network) => network.id === activeNetwork2.id)) {
|
|
137
145
|
return activeNetwork2;
|
|
138
|
-
} else {
|
|
139
|
-
const defaultNetwork = networks.find((network) => network.id === MainNetwork.id) ?? networks[0];
|
|
140
|
-
await setActiveNetworkExternal?.(defaultNetwork.id);
|
|
141
|
-
return defaultNetwork;
|
|
142
146
|
}
|
|
147
|
+
const defaultNetwork = networks.find((network) => network.id === MainNetwork.id) ?? networks[0];
|
|
148
|
+
await setActiveNetworkExternal?.(defaultNetwork.id);
|
|
149
|
+
return defaultNetwork;
|
|
143
150
|
}, [networks]);
|
|
144
151
|
const [previousResolvedActiveNetwork, setPreviousResolvedActiveNetwork] = useState3(resolvedActiveNetwork);
|
|
145
152
|
if (isDefined2(resolvedActiveNetwork) && resolvedActiveNetwork !== previousResolvedActiveNetwork) {
|
|
@@ -190,9 +197,9 @@ var useViewerInPage = () => {
|
|
|
190
197
|
const { networkSettings: networkSettings2, activeNetwork } = useChainNetwork();
|
|
191
198
|
const { gateways } = useProvidedGateway();
|
|
192
199
|
const { inPageGateway, walletGateway } = gateways;
|
|
200
|
+
if (isUndefined(walletGateway)) return;
|
|
193
201
|
const inPageViewer = inPageGateway?.connection?.viewer;
|
|
194
202
|
const walletViewer = walletGateway?.connection?.viewer;
|
|
195
|
-
if (isUndefined(walletGateway)) return;
|
|
196
203
|
if (shouldProxy(networkSettings2, activeNetwork?.id)) {
|
|
197
204
|
if (isNull(walletGateway)) {
|
|
198
205
|
console.warn(`Network ${activeNetwork?.id} is set to proxy but no wallet viewer is available, falling back to HTTP RPC viewer`);
|
|
@@ -287,6 +294,7 @@ import {
|
|
|
287
294
|
import { Identicon } from "@xylabs/react-identicon";
|
|
288
295
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
289
296
|
import { isDefined as isDefined4 } from "@xylabs/sdk-js";
|
|
297
|
+
import { sxEntries } from "@xyo-network/react-chain-shared";
|
|
290
298
|
import { ObjectHasher } from "@xyo-network/sdk-js";
|
|
291
299
|
import { useMemo as useMemo2 } from "react";
|
|
292
300
|
import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
@@ -305,7 +313,11 @@ var BroadcastedRpcCallDetailsSummaryStack = ({
|
|
|
305
313
|
return await ObjectHasher.hash(params);
|
|
306
314
|
}
|
|
307
315
|
}, [params]);
|
|
308
|
-
const formattedTimestamp = useMemo2(() =>
|
|
316
|
+
const formattedTimestamp = useMemo2(() => {
|
|
317
|
+
if (!isDefined4(timestamp)) return "";
|
|
318
|
+
const date = new Date(timestamp);
|
|
319
|
+
return date.toLocaleString();
|
|
320
|
+
}, [timestamp]);
|
|
309
321
|
return /* @__PURE__ */ jsxs2(
|
|
310
322
|
Stack,
|
|
311
323
|
{
|
|
@@ -315,7 +327,7 @@ var BroadcastedRpcCallDetailsSummaryStack = ({
|
|
|
315
327
|
gap: 2,
|
|
316
328
|
alignItems: "center",
|
|
317
329
|
justifyContent: "space-between"
|
|
318
|
-
}, ...
|
|
330
|
+
}, ...sxEntries(props.sx)],
|
|
319
331
|
children: [
|
|
320
332
|
/* @__PURE__ */ jsxs2(
|
|
321
333
|
Stack,
|
|
@@ -330,8 +342,8 @@ var BroadcastedRpcCallDetailsSummaryStack = ({
|
|
|
330
342
|
IconButton2,
|
|
331
343
|
{
|
|
332
344
|
size: "small",
|
|
333
|
-
onClick: () => setExpanded?.(
|
|
334
|
-
children: /* @__PURE__ */ jsx4(ArrowRight, { sx: { transform: expanded ? "rotate(90deg)" : "rotate(0deg)", transition: "transform 0.2s ease-in-out" }, fontSize: "small" })
|
|
345
|
+
onClick: () => setExpanded?.(expanded !== true),
|
|
346
|
+
children: /* @__PURE__ */ jsx4(ArrowRight, { sx: { transform: expanded === true ? "rotate(90deg)" : "rotate(0deg)", transition: "transform 0.2s ease-in-out" }, fontSize: "small" })
|
|
335
347
|
}
|
|
336
348
|
),
|
|
337
349
|
/* @__PURE__ */ jsx4(
|
|
@@ -376,7 +388,7 @@ var BroadcastedRpcCallDetailsSummaryStack = ({
|
|
|
376
388
|
]
|
|
377
389
|
}
|
|
378
390
|
),
|
|
379
|
-
/* @__PURE__ */ jsx4(Icon, { sx: { justifySelf: "end" }, children: hasResult ? /* @__PURE__ */ jsx4(CheckCircle, { sx: { color: "success" } }) : /* @__PURE__ */ jsx4(Warning, { color: "warning" }) })
|
|
391
|
+
/* @__PURE__ */ jsx4(Icon, { sx: { justifySelf: "end" }, children: hasResult === true ? /* @__PURE__ */ jsx4(CheckCircle, { sx: { color: "success" } }) : /* @__PURE__ */ jsx4(Warning, { color: "warning" }) })
|
|
380
392
|
]
|
|
381
393
|
}
|
|
382
394
|
);
|
|
@@ -748,30 +760,34 @@ var NetworkStatusDialog = ({ updates, ...props }) => {
|
|
|
748
760
|
start,
|
|
749
761
|
end,
|
|
750
762
|
update
|
|
751
|
-
}) =>
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
763
|
+
}) => {
|
|
764
|
+
const startDate = new Date(start);
|
|
765
|
+
const endDate = new Date(end);
|
|
766
|
+
return /* @__PURE__ */ jsxs6(
|
|
767
|
+
ListItem,
|
|
768
|
+
{
|
|
769
|
+
sx: {
|
|
770
|
+
flexDirection: "column",
|
|
771
|
+
alignItems: "start",
|
|
772
|
+
pl: 0
|
|
773
|
+
},
|
|
774
|
+
children: [
|
|
775
|
+
/* @__PURE__ */ jsx10(Typography4, { children: update }),
|
|
776
|
+
/* @__PURE__ */ jsxs6(Typography4, { gutterBottom: true, sx: { opacity: 0.75, fontSize: ".8333rem" }, children: [
|
|
777
|
+
"Start:",
|
|
778
|
+
" ",
|
|
779
|
+
startDate.toLocaleString(),
|
|
780
|
+
" ",
|
|
781
|
+
/* @__PURE__ */ jsx10("br", {}),
|
|
782
|
+
"End:",
|
|
783
|
+
" ",
|
|
784
|
+
endDate.toLocaleString()
|
|
785
|
+
] })
|
|
786
|
+
]
|
|
758
787
|
},
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
"Start:",
|
|
763
|
-
" ",
|
|
764
|
-
new Date(start).toLocaleString(),
|
|
765
|
-
" ",
|
|
766
|
-
/* @__PURE__ */ jsx10("br", {}),
|
|
767
|
-
"End:",
|
|
768
|
-
" ",
|
|
769
|
-
new Date(end).toLocaleString()
|
|
770
|
-
] })
|
|
771
|
-
]
|
|
772
|
-
},
|
|
773
|
-
start + update
|
|
774
|
-
)) }) }),
|
|
788
|
+
start + update
|
|
789
|
+
);
|
|
790
|
+
}) }) }),
|
|
775
791
|
/* @__PURE__ */ jsx10(DialogActions, { children: /* @__PURE__ */ jsx10(
|
|
776
792
|
Button2,
|
|
777
793
|
{
|
|
@@ -825,11 +841,12 @@ var NetworkStatusAlert = ({ status, ...props }) => {
|
|
|
825
841
|
};
|
|
826
842
|
|
|
827
843
|
// src/components/status/NetworkStatus.tsx
|
|
844
|
+
import { isDefined as isDefined6 } from "@xylabs/sdk-js";
|
|
828
845
|
import { Fragment as Fragment3, jsx as jsx12, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
829
846
|
var validNetworkStates = /* @__PURE__ */ new Set(["online", "unknown"]);
|
|
830
847
|
var NetworkStatus = ({ children, ...props }) => {
|
|
831
848
|
const [networkStatus] = usePollNetworkStatus();
|
|
832
|
-
const showStatus = networkStatus && !validNetworkStates.has(networkStatus.state);
|
|
849
|
+
const showStatus = isDefined6(networkStatus) && !validNetworkStates.has(networkStatus.state);
|
|
833
850
|
return /* @__PURE__ */ jsxs8(Fragment3, { children: [
|
|
834
851
|
showStatus ? /* @__PURE__ */ jsx12(NetworkStatusAlert, { status: networkStatus, ...props }) : null,
|
|
835
852
|
children
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/broadcast/Drawer.tsx", "../../src/hooks/provider/useRpcBroadcastListener.ts", "../../src/hooks/provider/useViewerInPage.ts", "../../src/context/ActiveGatewayProvider.tsx", "../../src/context/network/context.ts", "../../src/context/network/Provider.tsx", "../../src/context/network/settings/defaultChainNetworkSettings.ts", "../../src/context/network/settings/useChainNetworkSettings.ts", "../../src/context/network/use.ts", "../../src/hooks/status/usePollNetworkStatus.ts", "../../src/components/broadcast/CloseDrawerIconButton.tsx", "../../src/components/broadcast/details/Card.tsx", "../../src/components/broadcast/details/SummaryStack.tsx", "../../src/components/broadcast/usePaginatedEventPairs.ts", "../../src/components/menu/Avatar.tsx", "../../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/model/BroadcastRpc.ts", "../../src/story/NetworkGatewayDecorators.tsx"],
|
|
4
|
-
"sourcesContent": ["import type { DrawerProps } from '@mui/material'\nimport {\n Box, Button, Drawer, Pagination, Stack, Typography,\n} from '@mui/material'\nimport React, { useState } from 'react'\n\nimport { useRpcBroadcastListener } from '../../hooks/index.ts'\nimport type { RpcRequestResponsePairsById } from '../../model/index.ts'\nimport { CloseDrawerIconButton } from './CloseDrawerIconButton.tsx'\nimport { BroadcastedRpcCallDetailsCard } from './details/index.ts'\nimport { usePaginatedEventPairs } from './usePaginatedEventPairs.ts'\n\nexport interface BroadcastRpcCallsDrawer extends DrawerProps {\n drawerTitle?: string\n events: RpcRequestResponsePairsById\n numberOfVisibleEvents?: number\n onClearEvents?: () => void\n}\n\nexport const BroadcastedRpcCallsDrawer: React.FC<BroadcastRpcCallsDrawer> = ({\n anchor = 'right',\n onClearEvents,\n drawerTitle,\n events,\n onClose,\n numberOfVisibleEvents = 25,\n ...props\n}) => {\n const [scrollableDiv, setScrollableDiv] = useState<HTMLDivElement | null>(null)\n const {\n allEventEntries,\n visibleEvents,\n totalPages,\n effectiveCurrentPage,\n handleClearEvents,\n handlePageChange,\n } = usePaginatedEventPairs(\n events,\n numberOfVisibleEvents,\n onClearEvents,\n scrollableDiv,\n )\n\n return (\n <Drawer anchor={anchor} onClose={onClose} keepMounted={false} {...props}>\n <CloseDrawerIconButton anchor={anchor} onClose={onClose} />\n <Stack\n sx={{\n gap: 2,\n flexShrink: 0,\n p: 3,\n }}\n >\n <Stack\n direction=\"row\"\n sx={{\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <Typography variant=\"h6\">{drawerTitle ?? 'Broadcasted RPC Calls'}</Typography>\n <Button variant=\"outlined\" size=\"small\" onClick={handleClearEvents}>Clear All</Button>\n </Stack>\n {allEventEntries.length > 0 && (\n <Pagination\n count={totalPages}\n page={effectiveCurrentPage}\n onChange={handlePageChange}\n color=\"primary\"\n />\n )}\n\n </Stack>\n <Stack\n direction=\"column\"\n id=\"events-container\"\n sx={{\n flexGrow: 1,\n overflowY: 'hidden',\n }}\n >\n <Box\n ref={(el: HTMLDivElement) => setScrollableDiv(el)}\n sx={{\n overflowY: 'auto', px: 3, pb: 3,\n }}\n >\n {visibleEvents.map(([id, broadcastedRpcCall], index) => {\n return <BroadcastedRpcCallDetailsCard key={id} rpcRequestResponsePairs={broadcastedRpcCall} sx={{ mb: index < visibleEvents.length - 1 ? 2 : 0 }} />\n })}\n </Box>\n </Stack>\n </Drawer>\n )\n}\n\nexport const BroadcastedRpcCallsDrawerWithEvents: React.FC<DrawerProps> = (props) => {\n const { clearEvents, events } = useRpcBroadcastListener()\n\n return (\n <BroadcastedRpcCallsDrawer\n events={events}\n onClearEvents={clearEvents}\n {...props}\n />\n )\n}\n", "import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'\nimport { isJsonRpcRequest, isJsonRpcResponse } from '@metamask/utils'\nimport { isDefined, isString } from '@xylabs/sdk-js'\nimport { useEffect, useState } from 'react'\n\nimport type {\n BroadcastedRpcCall, RpcRequestResponsePairs, RpcRequestResponsePairsById,\n} from '../../model/index.ts'\n\nconst parseRpcCall = (acc: RpcRequestResponsePairsById, event: BroadcastedRpcCall) => {\n if (isJsonRpcResponse(event.rpcCall)) {\n const castedEvent = event as BroadcastedRpcCall<JsonRpcResponse>\n acc[castedEvent.rpcCall.id as string].result = castedEvent\n } else if (isJsonRpcRequest(event.rpcCall)) {\n const castedEvent = event as BroadcastedRpcCall<JsonRpcRequest>\n acc[castedEvent.rpcCall.id as string].request = castedEvent\n } else {\n console.error('Unknown RPC call type', event)\n }\n acc[event.rpcCall.id as string].source = event.source\n\n return acc\n}\n\nexport const useRpcBroadcastListener = () => {\n const [events, setEvents] = useState<RpcRequestResponsePairsById>({})\n const clearEvents = () => setEvents({})\n\n useEffect(() => {\n const listener = (e: Event) => {\n if ('detail' in e) {\n const { detail } = e ?? {}\n if (isString(detail)) {\n try {\n const parsedDetail = JSON.parse(detail)\n const { data: rpcCall, source } = parsedDetail\n // TODO - make zod type for parsing details\n const broadcastedRpcCall: BroadcastedRpcCall = {\n rpcCall,\n source,\n timestamp: Date.now(),\n }\n setEvents((prev) => {\n const { id } = broadcastedRpcCall.rpcCall\n const newState = { ...prev }\n if (isDefined(newState[id as string])) {\n parseRpcCall(newState, broadcastedRpcCall)\n } else {\n newState[id as string] = {} as RpcRequestResponsePairs\n parseRpcCall(newState, broadcastedRpcCall)\n }\n return newState\n })\n } catch (err) {\n console.error(err)\n }\n }\n }\n }\n globalThis.addEventListener('xyo:broadcast-rpc-request', listener)\n globalThis.addEventListener('xyo:broadcast-rpc-response', listener)\n\n return () => {\n globalThis.removeEventListener('xyo:broadcast-rpc-request', listener)\n globalThis.removeEventListener('xyo:broadcast-rpc-response', listener)\n }\n }, [])\n\n return { events, clearEvents }\n}\n", "import {\n isDefined, isNull, isUndefined,\n} from '@xylabs/sdk-js'\nimport { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { NetworkId, XyoViewer } from '@xyo-network/xl1-sdk'\n\nimport type { ChainNetworkSettings } from '../../context/index.ts'\nimport { useChainNetwork } from '../../context/index.ts'\n\nconst shouldProxy = (networkSettings: ChainNetworkSettings, networkId: NetworkId | undefined) => {\n return isDefined(networkId)\n && isDefined(networkSettings[networkId])\n && networkSettings[networkId].proxy\n}\n\n/**\n * Finds the appropriate viewer based on network settings and available gateways\n *\n * Specifically, if the network settings indicate that the network should be proxied, it will attempt to use the wallet viewer.\n * If the wallet viewer is not available, it will fall back to the in-page viewer and log a warning. If the network should not\n * be proxied, it will use the in-page viewer.\n */\nexport const useViewerInPage = (): XyoViewer | undefined => {\n const { networkSettings, activeNetwork } = useChainNetwork()\n const { gateways } = useProvidedGateway()\n\n const { inPageGateway, walletGateway } = gateways\n\n const inPageViewer = inPageGateway?.connection?.viewer\n const walletViewer = walletGateway?.connection?.viewer\n\n // If the wallet viewer is undefined, don't return it yet, walletViewer is still checking\n if (isUndefined(walletGateway)) return\n\n if (shouldProxy(networkSettings, activeNetwork?.id)) {\n if (isNull(walletGateway)) {\n console.warn(`Network ${activeNetwork?.id} is set to proxy but no wallet viewer is available, falling back to HTTP RPC viewer`)\n return inPageViewer\n }\n // If the network setting is to proxy and the wallet viewer is available,\n // try to use the wallet viewer\n return walletViewer\n }\n\n return inPageViewer\n}\n/** @deprecated - use useViewerInPage instead */\nexport const useViewerInPageV2 = useViewerInPage\n", "import { GatewayProvider, InPageGatewaysProvider } from '@xyo-network/react-chain-provider'\nimport type { RpcTransport, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { useChainNetwork } from './network/index.ts'\n\nexport interface ActiveGatewayProviderProps extends PropsWithChildren {\n signerTransport?: RpcTransport<XyoSignerRpcSchemas>\n}\n\nexport const ActiveGatewayProvider: React.FC<ActiveGatewayProviderProps> = ({ signerTransport, children }) => {\n const { activeNetwork } = useChainNetwork()\n return (\n <InPageGatewaysProvider signerTransport={signerTransport}>\n <GatewayProvider gatewayName={activeNetwork?.id}>\n {children}\n </GatewayProvider>\n </InPageGatewaysProvider>\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-sdk'\nimport { MainNetwork } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkSettings } from './settings/index.ts'\nimport { defaultChainNetworkSettings, useChainNetworkSettings } from './settings/index.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networkSettings?: ChainNetworkSettings\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networkSettings: networkSettingsProp = defaultChainNetworkSettings, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n const { networkSettings, updateNetworkSettings } = useChainNetworkSettings(networkSettingsProp)\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 networkSettings,\n updateNetworkSettings,\n chainNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, activeNetworkError, error, networkSettings, networks, updateActiveNetwork, updateNetworkSettings])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"ChainNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n", "import { LocalNetwork } from '@xyo-network/xl1-sdk'\n\nimport type { ChainNetworkSettings } from './types.ts'\n\nexport const defaultChainNetworkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }\n", "import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\nimport { defaultChainNetworkSettings } from './defaultChainNetworkSettings.ts'\nimport type { ChainNetworkSettings } from './types.ts'\n\nexport const useChainNetworkSettings = (defaults = defaultChainNetworkSettings) => {\n const [networkSettings, setNetworkSettings] = useState<ChainNetworkSettings>(defaults)\n\n const updateNetworkSettings = useCallback((\n networkId: NetworkBootstrap['id'],\n settings: Partial<ChainNetworkSettings>,\n ) => {\n setNetworkSettings(prevSettings => ({\n ...prevSettings,\n [networkId]: {\n ...prevSettings[networkId],\n ...settings,\n },\n }))\n }, [])\n\n return {\n networkSettings,\n updateNetworkSettings,\n }\n}\n", "import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx<ChainNetworkState>(ChainNetworkContext, 'ChainNetwork', required)\n", "import { delay, isUndefined } from '@xylabs/sdk-js'\nimport { useNetworkFromGateway } from '@xyo-network/react-chain-provider'\nimport type { NetworkStatus } from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nconst STATUS_CHECK_INTERVAL = 10_000\n\nexport const usePollNetworkStatus = () => {\n const network = useNetworkFromGateway()\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.info('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", "import { Cancel } from '@mui/icons-material'\nimport type { DrawerProps, IconButtonProps } from '@mui/material'\nimport { IconButton } from '@mui/material'\nimport React from 'react'\n\nexport interface CloseDrawerIconButtonProps extends IconButtonProps {\n anchor?: DrawerProps['anchor']\n onClose?: DrawerProps['onClose']\n}\n\nexport const CloseDrawerIconButton: React.FC<CloseDrawerIconButtonProps> = ({ anchor, onClose }) => {\n return (\n <IconButton\n onClick={e => onClose?.(e, 'backdropClick')}\n size=\"small\"\n sx={{\n alignSelf: anchor === 'right' ? 'start' : 'end', top: 8, right: anchor === 'right' ? undefined : 8, left: anchor === 'left' ? undefined : 8,\n }}\n >\n <Cancel sx={{ fontSize: 'small' }} />\n </IconButton>\n )\n}\n", "import type { CardProps } from '@mui/material'\nimport {\n Card, Collapse,\n Stack, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport React, { memo, useState } from 'react'\n\nimport type { RpcRequestResponsePairs } from '../../../model/index.ts'\nimport { BroadcastedRpcCallDetailsSummaryStack } from './SummaryStack.tsx'\n\nconst JSON_VIEWER_WIDTH = 600\n\nexport interface BroadcastRpcCallDetailsCardProps extends CardProps {\n rpcRequestResponsePairs?: RpcRequestResponsePairs\n}\n\nexport const BroadcastedRpcCallDetailsCard: React.FC<BroadcastRpcCallDetailsCardProps> = memo(({\n rpcRequestResponsePairs, sx, ...props\n}) => {\n const [expanded, setExpanded] = useState(false)\n\n if (!rpcRequestResponsePairs) return null\n\n const {\n request, result, source,\n } = rpcRequestResponsePairs\n\n return (\n <Card\n sx={{\n p: 1, display: 'flex', flexDirection: 'column', width: JSON_VIEWER_WIDTH, ...sx,\n }}\n {...props}\n >\n <BroadcastedRpcCallDetailsSummaryStack\n expanded={expanded}\n params={request.rpcCall.params}\n hasResult={isDefined(result)}\n method={request.rpcCall.method}\n setExpanded={setExpanded}\n timestamp={request.timestamp}\n />\n <Collapse in={expanded} mountOnEnter unmountOnExit>\n <Stack\n direction=\"column\"\n sx={{\n p: 1,\n gap: 2,\n alignItems: 'stretch',\n }}\n >\n <Typography variant=\"body2\">\n Source:\n <Typography\n variant=\"caption\"\n component=\"span\"\n sx={{\n fontFamily: 'monospace',\n ml: 1,\n }}\n >\n {source}\n </Typography>\n </Typography>\n <Typography variant=\"body2\">Request:</Typography>\n <JsonViewerEx\n value={request}\n sx={{ maxHeight: 300, overflow: 'auto' }}\n />\n {isDefined(result)\n ? (\n <>\n <Typography variant=\"body2\">Result:</Typography>\n <JsonViewerEx\n value={result}\n sx={{ maxHeight: 300, overflow: 'auto' }}\n />\n </>\n )\n : null}\n </Stack>\n </Collapse>\n </Card>\n )\n})\n", "import type { JsonRpcParams } from '@metamask/json-rpc-engine/v2'\nimport {\n ArrowRight, CheckCircle, Warning,\n} from '@mui/icons-material'\nimport {\n Avatar,\n Icon, IconButton, Stack, type StackProps, Tooltip, Typography,\n useTheme,\n} from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { ObjectHasher } from '@xyo-network/sdk-js'\nimport React, { useMemo } from 'react'\n\nexport interface BroadcastRpcCallDetailsSummaryStackProps extends StackProps {\n expanded?: boolean\n hasResult?: boolean\n method?: string\n params?: JsonRpcParams\n setExpanded?: (expanded: boolean) => void\n timestamp?: number\n}\n\nexport const BroadcastedRpcCallDetailsSummaryStack: React.FC<BroadcastRpcCallDetailsSummaryStackProps> = ({\n expanded, setExpanded, method, timestamp, hasResult, params, ...props\n}) => {\n const theme = useTheme()\n const [hash, hashError] = usePromise(async () => {\n if (isDefined(params)) {\n return await ObjectHasher.hash(params)\n }\n }, [params])\n\n const formattedTimestamp = useMemo(() => isDefined(timestamp) ? new Date(timestamp).toLocaleString() : '', [timestamp])\n\n return (\n <Stack\n direction=\"row\"\n {...props}\n sx={[{\n gap: 2,\n alignItems: 'center',\n justifyContent: 'space-between',\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <Stack\n direction=\"row\"\n sx={{\n gap: 2,\n alignItems: 'center',\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => setExpanded?.(!expanded)}\n >\n <ArrowRight sx={{ transform: expanded ? 'rotate(90deg)' : 'rotate(0deg)', transition: 'transform 0.2s ease-in-out' }} fontSize=\"small\" />\n </IconButton>\n <Tooltip\n title={isDefined(hashError)\n ? `Error generating hash of params: ${hashError.message}`\n : isDefined(params) ? `Params : ${JSON.stringify(params, null, 2)}` : 'No Params Provided'}\n >\n <Avatar sx={{\n backgroundColor: theme.vars?.palette.text.primary, width: 20, height: 20, opacity: isDefined(hash) ? 1 : 0.5,\n }}\n >\n <Identicon value={hash} size={14} />\n </Avatar>\n </Tooltip>\n <Typography\n component=\"span\"\n variant=\"body2\"\n sx={{ fontFamily: 'monospace' }}\n >\n {method}\n </Typography>\n <Typography\n component=\"span\"\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n opacity: 0.6,\n }}\n >\n {formattedTimestamp}\n </Typography>\n </Stack>\n <Icon sx={{ justifySelf: 'end' }}>\n {hasResult\n ? (\n <CheckCircle sx={{ color: 'success' }} />\n )\n : <Warning color=\"warning\" />}\n </Icon>\n </Stack>\n )\n}\n", "import { isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { ChangeEvent } from 'react'\nimport {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport type { RpcRequestResponsePairsById } from '../../model/index.ts'\n\nexport const usePaginatedEventPairs = (\n formattedEvents: RpcRequestResponsePairsById,\n numberOfVisiblePairs: number,\n onClearEvents?: () => void,\n scrollableDiv?: HTMLDivElement | null,\n) => {\n const [currentPage, setCurrentPage] = useState(0)\n\n const allEventEntries = useMemo(() => {\n return Object.entries(formattedEvents ?? {}).toSorted(([, a], [, b]) => b.request.timestamp - a.request.timestamp)\n }, [formattedEvents])\n\n const totalPages = useMemo(() => {\n return Math.ceil(allEventEntries.length / numberOfVisiblePairs)\n }, [allEventEntries.length, numberOfVisiblePairs])\n\n // Clamp current page to valid range\n const effectiveCurrentPage = useMemo(() => {\n if (totalPages === 0) return 0\n return Math.min(currentPage, totalPages - 1)\n }, [currentPage, totalPages])\n\n const visibleEvents = useMemo(() => {\n if (isDefinedNotNull(scrollableDiv)) {\n scrollableDiv.scrollTo({ top: 0, behavior: 'smooth' })\n }\n const startIndex = effectiveCurrentPage * numberOfVisiblePairs\n const endIndex = startIndex + numberOfVisiblePairs\n return allEventEntries.slice(startIndex, endIndex)\n }, [allEventEntries, effectiveCurrentPage, numberOfVisiblePairs, scrollableDiv])\n\n const handlePreviousPage = useCallback(() => {\n setCurrentPage(prev => Math.max(0, prev - 1))\n }, [])\n\n const handleNextPage = useCallback(() => {\n setCurrentPage(prev => Math.min(totalPages - 1, prev + 1))\n }, [totalPages])\n\n const handleClearEvents = useCallback(() => {\n setCurrentPage(0)\n onClearEvents?.()\n }, [onClearEvents])\n\n // Compatible with TablePagination's onPageChange signature\n // Accepts 1-indexed page, converts to 0-indexed internally\n const handlePageChange = useCallback((_event: ChangeEvent<unknown>, page: number) => {\n setCurrentPage(page - 1)\n }, [])\n\n return {\n allEventEntries,\n visibleEvents,\n effectiveCurrentPage: effectiveCurrentPage + 1, // Return 1-indexed page\n totalPages,\n handlePreviousPage,\n handleNextPage,\n handleClearEvents,\n handlePageChange,\n }\n}\n", "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 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/xl1-react-client-sdk'\nimport type { NetworkBootstrap, NetworkId } from '@xyo-network/xl1-sdk'\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-sdk'\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\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setOpen(true)}\n sx={{ color: severity }}\n >\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-sdk'\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\n onClick={e => props.onClose?.(e, 'backdropClick')}\n variant=\"outlined\"\n sx={{ color: 'primary' }}\n >\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 type { JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\nimport type { JsonRpcResponse } from '@metamask/utils'\n\n// Configuration options for broadcasting RPC calls\nexport interface BroadcastRpcConfig { request: boolean; response: boolean }\n\n// Event Names\nexport const BroadcastRpcRequestEventName = 'xyo:broadcast-rpc-request' as const\nexport const BroadcastRpcResponseEventName = 'xyo:broadcast-rpc-response' as const\nexport type BroadcastRpcEventNames = typeof BroadcastRpcRequestEventName | typeof BroadcastRpcResponseEventName\n\n// default options are to broadcast all events\nexport const defaultBroadcastConfig: BroadcastRpcConfig = { request: true, response: true }\n\nexport interface BroadcastedRpcCall<TRpcCall extends JsonRpcRequest | JsonRpcResponse = JsonRpcRequest | JsonRpcResponse> {\n rpcCall: TRpcCall\n source: string\n timestamp: number\n}\n\nexport interface RpcRequestResponsePairs {\n request: BroadcastedRpcCall<JsonRpcRequest>\n result?: BroadcastedRpcCall<JsonRpcResponse>\n source?: string\n}\n\nexport type RpcRequestResponsePairsById = Record<string, RpcRequestResponsePairs>\n", "import type { Decorator } from '@storybook/react-vite'\nimport {\n LocalNetwork, MainNetwork, SequenceNetwork,\n} from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport type { ChainNetworkSettings } from '../context/index.ts'\nimport { ActiveGatewayProvider, ChainNetworkProvider } from '../context/index.ts'\n\nconst AvailableNetworks = [MainNetwork, SequenceNetwork, LocalNetwork]\nconst networkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }\n\nconst getActiveMainnetNetwork = async () => await Promise.resolve(AvailableNetworks[0])\nexport const MainnetNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveMainnetNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n\nconst getActiveSequenceNetwork = async () => await Promise.resolve(AvailableNetworks[1])\nexport const SequenceNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveSequenceNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n\nconst getActiveLocalNetwork = async () => await Promise.resolve(AvailableNetworks[2])\nexport const LocalNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveLocalNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Stack", "Typography", "useState", "isDefined", "isDefined", "useCallback", "useState", "useState", "networkSettings", "useState", "useState", "networkSettings", "activeNetwork", "isDefined", "useCallback", "network", "jsx", "networkSettings", "isDefined", "isUndefined", "useEffect", "useState", "jsx", "Stack", "Typography", "isDefined", "useState", "IconButton", "usePromise", "isDefined", "useMemo", "jsx", "jsxs", "jsx", "jsxs", "useState", "isDefined", "Stack", "Typography", "useCallback", "useMemo", "useState", "jsx", "jsxs", "useState", "Stack", "Typography", "Avatar", "jsx", "jsx", "Avatar", "jsx", "jsxs", "Button", "useMemo", "useState", "Button", "Typography", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "useState", "useMemo", "Button", "Fragment", "jsx", "jsxs", "LocalNetwork", "MainNetwork", "jsx", "MainNetwork", "LocalNetwork"]
|
|
4
|
+
"sourcesContent": ["import type { DrawerProps } from '@mui/material'\nimport {\n Box, Button, Drawer, Pagination, Stack, Typography,\n} from '@mui/material'\nimport React, { useState } from 'react'\n\nimport { useRpcBroadcastListener } from '../../hooks/index.ts'\nimport type { RpcRequestResponsePairsById } from '../../model/index.ts'\nimport { CloseDrawerIconButton } from './CloseDrawerIconButton.tsx'\nimport { BroadcastedRpcCallDetailsCard } from './details/index.ts'\nimport { usePaginatedEventPairs } from './usePaginatedEventPairs.ts'\n\nexport interface BroadcastRpcCallsDrawer extends DrawerProps {\n drawerTitle?: string\n events: RpcRequestResponsePairsById\n numberOfVisibleEvents?: number\n onClearEvents?: () => void\n}\n\nexport const BroadcastedRpcCallsDrawer: React.FC<BroadcastRpcCallsDrawer> = ({\n anchor = 'right',\n onClearEvents,\n drawerTitle,\n events,\n onClose,\n numberOfVisibleEvents = 25,\n ...props\n}) => {\n const [scrollableDiv, setScrollableDiv] = useState<HTMLDivElement | null>(null)\n const {\n allEventEntries,\n visibleEvents,\n totalPages,\n effectiveCurrentPage,\n handleClearEvents,\n handlePageChange,\n } = usePaginatedEventPairs(\n events,\n numberOfVisibleEvents,\n onClearEvents,\n scrollableDiv,\n )\n\n return (\n <Drawer anchor={anchor} onClose={onClose} keepMounted={false} {...props}>\n <CloseDrawerIconButton anchor={anchor} onClose={onClose} />\n <Stack\n sx={{\n gap: 2,\n flexShrink: 0,\n p: 3,\n }}\n >\n <Stack\n direction=\"row\"\n sx={{\n justifyContent: 'space-between',\n alignItems: 'center',\n gap: 4,\n }}\n >\n <Typography variant=\"h6\">{drawerTitle ?? 'Broadcasted RPC Calls'}</Typography>\n <Button variant=\"outlined\" size=\"small\" onClick={handleClearEvents}>Clear All</Button>\n </Stack>\n {allEventEntries.length > 0 && (\n <Pagination\n count={totalPages}\n page={effectiveCurrentPage}\n onChange={handlePageChange}\n color=\"primary\"\n />\n )}\n\n </Stack>\n <Stack\n direction=\"column\"\n id=\"events-container\"\n sx={{\n flexGrow: 1,\n overflowY: 'hidden',\n }}\n >\n <Box\n ref={(el: HTMLDivElement) => setScrollableDiv(el)}\n sx={{\n overflowY: 'auto', px: 3, pb: 3,\n }}\n >\n {visibleEvents.map(([id, broadcastedRpcCall], index) => {\n return <BroadcastedRpcCallDetailsCard key={id} rpcRequestResponsePairs={broadcastedRpcCall} sx={{ mb: index < visibleEvents.length - 1 ? 2 : 0 }} />\n })}\n </Box>\n </Stack>\n </Drawer>\n )\n}\n\nexport const BroadcastedRpcCallsDrawerWithEvents: React.FC<DrawerProps> = (props) => {\n const { clearEvents, events } = useRpcBroadcastListener()\n\n return (\n <BroadcastedRpcCallsDrawer\n events={events}\n onClearEvents={clearEvents}\n {...props}\n />\n )\n}\n", "import type { JsonRpcRequest, JsonRpcResponse } from '@metamask/utils'\nimport { isJsonRpcRequest, isJsonRpcResponse } from '@metamask/utils'\nimport { isDefined, isString } from '@xylabs/sdk-js'\nimport { useEffect, useState } from 'react'\n\nimport type {\n BroadcastedRpcCall, RpcRequestResponsePairs, RpcRequestResponsePairsById,\n} from '../../model/index.ts'\n\ninterface ParsedBroadcastDetail {\n data: JsonRpcRequest | JsonRpcResponse\n source: string\n}\n\nconst isParsedBroadcastDetail = (value: unknown): value is ParsedBroadcastDetail => {\n if (typeof value !== 'object' || value === null) return false\n const candidate = value as { data?: unknown; source?: unknown }\n return (isJsonRpcRequest(candidate.data) || isJsonRpcResponse(candidate.data)) && isString(candidate.source)\n}\n\nconst parseRpcCall = (acc: RpcRequestResponsePairsById, event: BroadcastedRpcCall) => {\n if (isJsonRpcResponse(event.rpcCall)) {\n const castedEvent = event as BroadcastedRpcCall<JsonRpcResponse>\n acc[castedEvent.rpcCall.id as string].result = castedEvent\n } else if (isJsonRpcRequest(event.rpcCall)) {\n const castedEvent = event as BroadcastedRpcCall<JsonRpcRequest>\n acc[castedEvent.rpcCall.id as string].request = castedEvent\n } else {\n console.error('Unknown RPC call type', event)\n }\n acc[event.rpcCall.id as string].source = event.source\n\n return acc\n}\n\nexport const useRpcBroadcastListener = () => {\n const [events, setEvents] = useState<RpcRequestResponsePairsById>({})\n const clearEvents = () => setEvents({})\n\n useEffect(() => {\n const listener = (e: Event) => {\n if (!('detail' in e)) return\n const { detail } = e\n if (!isString(detail)) return\n try {\n const parsedDetail: unknown = JSON.parse(detail)\n if (!isParsedBroadcastDetail(parsedDetail)) {\n console.error('Invalid broadcast RPC detail', parsedDetail)\n return\n }\n const { data: rpcCall, source } = parsedDetail\n const broadcastedRpcCall: BroadcastedRpcCall = {\n rpcCall,\n source,\n timestamp: Date.now(),\n }\n setEvents((prev) => {\n const { id } = broadcastedRpcCall.rpcCall\n const newState = { ...prev }\n if (isDefined(newState[id as string])) {\n parseRpcCall(newState, broadcastedRpcCall)\n } else {\n newState[id as string] = {} as RpcRequestResponsePairs\n parseRpcCall(newState, broadcastedRpcCall)\n }\n return newState\n })\n } catch (err) {\n console.error(err)\n }\n }\n const controller = new AbortController()\n const options = { signal: controller.signal }\n addEventListener('xyo:broadcast-rpc-request', listener, options)\n addEventListener('xyo:broadcast-rpc-response', listener, options)\n\n return () => {\n controller.abort()\n }\n }, [])\n\n return { events, clearEvents }\n}\n", "import {\n isDefined, isNull, isUndefined,\n} from '@xylabs/sdk-js'\nimport { useProvidedGateway } from '@xyo-network/xl1-react-client-sdk'\nimport type { NetworkId, XyoViewer } from '@xyo-network/xl1-sdk'\n\nimport type { ChainNetworkSettings } from '../../context/index.ts'\nimport { useChainNetwork } from '../../context/index.ts'\n\nconst shouldProxy = (networkSettings: ChainNetworkSettings, networkId: NetworkId | undefined) => {\n return isDefined(networkId)\n && isDefined(networkSettings[networkId])\n && networkSettings[networkId].proxy\n}\n\n/**\n * Finds the appropriate viewer based on network settings and available gateways\n *\n * Specifically, if the network settings indicate that the network should be proxied, it will attempt to use the wallet viewer.\n * If the wallet viewer is not available, it will fall back to the in-page viewer and log a warning. If the network should not\n * be proxied, it will use the in-page viewer.\n */\nexport const useViewerInPage = (): XyoViewer | undefined => {\n const { networkSettings, activeNetwork } = useChainNetwork()\n const { gateways } = useProvidedGateway()\n\n const { inPageGateway, walletGateway } = gateways\n\n // If the wallet viewer is undefined, don't return it yet, walletViewer is still checking\n if (isUndefined(walletGateway)) return\n\n const inPageViewer = inPageGateway?.connection?.viewer\n const walletViewer = walletGateway?.connection?.viewer\n\n if (shouldProxy(networkSettings, activeNetwork?.id)) {\n if (isNull(walletGateway)) {\n console.warn(`Network ${activeNetwork?.id} is set to proxy but no wallet viewer is available, falling back to HTTP RPC viewer`)\n return inPageViewer\n }\n // If the network setting is to proxy and the wallet viewer is available,\n // try to use the wallet viewer\n return walletViewer\n }\n\n return inPageViewer\n}\n/** @deprecated - use useViewerInPage instead */\nexport const useViewerInPageV2 = useViewerInPage\n", "import { GatewayProvider, InPageGatewaysProvider } from '@xyo-network/react-chain-provider'\nimport type { RpcTransport, XyoSignerRpcSchemas } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React from 'react'\n\nimport { useChainNetwork } from './network/index.ts'\n\nexport interface ActiveGatewayProviderProps extends PropsWithChildren {\n signerTransport?: RpcTransport<XyoSignerRpcSchemas>\n}\n\nexport const ActiveGatewayProvider: React.FC<ActiveGatewayProviderProps> = ({ signerTransport, children }) => {\n const { activeNetwork } = useChainNetwork()\n return (\n <InPageGatewaysProvider signerTransport={signerTransport}>\n <GatewayProvider gatewayName={activeNetwork?.id}>\n {children}\n </GatewayProvider>\n </InPageGatewaysProvider>\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-sdk'\nimport { MainNetwork } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkSettings } from './settings/index.ts'\nimport { defaultChainNetworkSettings, useChainNetworkSettings } from './settings/index.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport interface ChainNetworkProviderProps extends PropsWithChildren {\n getActiveNetwork?: () => Promise<NetworkBootstrap | undefined>\n networkSettings?: ChainNetworkSettings\n networks?: NetworkBootstrap[]\n setActiveNetwork?: (networkId: NetworkBootstrap['id']) => Promise<NetworkBootstrap>\n}\n\nexport const ChainNetworkProvider: React.FC<ChainNetworkProviderProps> = ({\n children, getActiveNetwork, networkSettings: networkSettingsProp = defaultChainNetworkSettings, networks, setActiveNetwork: setActiveNetworkExternal,\n}) => {\n const [activeNetwork, setActiveNetwork] = useState<NetworkBootstrap>()\n const [error, setError] = useState<Error>()\n const { networkSettings, updateNetworkSettings } = useChainNetworkSettings(networkSettingsProp)\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 }\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 }, [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 networkSettings,\n updateNetworkSettings,\n chainNetworkError: error ?? activeNetworkError,\n }), [activeNetwork, activeNetworkError, error, networkSettings, networks, updateActiveNetwork, updateNetworkSettings])\n\n return (\n <ChainNetworkContext value={value}>\n <ErrorRender error={error ?? activeNetworkError} scope=\"ChainNetworkProvider\" />\n {children}\n </ChainNetworkContext>\n )\n}\n", "import { LocalNetwork } from '@xyo-network/xl1-sdk'\n\nimport type { ChainNetworkSettings } from './types.ts'\n\nexport const defaultChainNetworkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }\n", "import type { NetworkBootstrap } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\nimport { defaultChainNetworkSettings } from './defaultChainNetworkSettings.ts'\nimport type { ChainNetworkSettings } from './types.ts'\n\nexport const useChainNetworkSettings = (defaults = defaultChainNetworkSettings) => {\n const [networkSettings, setNetworkSettings] = useState<ChainNetworkSettings>(defaults)\n\n const updateNetworkSettings = useCallback((\n networkId: NetworkBootstrap['id'],\n settings: Partial<ChainNetworkSettings>,\n ) => {\n setNetworkSettings(prevSettings => ({\n ...prevSettings,\n [networkId]: {\n ...prevSettings[networkId],\n ...settings,\n },\n }))\n }, [])\n\n return {\n networkSettings,\n updateNetworkSettings,\n }\n}\n", "import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainNetworkContext } from './context.ts'\nimport type { ChainNetworkState } from './state.ts'\n\nexport const useChainNetwork = (required = true) => useContextEx<ChainNetworkState>(ChainNetworkContext, 'ChainNetwork', required)\n", "import { delay, isUndefined } from '@xylabs/sdk-js'\nimport { useNetworkFromGateway } from '@xyo-network/react-chain-provider'\nimport type { NetworkStatus } from '@xyo-network/xl1-sdk'\nimport { useEffect, useState } from 'react'\n\nconst STATUS_CHECK_INTERVAL = 10_000\n\nexport const usePollNetworkStatus = () => {\n const network = useNetworkFromGateway()\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.info('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", "import { Cancel } from '@mui/icons-material'\nimport type { DrawerProps, IconButtonProps } from '@mui/material'\nimport { IconButton } from '@mui/material'\nimport React from 'react'\n\nexport interface CloseDrawerIconButtonProps extends IconButtonProps {\n anchor?: DrawerProps['anchor']\n onClose?: DrawerProps['onClose']\n}\n\nexport const CloseDrawerIconButton: React.FC<CloseDrawerIconButtonProps> = ({ anchor, onClose }) => {\n return (\n <IconButton\n onClick={e => onClose?.(e, 'backdropClick')}\n size=\"small\"\n sx={{\n alignSelf: anchor === 'right' ? 'start' : 'end', top: 8, right: anchor === 'right' ? undefined : 8, left: anchor === 'left' ? undefined : 8,\n }}\n >\n <Cancel sx={{ fontSize: 'small' }} />\n </IconButton>\n )\n}\n", "import type { CardProps } from '@mui/material'\nimport {\n Card, Collapse,\n Stack, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport React, { memo, useState } from 'react'\n\nimport type { RpcRequestResponsePairs } from '../../../model/index.ts'\nimport { BroadcastedRpcCallDetailsSummaryStack } from './SummaryStack.tsx'\n\nconst JSON_VIEWER_WIDTH = 600\n\nexport interface BroadcastRpcCallDetailsCardProps extends CardProps {\n rpcRequestResponsePairs?: RpcRequestResponsePairs\n}\n\nexport const BroadcastedRpcCallDetailsCard: React.FC<BroadcastRpcCallDetailsCardProps> = memo(({\n rpcRequestResponsePairs, sx, ...props\n}) => {\n const [expanded, setExpanded] = useState(false)\n\n if (!rpcRequestResponsePairs) return null\n\n const {\n request, result, source,\n } = rpcRequestResponsePairs\n\n return (\n <Card\n sx={{\n p: 1, display: 'flex', flexDirection: 'column', width: JSON_VIEWER_WIDTH, ...sx,\n }}\n {...props}\n >\n <BroadcastedRpcCallDetailsSummaryStack\n expanded={expanded}\n params={request.rpcCall.params}\n hasResult={isDefined(result)}\n method={request.rpcCall.method}\n setExpanded={setExpanded}\n timestamp={request.timestamp}\n />\n <Collapse in={expanded} mountOnEnter unmountOnExit>\n <Stack\n direction=\"column\"\n sx={{\n p: 1,\n gap: 2,\n alignItems: 'stretch',\n }}\n >\n <Typography variant=\"body2\">\n Source:\n <Typography\n variant=\"caption\"\n component=\"span\"\n sx={{\n fontFamily: 'monospace',\n ml: 1,\n }}\n >\n {source}\n </Typography>\n </Typography>\n <Typography variant=\"body2\">Request:</Typography>\n <JsonViewerEx\n value={request}\n sx={{ maxHeight: 300, overflow: 'auto' }}\n />\n {isDefined(result)\n ? (\n <>\n <Typography variant=\"body2\">Result:</Typography>\n <JsonViewerEx\n value={result}\n sx={{ maxHeight: 300, overflow: 'auto' }}\n />\n </>\n )\n : null}\n </Stack>\n </Collapse>\n </Card>\n )\n})\n", "import type { JsonRpcParams } from '@metamask/json-rpc-engine/v2'\nimport {\n ArrowRight, CheckCircle, Warning,\n} from '@mui/icons-material'\nimport {\n Avatar,\n Icon, IconButton, Stack, type StackProps, Tooltip, Typography,\n useTheme,\n} from '@mui/material'\nimport { Identicon } from '@xylabs/react-identicon'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { sxEntries } from '@xyo-network/react-chain-shared'\nimport { ObjectHasher } from '@xyo-network/sdk-js'\nimport React, { useMemo } from 'react'\n\nexport interface BroadcastRpcCallDetailsSummaryStackProps extends StackProps {\n expanded?: boolean\n hasResult?: boolean\n method?: string\n params?: JsonRpcParams\n setExpanded?: (expanded: boolean) => void\n timestamp?: number\n}\n\nexport const BroadcastedRpcCallDetailsSummaryStack: React.FC<BroadcastRpcCallDetailsSummaryStackProps> = ({\n expanded, setExpanded, method, timestamp, hasResult, params, ...props\n}) => {\n const theme = useTheme()\n const [hash, hashError] = usePromise(async () => {\n if (isDefined(params)) {\n return await ObjectHasher.hash(params)\n }\n }, [params])\n\n const formattedTimestamp = useMemo(() => {\n if (!isDefined(timestamp)) return ''\n const date = new Date(timestamp)\n return date.toLocaleString()\n }, [timestamp])\n\n return (\n <Stack\n direction=\"row\"\n {...props}\n sx={[{\n gap: 2,\n alignItems: 'center',\n justifyContent: 'space-between',\n }, ...sxEntries(props.sx)]}\n >\n <Stack\n direction=\"row\"\n sx={{\n gap: 2,\n alignItems: 'center',\n }}\n >\n <IconButton\n size=\"small\"\n onClick={() => setExpanded?.(expanded !== true)}\n >\n <ArrowRight sx={{ transform: expanded === true ? 'rotate(90deg)' : 'rotate(0deg)', transition: 'transform 0.2s ease-in-out' }} fontSize=\"small\" />\n </IconButton>\n <Tooltip\n title={isDefined(hashError)\n ? `Error generating hash of params: ${hashError.message}`\n : isDefined(params) ? `Params : ${JSON.stringify(params, null, 2)}` : 'No Params Provided'}\n >\n <Avatar sx={{\n backgroundColor: theme.vars?.palette.text.primary, width: 20, height: 20, opacity: isDefined(hash) ? 1 : 0.5,\n }}\n >\n <Identicon value={hash} size={14} />\n </Avatar>\n </Tooltip>\n <Typography\n component=\"span\"\n variant=\"body2\"\n sx={{ fontFamily: 'monospace' }}\n >\n {method}\n </Typography>\n <Typography\n component=\"span\"\n variant=\"caption\"\n sx={{\n color: 'text.secondary',\n opacity: 0.6,\n }}\n >\n {formattedTimestamp}\n </Typography>\n </Stack>\n <Icon sx={{ justifySelf: 'end' }}>\n {hasResult === true\n ? (\n <CheckCircle sx={{ color: 'success' }} />\n )\n : <Warning color=\"warning\" />}\n </Icon>\n </Stack>\n )\n}\n", "import { isDefinedNotNull } from '@xylabs/sdk-js'\nimport type { ChangeEvent } from 'react'\nimport {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport type { RpcRequestResponsePairsById } from '../../model/index.ts'\n\nexport const usePaginatedEventPairs = (\n formattedEvents: RpcRequestResponsePairsById,\n numberOfVisiblePairs: number,\n onClearEvents?: () => void,\n scrollableDiv?: HTMLDivElement | null,\n) => {\n const [currentPage, setCurrentPage] = useState(0)\n\n const allEventEntries = useMemo(() => {\n return Object.entries(formattedEvents ?? {}).toSorted(([, a], [, b]) => b.request.timestamp - a.request.timestamp)\n }, [formattedEvents])\n\n const totalPages = useMemo(() => {\n return Math.ceil(allEventEntries.length / numberOfVisiblePairs)\n }, [allEventEntries.length, numberOfVisiblePairs])\n\n // Clamp current page to valid range\n const effectiveCurrentPage = useMemo(() => {\n if (totalPages === 0) return 0\n return Math.min(currentPage, totalPages - 1)\n }, [currentPage, totalPages])\n\n const visibleEvents = useMemo(() => {\n if (isDefinedNotNull(scrollableDiv)) {\n scrollableDiv.scrollTo({ top: 0, behavior: 'smooth' })\n }\n const startIndex = effectiveCurrentPage * numberOfVisiblePairs\n const endIndex = startIndex + numberOfVisiblePairs\n return allEventEntries.slice(startIndex, endIndex)\n }, [allEventEntries, effectiveCurrentPage, numberOfVisiblePairs, scrollableDiv])\n\n const handlePreviousPage = useCallback(() => {\n setCurrentPage(prev => Math.max(0, prev - 1))\n }, [])\n\n const handleNextPage = useCallback(() => {\n setCurrentPage(prev => Math.min(totalPages - 1, prev + 1))\n }, [totalPages])\n\n const handleClearEvents = useCallback(() => {\n setCurrentPage(0)\n onClearEvents?.()\n }, [onClearEvents])\n\n // Compatible with TablePagination's onPageChange signature\n // Accepts 1-indexed page, converts to 0-indexed internally\n const handlePageChange = useCallback((_event: ChangeEvent<unknown>, page: number) => {\n setCurrentPage(page - 1)\n }, [])\n\n return {\n allEventEntries,\n visibleEvents,\n effectiveCurrentPage: effectiveCurrentPage + 1, // Return 1-indexed page\n totalPages,\n handlePreviousPage,\n handleNextPage,\n handleClearEvents,\n handlePageChange,\n }\n}\n", "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 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/xl1-react-client-sdk'\nimport type { NetworkBootstrap, NetworkId } from '@xyo-network/xl1-sdk'\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-sdk'\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\n variant=\"outlined\"\n size=\"small\"\n onClick={() => setOpen(true)}\n sx={{ color: severity }}\n >\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-sdk'\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 const startDate = new Date(start)\n const endDate = new Date(end)\n return (\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 {startDate.toLocaleString()}\n {' '}\n <br />\n End:\n {' '}\n {endDate.toLocaleString()}\n </Typography>\n </ListItem>\n )\n })}\n </List>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={e => props.onClose?.(e, 'backdropClick')}\n variant=\"outlined\"\n sx={{ color: 'primary' }}\n >\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n", "import type { AlertProps } from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\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 = isDefined(networkStatus) && !validNetworkStates.has(networkStatus.state)\n return (\n <>\n {showStatus ? <NetworkStatusAlert status={networkStatus} {...props} /> : null}\n {children}\n </>\n )\n}\n", "import type { JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\nimport type { JsonRpcResponse } from '@metamask/utils'\n\n// Configuration options for broadcasting RPC calls\nexport interface BroadcastRpcConfig { request: boolean; response: boolean }\n\n// Event Names\nexport const BroadcastRpcRequestEventName = 'xyo:broadcast-rpc-request' as const\nexport const BroadcastRpcResponseEventName = 'xyo:broadcast-rpc-response' as const\nexport type BroadcastRpcEventNames = typeof BroadcastRpcRequestEventName | typeof BroadcastRpcResponseEventName\n\n// default options are to broadcast all events\nexport const defaultBroadcastConfig: BroadcastRpcConfig = { request: true, response: true }\n\nexport interface BroadcastedRpcCall<TRpcCall extends JsonRpcRequest | JsonRpcResponse = JsonRpcRequest | JsonRpcResponse> {\n rpcCall: TRpcCall\n source: string\n timestamp: number\n}\n\nexport interface RpcRequestResponsePairs {\n request: BroadcastedRpcCall<JsonRpcRequest>\n result?: BroadcastedRpcCall<JsonRpcResponse>\n source?: string\n}\n\nexport type RpcRequestResponsePairsById = Record<string, RpcRequestResponsePairs>\n", "import type { Decorator } from '@storybook/react-vite'\nimport {\n LocalNetwork, MainNetwork, SequenceNetwork,\n} from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport type { ChainNetworkSettings } from '../context/index.ts'\nimport { ActiveGatewayProvider, ChainNetworkProvider } from '../context/index.ts'\n\nconst AvailableNetworks = [MainNetwork, SequenceNetwork, LocalNetwork]\nconst networkSettings: ChainNetworkSettings = { [LocalNetwork.id]: { proxy: true } }\n\nconst getActiveMainnetNetwork = async () => await Promise.resolve(AvailableNetworks[0])\nexport const MainnetNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveMainnetNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n\nconst getActiveSequenceNetwork = async () => await Promise.resolve(AvailableNetworks[1])\nexport const SequenceNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveSequenceNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n\nconst getActiveLocalNetwork = async () => await Promise.resolve(AvailableNetworks[2])\nexport const LocalNetworkGatewayDecorator: Decorator = (Story, args) => {\n return (\n <ChainNetworkProvider networks={AvailableNetworks} networkSettings={networkSettings} getActiveNetwork={getActiveLocalNetwork}>\n <ActiveGatewayProvider>\n <Story {...args} />\n </ActiveGatewayProvider>\n </ChainNetworkProvider>\n )\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["Stack", "Typography", "useState", "isDefined", "isDefined", "useCallback", "useState", "useState", "networkSettings", "useState", "useState", "networkSettings", "activeNetwork", "isDefined", "useCallback", "network", "jsx", "networkSettings", "isDefined", "isUndefined", "useEffect", "useState", "jsx", "Stack", "Typography", "isDefined", "useState", "IconButton", "usePromise", "isDefined", "useMemo", "jsx", "jsxs", "jsx", "jsxs", "useState", "isDefined", "Stack", "Typography", "useCallback", "useMemo", "useState", "jsx", "jsxs", "useState", "Stack", "Typography", "Avatar", "jsx", "jsx", "Avatar", "jsx", "jsxs", "Button", "useMemo", "useState", "Button", "Typography", "jsx", "jsxs", "Fragment", "jsx", "jsxs", "useState", "useMemo", "Button", "isDefined", "Fragment", "jsx", "jsxs", "isDefined", "LocalNetwork", "MainNetwork", "jsx", "MainNetwork", "LocalNetwork"]
|
|
7
7
|
}
|
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": "
|
|
4
|
+
"version": "3.0.0",
|
|
5
5
|
"description": "XYO Layer One React SDK",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -39,57 +39,57 @@
|
|
|
39
39
|
"README.md"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xyo-network/react-chain-provider": "~
|
|
42
|
+
"@xyo-network/react-chain-provider": "~3.0.0",
|
|
43
|
+
"@xyo-network/react-chain-shared": "~3.0.0"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@bitauth/libauth": "~3.0.0",
|
|
46
47
|
"@metamask/json-rpc-engine": "^10.5.0",
|
|
47
48
|
"@metamask/providers": "^22.1.1",
|
|
48
49
|
"@metamask/utils": "^11.11.0",
|
|
49
|
-
"@mui/icons-material": "^9.1.
|
|
50
|
-
"@mui/material": "^9.1.
|
|
50
|
+
"@mui/icons-material": "^9.1.1",
|
|
51
|
+
"@mui/material": "^9.1.1",
|
|
52
|
+
"@mui/system": "~9.1.1",
|
|
51
53
|
"@noble/post-quantum": "~0.6.1",
|
|
52
54
|
"@opentelemetry/api": "^1.9.1",
|
|
53
|
-
"@opentelemetry/sdk-trace-base": "^2.
|
|
55
|
+
"@opentelemetry/sdk-trace-base": "^2.8.0",
|
|
54
56
|
"@react-spring/web": "~10.1.1",
|
|
55
|
-
"@rollbar/react": "~1.0.0",
|
|
56
57
|
"@scure/base": "~2.2.0",
|
|
57
58
|
"@scure/bip39": "~2.2.0",
|
|
58
|
-
"@storybook/react-vite": "^10.4.
|
|
59
|
+
"@storybook/react-vite": "^10.4.6",
|
|
59
60
|
"@types/react": "^19.2.17",
|
|
60
|
-
"@xylabs/eth-address": "^6.1.
|
|
61
|
-
"@xylabs/geo": "^6.1.
|
|
62
|
-
"@xylabs/pixel": "
|
|
63
|
-
"@xylabs/react-button": "
|
|
64
|
-
"@xylabs/react-error": "
|
|
65
|
-
"@xylabs/react-flexbox": "~9.1",
|
|
66
|
-
"@xylabs/react-hooks": "~9.1",
|
|
67
|
-
"@xylabs/react-identicon": "~9.1",
|
|
68
|
-
"@xylabs/react-link": "~9.1",
|
|
69
|
-
"@xylabs/react-promise": "
|
|
70
|
-
"@xylabs/react-shared": "
|
|
71
|
-
"@xylabs/react-theme": "^9.1.
|
|
72
|
-
"@xylabs/sdk-js": "^6.1.
|
|
73
|
-
"@xylabs/sdk-react": "~9.1",
|
|
74
|
-
"@xylabs/threads": "^6.1.
|
|
75
|
-
"@xylabs/toolchain": "~8.
|
|
76
|
-
"@xylabs/tsconfig": "~8.
|
|
77
|
-
"@xylabs/tsconfig-dom": "~8.
|
|
78
|
-
"@xylabs/tsconfig-react": "~8.
|
|
79
|
-
"@xyo-network/address": "^6.1.
|
|
80
|
-
"@xyo-network/react-
|
|
81
|
-
"@xyo-network/react-payload-raw-info": "~9.1",
|
|
61
|
+
"@xylabs/eth-address": "^6.1.3",
|
|
62
|
+
"@xylabs/geo": "^6.1.3",
|
|
63
|
+
"@xylabs/pixel": "^6.1.3",
|
|
64
|
+
"@xylabs/react-button": "^9.1.2",
|
|
65
|
+
"@xylabs/react-error": "^9.1.2",
|
|
66
|
+
"@xylabs/react-flexbox": "~9.1.2",
|
|
67
|
+
"@xylabs/react-hooks": "~9.1.2",
|
|
68
|
+
"@xylabs/react-identicon": "~9.1.2",
|
|
69
|
+
"@xylabs/react-link": "~9.1.2",
|
|
70
|
+
"@xylabs/react-promise": "^9.1.2",
|
|
71
|
+
"@xylabs/react-shared": "^9.1.2",
|
|
72
|
+
"@xylabs/react-theme": "^9.1.2",
|
|
73
|
+
"@xylabs/sdk-js": "^6.1.3",
|
|
74
|
+
"@xylabs/sdk-react": "~9.1.2",
|
|
75
|
+
"@xylabs/threads": "^6.1.3",
|
|
76
|
+
"@xylabs/toolchain": "~8.2.7",
|
|
77
|
+
"@xylabs/tsconfig": "~8.2.7",
|
|
78
|
+
"@xylabs/tsconfig-dom": "~8.2.7",
|
|
79
|
+
"@xylabs/tsconfig-react": "~8.2.7",
|
|
80
|
+
"@xyo-network/address": "^6.1.1",
|
|
81
|
+
"@xyo-network/react-payload-raw-info": "~9.1.1",
|
|
82
82
|
"@xyo-network/sdk-js": "^6.1.0",
|
|
83
|
-
"@xyo-network/sdk-protocol-js": "~6.1.
|
|
84
|
-
"@xyo-network/xl1-blockies": "~
|
|
85
|
-
"@xyo-network/xl1-react-client-sdk": "
|
|
86
|
-
"@xyo-network/xl1-sdk": "
|
|
83
|
+
"@xyo-network/sdk-protocol-js": "~6.1.1",
|
|
84
|
+
"@xyo-network/xl1-blockies": "~3.0",
|
|
85
|
+
"@xyo-network/xl1-react-client-sdk": "~3.0",
|
|
86
|
+
"@xyo-network/xl1-sdk": "~3.0",
|
|
87
87
|
"ajv": "^8.20.0",
|
|
88
88
|
"async-mutex": "^0.5.0",
|
|
89
89
|
"clsx": "~2.1.1",
|
|
90
90
|
"cosmiconfig": "^9.0.2",
|
|
91
91
|
"debug": "~4.4.3",
|
|
92
|
-
"eslint": "^10.
|
|
92
|
+
"eslint": "^10.5.0",
|
|
93
93
|
"ethers": "^6.16.0",
|
|
94
94
|
"hash-wasm": "~4.12.0",
|
|
95
95
|
"idb": "^8.0.3",
|
|
@@ -97,21 +97,18 @@
|
|
|
97
97
|
"md5": "~2.3.0",
|
|
98
98
|
"numeral": "~2.0.6",
|
|
99
99
|
"observable-fns": "~0.6.1",
|
|
100
|
-
"prop-types": "^15.8.1",
|
|
101
100
|
"query-string": "~9.3.1",
|
|
102
101
|
"react": "^19.2.7",
|
|
103
102
|
"react-dom": "^19.2.7",
|
|
104
|
-
"react-router-dom": "^7.
|
|
105
|
-
"
|
|
106
|
-
"storybook": "^10.4.3",
|
|
103
|
+
"react-router-dom": "^7.18.0",
|
|
104
|
+
"storybook": "^10.4.6",
|
|
107
105
|
"typescript": "~6.0.3",
|
|
108
106
|
"uuid": "~14.0.0",
|
|
109
107
|
"viem": "^2.52.2",
|
|
110
108
|
"vite": "^8.0.16",
|
|
111
109
|
"webextension-polyfill": "^0.12.0",
|
|
112
110
|
"zod": "~4.4.3",
|
|
113
|
-
"zustand": "~5.0.14"
|
|
114
|
-
"@xyo-network/react-chain-model": "~2.0.17"
|
|
111
|
+
"zustand": "~5.0.14"
|
|
115
112
|
},
|
|
116
113
|
"peerDependencies": {
|
|
117
114
|
"@bitauth/libauth": "~3.0",
|
|
@@ -120,11 +117,11 @@
|
|
|
120
117
|
"@metamask/utils": "^11.11",
|
|
121
118
|
"@mui/icons-material": "^9.1",
|
|
122
119
|
"@mui/material": "^9.1",
|
|
120
|
+
"@mui/system": "~9.1",
|
|
123
121
|
"@noble/post-quantum": "~0.6.1",
|
|
124
122
|
"@opentelemetry/api": "^1.9",
|
|
125
123
|
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
126
124
|
"@react-spring/web": "~10.1",
|
|
127
|
-
"@rollbar/react": "~1.0",
|
|
128
125
|
"@scure/base": "~2.2",
|
|
129
126
|
"@scure/bip39": "~2.2",
|
|
130
127
|
"@storybook/react-vite": "^10.3",
|
|
@@ -144,13 +141,12 @@
|
|
|
144
141
|
"@xylabs/sdk-react": "~9.1",
|
|
145
142
|
"@xylabs/threads": "^6.1",
|
|
146
143
|
"@xyo-network/address": "^6.0",
|
|
147
|
-
"@xyo-network/react-error": "~9.1",
|
|
148
144
|
"@xyo-network/react-payload-raw-info": "~9.1",
|
|
149
145
|
"@xyo-network/sdk-js": "^6.0",
|
|
150
146
|
"@xyo-network/sdk-protocol-js": "~6.1",
|
|
151
|
-
"@xyo-network/xl1-blockies": "^
|
|
152
|
-
"@xyo-network/xl1-react-client-sdk": "^
|
|
153
|
-
"@xyo-network/xl1-sdk": "^
|
|
147
|
+
"@xyo-network/xl1-blockies": "^3.0",
|
|
148
|
+
"@xyo-network/xl1-react-client-sdk": "^3.0",
|
|
149
|
+
"@xyo-network/xl1-sdk": "^3.0",
|
|
154
150
|
"ajv": "^8.20",
|
|
155
151
|
"async-mutex": "^0.5",
|
|
156
152
|
"clsx": "~2.1",
|
|
@@ -163,12 +159,10 @@
|
|
|
163
159
|
"md5": "~2.3",
|
|
164
160
|
"numeral": "~2.0",
|
|
165
161
|
"observable-fns": "~0.6",
|
|
166
|
-
"prop-types": "^15.8",
|
|
167
162
|
"query-string": "~9.3",
|
|
168
163
|
"react": "^19.2",
|
|
169
164
|
"react-dom": "^19.2",
|
|
170
165
|
"react-router-dom": "^7.15",
|
|
171
|
-
"rollbar": "^3.1",
|
|
172
166
|
"storybook": "^10.3",
|
|
173
167
|
"uuid": "~14.0",
|
|
174
168
|
"viem": "^2.48",
|