@xyo-network/react-chain-network 1.21.3 → 1.23.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/Drawer.d.ts.map +1 -1
- package/dist/browser/components/broadcast/details/Card.d.ts.map +1 -1
- package/dist/browser/components/broadcast/details/SummaryStack.d.ts.map +1 -1
- package/dist/browser/components/status/Alert.d.ts.map +1 -1
- package/dist/browser/components/status/Dialog.d.ts.map +1 -1
- package/dist/browser/context/network/context.d.ts +28 -1
- package/dist/browser/context/network/context.d.ts.map +1 -1
- package/dist/browser/hooks/provider/useViewerInPage.d.ts +3 -2
- package/dist/browser/hooks/provider/useViewerInPage.d.ts.map +1 -1
- package/dist/browser/index.mjs +49 -26
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +43 -40
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../src/components/broadcast/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAKvE,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,2BAA2B,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../../src/components/broadcast/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAKvE,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,2BAA2B,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;CAC3B;AAED,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4EvE,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAUrE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/broadcast/details/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAO9C,OAAO,KAAyB,MAAM,OAAO,CAAA;AAE7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAKtE,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/broadcast/details/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAO9C,OAAO,KAAyB,MAAM,OAAO,CAAA;AAE7C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AAKtE,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,uBAAuB,CAAC,EAAE,uBAAuB,CAAA;CAClD;AAED,eAAO,MAAM,6BAA6B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAoEnF,CAAA"}
|
|
@@ -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;AAKtB,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,
|
|
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;AAKtB,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,CA0EpG,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/status/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IACzD,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,
|
|
1
|
+
{"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../../src/components/status/Alert.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAI/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAA4B,MAAM,OAAO,CAAA;AAIhD,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IACzD,MAAM,CAAC,EAAE,aAAa,CAAA;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA0ChE,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,CA2ClE,CAAA"}
|
|
@@ -1,2 +1,29 @@
|
|
|
1
|
-
export declare const ChainNetworkContext:
|
|
1
|
+
export declare const ChainNetworkContext: import("react").Context<({
|
|
2
|
+
activeNetwork?: import("@xyo-network/xl1-sdk").NetworkBootstrap;
|
|
3
|
+
chainNetworkError?: Error;
|
|
4
|
+
networkSettings: import("./index.ts").ChainNetworkSettings;
|
|
5
|
+
networks?: import("@xyo-network/xl1-sdk").NetworkBootstrap[];
|
|
6
|
+
updateActiveNetwork?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"]) => void;
|
|
7
|
+
updateNetworkSettings?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"], settings: Partial<import("./index.ts").ChainNetworkSettings>) => void;
|
|
8
|
+
} & {
|
|
9
|
+
provided: true;
|
|
10
|
+
}) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").ProvidedContextExState<{
|
|
11
|
+
activeNetwork?: import("@xyo-network/xl1-sdk").NetworkBootstrap;
|
|
12
|
+
chainNetworkError?: Error;
|
|
13
|
+
networkSettings: import("./index.ts").ChainNetworkSettings;
|
|
14
|
+
networks?: import("@xyo-network/xl1-sdk").NetworkBootstrap[];
|
|
15
|
+
updateActiveNetwork?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"]) => void;
|
|
16
|
+
updateNetworkSettings?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"], settings: Partial<import("./index.ts").ChainNetworkSettings>) => void;
|
|
17
|
+
}>, never> & {
|
|
18
|
+
provided: false;
|
|
19
|
+
}) | (import("@xylabs/react-shared").FixedValues<import("@xylabs/react-shared").NotProvidedContextExState<{
|
|
20
|
+
activeNetwork?: import("@xyo-network/xl1-sdk").NetworkBootstrap;
|
|
21
|
+
chainNetworkError?: Error;
|
|
22
|
+
networkSettings: import("./index.ts").ChainNetworkSettings;
|
|
23
|
+
networks?: import("@xyo-network/xl1-sdk").NetworkBootstrap[];
|
|
24
|
+
updateActiveNetwork?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"]) => void;
|
|
25
|
+
updateNetworkSettings?: (networkId: import("@xyo-network/xl1-sdk").NetworkBootstrap["id"], settings: Partial<import("./index.ts").ChainNetworkSettings>) => void;
|
|
26
|
+
}>, never> & {
|
|
27
|
+
provided: false;
|
|
28
|
+
})>;
|
|
2
29
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/context/network/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/context/network/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAuC,CAAA"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { XyoViewer } from '@xyo-network/xl1-sdk';
|
|
1
2
|
/**
|
|
2
3
|
* Finds the appropriate viewer based on network settings and available gateways
|
|
3
4
|
*
|
|
@@ -5,7 +6,7 @@
|
|
|
5
6
|
* 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
|
|
6
7
|
* be proxied, it will use the in-page viewer.
|
|
7
8
|
*/
|
|
8
|
-
export declare const useViewerInPage: () =>
|
|
9
|
+
export declare const useViewerInPage: () => XyoViewer | undefined;
|
|
9
10
|
/** @deprecated - use useViewerInPage instead */
|
|
10
|
-
export declare const useViewerInPageV2: () =>
|
|
11
|
+
export declare const useViewerInPageV2: () => XyoViewer | undefined;
|
|
11
12
|
//# sourceMappingURL=useViewerInPage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useViewerInPage.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useViewerInPage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useViewerInPage.d.ts","sourceRoot":"","sources":["../../../../src/hooks/provider/useViewerInPage.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAWhE;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,QAAO,SAAS,GAAG,SAuB9C,CAAA;AACD,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,QAzBK,SAAS,GAAG,SAyBC,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -72,7 +72,7 @@ var useRpcBroadcastListener = /* @__PURE__ */ __name(() => {
|
|
|
72
72
|
|
|
73
73
|
// src/hooks/provider/useViewerInPage.ts
|
|
74
74
|
import { isDefined as isDefined3, isNull, isUndefined } from "@xylabs/sdk-js";
|
|
75
|
-
import { useProvidedGateway } from "@xyo-network/react-
|
|
75
|
+
import { useProvidedGateway } from "@xyo-network/xl1-react-client-sdk";
|
|
76
76
|
|
|
77
77
|
// src/context/ActiveGatewayProvider.tsx
|
|
78
78
|
import { GatewayProvider, InPageGatewaysProvider } from "@xyo-network/react-chain-provider";
|
|
@@ -266,7 +266,9 @@ var CloseDrawerIconButton = /* @__PURE__ */ __name(({ anchor, onClose }) => {
|
|
|
266
266
|
left: anchor === "left" ? void 0 : 8
|
|
267
267
|
}
|
|
268
268
|
}, /* @__PURE__ */ React3.createElement(Cancel, {
|
|
269
|
-
|
|
269
|
+
sx: {
|
|
270
|
+
fontSize: "small"
|
|
271
|
+
}
|
|
270
272
|
}));
|
|
271
273
|
}, "CloseDrawerIconButton");
|
|
272
274
|
|
|
@@ -298,14 +300,23 @@ var BroadcastedRpcCallDetailsSummaryStack = /* @__PURE__ */ __name(({ expanded,
|
|
|
298
300
|
]);
|
|
299
301
|
return /* @__PURE__ */ React4.createElement(Stack, {
|
|
300
302
|
direction: "row",
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
303
|
+
...props,
|
|
304
|
+
sx: [
|
|
305
|
+
{
|
|
306
|
+
gap: 2,
|
|
307
|
+
alignItems: "center",
|
|
308
|
+
justifyContent: "space-between"
|
|
309
|
+
},
|
|
310
|
+
...Array.isArray(props.sx) ? props.sx : [
|
|
311
|
+
props.sx
|
|
312
|
+
]
|
|
313
|
+
]
|
|
305
314
|
}, /* @__PURE__ */ React4.createElement(Stack, {
|
|
306
315
|
direction: "row",
|
|
307
|
-
|
|
308
|
-
|
|
316
|
+
sx: {
|
|
317
|
+
gap: 2,
|
|
318
|
+
alignItems: "center"
|
|
319
|
+
}
|
|
309
320
|
}, /* @__PURE__ */ React4.createElement(IconButton2, {
|
|
310
321
|
size: "small",
|
|
311
322
|
onClick: /* @__PURE__ */ __name(() => setExpanded?.(!expanded), "onClick")
|
|
@@ -330,12 +341,14 @@ var BroadcastedRpcCallDetailsSummaryStack = /* @__PURE__ */ __name(({ expanded,
|
|
|
330
341
|
}))), /* @__PURE__ */ React4.createElement(Typography, {
|
|
331
342
|
component: "span",
|
|
332
343
|
variant: "body2",
|
|
333
|
-
|
|
344
|
+
sx: {
|
|
345
|
+
fontFamily: "monospace"
|
|
346
|
+
}
|
|
334
347
|
}, method), /* @__PURE__ */ React4.createElement(Typography, {
|
|
335
348
|
component: "span",
|
|
336
349
|
variant: "caption",
|
|
337
|
-
color: "text.secondary",
|
|
338
350
|
sx: {
|
|
351
|
+
color: "text.secondary",
|
|
339
352
|
opacity: 0.6
|
|
340
353
|
}
|
|
341
354
|
}, formattedTimestamp)), /* @__PURE__ */ React4.createElement(Icon, {
|
|
@@ -343,7 +356,9 @@ var BroadcastedRpcCallDetailsSummaryStack = /* @__PURE__ */ __name(({ expanded,
|
|
|
343
356
|
justifySelf: "end"
|
|
344
357
|
}
|
|
345
358
|
}, hasResult ? /* @__PURE__ */ React4.createElement(CheckCircle, {
|
|
346
|
-
|
|
359
|
+
sx: {
|
|
360
|
+
color: "success"
|
|
361
|
+
}
|
|
347
362
|
}) : /* @__PURE__ */ React4.createElement(Warning, {
|
|
348
363
|
color: "warning"
|
|
349
364
|
})));
|
|
@@ -377,16 +392,18 @@ var BroadcastedRpcCallDetailsCard = /* @__PURE__ */ memo(({ rpcRequestResponsePa
|
|
|
377
392
|
unmountOnExit: true
|
|
378
393
|
}, /* @__PURE__ */ React5.createElement(Stack2, {
|
|
379
394
|
direction: "column",
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
395
|
+
sx: {
|
|
396
|
+
p: 1,
|
|
397
|
+
gap: 2,
|
|
398
|
+
alignItems: "stretch"
|
|
399
|
+
}
|
|
383
400
|
}, /* @__PURE__ */ React5.createElement(Typography2, {
|
|
384
401
|
variant: "body2"
|
|
385
402
|
}, "Source:", /* @__PURE__ */ React5.createElement(Typography2, {
|
|
386
403
|
variant: "caption",
|
|
387
404
|
component: "span",
|
|
388
|
-
fontFamily: "monospace",
|
|
389
405
|
sx: {
|
|
406
|
+
fontFamily: "monospace",
|
|
390
407
|
ml: 1
|
|
391
408
|
}
|
|
392
409
|
}, source)), /* @__PURE__ */ React5.createElement(Typography2, {
|
|
@@ -489,16 +506,18 @@ var BroadcastedRpcCallsDrawer = /* @__PURE__ */ __name(({ anchor = "right", onCl
|
|
|
489
506
|
anchor,
|
|
490
507
|
onClose
|
|
491
508
|
}), /* @__PURE__ */ React6.createElement(Stack3, {
|
|
492
|
-
gap: 2,
|
|
493
509
|
sx: {
|
|
510
|
+
gap: 2,
|
|
511
|
+
flexShrink: 0,
|
|
494
512
|
p: 3
|
|
495
|
-
}
|
|
496
|
-
flexShrink: 0
|
|
513
|
+
}
|
|
497
514
|
}, /* @__PURE__ */ React6.createElement(Stack3, {
|
|
498
515
|
direction: "row",
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
516
|
+
sx: {
|
|
517
|
+
justifyContent: "space-between",
|
|
518
|
+
alignItems: "center",
|
|
519
|
+
gap: 4
|
|
520
|
+
}
|
|
502
521
|
}, /* @__PURE__ */ React6.createElement(Typography3, {
|
|
503
522
|
variant: "h6"
|
|
504
523
|
}, drawerTitle ?? "Broadcasted RPC Calls"), /* @__PURE__ */ React6.createElement(Button, {
|
|
@@ -513,8 +532,8 @@ var BroadcastedRpcCallsDrawer = /* @__PURE__ */ __name(({ anchor = "right", onCl
|
|
|
513
532
|
})), /* @__PURE__ */ React6.createElement(Stack3, {
|
|
514
533
|
direction: "column",
|
|
515
534
|
id: "events-container",
|
|
516
|
-
flexGrow: 1,
|
|
517
535
|
sx: {
|
|
536
|
+
flexGrow: 1,
|
|
518
537
|
overflowY: "hidden"
|
|
519
538
|
}
|
|
520
539
|
}, /* @__PURE__ */ React6.createElement(Box, {
|
|
@@ -642,8 +661,10 @@ var NetworkStatusDialog = /* @__PURE__ */ __name(({ updates, ...props }) => {
|
|
|
642
661
|
}
|
|
643
662
|
}, "Start:", " ", new Date(start).toLocaleString(), " ", /* @__PURE__ */ React10.createElement("br", null), "End:", " ", new Date(end).toLocaleString()))))), /* @__PURE__ */ React10.createElement(DialogActions, null, /* @__PURE__ */ React10.createElement(Button2, {
|
|
644
663
|
onClick: /* @__PURE__ */ __name((e) => props.onClose?.(e, "backdropClick"), "onClick"),
|
|
645
|
-
|
|
646
|
-
|
|
664
|
+
variant: "outlined",
|
|
665
|
+
sx: {
|
|
666
|
+
color: "primary"
|
|
667
|
+
}
|
|
647
668
|
}, "Close")));
|
|
648
669
|
}, "NetworkStatusDialog");
|
|
649
670
|
|
|
@@ -674,10 +695,12 @@ var NetworkStatusAlert = /* @__PURE__ */ __name(({ status, ...props }) => {
|
|
|
674
695
|
severity,
|
|
675
696
|
...props
|
|
676
697
|
}, /* @__PURE__ */ React11.createElement(AlertTitle, null, status?.description), status?.updates && status.updates.length > 0 ? /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(Button3, {
|
|
677
|
-
color: severity,
|
|
678
698
|
variant: "outlined",
|
|
679
699
|
size: "small",
|
|
680
|
-
onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick")
|
|
700
|
+
onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick"),
|
|
701
|
+
sx: {
|
|
702
|
+
color: severity
|
|
703
|
+
}
|
|
681
704
|
}, "Updates"), /* @__PURE__ */ React11.createElement(NetworkStatusDialog, {
|
|
682
705
|
open,
|
|
683
706
|
onClose: handleClose,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":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"],"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 gap={2} sx={{ p: 3 }} flexShrink={0}>\n <Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" gap={4}>\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 direction=\"column\" id=\"events-container\" flexGrow={1} sx={{ overflowY: 'hidden' }}>\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/react-chain-client'\nimport type { NetworkId } 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 = () => {\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 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 direction=\"column\" p={1} gap={2} alignItems=\"stretch\">\n <Typography variant=\"body2\">\n Source:\n <Typography variant=\"caption\" component=\"span\" fontFamily=\"monospace\" sx={{ ml: 1 }}>{source}</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/hash'\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 direction=\"row\" gap={2} alignItems=\"center\" justifyContent=\"space-between\" {...props}>\n <Stack direction=\"row\" gap={2} alignItems=\"center\">\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 component=\"span\" variant=\"body2\" fontFamily=\"monospace\">\n {method}\n </Typography>\n <Typography component=\"span\" variant=\"caption\" color=\"text.secondary\" sx={{ opacity: 0.6 }}>\n {formattedTimestamp}\n </Typography>\n </Stack>\n <Icon sx={{ justifySelf: 'end' }}>{hasResult ? <CheckCircle color=\"success\" /> : <Warning color=\"warning\" />}</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/react-chain-shared'\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 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-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 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 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"],"mappings":"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","names":["Box","Button","Drawer","Pagination","Stack","Typography","React","useState","isJsonRpcRequest","isJsonRpcResponse","isDefined","isString","useEffect","useState","parseRpcCall","acc","event","isJsonRpcResponse","rpcCall","castedEvent","id","result","isJsonRpcRequest","request","console","error","source","useRpcBroadcastListener","events","setEvents","useState","clearEvents","useEffect","listener","e","detail","isString","parsedDetail","JSON","parse","data","broadcastedRpcCall","timestamp","Date","now","prev","newState","isDefined","err","globalThis","addEventListener","removeEventListener","isDefined","isNull","isUndefined","useProvidedGateway","GatewayProvider","InPageGatewaysProvider","React","createContextEx","ChainNetworkContext","ErrorRender","usePromise","isDefined","MainNetwork","React","useCallback","useMemo","useState","LocalNetwork","defaultChainNetworkSettings","id","proxy","useCallback","useState","useChainNetworkSettings","defaults","defaultChainNetworkSettings","networkSettings","setNetworkSettings","useState","updateNetworkSettings","useCallback","networkId","settings","prevSettings","ChainNetworkProvider","children","getActiveNetwork","networkSettings","networkSettingsProp","defaultChainNetworkSettings","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","updateNetworkSettings","useChainNetworkSettings","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","ActiveGatewayProvider","signerTransport","children","activeNetwork","useChainNetwork","React","InPageGatewaysProvider","GatewayProvider","gatewayName","id","shouldProxy","networkSettings","networkId","isDefined","proxy","useViewerInPage","activeNetwork","useChainNetwork","gateways","useProvidedGateway","inPageGateway","walletGateway","inPageViewer","connection","viewer","walletViewer","isUndefined","id","isNull","console","warn","useViewerInPageV2","delay","isUndefined","useNetworkFromGateway","useEffect","useState","STATUS_CHECK_INTERVAL","usePollNetworkStatus","network","useNetworkFromGateway","networkStatus","setNetworkStatus","useState","networkStatusError","setNetworkStatusError","useEffect","checkNetwork","isUndefined","response","status","undefined","error","console","info","delay","Cancel","IconButton","React","CloseDrawerIconButton","anchor","onClose","React","IconButton","onClick","e","size","sx","alignSelf","top","right","undefined","left","Cancel","fontSize","Card","Collapse","Stack","Typography","isDefined","JsonViewerEx","React","memo","useState","ArrowRight","CheckCircle","Warning","Avatar","Icon","IconButton","Stack","Tooltip","Typography","useTheme","Identicon","usePromise","isDefined","ObjectHasher","React","useMemo","BroadcastedRpcCallDetailsSummaryStack","expanded","setExpanded","method","timestamp","hasResult","params","props","theme","useTheme","hash","hashError","usePromise","isDefined","ObjectHasher","formattedTimestamp","useMemo","Date","toLocaleString","React","Stack","direction","gap","alignItems","justifyContent","IconButton","size","onClick","ArrowRight","sx","transform","transition","fontSize","Tooltip","title","message","JSON","stringify","Avatar","backgroundColor","vars","palette","text","primary","width","height","opacity","Identicon","value","Typography","component","variant","fontFamily","color","Icon","justifySelf","CheckCircle","Warning","JSON_VIEWER_WIDTH","BroadcastedRpcCallDetailsCard","memo","rpcRequestResponsePairs","sx","props","expanded","setExpanded","useState","request","result","source","React","Card","p","display","flexDirection","width","BroadcastedRpcCallDetailsSummaryStack","params","rpcCall","hasResult","isDefined","method","timestamp","Collapse","in","mountOnEnter","unmountOnExit","Stack","direction","gap","alignItems","Typography","variant","component","fontFamily","ml","JsonViewerEx","value","maxHeight","overflow","isDefinedNotNull","useCallback","useMemo","useState","usePaginatedEventPairs","formattedEvents","numberOfVisiblePairs","onClearEvents","scrollableDiv","currentPage","setCurrentPage","useState","allEventEntries","useMemo","Object","entries","toSorted","a","b","request","timestamp","totalPages","Math","ceil","length","effectiveCurrentPage","min","visibleEvents","isDefinedNotNull","scrollTo","top","behavior","startIndex","endIndex","slice","handlePreviousPage","useCallback","prev","max","handleNextPage","handleClearEvents","handlePageChange","_event","page","BroadcastedRpcCallsDrawer","anchor","onClearEvents","drawerTitle","events","onClose","numberOfVisibleEvents","props","scrollableDiv","setScrollableDiv","useState","allEventEntries","visibleEvents","totalPages","effectiveCurrentPage","handleClearEvents","handlePageChange","usePaginatedEventPairs","React","Drawer","keepMounted","CloseDrawerIconButton","Stack","gap","sx","p","flexShrink","direction","justifyContent","alignItems","Typography","variant","Button","size","onClick","length","Pagination","count","page","onChange","color","id","flexGrow","overflowY","Box","ref","el","px","pb","map","broadcastedRpcCall","index","BroadcastedRpcCallDetailsCard","key","rpcRequestResponsePairs","mb","BroadcastedRpcCallsDrawerWithEvents","clearEvents","useRpcBroadcastListener","Avatar","React","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","validNetworkStates","Set","NetworkStatus","children","props","networkStatus","usePollNetworkStatus","showStatus","has","state","React","NetworkStatusAlert","status","BroadcastRpcRequestEventName","BroadcastRpcResponseEventName","defaultBroadcastConfig","request","response","LocalNetwork","MainNetwork","SequenceNetwork","React","AvailableNetworks","MainNetwork","SequenceNetwork","LocalNetwork","networkSettings","id","proxy","getActiveMainnetNetwork","Promise","resolve","MainnetNetworkGatewayDecorator","Story","args","React","ChainNetworkProvider","networks","getActiveNetwork","ActiveGatewayProvider","getActiveSequenceNetwork","SequenceNetworkGatewayDecorator","getActiveLocalNetwork","LocalNetworkGatewayDecorator"]}
|
|
1
|
+
{"version":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"],"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/hash'\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/react-chain-shared'\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"],"mappings":";;;;AACA,SACEA,KAAKC,QAAQC,QAAQC,YAAYC,SAAAA,QAAOC,cAAAA,mBACnC;AACP,OAAOC,UAASC,YAAAA,iBAAgB;;;ACHhC,SAASC,kBAAkBC,yBAAyB;AACpD,SAASC,WAAWC,gBAAgB;AACpC,SAASC,WAAWC,gBAAgB;AAMpC,IAAMC,eAAe,wBAACC,KAAkCC,UAAAA;AACtD,MAAIC,kBAAkBD,MAAME,OAAO,GAAG;AACpC,UAAMC,cAAcH;AACpBD,QAAII,YAAYD,QAAQE,EAAE,EAAYC,SAASF;EACjD,WAAWG,iBAAiBN,MAAME,OAAO,GAAG;AAC1C,UAAMC,cAAcH;AACpBD,QAAII,YAAYD,QAAQE,EAAE,EAAYG,UAAUJ;EAClD,OAAO;AACLK,YAAQC,MAAM,yBAAyBT,KAAAA;EACzC;AACAD,MAAIC,MAAME,QAAQE,EAAE,EAAYM,SAASV,MAAMU;AAE/C,SAAOX;AACT,GAbqB;AAed,IAAMY,0BAA0B,6BAAA;AACrC,QAAM,CAACC,QAAQC,SAAAA,IAAaC,SAAsC,CAAC,CAAA;AACnE,QAAMC,cAAc,6BAAMF,UAAU,CAAC,CAAA,GAAjB;AAEpBG,YAAU,MAAA;AACR,UAAMC,WAAW,wBAACC,MAAAA;AAChB,UAAI,YAAYA,GAAG;AACjB,cAAM,EAAEC,OAAM,IAAKD,KAAK,CAAC;AACzB,YAAIE,SAASD,MAAAA,GAAS;AACpB,cAAI;AACF,kBAAME,eAAeC,KAAKC,MAAMJ,MAAAA;AAChC,kBAAM,EAAEK,MAAMtB,SAASQ,OAAM,IAAKW;AAElC,kBAAMI,qBAAyC;cAC7CvB;cACAQ;cACAgB,WAAWC,KAAKC,IAAG;YACrB;AACAf,sBAAU,CAACgB,SAAAA;AACT,oBAAM,EAAEzB,GAAE,IAAKqB,mBAAmBvB;AAClC,oBAAM4B,WAAW;gBAAE,GAAGD;cAAK;AAC3B,kBAAIE,UAAUD,SAAS1B,EAAAA,CAAa,GAAG;AACrCN,6BAAagC,UAAUL,kBAAAA;cACzB,OAAO;AACLK,yBAAS1B,EAAAA,IAAgB,CAAC;AAC1BN,6BAAagC,UAAUL,kBAAAA;cACzB;AACA,qBAAOK;YACT,CAAA;UACF,SAASE,KAAK;AACZxB,oBAAQC,MAAMuB,GAAAA;UAChB;QACF;MACF;IACF,GA7BiB;AA8BjBC,eAAWC,iBAAiB,6BAA6BjB,QAAAA;AACzDgB,eAAWC,iBAAiB,8BAA8BjB,QAAAA;AAE1D,WAAO,MAAA;AACLgB,iBAAWE,oBAAoB,6BAA6BlB,QAAAA;AAC5DgB,iBAAWE,oBAAoB,8BAA8BlB,QAAAA;IAC/D;EACF,GAAG,CAAA,CAAE;AAEL,SAAO;IAAEL;IAAQG;EAAY;AAC/B,GA7CuC;;;ACxBvC,SACEqB,aAAAA,YAAWC,QAAQC,mBACd;AACP,SAASC,0BAA0B;;;ACHnC,SAASC,iBAAiBC,8BAA8B;AAGxD,OAAOC,YAAW;;;ACHlB,SAASC,uBAAuB;AAIzB,IAAMC,sBAAsBD,gBAAAA;;;ACJnC,SAASE,mBAAmB;AAC5B,SAASC,kBAAkB;AAC3B,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,mBAAmB;AAE5B,OAAOC,SACLC,eAAAA,cAAaC,SAASC,YAAAA,iBACjB;;;ACRP,SAASC,oBAAoB;AAItB,IAAMC,8BAAoD;EAAE,CAACD,aAAaE,EAAE,GAAG;IAAEC,OAAO;EAAK;AAAE;;;ACHtG,SAASC,aAAaC,YAAAA,iBAAgB;AAK/B,IAAMC,0BAA0B,wBAACC,WAAWC,gCAA2B;AAC5E,QAAM,CAACC,kBAAiBC,kBAAAA,IAAsBC,UAA+BJ,QAAAA;AAE7E,QAAMK,wBAAwBC,YAAY,CACxCC,WACAC,aAAAA;AAEAL,uBAAmBM,CAAAA,kBAAiB;MAClC,GAAGA;MACH,CAACF,SAAAA,GAAY;QACX,GAAGE,aAAaF,SAAAA;QAChB,GAAGC;MACL;IACF,EAAA;EACF,GAAG,CAAA,CAAE;AAEL,SAAO;IACLN,iBAAAA;IACAG;EACF;AACF,GApBuC;;;AFgBhC,IAAMK,uBAA4D,wBAAC,EACxEC,UAAUC,kBAAkBC,iBAAiBC,sBAAsBC,6BAA6BC,UAAUC,kBAAkBC,yBAAwB,MACrJ;AACC,QAAM,CAACC,eAAeF,gBAAAA,IAAoBG,UAAAA;AAC1C,QAAM,CAACC,OAAOC,QAAAA,IAAYF,UAAAA;AAC1B,QAAM,EAAEP,iBAAAA,kBAAiBU,sBAAqB,IAAKC,wBAAwBV,mBAAAA;AAG3E,QAAM,CAACW,uBAAuBC,kBAAAA,IAAsBC,WAAW,YAAA;AAE7D,QAAI,CAACX,SAAU;AAEf,UAAMG,iBAAgB,MAAMP,mBAAAA;AAE5B,QAAIO,kBAAiBH,UAAUY,KAAKC,CAAAA,YAAWA,QAAQC,OAAOX,eAAcW,EAAE,GAAG;AAE/E,aAAOX;IACT,OAAO;AAEL,YAAMY,iBAAiBf,SAASY,KAAKC,CAAAA,YAAWA,QAAQC,OAAOE,YAAYF,EAAE,KAAKd,SAAS,CAAA;AAC3F,YAAME,2BAA2Ba,eAAeD,EAAE;AAGlD,aAAOC;IACT;EACF,GAAG;IAACf;GAAS;AAEb,QAAM,CAACiB,+BAA+BC,gCAAAA,IAAoCd,UAASK,qBAAAA;AACnF,MAAIU,WAAUV,qBAAAA,KAA0BA,0BAA0BQ,+BAA+B;AAC/FhB,qBAAiBQ,qBAAAA;AACjBS,qCAAiCT,qBAAAA;EACnC;AAEA,QAAMW,sBAAsBC,aAAY,CAACC,cAAAA;AACvChB,aAASiB,MAAAA;AACT,UAAMV,UAAUb,UAAUY,KAAKC,CAAAA,aAAWA,SAAQC,OAAOQ,SAAAA;AACzD,QAAI,CAACT,SAAS;AACZP,eAAS,IAAIkB,MAAM,mBAAmBF,SAAAA,YAAqB,CAAA;AAC3D;IACF;AAEArB,qBAAiBY,OAAAA;AAEjB,SAAKX,2BAA2BoB,SAAAA;EAClC,GAAG;IAACtB;IAAUE;GAAyB;AAEvC,QAAMuB,QAA2BC,QAAQ,OAAO;IAC9CvB;IACAH;IACA2B,UAAU;IACVP;IACAvB,iBAAAA;IACAU;IACAqB,mBAAmBvB,SAASK;EAC9B,IAAI;IAACP;IAAeO;IAAoBL;IAAOR;IAAiBG;IAAUoB;IAAqBb;GAAsB;AAErH,SACE,sBAAA,cAACsB,qBAAAA;IAAoBJ;KACnB,sBAAA,cAACK,aAAAA;IAAYzB,OAAOA,SAASK;IAAoBqB,OAAM;MACtDpC,QAAAA;AAGP,GA9DyE;;;AGtBzE,SAASqC,oBAAoB;AAKtB,IAAMC,kBAAkB,wBAACC,WAAW,SAASC,aAAgCC,qBAAqB,gBAAgBF,QAAAA,GAA1F;;;ALMxB,IAAMG,wBAA8D,wBAAC,EAAEC,iBAAiBC,SAAQ,MAAE;AACvG,QAAM,EAAEC,cAAa,IAAKC,gBAAAA;AAC1B,SACE,gBAAAC,OAAA,cAACC,wBAAAA;IAAuBL;KACtB,gBAAAI,OAAA,cAACE,iBAAAA;IAAgBC,aAAaL,eAAeM;KAC1CP,QAAAA,CAAAA;AAIT,GAT2E;;;ADF3E,IAAMQ,cAAc,wBAACC,kBAAuCC,cAAAA;AAC1D,SAAOC,WAAUD,SAAAA,KACZC,WAAUF,iBAAgBC,SAAAA,CAAU,KACpCD,iBAAgBC,SAAAA,EAAWE;AAClC,GAJoB;AAab,IAAMC,kBAAkB,6BAAA;AAC7B,QAAM,EAAEJ,iBAAAA,kBAAiBK,cAAa,IAAKC,gBAAAA;AAC3C,QAAM,EAAEC,SAAQ,IAAKC,mBAAAA;AAErB,QAAM,EAAEC,eAAeC,cAAa,IAAKH;AAEzC,QAAMI,eAAeF,eAAeG,YAAYC;AAChD,QAAMC,eAAeJ,eAAeE,YAAYC;AAGhD,MAAIE,YAAYL,aAAAA,EAAgB;AAEhC,MAAIX,YAAYC,kBAAiBK,eAAeW,EAAAA,GAAK;AACnD,QAAIC,OAAOP,aAAAA,GAAgB;AACzBQ,cAAQC,KAAK,WAAWd,eAAeW,EAAAA,qFAAuF;AAC9H,aAAOL;IACT;AAGA,WAAOG;EACT;AAEA,SAAOH;AACT,GAvB+B;AAyBxB,IAAMS,oBAAoBhB;;;AO/CjC,SAASiB,OAAOC,eAAAA,oBAAmB;AACnC,SAASC,6BAA6B;AAEtC,SAASC,aAAAA,YAAWC,YAAAA,iBAAgB;AAEpC,IAAMC,wBAAwB;AAEvB,IAAMC,uBAAuB,6BAAA;AAClC,QAAMC,UAAUC,sBAAAA;AAChB,QAAM,CAACC,eAAeC,gBAAAA,IAAoBC,UAAAA;AAC1C,QAAM,CAACC,oBAAoBC,qBAAAA,IAAyBF,UAAAA;AAGpDG,EAAAA,WAAU,MAAA;AACR,QAAIC,eAAe;AACnB,UAAM,YAAA;AACJ,UAAIC,aAAYT,OAAAA,EAAU;AAC1B,aAAOQ,cAAc;AACnB,YAAI;AACF,gBAAME,WAAW,MAAMV,QAAQW,OAAM;AACrCR,2BAAiBO,QAAAA;AACjBJ,gCAAsBM,MAAAA;QACxB,SAASC,OAAO;AACdC,kBAAQC,KAAK,kCAAkCF,KAAAA;AAC/CV,2BAAiBS,MAAAA;AACjBN,gCAAsBO,KAAAA;QACxB;AACA,cAAMG,MAAMlB,qBAAAA;MACd;IACF,GAAA;AAEA,WAAO,MAAA;AAELU,qBAAe;IACjB;EACF,GAAG;IAACR;GAAQ;AAEZ,SAAO;IAACE;IAAeG;;AACzB,GA/BoC;;;ACPpC,SAASY,cAAc;AAEvB,SAASC,kBAAkB;AAC3B,OAAOC,YAAW;AAOX,IAAMC,wBAA8D,wBAAC,EAAEC,QAAQC,QAAO,MAAE;AAC7F,SACE,gBAAAC,OAAA,cAACC,YAAAA;IACCC,SAASC,wBAAAA,MAAKJ,UAAUI,GAAG,eAAA,GAAlBA;IACTC,MAAK;IACLC,IAAI;MACFC,WAAWR,WAAW,UAAU,UAAU;MAAOS,KAAK;MAAGC,OAAOV,WAAW,UAAUW,SAAY;MAAGC,MAAMZ,WAAW,SAASW,SAAY;IAC5I;KAEA,gBAAAT,OAAA,cAACW,QAAAA;IAAON,IAAI;MAAEO,UAAU;IAAQ;;AAGtC,GAZ2E;;;ACT3E,SACEC,MAAMC,UACNC,SAAAA,QAAOC,cAAAA,mBACF;AACP,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,OAAOC,UAASC,MAAMC,YAAAA,iBAAgB;;;ACNtC,SACEC,YAAYC,aAAaC,eACpB;AACP,SACEC,QACAC,MAAMC,cAAAA,aAAYC,OAAwBC,SAASC,YACnDC,gBACK;AACP,SAASC,iBAAiB;AAC1B,SAASC,cAAAA,mBAAkB;AAC3B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,oBAAoB;AAC7B,OAAOC,UAASC,WAAAA,gBAAe;AAWxB,IAAMC,wCAA4F,wBAAC,EACxGC,UAAUC,aAAaC,QAAQC,WAAWC,WAAWC,QAAQ,GAAGC,MAAAA,MACjE;AACC,QAAMC,QAAQC,SAAAA;AACd,QAAM,CAACC,MAAMC,SAAAA,IAAaC,YAAW,YAAA;AACnC,QAAIC,WAAUP,MAAAA,GAAS;AACrB,aAAO,MAAMQ,aAAaJ,KAAKJ,MAAAA;IACjC;EACF,GAAG;IAACA;GAAO;AAEX,QAAMS,qBAAqBC,SAAQ,MAAMH,WAAUT,SAAAA,IAAa,IAAIa,KAAKb,SAAAA,EAAWc,eAAc,IAAK,IAAI;IAACd;GAAU;AAEtH,SACE,gBAAAe,OAAA,cAACC,OAAAA;IACCC,WAAU;IACT,GAAGd;IACJe,IAAI;MAAC;QACHC,KAAK;QACLC,YAAY;QACZC,gBAAgB;MAClB;SAAOC,MAAMC,QAAQpB,MAAMe,EAAE,IAAIf,MAAMe,KAAK;QAACf,MAAMe;;;KAEnD,gBAAAH,OAAA,cAACC,OAAAA;IACCC,WAAU;IACVC,IAAI;MACFC,KAAK;MACLC,YAAY;IACd;KAEA,gBAAAL,OAAA,cAACS,aAAAA;IACCC,MAAK;IACLC,SAAS,6BAAM5B,cAAc,CAACD,QAAAA,GAArB;KAET,gBAAAkB,OAAA,cAACY,YAAAA;IAAWT,IAAI;MAAEU,WAAW/B,WAAW,kBAAkB;MAAgBgC,YAAY;IAA6B;IAAGC,UAAS;OAEjI,gBAAAf,OAAA,cAACgB,SAAAA;IACCC,OAAOvB,WAAUF,SAAAA,IACb,oCAAoCA,UAAU0B,OAAO,KACrDxB,WAAUP,MAAAA,IAAU,YAAYgC,KAAKC,UAAUjC,QAAQ,MAAM,CAAA,CAAA,KAAO;KAExE,gBAAAa,OAAA,cAACqB,QAAAA;IAAOlB,IAAI;MACVmB,iBAAiBjC,MAAMkC,MAAMC,QAAQC,KAAKC;MAASC,OAAO;MAAIC,QAAQ;MAAIC,SAASnC,WAAUH,IAAAA,IAAQ,IAAI;IAC3G;KAEE,gBAAAS,OAAA,cAAC8B,WAAAA;IAAUC,OAAOxC;IAAMmB,MAAM;QAGlC,gBAAAV,OAAA,cAACgC,YAAAA;IACCC,WAAU;IACVC,SAAQ;IACR/B,IAAI;MAAEgC,YAAY;IAAY;KAE7BnD,MAAAA,GAEH,gBAAAgB,OAAA,cAACgC,YAAAA;IACCC,WAAU;IACVC,SAAQ;IACR/B,IAAI;MACFiC,OAAO;MACPP,SAAS;IACX;KAECjC,kBAAAA,CAAAA,GAGL,gBAAAI,OAAA,cAACqC,MAAAA;IAAKlC,IAAI;MAAEmC,aAAa;IAAM;KAC5BpD,YAEK,gBAAAc,OAAA,cAACuC,aAAAA;IAAYpC,IAAI;MAAEiC,OAAO;IAAU;OAEtC,gBAAApC,OAAA,cAACwC,SAAAA;IAAQJ,OAAM;;AAI3B,GA1EyG;;;ADZzG,IAAMK,oBAAoB;AAMnB,IAAMC,gCAA4EC,qBAAK,CAAC,EAC7FC,yBAAyBC,IAAI,GAAGC,MAAAA,MACjC;AACC,QAAM,CAACC,UAAUC,WAAAA,IAAeC,UAAS,KAAA;AAEzC,MAAI,CAACL,wBAAyB,QAAO;AAErC,QAAM,EACJM,SAASC,QAAQC,OAAM,IACrBR;AAEJ,SACE,gBAAAS,OAAA,cAACC,MAAAA;IACCT,IAAI;MACFU,GAAG;MAAGC,SAAS;MAAQC,eAAe;MAAUC,OAAOjB;MAAmB,GAAGI;IAC/E;IACC,GAAGC;KAEJ,gBAAAO,OAAA,cAACM,uCAAAA;IACCZ;IACAa,QAAQV,QAAQW,QAAQD;IACxBE,WAAWC,WAAUZ,MAAAA;IACrBa,QAAQd,QAAQW,QAAQG;IACxBhB;IACAiB,WAAWf,QAAQe;MAErB,gBAAAZ,OAAA,cAACa,UAAAA;IAASC,IAAIpB;IAAUqB,cAAAA;IAAaC,eAAAA;KACnC,gBAAAhB,OAAA,cAACiB,QAAAA;IACCC,WAAU;IACV1B,IAAI;MACFU,GAAG;MACHiB,KAAK;MACLC,YAAY;IACd;KAEA,gBAAApB,OAAA,cAACqB,aAAAA;IAAWC,SAAQ;KAAQ,WAE1B,gBAAAtB,OAAA,cAACqB,aAAAA;IACCC,SAAQ;IACRC,WAAU;IACV/B,IAAI;MACFgC,YAAY;MACZC,IAAI;IACN;KAEC1B,MAAAA,CAAAA,GAGL,gBAAAC,OAAA,cAACqB,aAAAA;IAAWC,SAAQ;KAAQ,UAAA,GAC5B,gBAAAtB,OAAA,cAAC0B,cAAAA;IACCC,OAAO9B;IACPL,IAAI;MAAEoC,WAAW;MAAKC,UAAU;IAAO;MAExCnB,WAAUZ,MAAAA,IAEL,gBAAAE,OAAA,cAAAA,OAAA,UAAA,MACE,gBAAAA,OAAA,cAACqB,aAAAA;IAAWC,SAAQ;KAAQ,SAAA,GAC5B,gBAAAtB,OAAA,cAAC0B,cAAAA;IACCC,OAAO7B;IACPN,IAAI;MAAEoC,WAAW;MAAKC,UAAU;IAAO;QAI7C,IAAA,CAAA,CAAA;AAKd,CAAA;;;AEtFA,SAASC,wBAAwB;AAEjC,SACEC,eAAAA,cAAaC,WAAAA,UAASC,YAAAA,iBACjB;AAIA,IAAMC,yBAAyB,wBACpCC,iBACAC,sBACAC,eACAC,kBAAAA;AAEA,QAAM,CAACC,aAAaC,cAAAA,IAAkBC,UAAS,CAAA;AAE/C,QAAMC,kBAAkBC,SAAQ,MAAA;AAC9B,WAAOC,OAAOC,QAAQV,mBAAmB,CAAC,CAAA,EAAGW,SAAS,CAAC,CAAA,EAAGC,CAAAA,GAAI,CAAA,EAAGC,CAAAA,MAAOA,EAAEC,QAAQC,YAAYH,EAAEE,QAAQC,SAAS;EACnH,GAAG;IAACf;GAAgB;AAEpB,QAAMgB,aAAaR,SAAQ,MAAA;AACzB,WAAOS,KAAKC,KAAKX,gBAAgBY,SAASlB,oBAAAA;EAC5C,GAAG;IAACM,gBAAgBY;IAAQlB;GAAqB;AAGjD,QAAMmB,uBAAuBZ,SAAQ,MAAA;AACnC,QAAIQ,eAAe,EAAG,QAAO;AAC7B,WAAOC,KAAKI,IAAIjB,aAAaY,aAAa,CAAA;EAC5C,GAAG;IAACZ;IAAaY;GAAW;AAE5B,QAAMM,gBAAgBd,SAAQ,MAAA;AAC5B,QAAIe,iBAAiBpB,aAAAA,GAAgB;AACnCA,oBAAcqB,SAAS;QAAEC,KAAK;QAAGC,UAAU;MAAS,CAAA;IACtD;AACA,UAAMC,aAAaP,uBAAuBnB;AAC1C,UAAM2B,WAAWD,aAAa1B;AAC9B,WAAOM,gBAAgBsB,MAAMF,YAAYC,QAAAA;EAC3C,GAAG;IAACrB;IAAiBa;IAAsBnB;IAAsBE;GAAc;AAE/E,QAAM2B,qBAAqBC,aAAY,MAAA;AACrC1B,mBAAe2B,CAAAA,SAAQf,KAAKgB,IAAI,GAAGD,OAAO,CAAA,CAAA;EAC5C,GAAG,CAAA,CAAE;AAEL,QAAME,iBAAiBH,aAAY,MAAA;AACjC1B,mBAAe2B,CAAAA,SAAQf,KAAKI,IAAIL,aAAa,GAAGgB,OAAO,CAAA,CAAA;EACzD,GAAG;IAAChB;GAAW;AAEf,QAAMmB,oBAAoBJ,aAAY,MAAA;AACpC1B,mBAAe,CAAA;AACfH,oBAAAA;EACF,GAAG;IAACA;GAAc;AAIlB,QAAMkC,mBAAmBL,aAAY,CAACM,QAA8BC,SAAAA;AAClEjC,mBAAeiC,OAAO,CAAA;EACxB,GAAG,CAAA,CAAE;AAEL,SAAO;IACL/B;IACAe;IACAF,sBAAsBA,uBAAuB;IAC7CJ;IACAc;IACAI;IACAC;IACAC;EACF;AACF,GA5DsC;;;AbW/B,IAAMG,4BAA+D,wBAAC,EAC3EC,SAAS,SACTC,eACAC,aACAC,QACAC,SACAC,wBAAwB,IACxB,GAAGC,MAAAA,MACJ;AACC,QAAM,CAACC,eAAeC,gBAAAA,IAAoBC,UAAgC,IAAA;AAC1E,QAAM,EACJC,iBACAC,eACAC,YACAC,sBACAC,mBACAC,iBAAgB,IACdC,uBACFb,QACAE,uBACAJ,eACAM,aAAAA;AAGF,SACE,gBAAAU,OAAA,cAACC,QAAAA;IAAOlB;IAAgBI;IAAkBe,aAAa;IAAQ,GAAGb;KAChE,gBAAAW,OAAA,cAACG,uBAAAA;IAAsBpB;IAAgBI;MACvC,gBAAAa,OAAA,cAACI,QAAAA;IACCC,IAAI;MACFC,KAAK;MACLC,YAAY;MACZC,GAAG;IACL;KAEA,gBAAAR,OAAA,cAACI,QAAAA;IACCK,WAAU;IACVJ,IAAI;MACFK,gBAAgB;MAChBC,YAAY;MACZL,KAAK;IACP;KAEA,gBAAAN,OAAA,cAACY,aAAAA;IAAWC,SAAQ;KAAM5B,eAAe,uBAAA,GACzC,gBAAAe,OAAA,cAACc,QAAAA;IAAOD,SAAQ;IAAWE,MAAK;IAAQC,SAASnB;KAAmB,WAAA,CAAA,GAErEJ,gBAAgBwB,SAAS,KACxB,gBAAAjB,OAAA,cAACkB,YAAAA;IACCC,OAAOxB;IACPyB,MAAMxB;IACNyB,UAAUvB;IACVwB,OAAM;OAKZ,gBAAAtB,OAAA,cAACI,QAAAA;IACCK,WAAU;IACVc,IAAG;IACHlB,IAAI;MACFmB,UAAU;MACVC,WAAW;IACb;KAEA,gBAAAzB,OAAA,cAAC0B,KAAAA;IACCC,KAAK,wBAACC,OAAuBrC,iBAAiBqC,EAAAA,GAAzC;IACLvB,IAAI;MACFoB,WAAW;MAAQI,IAAI;MAAGC,IAAI;IAChC;KAECpC,cAAcqC,IAAI,CAAC,CAACR,IAAIS,kBAAAA,GAAqBC,UAAAA;AAC5C,WAAO,gBAAAjC,OAAA,cAACkC,+BAAAA;MAA8BC,KAAKZ;MAAIa,yBAAyBJ;MAAoB3B,IAAI;QAAEgC,IAAIJ,QAAQvC,cAAcuB,SAAS,IAAI,IAAI;MAAE;;EACjJ,CAAA,CAAA,CAAA,CAAA;AAKV,GA5E4E;AA8ErE,IAAMqB,sCAA6D,wBAACjD,UAAAA;AACzE,QAAM,EAAEkD,aAAarD,OAAM,IAAKsD,wBAAAA;AAEhC,SACE,gBAAAxC,OAAA,cAAClB,2BAAAA;IACCI;IACAF,eAAeuD;IACd,GAAGlD;;AAGV,GAV0E;;;AchG1E,SAASoD,UAAAA,eAAc;AAEvB,OAAOC,YAAW;;;ACFlB,OAAOC,YAAW;AAMX,IAAMC,cAA0C,wBAAC,EACtDC,MAAMC,OAAO,GAAGC,MAAAA,MACjB;AACC,SACE,gBAAAC,OAAA,cAACC,QAAAA;;IAECC,yBAAyB;MAAEC,QAAQN,QAAQ;IAAG;IAC9CC,OAAO;MACLM,SAAS;MAAeC,OAAO;MAAIC,QAAQ;MAAI,GAAGR;IACpD;IACC,GAAGC;;AAGV,GAbuD;;;ADOhD,IAAMQ,gBAA8C,wBAAC,EAC1DC,MAAMC,YAAYC,MAAMC,IAAI,GAAGC,MAAAA,MAChC;AACC,SACE,gBAAAC,OAAA,cAACC,SAAAA;IACCH,IAAI;MAAEI,iBAAiB;MAAS,GAAGJ;IAAG;IACtCK,KAAKN;IACJ,GAAGE;KAEJ,gBAAAC,OAAA,cAACI,aAAAA;IACCT;IACAU,OAAO;MAAE,GAAGT;IAAW;;AAI/B,GAf2D;AAiBpD,IAAMU,sBAA6C,wBAACP,UAAAA;AACzD,QAAM,EAAEQ,cAAa,IAAKC,gBAAAA;AAE1B,SACE,gBAAAR,OAAA,cAACN,eAAAA;IACCC,MAAMY,eAAeZ;IACrBE,MAAMU,eAAeV;IACpB,GAAGE;;AAGV,GAV0D;;;AE9B1D,SAASU,oBAAoB;AAC7B,SAASC,sBAAsB;AAG/B,OAAOC,YAAW;AAUX,IAAMC,kBAAkD,wBAAC,EAC9DC,QAAQC,SAASC,SAASC,qBAAqB,GAAGC,MAAAA,MACnD;AACC,QAAMC,cAAc,wBAACC,UAAAA;AACnB,QAAIL,YAAYM,OAAW,OAAM,IAAIC,MAAM,sBAAA;AAC3CL,0BAAsBF,QAAQQ,EAAE;AAChCP,cAAUI,KAAAA;EACZ,GAJoB;AAMpB,SACE,gBAAAI,OAAA,cAACC,gBAAAA;IACCC,OAAOX,SAASY;IAChBC,eAAAA;IACAZ,SAASG;IACTL;IACAe,IAAI;MAAEC,IAAI;IAAE;IACX,GAAGZ;KAEJ,gBAAAM,OAAA,cAACO,eAAAA;IAAcC,MAAMjB,SAASiB;IAAML,MAAMZ,SAASY;IAAME,IAAI;MAAEI,OAAO;MAAIC,QAAQ;IAAG;MACrF,gBAAAV,OAAA,cAACW,cAAAA,MAAcpB,SAASY,IAAAA,CAAAA;AAG9B,GAtB+D;;;ACd/D,SACES,OAAOC,YAAYC,UAAAA,eACd;AAEP,OAAOC,WAASC,WAAAA,UAASC,YAAAA,iBAAgB;;;ACJzC,SACEC,UAAAA,SAAQC,QAAQC,eAAeC,eAAeC,aAAaC,MAAMC,UAAUC,cAAAA,mBACtE;AAEP,OAAOC,aAAW;AAMX,IAAMC,sBAA0D,wBAAC,EAAEC,SAAS,GAAGC,MAAAA,MAAO;AAC3F,SACE,gBAAAC,QAAA,cAACC,QAAWF,OACV,gBAAAC,QAAA,cAACE,aAAAA,MAAY,uBAAA,GACb,gBAAAF,QAAA,cAACG,eAAAA,MACC,gBAAAH,QAAA,cAACI,MAAAA,MACEN,QAAQO,IAAI,CAAC,EACZC,OAAOC,KAAKC,OAAM,MAElB,gBAAAR,QAAA,cAACS,UAAAA;IACCC,KAAKJ,QAAQE;IACbG,IAAI;MACFC,eAAe;MAAUC,YAAY;MAASC,IAAI;IACpD;KAEA,gBAAAd,QAAA,cAACe,aAAAA,MACEP,MAAAA,GAEH,gBAAAR,QAAA,cAACe,aAAAA;IAAWC,cAAAA;IAAaL,IAAI;MAAEM,SAAS;MAAMC,UAAU;IAAW;KAAG,UAEnE,KACA,IAAIC,KAAKb,KAAAA,EAAOc,eAAc,GAC9B,KACD,gBAAApB,QAAA,cAACqB,MAAAA,IAAAA,GAAK,QAEL,KACA,IAAIF,KAAKZ,GAAAA,EAAKa,eAAc,CAAA,CAAA,CAAA,CAAA,CAAA,GAMvC,gBAAApB,QAAA,cAACsB,eAAAA,MACC,gBAAAtB,QAAA,cAACuB,SAAAA;IACCC,SAASC,wBAAAA,MAAK1B,MAAM2B,UAAUD,GAAG,eAAA,GAAxBA;IACTE,SAAQ;IACRhB,IAAI;MAAEiB,OAAO;IAAU;KACxB,OAAA,CAAA,CAAA;AAMT,GA3CuE;;;ADEhE,IAAMC,qBAAwD,wBAAC,EAAEC,QAAQ,GAAGC,MAAAA,MAAO;AACxF,QAAM,CAACC,MAAMC,OAAAA,IAAWC,UAAS,KAAA;AACjC,QAAMC,cAAc,6BAAMF,QAAQ,KAAA,GAAd;AAEpB,QAAMG,WAAWC,SAAQ,MAAA;AACvB,QAAI,CAACP,OAAQ;AACb,YAAQA,OAAOQ,OAAK;MAClB,KAAK,UAAU;AACb,eAAO;MACT;MACA,KAAK,WAAW;AACd,eAAO;MACT;MACA,KAAK,YAAY;AACf,eAAO;MACT;MACA,KAAK,WAAW;AACd,eAAO;MACT;IACF;EACF,GAAG;IAACR;GAAO;AAEX,SACE,gBAAAS,QAAA,cAACC,OAAAA;IAAMJ;IAAqB,GAAGL;KAC7B,gBAAAQ,QAAA,cAACE,YAAAA,MAAYX,QAAQY,WAAAA,GACpBZ,QAAQa,WAAWb,OAAOa,QAAQC,SAAS,IAEtC,gBAAAL,QAAA,cAAAA,QAAA,UAAA,MACE,gBAAAA,QAAA,cAACM,SAAAA;IACCC,SAAQ;IACRC,MAAK;IACLC,SAAS,6BAAMf,QAAQ,IAAA,GAAd;IACTgB,IAAI;MAAEC,OAAOd;IAAS;KACvB,SAAA,GAGD,gBAAAG,QAAA,cAACY,qBAAAA;IAAoBnB;IAAYoB,SAASjB;IAAaQ,SAASb,OAAOa;QAG3E,IAAA;AAGV,GA1CqE;;;AEXrE,OAAOU,aAAW;AAKlB,IAAMC,qBAAqB,oBAAIC,IAAI;EAAC;EAAU;CAAU;AAIjD,IAAMC,gBAA8C,wBAAC,EAAEC,UAAU,GAAGC,MAAAA,MAAO;AAChF,QAAM,CAACC,aAAAA,IAAiBC,qBAAAA;AACxB,QAAMC,aAAaF,iBAAiB,CAACL,mBAAmBQ,IAAIH,cAAcI,KAAK;AAC/E,SACE,gBAAAC,QAAA,cAAAA,QAAA,UAAA,MACGH,aAAa,gBAAAG,QAAA,cAACC,oBAAAA;IAAmBC,QAAQP;IAAgB,GAAGD;OAAY,MACxED,QAAAA;AAGP,GAT2D;;;ACJpD,IAAMU,+BAA+B;AACrC,IAAMC,gCAAgC;AAItC,IAAMC,yBAA6C;EAAEC,SAAS;EAAMC,UAAU;AAAK;;;ACX1F,SACEC,gBAAAA,eAAcC,eAAAA,cAAaC,uBACtB;AACP,OAAOC,aAAW;AAKlB,IAAMC,oBAAoB;EAACC;EAAaC;EAAiBC;;AACzD,IAAMC,kBAAwC;EAAE,CAACD,cAAaE,EAAE,GAAG;IAAEC,OAAO;EAAK;AAAE;AAEnF,IAAMC,0BAA0B,mCAAY,MAAMC,QAAQC,QAAQT,kBAAkB,CAAA,CAAE,GAAtD;AACzB,IAAMU,iCAA4C,wBAACC,OAAOC,SAAAA;AAC/D,SACE,gBAAAC,QAAA,cAACC,sBAAAA;IAAqBC,UAAUf;IAAmBI;IAAkCY,kBAAkBT;KACrG,gBAAAM,QAAA,cAACI,uBAAAA,MACC,gBAAAJ,QAAA,cAACF,OAAUC,IAAAA,CAAAA,CAAAA;AAInB,GARyD;AAUzD,IAAMM,2BAA2B,mCAAY,MAAMV,QAAQC,QAAQT,kBAAkB,CAAA,CAAE,GAAtD;AAC1B,IAAMmB,kCAA6C,wBAACR,OAAOC,SAAAA;AAChE,SACE,gBAAAC,QAAA,cAACC,sBAAAA;IAAqBC,UAAUf;IAAmBI;IAAkCY,kBAAkBE;KACrG,gBAAAL,QAAA,cAACI,uBAAAA,MACC,gBAAAJ,QAAA,cAACF,OAAUC,IAAAA,CAAAA,CAAAA;AAInB,GAR0D;AAU1D,IAAMQ,wBAAwB,mCAAY,MAAMZ,QAAQC,QAAQT,kBAAkB,CAAA,CAAE,GAAtD;AACvB,IAAMqB,+BAA0C,wBAACV,OAAOC,SAAAA;AAC7D,SACE,gBAAAC,QAAA,cAACC,sBAAAA;IAAqBC,UAAUf;IAAmBI;IAAkCY,kBAAkBI;KACrG,gBAAAP,QAAA,cAACI,uBAAAA,MACC,gBAAAJ,QAAA,cAACF,OAAUC,IAAAA,CAAAA,CAAAA;AAInB,GARuD;","names":["Box","Button","Drawer","Pagination","Stack","Typography","React","useState","isJsonRpcRequest","isJsonRpcResponse","isDefined","isString","useEffect","useState","parseRpcCall","acc","event","isJsonRpcResponse","rpcCall","castedEvent","id","result","isJsonRpcRequest","request","console","error","source","useRpcBroadcastListener","events","setEvents","useState","clearEvents","useEffect","listener","e","detail","isString","parsedDetail","JSON","parse","data","broadcastedRpcCall","timestamp","Date","now","prev","newState","isDefined","err","globalThis","addEventListener","removeEventListener","isDefined","isNull","isUndefined","useProvidedGateway","GatewayProvider","InPageGatewaysProvider","React","createContextEx","ChainNetworkContext","ErrorRender","usePromise","isDefined","MainNetwork","React","useCallback","useMemo","useState","LocalNetwork","defaultChainNetworkSettings","id","proxy","useCallback","useState","useChainNetworkSettings","defaults","defaultChainNetworkSettings","networkSettings","setNetworkSettings","useState","updateNetworkSettings","useCallback","networkId","settings","prevSettings","ChainNetworkProvider","children","getActiveNetwork","networkSettings","networkSettingsProp","defaultChainNetworkSettings","networks","setActiveNetwork","setActiveNetworkExternal","activeNetwork","useState","error","setError","updateNetworkSettings","useChainNetworkSettings","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","ActiveGatewayProvider","signerTransport","children","activeNetwork","useChainNetwork","React","InPageGatewaysProvider","GatewayProvider","gatewayName","id","shouldProxy","networkSettings","networkId","isDefined","proxy","useViewerInPage","activeNetwork","useChainNetwork","gateways","useProvidedGateway","inPageGateway","walletGateway","inPageViewer","connection","viewer","walletViewer","isUndefined","id","isNull","console","warn","useViewerInPageV2","delay","isUndefined","useNetworkFromGateway","useEffect","useState","STATUS_CHECK_INTERVAL","usePollNetworkStatus","network","useNetworkFromGateway","networkStatus","setNetworkStatus","useState","networkStatusError","setNetworkStatusError","useEffect","checkNetwork","isUndefined","response","status","undefined","error","console","info","delay","Cancel","IconButton","React","CloseDrawerIconButton","anchor","onClose","React","IconButton","onClick","e","size","sx","alignSelf","top","right","undefined","left","Cancel","fontSize","Card","Collapse","Stack","Typography","isDefined","JsonViewerEx","React","memo","useState","ArrowRight","CheckCircle","Warning","Avatar","Icon","IconButton","Stack","Tooltip","Typography","useTheme","Identicon","usePromise","isDefined","ObjectHasher","React","useMemo","BroadcastedRpcCallDetailsSummaryStack","expanded","setExpanded","method","timestamp","hasResult","params","props","theme","useTheme","hash","hashError","usePromise","isDefined","ObjectHasher","formattedTimestamp","useMemo","Date","toLocaleString","React","Stack","direction","sx","gap","alignItems","justifyContent","Array","isArray","IconButton","size","onClick","ArrowRight","transform","transition","fontSize","Tooltip","title","message","JSON","stringify","Avatar","backgroundColor","vars","palette","text","primary","width","height","opacity","Identicon","value","Typography","component","variant","fontFamily","color","Icon","justifySelf","CheckCircle","Warning","JSON_VIEWER_WIDTH","BroadcastedRpcCallDetailsCard","memo","rpcRequestResponsePairs","sx","props","expanded","setExpanded","useState","request","result","source","React","Card","p","display","flexDirection","width","BroadcastedRpcCallDetailsSummaryStack","params","rpcCall","hasResult","isDefined","method","timestamp","Collapse","in","mountOnEnter","unmountOnExit","Stack","direction","gap","alignItems","Typography","variant","component","fontFamily","ml","JsonViewerEx","value","maxHeight","overflow","isDefinedNotNull","useCallback","useMemo","useState","usePaginatedEventPairs","formattedEvents","numberOfVisiblePairs","onClearEvents","scrollableDiv","currentPage","setCurrentPage","useState","allEventEntries","useMemo","Object","entries","toSorted","a","b","request","timestamp","totalPages","Math","ceil","length","effectiveCurrentPage","min","visibleEvents","isDefinedNotNull","scrollTo","top","behavior","startIndex","endIndex","slice","handlePreviousPage","useCallback","prev","max","handleNextPage","handleClearEvents","handlePageChange","_event","page","BroadcastedRpcCallsDrawer","anchor","onClearEvents","drawerTitle","events","onClose","numberOfVisibleEvents","props","scrollableDiv","setScrollableDiv","useState","allEventEntries","visibleEvents","totalPages","effectiveCurrentPage","handleClearEvents","handlePageChange","usePaginatedEventPairs","React","Drawer","keepMounted","CloseDrawerIconButton","Stack","sx","gap","flexShrink","p","direction","justifyContent","alignItems","Typography","variant","Button","size","onClick","length","Pagination","count","page","onChange","color","id","flexGrow","overflowY","Box","ref","el","px","pb","map","broadcastedRpcCall","index","BroadcastedRpcCallDetailsCard","key","rpcRequestResponsePairs","mb","BroadcastedRpcCallsDrawerWithEvents","clearEvents","useRpcBroadcastListener","Avatar","React","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","variant","color","NetworkStatusAlert","status","props","open","setOpen","useState","handleClose","severity","useMemo","state","React","Alert","AlertTitle","description","updates","length","Button","variant","size","onClick","sx","color","NetworkStatusDialog","onClose","React","validNetworkStates","Set","NetworkStatus","children","props","networkStatus","usePollNetworkStatus","showStatus","has","state","React","NetworkStatusAlert","status","BroadcastRpcRequestEventName","BroadcastRpcResponseEventName","defaultBroadcastConfig","request","response","LocalNetwork","MainNetwork","SequenceNetwork","React","AvailableNetworks","MainNetwork","SequenceNetwork","LocalNetwork","networkSettings","id","proxy","getActiveMainnetNetwork","Promise","resolve","MainnetNetworkGatewayDecorator","Story","args","React","ChainNetworkProvider","networks","getActiveNetwork","ActiveGatewayProvider","getActiveSequenceNetwork","SequenceNetworkGatewayDecorator","getActiveLocalNetwork","LocalNetworkGatewayDecorator"]}
|
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.
|
|
4
|
+
"version": "1.23.0",
|
|
5
5
|
"description": "XYO Layer One React SDK",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -39,19 +39,18 @@
|
|
|
39
39
|
"README.md"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xyo-network/react-chain-
|
|
43
|
-
"@xyo-network/react-chain-provider": "~1.
|
|
44
|
-
"@xyo-network/react-chain-shared": "~1.21.3"
|
|
42
|
+
"@xyo-network/react-chain-shared": "~1.23.0",
|
|
43
|
+
"@xyo-network/react-chain-provider": "~1.23.0"
|
|
45
44
|
},
|
|
46
45
|
"devDependencies": {
|
|
47
46
|
"@bitauth/libauth": "~3.0.0",
|
|
48
47
|
"@emotion/react": "^11.14.0",
|
|
49
48
|
"@emotion/styled": "^11.14.1",
|
|
50
|
-
"@metamask/json-rpc-engine": "^10.
|
|
49
|
+
"@metamask/json-rpc-engine": "^10.5.0",
|
|
51
50
|
"@metamask/providers": "^22.1.1",
|
|
52
51
|
"@metamask/utils": "~11.11.0",
|
|
53
|
-
"@mui/icons-material": "
|
|
54
|
-
"@mui/material": "
|
|
52
|
+
"@mui/icons-material": "~9.0",
|
|
53
|
+
"@mui/material": "~9.0",
|
|
55
54
|
"@opentelemetry/api": "^1.9.1",
|
|
56
55
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
57
56
|
"@react-spring/web": "~10.0.3",
|
|
@@ -64,21 +63,21 @@
|
|
|
64
63
|
"@xylabs/fetch": "~5.1.2",
|
|
65
64
|
"@xylabs/geo": "^5.1.2",
|
|
66
65
|
"@xylabs/pixel": "~5.1.2",
|
|
67
|
-
"@xylabs/react-button": "~
|
|
68
|
-
"@xylabs/react-error": "~
|
|
69
|
-
"@xylabs/react-flexbox": "~
|
|
70
|
-
"@xylabs/react-hooks": "~
|
|
71
|
-
"@xylabs/react-identicon": "~
|
|
72
|
-
"@xylabs/react-link": "~
|
|
73
|
-
"@xylabs/react-promise": "
|
|
74
|
-
"@xylabs/react-shared": "~
|
|
75
|
-
"@xylabs/react-theme": "~
|
|
66
|
+
"@xylabs/react-button": "~8.0",
|
|
67
|
+
"@xylabs/react-error": "~8.0",
|
|
68
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
69
|
+
"@xylabs/react-hooks": "~8.0",
|
|
70
|
+
"@xylabs/react-identicon": "~8.0",
|
|
71
|
+
"@xylabs/react-link": "~8.0",
|
|
72
|
+
"@xylabs/react-promise": "~8.0",
|
|
73
|
+
"@xylabs/react-shared": "~8.0",
|
|
74
|
+
"@xylabs/react-theme": "~8.0",
|
|
76
75
|
"@xylabs/sdk-js": "^5.1.2",
|
|
77
76
|
"@xylabs/threads": "~5.1.2",
|
|
78
|
-
"@xylabs/toolchain": "~7.13.
|
|
79
|
-
"@xylabs/tsconfig": "~7.13.
|
|
80
|
-
"@xylabs/tsconfig-dom": "~7.13.
|
|
81
|
-
"@xylabs/tsconfig-react": "~7.13.
|
|
77
|
+
"@xylabs/toolchain": "~7.13.24",
|
|
78
|
+
"@xylabs/tsconfig": "~7.13.24",
|
|
79
|
+
"@xylabs/tsconfig-dom": "~7.13.24",
|
|
80
|
+
"@xylabs/tsconfig-react": "~7.13.24",
|
|
82
81
|
"@xyo-network/account": "~5.6.2",
|
|
83
82
|
"@xyo-network/account-model": "~5.6.3",
|
|
84
83
|
"@xyo-network/api": "~5.6.2",
|
|
@@ -96,13 +95,15 @@
|
|
|
96
95
|
"@xyo-network/payload-plugin": "~5.6.3",
|
|
97
96
|
"@xyo-network/payload-wrapper": "~5.6.2",
|
|
98
97
|
"@xyo-network/query-payload-plugin": "~5.6.3",
|
|
99
|
-
"@xyo-network/react-error": "~
|
|
100
|
-
"@xyo-network/react-payload-raw-info": "~
|
|
98
|
+
"@xyo-network/react-error": "~8.0",
|
|
99
|
+
"@xyo-network/react-payload-raw-info": "~8.0",
|
|
101
100
|
"@xyo-network/sdk-js": "^5.6.4",
|
|
102
101
|
"@xyo-network/sdk-protocol-js": "~5.6.3",
|
|
103
102
|
"@xyo-network/wallet": "~5.6.2",
|
|
104
103
|
"@xyo-network/wallet-model": "^5.6.3",
|
|
105
|
-
"@xyo-network/xl1-
|
|
104
|
+
"@xyo-network/xl1-blockies": "^1.30.0",
|
|
105
|
+
"@xyo-network/xl1-react-client-sdk": "^1.30.0",
|
|
106
|
+
"@xyo-network/xl1-sdk": "^1.30.1",
|
|
106
107
|
"ajv": "^8.20.0",
|
|
107
108
|
"async-mutex": "^0.5.0",
|
|
108
109
|
"bn.js": "^5.2.3",
|
|
@@ -127,7 +128,7 @@
|
|
|
127
128
|
"query-string": "~9.3.1",
|
|
128
129
|
"react": "^19.2.6",
|
|
129
130
|
"react-dom": "^19.2.6",
|
|
130
|
-
"react-is": "
|
|
131
|
+
"react-is": "^19.2.6",
|
|
131
132
|
"react-router-dom": "^7.15.0",
|
|
132
133
|
"recharts": "~3.8.1",
|
|
133
134
|
"rollbar": "^3.1.0",
|
|
@@ -136,11 +137,11 @@
|
|
|
136
137
|
"storybook": "^10.3.6",
|
|
137
138
|
"typescript": "~5.9.3",
|
|
138
139
|
"uuid": "~14.0.0",
|
|
139
|
-
"vite": "^8.0.
|
|
140
|
+
"vite": "^8.0.12",
|
|
140
141
|
"wasm-feature-detect": "~1.8.0",
|
|
141
142
|
"webextension-polyfill": "^0.12.0",
|
|
142
143
|
"zod": "~4.4.3",
|
|
143
|
-
"@xyo-network/react-chain-model": "~1.
|
|
144
|
+
"@xyo-network/react-chain-model": "~1.23.0"
|
|
144
145
|
},
|
|
145
146
|
"peerDependencies": {
|
|
146
147
|
"@bitauth/libauth": "~3.0",
|
|
@@ -149,8 +150,8 @@
|
|
|
149
150
|
"@metamask/json-rpc-engine": "^10.3",
|
|
150
151
|
"@metamask/providers": "^22.1",
|
|
151
152
|
"@metamask/utils": "~11.11",
|
|
152
|
-
"@mui/icons-material": "
|
|
153
|
-
"@mui/material": "
|
|
153
|
+
"@mui/icons-material": "~9.0",
|
|
154
|
+
"@mui/material": "~9.0",
|
|
154
155
|
"@opentelemetry/api": "^1.9",
|
|
155
156
|
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
156
157
|
"@react-spring/web": "~10.0",
|
|
@@ -162,15 +163,15 @@
|
|
|
162
163
|
"@xylabs/fetch": "~5.1",
|
|
163
164
|
"@xylabs/geo": "^5.1",
|
|
164
165
|
"@xylabs/pixel": "~5.1",
|
|
165
|
-
"@xylabs/react-button": "~
|
|
166
|
-
"@xylabs/react-error": "~
|
|
167
|
-
"@xylabs/react-flexbox": "~
|
|
168
|
-
"@xylabs/react-hooks": "~
|
|
169
|
-
"@xylabs/react-identicon": "~
|
|
170
|
-
"@xylabs/react-link": "~
|
|
171
|
-
"@xylabs/react-promise": "
|
|
172
|
-
"@xylabs/react-shared": "~
|
|
173
|
-
"@xylabs/react-theme": "~
|
|
166
|
+
"@xylabs/react-button": "~8.0",
|
|
167
|
+
"@xylabs/react-error": "~8.0",
|
|
168
|
+
"@xylabs/react-flexbox": "~8.0",
|
|
169
|
+
"@xylabs/react-hooks": "~8.0",
|
|
170
|
+
"@xylabs/react-identicon": "~8.0",
|
|
171
|
+
"@xylabs/react-link": "~8.0",
|
|
172
|
+
"@xylabs/react-promise": "~8.0",
|
|
173
|
+
"@xylabs/react-shared": "~8.0",
|
|
174
|
+
"@xylabs/react-theme": "~8.0",
|
|
174
175
|
"@xylabs/sdk-js": "^5.1",
|
|
175
176
|
"@xylabs/threads": "~5.1",
|
|
176
177
|
"@xyo-network/account": "~5.6",
|
|
@@ -190,12 +191,14 @@
|
|
|
190
191
|
"@xyo-network/payload-plugin": "~5.6",
|
|
191
192
|
"@xyo-network/payload-wrapper": "~5.6",
|
|
192
193
|
"@xyo-network/query-payload-plugin": "~5.6",
|
|
193
|
-
"@xyo-network/react-error": "~
|
|
194
|
-
"@xyo-network/react-payload-raw-info": "~
|
|
194
|
+
"@xyo-network/react-error": "~8.0",
|
|
195
|
+
"@xyo-network/react-payload-raw-info": "~8.0",
|
|
195
196
|
"@xyo-network/sdk-js": "^5.6",
|
|
196
197
|
"@xyo-network/sdk-protocol-js": "~5.6",
|
|
197
198
|
"@xyo-network/wallet": "~5.6",
|
|
198
199
|
"@xyo-network/wallet-model": "^5.6",
|
|
200
|
+
"@xyo-network/xl1-blockies": "^1.28",
|
|
201
|
+
"@xyo-network/xl1-react-client-sdk": "^1.28",
|
|
199
202
|
"@xyo-network/xl1-sdk": "^1.28",
|
|
200
203
|
"ajv": "^8.20",
|
|
201
204
|
"async-mutex": "^0.5",
|
|
@@ -220,7 +223,7 @@
|
|
|
220
223
|
"query-string": "~9.3",
|
|
221
224
|
"react": "^19.2",
|
|
222
225
|
"react-dom": "^19.2",
|
|
223
|
-
"react-is": "
|
|
226
|
+
"react-is": "^19.2",
|
|
224
227
|
"react-router-dom": "^7.15",
|
|
225
228
|
"recharts": "~3.8",
|
|
226
229
|
"rollbar": "^3.1",
|