@xyo-network/react-chain-network 1.21.3 → 1.22.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.
@@ -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,CAwDvE,CAAA;AAED,eAAO,MAAM,mCAAmC,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAUrE,CAAA"}
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,CAoDnF,CAAA"}
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,CA2CpG,CAAA"}
1
+ {"version":3,"file":"SummaryStack.d.ts","sourceRoot":"","sources":["../../../../../src/components/broadcast/details/SummaryStack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAIjE,OAAO,EAEoB,KAAK,UAAU,EAEzC,MAAM,eAAe,CAAA;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,CAqChE,CAAA"}
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,CAuClE,CAAA"}
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: Context<import("@xylabs/react-shared").ContextExState<T>>;
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,2DAAuC,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/context/network/context.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAuC,CAAA"}
@@ -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
- fontSize: "small"
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
- gap: 2,
302
- alignItems: "center",
303
- justifyContent: "space-between",
304
- ...props
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
- gap: 2,
308
- alignItems: "center"
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
- fontFamily: "monospace"
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
- color: "success"
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
- p: 1,
381
- gap: 2,
382
- alignItems: "stretch"
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
- justifyContent: "space-between",
500
- alignItems: "center",
501
- gap: 4
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
- color: "primary",
646
- variant: "outlined"
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/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 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":"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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","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.21.3",
4
+ "version": "1.22.0",
5
5
  "description": "XYO Layer One React SDK",
6
6
  "homepage": "https://xylabs.com",
7
7
  "bugs": {
@@ -39,19 +39,21 @@
39
39
  "README.md"
40
40
  ],
41
41
  "dependencies": {
42
- "@xyo-network/react-chain-client": "~1.21.3",
43
- "@xyo-network/react-chain-provider": "~1.21.3",
44
- "@xyo-network/react-chain-shared": "~1.21.3"
42
+ "@xyo-network/react-chain-shared": "~1.22.0",
43
+ "@xyo-network/react-chain-client": "~1.22.0",
44
+ "@xyo-network/react-chain-provider": "~1.22.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@bitauth/libauth": "~3.0.0",
48
48
  "@emotion/react": "^11.14.0",
49
49
  "@emotion/styled": "^11.14.1",
50
- "@metamask/json-rpc-engine": "^10.3.0",
50
+ "@metamask/json-rpc-engine": "^10.4.0",
51
51
  "@metamask/providers": "^22.1.1",
52
52
  "@metamask/utils": "~11.11.0",
53
- "@mui/icons-material": "^7.3.11",
54
- "@mui/material": "^7.3.11",
53
+ "@mixpanel/rrweb": "^2.0.0-alpha.18",
54
+ "@mixpanel/rrweb-utils": "^2.0.0-alpha.18",
55
+ "@mui/icons-material": "^9.0.1",
56
+ "@mui/material": "^9.0.1",
55
57
  "@opentelemetry/api": "^1.9.1",
56
58
  "@opentelemetry/sdk-trace-base": "^2.7.1",
57
59
  "@react-spring/web": "~10.0.3",
@@ -59,26 +61,28 @@
59
61
  "@scure/base": "~2.2.0",
60
62
  "@scure/bip39": "~2.2.0",
61
63
  "@storybook/react-vite": "^10.3.6",
64
+ "@testing-library/dom": ">=7.21.4",
62
65
  "@textea/json-viewer": "^4.0.1",
66
+ "@types/node": "^20.19.0 || >=22.12.0",
63
67
  "@types/react": "^19.2.14",
64
68
  "@xylabs/fetch": "~5.1.2",
65
69
  "@xylabs/geo": "^5.1.2",
66
70
  "@xylabs/pixel": "~5.1.2",
67
- "@xylabs/react-button": "~7.2.5",
68
- "@xylabs/react-error": "~7.2.5",
69
- "@xylabs/react-flexbox": "~7.2.5",
70
- "@xylabs/react-hooks": "~7.2.5",
71
- "@xylabs/react-identicon": "~7.2.5",
72
- "@xylabs/react-link": "~7.2.5",
73
- "@xylabs/react-promise": "^7.2.5",
74
- "@xylabs/react-shared": "~7.2.5",
75
- "@xylabs/react-theme": "~7.2.5",
71
+ "@xylabs/react-button": "~8.0",
72
+ "@xylabs/react-error": "~8.0",
73
+ "@xylabs/react-flexbox": "~8.0",
74
+ "@xylabs/react-hooks": "~8.0",
75
+ "@xylabs/react-identicon": "~8.0",
76
+ "@xylabs/react-link": "~8.0",
77
+ "@xylabs/react-promise": "~8.0",
78
+ "@xylabs/react-shared": "~8.0",
79
+ "@xylabs/react-theme": "~8.0",
76
80
  "@xylabs/sdk-js": "^5.1.2",
77
81
  "@xylabs/threads": "~5.1.2",
78
- "@xylabs/toolchain": "~7.13.15",
79
- "@xylabs/tsconfig": "~7.13.15",
80
- "@xylabs/tsconfig-dom": "~7.13.15",
81
- "@xylabs/tsconfig-react": "~7.13.15",
82
+ "@xylabs/toolchain": "~7.13.22",
83
+ "@xylabs/tsconfig": "~7.13.22",
84
+ "@xylabs/tsconfig-dom": "~7.13.22",
85
+ "@xylabs/tsconfig-react": "~7.13.22",
82
86
  "@xyo-network/account": "~5.6.2",
83
87
  "@xyo-network/account-model": "~5.6.3",
84
88
  "@xyo-network/api": "~5.6.2",
@@ -96,15 +100,17 @@
96
100
  "@xyo-network/payload-plugin": "~5.6.3",
97
101
  "@xyo-network/payload-wrapper": "~5.6.2",
98
102
  "@xyo-network/query-payload-plugin": "~5.6.3",
99
- "@xyo-network/react-error": "~7.6.3",
100
- "@xyo-network/react-payload-raw-info": "~7.6.3",
103
+ "@xyo-network/react-error": "~8.0",
104
+ "@xyo-network/react-payload-raw-info": "~8.0",
101
105
  "@xyo-network/sdk-js": "^5.6.4",
102
106
  "@xyo-network/sdk-protocol-js": "~5.6.3",
103
107
  "@xyo-network/wallet": "~5.6.2",
104
108
  "@xyo-network/wallet-model": "^5.6.3",
105
109
  "@xyo-network/xl1-sdk": "^1.28.5",
110
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0",
106
111
  "ajv": "^8.20.0",
107
112
  "async-mutex": "^0.5.0",
113
+ "axios": "^1",
108
114
  "bn.js": "^5.2.3",
109
115
  "bowser": "^2.14.1",
110
116
  "buffer": "^6.0.3",
@@ -114,6 +120,7 @@
114
120
  "eslint": "^10.3.0",
115
121
  "ethers": "^6.16.0",
116
122
  "fast-deep-equal": "~3.1.3",
123
+ "firebase": "^12",
117
124
  "hash-wasm": "~4.12.0",
118
125
  "idb": "^8.0.3",
119
126
  "js-cookie": "~3.0.5",
@@ -130,17 +137,19 @@
130
137
  "react-is": "~19.2.6",
131
138
  "react-router-dom": "^7.15.0",
132
139
  "recharts": "~3.8.1",
140
+ "redux": "^5.0.0",
133
141
  "rollbar": "^3.1.0",
142
+ "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0",
134
143
  "spark-md5": "~3.0.2",
135
144
  "store2": "~2.14.4",
136
145
  "storybook": "^10.3.6",
137
146
  "typescript": "~5.9.3",
138
147
  "uuid": "~14.0.0",
139
- "vite": "^8.0.10",
148
+ "vite": "^8.0.11",
140
149
  "wasm-feature-detect": "~1.8.0",
141
150
  "webextension-polyfill": "^0.12.0",
142
151
  "zod": "~4.4.3",
143
- "@xyo-network/react-chain-model": "~1.21.3"
152
+ "@xyo-network/react-chain-model": "~1.22.0"
144
153
  },
145
154
  "peerDependencies": {
146
155
  "@bitauth/libauth": "~3.0",
@@ -149,8 +158,10 @@
149
158
  "@metamask/json-rpc-engine": "^10.3",
150
159
  "@metamask/providers": "^22.1",
151
160
  "@metamask/utils": "~11.11",
152
- "@mui/icons-material": "^7.3",
153
- "@mui/material": "^7.3",
161
+ "@mixpanel/rrweb": "^2.0.0-alpha.18",
162
+ "@mixpanel/rrweb-utils": "^2.0.0-alpha.18",
163
+ "@mui/icons-material": "^9.0",
164
+ "@mui/material": "^9.0",
154
165
  "@opentelemetry/api": "^1.9",
155
166
  "@opentelemetry/sdk-trace-base": "^2.7",
156
167
  "@react-spring/web": "~10.0",
@@ -158,19 +169,20 @@
158
169
  "@scure/base": "~2.2",
159
170
  "@scure/bip39": "~2.2",
160
171
  "@storybook/react-vite": "^10.3",
172
+ "@testing-library/dom": ">=7.21.4",
161
173
  "@textea/json-viewer": "^4.0",
162
174
  "@xylabs/fetch": "~5.1",
163
175
  "@xylabs/geo": "^5.1",
164
176
  "@xylabs/pixel": "~5.1",
165
- "@xylabs/react-button": "~7.2",
166
- "@xylabs/react-error": "~7.2",
167
- "@xylabs/react-flexbox": "~7.2",
168
- "@xylabs/react-hooks": "~7.2",
169
- "@xylabs/react-identicon": "~7.2",
170
- "@xylabs/react-link": "~7.2",
171
- "@xylabs/react-promise": "^7.2",
172
- "@xylabs/react-shared": "~7.2",
173
- "@xylabs/react-theme": "~7.2",
177
+ "@xylabs/react-button": "~8.0",
178
+ "@xylabs/react-error": "~8.0",
179
+ "@xylabs/react-flexbox": "~8.0",
180
+ "@xylabs/react-hooks": "~8.0",
181
+ "@xylabs/react-identicon": "~8.0",
182
+ "@xylabs/react-link": "~8.0",
183
+ "@xylabs/react-promise": "~8.0",
184
+ "@xylabs/react-shared": "~8.0",
185
+ "@xylabs/react-theme": "~8.0",
174
186
  "@xylabs/sdk-js": "^5.1",
175
187
  "@xylabs/threads": "~5.1",
176
188
  "@xyo-network/account": "~5.6",
@@ -190,8 +202,8 @@
190
202
  "@xyo-network/payload-plugin": "~5.6",
191
203
  "@xyo-network/payload-wrapper": "~5.6",
192
204
  "@xyo-network/query-payload-plugin": "~5.6",
193
- "@xyo-network/react-error": "~7.6",
194
- "@xyo-network/react-payload-raw-info": "~7.6",
205
+ "@xyo-network/react-error": "~8.0",
206
+ "@xyo-network/react-payload-raw-info": "~8.0",
195
207
  "@xyo-network/sdk-js": "^5.6",
196
208
  "@xyo-network/sdk-protocol-js": "~5.6",
197
209
  "@xyo-network/wallet": "~5.6",
@@ -199,6 +211,7 @@
199
211
  "@xyo-network/xl1-sdk": "^1.28",
200
212
  "ajv": "^8.20",
201
213
  "async-mutex": "^0.5",
214
+ "axios": "^1",
202
215
  "bn.js": "^5.2",
203
216
  "bowser": "^2.14",
204
217
  "buffer": "^6.0",
@@ -207,6 +220,7 @@
207
220
  "debug": "~4.4",
208
221
  "ethers": "^6.16",
209
222
  "fast-deep-equal": "~3.1",
223
+ "firebase": "^12",
210
224
  "hash-wasm": "~4.12",
211
225
  "idb": "^8.0",
212
226
  "js-cookie": "~3.0",
@@ -223,6 +237,7 @@
223
237
  "react-is": "~19.2",
224
238
  "react-router-dom": "^7.15",
225
239
  "recharts": "~3.8",
240
+ "redux": "^5.0.0",
226
241
  "rollbar": "^3.1",
227
242
  "spark-md5": "~3.0",
228
243
  "store2": "~2.14",