@xyo-network/react-chain-blockchain 1.2.3 → 1.2.4

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.
Files changed (35) hide show
  1. package/dist/browser/index.mjs +270 -171
  2. package/dist/browser/index.mjs.map +1 -1
  3. package/dist/types/components/block/helpers/index.d.ts +1 -0
  4. package/dist/types/components/block/helpers/index.d.ts.map +1 -1
  5. package/dist/types/components/block/helpers/payloadCountsFromBlock.d.ts +3 -0
  6. package/dist/types/components/block/helpers/payloadCountsFromBlock.d.ts.map +1 -0
  7. package/dist/types/components/block/helpers/tsxFromBlock.d.ts +2 -2
  8. package/dist/types/components/block/helpers/tsxFromBlock.d.ts.map +1 -1
  9. package/dist/types/components/block/hooks/index.d.ts +1 -0
  10. package/dist/types/components/block/hooks/index.d.ts.map +1 -1
  11. package/dist/types/components/block/hooks/useBlockHeadingEvents.d.ts +1 -1
  12. package/dist/types/components/block/hooks/useBlockHeadingEvents.d.ts.map +1 -1
  13. package/dist/types/components/block/hooks/usePayloadCountsFromBlock.d.ts +3 -0
  14. package/dist/types/components/block/hooks/usePayloadCountsFromBlock.d.ts.map +1 -0
  15. package/dist/types/components/block/hooks/useTxsFromBlock.d.ts +1 -1
  16. package/dist/types/components/block/table/cell/JsonView.d.ts.map +1 -1
  17. package/dist/types/components/block/table/cell/PayloadCounts.d.ts +6 -0
  18. package/dist/types/components/block/table/cell/PayloadCounts.d.ts.map +1 -0
  19. package/dist/types/components/block/table/cell/index.d.ts +1 -0
  20. package/dist/types/components/block/table/cell/index.d.ts.map +1 -1
  21. package/dist/types/components/block/table/head/TableHead.d.ts.map +1 -1
  22. package/dist/types/components/block/table/row/TableRow.d.ts.map +1 -1
  23. package/package.json +24 -24
  24. package/src/components/block/helpers/index.ts +1 -0
  25. package/src/components/block/helpers/payloadCountsFromBlock.ts +12 -0
  26. package/src/components/block/helpers/tsxFromBlock.ts +2 -3
  27. package/src/components/block/hooks/index.ts +1 -0
  28. package/src/components/block/hooks/useBlockHeadingEvents.ts +1 -1
  29. package/src/components/block/hooks/usePayloadCountsFromBlock.ts +13 -0
  30. package/src/components/block/table/cell/Hash.tsx +2 -2
  31. package/src/components/block/table/cell/JsonView.tsx +4 -6
  32. package/src/components/block/table/cell/PayloadCounts.tsx +34 -0
  33. package/src/components/block/table/cell/index.ts +1 -0
  34. package/src/components/block/table/head/TableHead.tsx +28 -6
  35. package/src/components/block/table/row/TableRow.tsx +4 -3
@@ -443,10 +443,10 @@ var blockProducer = /* @__PURE__ */ __name((block) => {
443
443
  import React9 from "react";
444
444
 
445
445
  // src/components/block/helpers/tsxFromBlock.ts
446
- import { isBoundWitness } from "@xyo-network/boundwitness-model";
447
446
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
447
+ import { isTransactionBoundWitness } from "@xyo-network/xl1-model";
448
448
  var txsFromBlock = /* @__PURE__ */ __name(async (block) => {
449
- const transactionPayloads = block[1].filter((payload) => isBoundWitness(payload));
449
+ const transactionPayloads = block[1].filter((payload) => isTransactionBoundWitness(payload));
450
450
  return await PayloadBuilder2.hashPairs(transactionPayloads);
451
451
  }, "txsFromBlock");
452
452
 
@@ -470,6 +470,22 @@ var buildBlockHeadingComponent = /* @__PURE__ */ __name(async (blockComponentPro
470
470
  return await buildBlockChainRenderComponent(BlockHeadingFlexbox, blockComponentProps);
471
471
  }, "buildBlockHeadingComponent");
472
472
 
473
+ // src/components/block/helpers/payloadCountsFromBlock.ts
474
+ import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
475
+ import { isTransactionBoundWitness as isTransactionBoundWitness2 } from "@xyo-network/xl1-model";
476
+ var payloadCountsFromBlock = /* @__PURE__ */ __name(([block, payloads]) => {
477
+ const privPayloads = block.payload_schemas.filter((schema) => schema !== BoundWitnessSchema);
478
+ const transactionPayloads = payloads.filter((payload) => isTransactionBoundWitness2(payload));
479
+ let privPayloadsCount = 0;
480
+ for (let tx of transactionPayloads) {
481
+ privPayloadsCount += tx.payload_hashes.length - tx.$opCodes.filter((opCode) => !opCode.startsWith("elevate|")).length;
482
+ }
483
+ return [
484
+ privPayloads.length,
485
+ privPayloadsCount
486
+ ];
487
+ }, "payloadCountsFromBlock");
488
+
473
489
  // src/components/block/hooks/useDynamicBlockComponents.ts
474
490
  var useDynamicBlockComponents = /* @__PURE__ */ __name((BlockComponent, params, maxBlocks) => {
475
491
  const { chainArchivist } = params ?? {};
@@ -501,6 +517,26 @@ var useDynamicBlockComponents = /* @__PURE__ */ __name((BlockComponent, params,
501
517
  };
502
518
  }, "useDynamicBlockComponents");
503
519
 
520
+ // src/components/block/hooks/usePayloadCountsFromBlock.ts
521
+ import { useMemo as useMemo7 } from "react";
522
+ var usePayloadCountsFromBlock = /* @__PURE__ */ __name((block) => {
523
+ return useMemo7(() => {
524
+ if (block) {
525
+ return [
526
+ ...payloadCountsFromBlock(block),
527
+ void 0
528
+ ];
529
+ }
530
+ return [
531
+ void 0,
532
+ void 0,
533
+ void 0
534
+ ];
535
+ }, [
536
+ block
537
+ ]);
538
+ }, "usePayloadCountsFromBlock");
539
+
504
540
  // src/components/block/hooks/useStaticBlockComponents.ts
505
541
  import { usePromise } from "@xylabs/react-promise";
506
542
  var useStaticBlockComponents = /* @__PURE__ */ __name((BlockComponent, params, blocks) => {
@@ -602,11 +638,11 @@ var BlockMenuExpanded = /* @__PURE__ */ __name(({ block }) => {
602
638
  import { Chip as Chip2 } from "@mui/material";
603
639
  import { EthAddress } from "@xylabs/eth-address";
604
640
  import { BlockiesAvatar } from "@xyo-network/react-chain-blockies";
605
- import React12, { useMemo as useMemo7 } from "react";
641
+ import React12, { useMemo as useMemo8 } from "react";
606
642
  var BlockProducerChip = /* @__PURE__ */ __name(({ block, ...props }) => {
607
643
  const blockProducer2 = block?.[0].addresses[0];
608
644
  const shortedBlockProducer = blockProducer2 ? EthAddress.parse(blockProducer2)?.toShortString(3) : null;
609
- const avatar = useMemo7(() => blockProducer2 === "" ? void 0 : /* @__PURE__ */ React12.createElement(BlockiesAvatar, {
645
+ const avatar = useMemo8(() => blockProducer2 === "" ? void 0 : /* @__PURE__ */ React12.createElement(BlockiesAvatar, {
610
646
  blockiesOptions: {
611
647
  seed: blockProducer2
612
648
  }
@@ -715,7 +751,7 @@ var BlockNumberTableCell = /* @__PURE__ */ __name(({ block, linked, ...props })
715
751
  // src/components/block/table/cell/Hash.tsx
716
752
  import { Avatar, Chip as Chip3, TableCell as TableCell2, Tooltip as Tooltip2 } from "@mui/material";
717
753
  import { Identicon } from "@xylabs/react-identicon";
718
- import { usePayloadHash as usePayloadHash2 } from "@xyo-network/react-shared";
754
+ import { usePayloadRootHash } from "@xyo-network/react-shared";
719
755
  import React16 from "react";
720
756
 
721
757
  // src/components/FeatureNotAvailable.tsx
@@ -727,7 +763,7 @@ var FeatureNotAvailable = /* @__PURE__ */ __name(({ featureName = "Feature", ...
727
763
 
728
764
  // src/components/block/table/cell/Hash.tsx
729
765
  var BlockHashTableCell = /* @__PURE__ */ __name(({ block, identiconProps, notAvailableDialog, linked, ...props }) => {
730
- const hash = usePayloadHash2(block?.[0]);
766
+ const hash = usePayloadRootHash(block?.[0]);
731
767
  const [ref, handleClick] = useLinkedBlockItem("block-hash", hash);
732
768
  const [notAvailable, setNotAvailable] = React16.useState(false);
733
769
  const shortenedHash = hash ? `${hash.slice(0, 4)}...${hash.slice(-5, -1)}` : "";
@@ -759,19 +795,17 @@ var BlockHashTableCell = /* @__PURE__ */ __name(({ block, identiconProps, notAva
759
795
  }, "BlockHashTableCell");
760
796
 
761
797
  // src/components/block/table/cell/JsonView.tsx
762
- import { Code } from "@mui/icons-material";
798
+ import { DataObject } from "@mui/icons-material";
763
799
  import { Button as Button3, Dialog as Dialog2, DialogActions as DialogActions2, DialogContent as DialogContent2, DialogTitle as DialogTitle2, IconButton as IconButton2, TableCell as TableCell3 } from "@mui/material";
764
800
  import { ellipsize } from "@xylabs/eth-address";
765
801
  import { FlexRow as FlexRow3 } from "@xylabs/react-flexbox";
766
- import { useIsDark } from "@xylabs/react-theme";
767
802
  import { JsonViewerEx } from "@xyo-network/react-payload-raw-info";
768
- import { usePayloadHash as usePayloadHash3 } from "@xyo-network/react-shared";
803
+ import { usePayloadRootHash as usePayloadRootHash2 } from "@xyo-network/react-shared";
769
804
  import React17, { useState as useState9 } from "react";
770
805
  var BlockJsonViewTableCell = /* @__PURE__ */ __name(({ block, ...props }) => {
771
806
  const [open, setOpen] = useState9(false);
772
807
  const onClose = /* @__PURE__ */ __name(() => setOpen(false), "onClose");
773
- const isDark = useIsDark();
774
- const hash = usePayloadHash3(block?.[0]);
808
+ const hash = usePayloadRootHash2(block?.[0]);
775
809
  const title = hash ? `JSON for ${ellipsize(hash, 5)}` : "JSON";
776
810
  return /* @__PURE__ */ React17.createElement(TableCell3, props, /* @__PURE__ */ React17.createElement(FlexRow3, {
777
811
  sx: {
@@ -779,7 +813,7 @@ var BlockJsonViewTableCell = /* @__PURE__ */ __name(({ block, ...props }) => {
779
813
  }
780
814
  }, /* @__PURE__ */ React17.createElement(IconButton2, {
781
815
  onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick")
782
- }, /* @__PURE__ */ React17.createElement(Code, null))), /* @__PURE__ */ React17.createElement(Dialog2, {
816
+ }, /* @__PURE__ */ React17.createElement(DataObject, null))), /* @__PURE__ */ React17.createElement(Dialog2, {
783
817
  open,
784
818
  onClose
785
819
  }, /* @__PURE__ */ React17.createElement(DialogTitle2, null, title), /* @__PURE__ */ React17.createElement(DialogContent2, null, /* @__PURE__ */ React17.createElement(JsonViewerEx, {
@@ -796,31 +830,54 @@ var BlockJsonViewTableCell = /* @__PURE__ */ __name(({ block, ...props }) => {
796
830
  }, "Close"))));
797
831
  }, "BlockJsonViewTableCell");
798
832
 
833
+ // src/components/block/table/cell/PayloadCounts.tsx
834
+ import { Error as Error2 } from "@mui/icons-material";
835
+ import { Link as Link2, TableCell as TableCell4, Tooltip as Tooltip3 } from "@mui/material";
836
+ import React18 from "react";
837
+ var BlockPayloadCountsTableCell = /* @__PURE__ */ __name(({ block, linked, ...props }) => {
838
+ const [pubPayloads, privPayloads, error] = usePayloadCountsFromBlock(block);
839
+ const data = `${pubPayloads}/${privPayloads}`;
840
+ const [ref, handleClick] = useLinkedBlockItem("payload-counts", data);
841
+ return /* @__PURE__ */ React18.createElement(TableCell4, {
842
+ ref,
843
+ ...props
844
+ }, /* @__PURE__ */ React18.createElement("span", null, error ? /* @__PURE__ */ React18.createElement(Tooltip3, {
845
+ title: error.message
846
+ }, /* @__PURE__ */ React18.createElement(Error2, {
847
+ color: "error"
848
+ })) : null, linked ? /* @__PURE__ */ React18.createElement(Link2, {
849
+ onClick: handleClick,
850
+ sx: {
851
+ cursor: "pointer"
852
+ }
853
+ }, data ?? "--/--") : data ?? "--/--"));
854
+ }, "BlockPayloadCountsTableCell");
855
+
799
856
  // src/components/block/table/cell/Producer.tsx
800
- import { TableCell as TableCell4, Tooltip as Tooltip3 } from "@mui/material";
857
+ import { TableCell as TableCell5, Tooltip as Tooltip4 } from "@mui/material";
801
858
  import { FlexRow as FlexRow4 } from "@xylabs/react-flexbox";
802
- import React18 from "react";
859
+ import React19 from "react";
803
860
  var BlockProducerTableCell = /* @__PURE__ */ __name(({ block, linked, notAvailableDialog, producerChipProps, ...props }) => {
804
861
  const [ref, handleClick] = useLinkedBlockItem("block-producer", JSON.stringify(block));
805
862
  const producer = useBlockProducer(block);
806
- const [notAvailable, setNotAvailable] = React18.useState(false);
807
- return /* @__PURE__ */ React18.createElement(TableCell4, {
863
+ const [notAvailable, setNotAvailable] = React19.useState(false);
864
+ return /* @__PURE__ */ React19.createElement(TableCell5, {
808
865
  ref,
809
866
  ...props
810
- }, /* @__PURE__ */ React18.createElement(Tooltip3, {
867
+ }, /* @__PURE__ */ React19.createElement(Tooltip4, {
811
868
  title: `Block Producer: ${producer}`
812
- }, /* @__PURE__ */ React18.createElement(FlexRow4, {
869
+ }, /* @__PURE__ */ React19.createElement(FlexRow4, {
813
870
  sx: {
814
871
  width: "100%"
815
872
  }
816
- }, /* @__PURE__ */ React18.createElement(BlockProducerChip, {
873
+ }, /* @__PURE__ */ React19.createElement(BlockProducerChip, {
817
874
  sx: {
818
875
  cursor: "pointer"
819
876
  },
820
877
  onClick: linked ? handleClick : () => setNotAvailable(true),
821
878
  block,
822
879
  ...producerChipProps
823
- }))), notAvailableDialog && notAvailable ? /* @__PURE__ */ React18.createElement(FeatureNotAvailable, {
880
+ }))), notAvailableDialog && notAvailable ? /* @__PURE__ */ React19.createElement(FeatureNotAvailable, {
824
881
  featureName: "Producer Details",
825
882
  open: notAvailable,
826
883
  onClick: /* @__PURE__ */ __name(() => setNotAvailable(false), "onClick")
@@ -828,20 +885,20 @@ var BlockProducerTableCell = /* @__PURE__ */ __name(({ block, linked, notAvailab
828
885
  }, "BlockProducerTableCell");
829
886
 
830
887
  // src/components/block/table/cell/TransactionCount.tsx
831
- import { Error as Error2 } from "@mui/icons-material";
832
- import { Link as Link2, TableCell as TableCell5, Tooltip as Tooltip4 } from "@mui/material";
833
- import React19 from "react";
888
+ import { Error as Error3 } from "@mui/icons-material";
889
+ import { Link as Link3, TableCell as TableCell6, Tooltip as Tooltip5 } from "@mui/material";
890
+ import React20 from "react";
834
891
  var BlockTransactionCountTableCell = /* @__PURE__ */ __name(({ block, linked, ...props }) => {
835
892
  const [txs, error] = useTxsFromBlock(block);
836
893
  const [ref, handleClick] = useLinkedBlockItem("transaction-count", JSON.stringify(txs ?? null));
837
- return /* @__PURE__ */ React19.createElement(TableCell5, {
894
+ return /* @__PURE__ */ React20.createElement(TableCell6, {
838
895
  ref,
839
896
  ...props
840
- }, /* @__PURE__ */ React19.createElement("span", null, error ? /* @__PURE__ */ React19.createElement(Tooltip4, {
897
+ }, /* @__PURE__ */ React20.createElement("span", null, error ? /* @__PURE__ */ React20.createElement(Tooltip5, {
841
898
  title: error.message
842
- }, /* @__PURE__ */ React19.createElement(Error2, {
899
+ }, /* @__PURE__ */ React20.createElement(Error3, {
843
900
  color: "error"
844
- })) : null, linked ? /* @__PURE__ */ React19.createElement(Link2, {
901
+ })) : null, linked ? /* @__PURE__ */ React20.createElement(Link3, {
845
902
  onClick: handleClick,
846
903
  sx: {
847
904
  cursor: "pointer"
@@ -850,20 +907,20 @@ var BlockTransactionCountTableCell = /* @__PURE__ */ __name(({ block, linked, ..
850
907
  }, "BlockTransactionCountTableCell");
851
908
 
852
909
  // src/components/block/table/cell/Verification.tsx
853
- import { TableCell as TableCell6 } from "@mui/material";
910
+ import { TableCell as TableCell7 } from "@mui/material";
854
911
  import { FlexRow as FlexRow5 } from "@xylabs/react-flexbox";
855
912
  import { BWVerification as BWVerification2 } from "@xyo-network/react-chain-boundwitness";
856
- import React20 from "react";
913
+ import React21 from "react";
857
914
  var BlockVerificationTableCell = /* @__PURE__ */ __name(({ block, linked, ...props }) => {
858
915
  const [ref, handleClick] = useLinkedBlockItem("block-verification", block?.[0].block.toString());
859
- return /* @__PURE__ */ React20.createElement(TableCell6, {
916
+ return /* @__PURE__ */ React21.createElement(TableCell7, {
860
917
  ref,
861
918
  ...props
862
- }, /* @__PURE__ */ React20.createElement(FlexRow5, {
919
+ }, /* @__PURE__ */ React21.createElement(FlexRow5, {
863
920
  sx: {
864
921
  width: "100%"
865
922
  }
866
- }, /* @__PURE__ */ React20.createElement(BWVerification2, {
923
+ }, /* @__PURE__ */ React21.createElement(BWVerification2, {
867
924
  onClick: linked ? handleClick : void 0,
868
925
  iconColors: true,
869
926
  boundwitness: block?.[0]
@@ -873,82 +930,121 @@ var BlockVerificationTableCell = /* @__PURE__ */ __name(({ block, linked, ...pro
873
930
  // src/components/block/table/Ex.tsx
874
931
  import { TableBody } from "@mui/material";
875
932
  import { TableEx } from "@xyo-network/react-table";
876
- import React22 from "react";
933
+ import React23 from "react";
877
934
 
878
935
  // src/components/block/table/head/TableHead.tsx
879
- import { TableCell as TableCell7, TableHead, TableRow } from "@mui/material";
880
- import React21 from "react";
936
+ import { InfoOutline } from "@mui/icons-material";
937
+ import { TableCell as TableCell8, TableHead, TableRow, Tooltip as Tooltip6, Typography as Typography3 } from "@mui/material";
938
+ import { FlexRow as FlexRow6 } from "@xylabs/react-flexbox";
939
+ import React22 from "react";
940
+ var ToolTipTableCell = /* @__PURE__ */ __name(({ children, align, title, ...props }) => {
941
+ return /* @__PURE__ */ React22.createElement(TableCell8, {
942
+ title,
943
+ ...props
944
+ }, /* @__PURE__ */ React22.createElement(Tooltip6, {
945
+ title
946
+ }, /* @__PURE__ */ React22.createElement(FlexRow6, {
947
+ justifyContent: align
948
+ }, /* @__PURE__ */ React22.createElement(Typography3, {
949
+ variant: "body2"
950
+ }, children), "\xA0", /* @__PURE__ */ React22.createElement(InfoOutline, {
951
+ fontSize: "small"
952
+ }))));
953
+ }, "ToolTipTableCell");
881
954
  var BlockchainTableHead = /* @__PURE__ */ __name(() => {
882
- return /* @__PURE__ */ React21.createElement(TableHead, null, /* @__PURE__ */ React21.createElement(TableRow, null, /* @__PURE__ */ React21.createElement(TableCell7, null, "Block Hash"), /* @__PURE__ */ React21.createElement(TableCell7, null, "Block Number"), /* @__PURE__ */ React21.createElement(TableCell7, null, "Transaction Count"), /* @__PURE__ */ React21.createElement(TableCell7, {
883
- align: "center"
884
- }, "Block Producer"), /* @__PURE__ */ React21.createElement(TableCell7, {
885
- align: "center"
886
- }, "Valid"), /* @__PURE__ */ React21.createElement(TableCell7, {
887
- align: "center"
955
+ return /* @__PURE__ */ React22.createElement(TableHead, null, /* @__PURE__ */ React22.createElement(TableRow, null, /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
956
+ title: "The hash of the block"
957
+ }, "Block Hash"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
958
+ align: "center",
959
+ title: "The block number that is included in the block"
960
+ }, "Block Number"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
961
+ align: "center",
962
+ title: "Count of transactions that are included in the block"
963
+ }, "Transactions"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
964
+ align: "center",
965
+ title: "Count of public and private payload counts for the block"
966
+ }, "Payloads"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
967
+ align: "center",
968
+ title: "The address of the block producer that produced the block"
969
+ }, "Block Producer"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
970
+ align: "center",
971
+ title: "The result of the local validation check for the block"
972
+ }, "Valid"), /* @__PURE__ */ React22.createElement(ToolTipTableCell, {
973
+ align: "center",
974
+ title: "Link to display the raw JSON of the block"
888
975
  }, "JSON")));
889
976
  }, "BlockchainTableHead");
890
977
 
891
978
  // src/components/block/table/Ex.tsx
892
979
  var BlockchainTableEx = /* @__PURE__ */ __name(({ ref, children, ...props }) => {
893
- return /* @__PURE__ */ React22.createElement(TableEx, {
980
+ return /* @__PURE__ */ React23.createElement(TableEx, {
894
981
  ref,
895
982
  ...props
896
- }, /* @__PURE__ */ React22.createElement(BlockchainTableHead, null), /* @__PURE__ */ React22.createElement(TableBody, null, children));
983
+ }, /* @__PURE__ */ React23.createElement(BlockchainTableHead, null), /* @__PURE__ */ React23.createElement(TableBody, null, children));
897
984
  }, "BlockchainTableEx");
898
985
  BlockchainTableEx.displayName = "BlockchainTableEx";
899
986
 
900
987
  // src/components/block/table/row/TableRow.tsx
901
988
  import { TableRow as TableRow2 } from "@mui/material";
902
- import React23, { useMemo as useMemo8 } from "react";
989
+ import React24, { useMemo as useMemo9 } from "react";
903
990
  var BlockChainTableRow = /* @__PURE__ */ __name(({ block, defaultExpanded, linked, sx, ...props }) => {
904
- const linkedTableCellProps = useMemo8(() => ({
991
+ const linkedTableCellProps = useMemo9(() => ({
905
992
  block,
906
993
  linked
907
994
  }), [
908
995
  block,
909
996
  linked
910
997
  ]);
911
- const defaultTableCellProps = useMemo8(() => ({
998
+ const defaultTableCellProps = useMemo9(() => ({
912
999
  block
913
1000
  }), [
914
1001
  block
915
1002
  ]);
916
- return /* @__PURE__ */ React23.createElement(TableRow2, {
1003
+ return /* @__PURE__ */ React24.createElement(TableRow2, {
917
1004
  sx: {
918
1005
  overflowY: "scroll",
919
1006
  ...sx
920
1007
  },
921
1008
  ...props
922
- }, /* @__PURE__ */ React23.createElement(BlockHashTableCell, linkedTableCellProps), /* @__PURE__ */ React23.createElement(BlockNumberTableCell, linkedTableCellProps), /* @__PURE__ */ React23.createElement(BlockTransactionCountTableCell, linkedTableCellProps), /* @__PURE__ */ React23.createElement(BlockProducerTableCell, linkedTableCellProps), /* @__PURE__ */ React23.createElement(BlockVerificationTableCell, defaultTableCellProps), /* @__PURE__ */ React23.createElement(BlockJsonViewTableCell, defaultTableCellProps));
1009
+ }, /* @__PURE__ */ React24.createElement(BlockHashTableCell, linkedTableCellProps), /* @__PURE__ */ React24.createElement(BlockNumberTableCell, {
1010
+ align: "center",
1011
+ ...linkedTableCellProps
1012
+ }), /* @__PURE__ */ React24.createElement(BlockTransactionCountTableCell, {
1013
+ align: "center",
1014
+ ...linkedTableCellProps
1015
+ }), /* @__PURE__ */ React24.createElement(BlockPayloadCountsTableCell, {
1016
+ align: "center",
1017
+ ...linkedTableCellProps
1018
+ }), /* @__PURE__ */ React24.createElement(BlockProducerTableCell, linkedTableCellProps), /* @__PURE__ */ React24.createElement(BlockVerificationTableCell, defaultTableCellProps), /* @__PURE__ */ React24.createElement(BlockJsonViewTableCell, defaultTableCellProps));
923
1019
  }, "BlockChainTableRow");
924
1020
 
925
1021
  // src/components/chain/controls/PollingControlsFlexbox.tsx
926
1022
  import { Autorenew, Pause } from "@mui/icons-material";
927
- import { Alert as Alert3, AlertTitle as AlertTitle2, Grow, Icon as Icon2, IconButton as IconButton4, Tooltip as Tooltip5 } from "@mui/material";
928
- import { FlexRow as FlexRow6 } from "@xylabs/react-flexbox";
929
- import React28, { memo } from "react";
1023
+ import { Alert as Alert3, AlertTitle as AlertTitle2, Grow, Icon as Icon2, IconButton as IconButton4, Tooltip as Tooltip7 } from "@mui/material";
1024
+ import { FlexRow as FlexRow7 } from "@xylabs/react-flexbox";
1025
+ import React29, { memo } from "react";
930
1026
 
931
1027
  // src/components/chain/stats/Dialog.tsx
932
1028
  import { QueryStats } from "@mui/icons-material";
933
1029
  import { Dialog as Dialog3, DialogContent as DialogContent3, DialogTitle as DialogTitle3, IconButton as IconButton3 } from "@mui/material";
934
- import React26, { useState as useState10 } from "react";
1030
+ import React27, { useState as useState10 } from "react";
935
1031
 
936
1032
  // src/components/chain/stats/producer/ProducerFlexbox.tsx
937
- import { ListItem, styled, Typography as Typography3 } from "@mui/material";
1033
+ import { ListItem, styled, Typography as Typography4 } from "@mui/material";
938
1034
  import { ErrorRender as ErrorRender3 } from "@xylabs/react-error";
939
1035
  import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
940
1036
  import { isChainSummaryProducers } from "@xyo-network/chain-protocol";
941
- import React25, { useMemo as useMemo9 } from "react";
1037
+ import React26, { useMemo as useMemo10 } from "react";
942
1038
 
943
1039
  // src/components/chain/stats/producer/Table.tsx
944
- import { Table, TableBody as TableBody2, TableCell as TableCell8, TableHead as TableHead2, TableRow as TableRow3, useTheme } from "@mui/material";
1040
+ import { Table, TableBody as TableBody2, TableCell as TableCell9, TableHead as TableHead2, TableRow as TableRow3, useTheme } from "@mui/material";
945
1041
  import { BlockiesAvatar as BlockiesAvatar2 } from "@xyo-network/react-chain-blockies";
946
- import React24 from "react";
1042
+ import React25 from "react";
947
1043
  var ChainProducerStatsTable = /* @__PURE__ */ __name(({ producers, ...props }) => {
948
1044
  const theme = useTheme();
949
- return /* @__PURE__ */ React24.createElement(Table, props, /* @__PURE__ */ React24.createElement(TableHead2, null, /* @__PURE__ */ React24.createElement(TableRow3, null, /* @__PURE__ */ React24.createElement(TableCell8, null, "Address"), /* @__PURE__ */ React24.createElement(TableCell8, null, "Blocks Produced"), /* @__PURE__ */ React24.createElement(TableCell8, null, "Rewards Earned Produced"))), /* @__PURE__ */ React24.createElement(TableBody2, null, producers?.map((producer) => /* @__PURE__ */ React24.createElement(TableRow3, {
1045
+ return /* @__PURE__ */ React25.createElement(Table, props, /* @__PURE__ */ React25.createElement(TableHead2, null, /* @__PURE__ */ React25.createElement(TableRow3, null, /* @__PURE__ */ React25.createElement(TableCell9, null, "Address"), /* @__PURE__ */ React25.createElement(TableCell9, null, "Blocks Produced"), /* @__PURE__ */ React25.createElement(TableCell9, null, "Rewards Earned Produced"))), /* @__PURE__ */ React25.createElement(TableBody2, null, producers?.map((producer) => /* @__PURE__ */ React25.createElement(TableRow3, {
950
1046
  key: producer.address
951
- }, /* @__PURE__ */ React24.createElement(TableCell8, null, /* @__PURE__ */ React24.createElement(BlockiesAvatar2, {
1047
+ }, /* @__PURE__ */ React25.createElement(TableCell9, null, /* @__PURE__ */ React25.createElement(BlockiesAvatar2, {
952
1048
  blockiesOptions: {
953
1049
  seed: producer.address
954
1050
  },
@@ -956,12 +1052,12 @@ var ChainProducerStatsTable = /* @__PURE__ */ __name(({ producers, ...props }) =
956
1052
  height: theme.spacing(2.75),
957
1053
  width: theme.spacing(2.75)
958
1054
  }
959
- })), /* @__PURE__ */ React24.createElement(TableCell8, null, producer.blocksProduced.toString()), /* @__PURE__ */ React24.createElement(TableCell8, null, producer.rewardsEarned.toString())))));
1055
+ })), /* @__PURE__ */ React25.createElement(TableCell9, null, producer.blocksProduced.toString()), /* @__PURE__ */ React25.createElement(TableCell9, null, producer.rewardsEarned.toString())))));
960
1056
  }, "ChainProducerStatsTable");
961
1057
 
962
1058
  // src/components/chain/stats/producer/ProducerFlexbox.tsx
963
1059
  var BlockProducerStatsFlexbox = /* @__PURE__ */ __name(({ payload, ...props }) => {
964
- const [producer, producerError] = useMemo9(() => {
1060
+ const [producer, producerError] = useMemo10(() => {
965
1061
  if (payload) {
966
1062
  return isChainSummaryProducers(payload) ? [
967
1063
  payload
@@ -975,19 +1071,19 @@ var BlockProducerStatsFlexbox = /* @__PURE__ */ __name(({ payload, ...props }) =
975
1071
  }, [
976
1072
  payload
977
1073
  ]);
978
- const producersArray = useMemo9(() => Object.values(producer?.producers ?? {}), [
1074
+ const producersArray = useMemo10(() => Object.values(producer?.producers ?? {}), [
979
1075
  producer
980
1076
  ]);
981
- return /* @__PURE__ */ React25.createElement(FlexCol3, {
1077
+ return /* @__PURE__ */ React26.createElement(FlexCol3, {
982
1078
  alignItems: "start",
983
1079
  gap: 1,
984
1080
  ...props
985
- }, /* @__PURE__ */ React25.createElement(ErrorRender3, {
1081
+ }, /* @__PURE__ */ React26.createElement(ErrorRender3, {
986
1082
  error: producerError,
987
1083
  scope: "BlockProducerStatsFlexbox"
988
- }), /* @__PURE__ */ React25.createElement(Typography3, {
1084
+ }), /* @__PURE__ */ React26.createElement(Typography4, {
989
1085
  fontSize: "1rem"
990
- }, "Block Producers"), /* @__PURE__ */ React25.createElement(ChainProducerStatsTable, {
1086
+ }, "Block Producers"), /* @__PURE__ */ React26.createElement(ChainProducerStatsTable, {
991
1087
  producers: producersArray
992
1088
  }));
993
1089
  }, "BlockProducerStatsFlexbox");
@@ -999,18 +1095,18 @@ var StyledListItem = styled(ListItem)(() => ({
999
1095
  // src/components/chain/stats/Dialog.tsx
1000
1096
  var ChainAnalyzerStatsDialog = /* @__PURE__ */ __name((props) => {
1001
1097
  const { analyzers, statsUpdated } = useChainAnalyzersContext();
1002
- return /* @__PURE__ */ React26.createElement(Dialog3, props, /* @__PURE__ */ React26.createElement(DialogTitle3, null, "Chain Analysis"), /* @__PURE__ */ React26.createElement(DialogContent3, null, !!statsUpdated && Object.entries(analyzers).map(([id2, analyzer]) => /* @__PURE__ */ React26.createElement("div", {
1098
+ return /* @__PURE__ */ React27.createElement(Dialog3, props, /* @__PURE__ */ React27.createElement(DialogTitle3, null, "Chain Analysis"), /* @__PURE__ */ React27.createElement(DialogContent3, null, !!statsUpdated && Object.entries(analyzers).map(([id2, analyzer]) => /* @__PURE__ */ React27.createElement("div", {
1003
1099
  key: id2
1004
- }, id2 === "producers" && /* @__PURE__ */ React26.createElement(BlockProducerStatsFlexbox, {
1100
+ }, id2 === "producers" && /* @__PURE__ */ React27.createElement(BlockProducerStatsFlexbox, {
1005
1101
  payload: analyzer.result()
1006
1102
  })))));
1007
1103
  }, "ChainAnalyzerStatsDialog");
1008
1104
  var ChainAnalyzerStatsDialogFromContext = /* @__PURE__ */ __name((props) => {
1009
1105
  const [open, setOpen] = useState10(false);
1010
1106
  const handleClose = /* @__PURE__ */ __name(() => setOpen(false), "handleClose");
1011
- return /* @__PURE__ */ React26.createElement(React26.Fragment, null, /* @__PURE__ */ React26.createElement(IconButton3, {
1107
+ return /* @__PURE__ */ React27.createElement(React27.Fragment, null, /* @__PURE__ */ React27.createElement(IconButton3, {
1012
1108
  onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick")
1013
- }, /* @__PURE__ */ React26.createElement(QueryStats, null)), /* @__PURE__ */ React26.createElement(ChainAnalyzerStatsDialog, {
1109
+ }, /* @__PURE__ */ React27.createElement(QueryStats, null)), /* @__PURE__ */ React27.createElement(ChainAnalyzerStatsDialog, {
1014
1110
  onClose: handleClose,
1015
1111
  open,
1016
1112
  ...props
@@ -1019,19 +1115,19 @@ var ChainAnalyzerStatsDialogFromContext = /* @__PURE__ */ __name((props) => {
1019
1115
 
1020
1116
  // src/components/chain/controls/PulseSvgIcon.tsx
1021
1117
  import { alpha, createSvgIcon, keyframes, styled as styled2 } from "@mui/material";
1022
- import React27 from "react";
1023
- var PulseSvgIcon = createSvgIcon(/* @__PURE__ */ React27.createElement("svg", {
1118
+ import React28 from "react";
1119
+ var PulseSvgIcon = createSvgIcon(/* @__PURE__ */ React28.createElement("svg", {
1024
1120
  viewBox: "0 0 80 80",
1025
1121
  version: "1.1",
1026
1122
  xmlns: "http://www.w3.org/2000/svg"
1027
- }, /* @__PURE__ */ React27.createElement("g", {
1123
+ }, /* @__PURE__ */ React28.createElement("g", {
1028
1124
  transform: "translate(34,34)"
1029
- }, /* @__PURE__ */ React27.createElement("circle", {
1125
+ }, /* @__PURE__ */ React28.createElement("circle", {
1030
1126
  className: "core",
1031
1127
  cx: "0",
1032
1128
  cy: "0",
1033
1129
  r: "6"
1034
- }), /* @__PURE__ */ React27.createElement("circle", {
1130
+ }), /* @__PURE__ */ React28.createElement("circle", {
1035
1131
  className: "radar",
1036
1132
  cx: "0",
1037
1133
  cy: "0",
@@ -1095,24 +1191,24 @@ var StyledPulseSvgIcon = styled2(PulseSvgIcon)(({ theme }) => {
1095
1191
  var PollingControlsFlexbox = /* @__PURE__ */ __name(({ blocksBehind, pollingState, setPollingState }) => {
1096
1192
  const paused = pollingState === "paused";
1097
1193
  const running = pollingState === "running";
1098
- return /* @__PURE__ */ React28.createElement(FlexRow6, {
1194
+ return /* @__PURE__ */ React29.createElement(FlexRow7, {
1099
1195
  justifyContent: "space-between",
1100
1196
  width: "100%"
1101
- }, /* @__PURE__ */ React28.createElement(FlexRow6, {
1197
+ }, /* @__PURE__ */ React29.createElement(FlexRow7, {
1102
1198
  gap: 2
1103
- }, running && /* @__PURE__ */ React28.createElement(IconButton4, {
1199
+ }, running && /* @__PURE__ */ React29.createElement(IconButton4, {
1104
1200
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("paused"), "onClick"),
1105
1201
  title: "Pause Block Stream"
1106
- }, /* @__PURE__ */ React28.createElement(Pause, null)), paused && /* @__PURE__ */ React28.createElement(IconButton4, {
1202
+ }, /* @__PURE__ */ React29.createElement(Pause, null)), paused && /* @__PURE__ */ React29.createElement(IconButton4, {
1107
1203
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("running"), "onClick"),
1108
1204
  title: "Re-Sync Block Stream"
1109
- }, /* @__PURE__ */ React28.createElement(Autorenew, null)), /* @__PURE__ */ React28.createElement(ChainAnalyzerStatsDialogFromContext, null)), /* @__PURE__ */ React28.createElement(FlexRow6, {
1205
+ }, /* @__PURE__ */ React29.createElement(Autorenew, null)), /* @__PURE__ */ React29.createElement(ChainAnalyzerStatsDialogFromContext, null)), /* @__PURE__ */ React29.createElement(FlexRow7, {
1110
1206
  gap: 2
1111
- }, /* @__PURE__ */ React28.createElement(Grow, {
1207
+ }, /* @__PURE__ */ React29.createElement(Grow, {
1112
1208
  in: (blocksBehind ?? 0) > 0
1113
- }, /* @__PURE__ */ React28.createElement(Tooltip5, {
1209
+ }, /* @__PURE__ */ React29.createElement(Tooltip7, {
1114
1210
  title: "Click to Re-Sync"
1115
- }, /* @__PURE__ */ React28.createElement(Alert3, {
1211
+ }, /* @__PURE__ */ React29.createElement(Alert3, {
1116
1212
  sx: {
1117
1213
  py: 0,
1118
1214
  px: 1,
@@ -1120,11 +1216,11 @@ var PollingControlsFlexbox = /* @__PURE__ */ __name(({ blocksBehind, pollingStat
1120
1216
  },
1121
1217
  severity: "warning",
1122
1218
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("running"), "onClick")
1123
- }, /* @__PURE__ */ React28.createElement(AlertTitle2, {
1219
+ }, /* @__PURE__ */ React29.createElement(AlertTitle2, {
1124
1220
  sx: {
1125
1221
  mb: 0
1126
1222
  }
1127
- }, "Behind:", " ", blocksBehind)))), /* @__PURE__ */ React28.createElement(Icon2, null, /* @__PURE__ */ React28.createElement(StyledPulseSvgIcon, {
1223
+ }, "Behind:", " ", blocksBehind)))), /* @__PURE__ */ React29.createElement(Icon2, null, /* @__PURE__ */ React29.createElement(StyledPulseSvgIcon, {
1128
1224
  className: running ? "" : "paused"
1129
1225
  }))));
1130
1226
  }, "PollingControlsFlexbox");
@@ -1132,9 +1228,9 @@ var MemoizedPollingControlsFlexbox = /* @__PURE__ */ memo(PollingControlsFlexbox
1132
1228
 
1133
1229
  // src/components/chain/dialog/Dialog.tsx
1134
1230
  import { Button as Button4, Dialog as Dialog4, DialogActions as DialogActions3, DialogContent as DialogContent4 } from "@mui/material";
1135
- import React29 from "react";
1231
+ import React30 from "react";
1136
1232
  var TransactionsDialog = /* @__PURE__ */ __name((props) => {
1137
- return /* @__PURE__ */ React29.createElement(Dialog4, props, /* @__PURE__ */ React29.createElement(DialogContent4, null, "Transactions Dialog"), /* @__PURE__ */ React29.createElement(DialogActions3, null, /* @__PURE__ */ React29.createElement(Button4, {
1233
+ return /* @__PURE__ */ React30.createElement(Dialog4, props, /* @__PURE__ */ React30.createElement(DialogContent4, null, "Transactions Dialog"), /* @__PURE__ */ React30.createElement(DialogActions3, null, /* @__PURE__ */ React30.createElement(Button4, {
1138
1234
  variant: "outlined",
1139
1235
  onClick: /* @__PURE__ */ __name((e) => props?.onClose?.(e, "escapeKeyDown"), "onClick")
1140
1236
  }, "Close")));
@@ -1174,9 +1270,9 @@ var useOnBlock = /* @__PURE__ */ __name((initialHeadNumber, onAddBlock, liveHead
1174
1270
 
1175
1271
  // src/components/chain/pagination/BlockChainPagination.tsx
1176
1272
  import { TablePaginationActions } from "@xyo-network/react-payload-table";
1177
- import React30 from "react";
1273
+ import React31 from "react";
1178
1274
  var BlockChainPagination = /* @__PURE__ */ __name(({ count = 0, onPageChange, page, rowsPerPage = 10 }) => {
1179
- return /* @__PURE__ */ React30.createElement(TablePaginationActions, {
1275
+ return /* @__PURE__ */ React31.createElement(TablePaginationActions, {
1180
1276
  count,
1181
1277
  onPageChange,
1182
1278
  page,
@@ -1185,10 +1281,10 @@ var BlockChainPagination = /* @__PURE__ */ __name(({ count = 0, onPageChange, pa
1185
1281
  }, "BlockChainPagination");
1186
1282
 
1187
1283
  // src/components/chain/pagination/hooks/usePagination.tsx
1188
- import { useMemo as useMemo10, useState as useState11 } from "react";
1284
+ import { useMemo as useMemo11, useState as useState11 } from "react";
1189
1285
  var useChainPagination = /* @__PURE__ */ __name((pageSize, blockComponents) => {
1190
1286
  const [page, setPage] = useState11(0);
1191
- const paginatedBlockComponents = useMemo10(() => {
1287
+ const paginatedBlockComponents = useMemo11(() => {
1192
1288
  const startIndex = page * pageSize;
1193
1289
  const endIndex = startIndex + pageSize;
1194
1290
  return blockComponents?.slice(startIndex, endIndex);
@@ -1210,11 +1306,11 @@ var useChainPagination = /* @__PURE__ */ __name((pageSize, blockComponents) => {
1210
1306
  // src/components/chain/render/dynamic/flexbox/variants/Base.tsx
1211
1307
  import { ErrorRender as ErrorRender4 } from "@xylabs/react-error";
1212
1308
  import { FlexCol as FlexCol5 } from "@xylabs/react-flexbox";
1213
- import React32 from "react";
1309
+ import React33 from "react";
1214
1310
 
1215
1311
  // src/components/chain/list/Animated.tsx
1216
1312
  import { AnimatedList } from "@xylabs/react-animation";
1217
- import React31 from "react";
1313
+ import React32 from "react";
1218
1314
 
1219
1315
  // src/components/chain/styled/BlockListWrapperFlexbox.tsx
1220
1316
  import { styled as styled3 } from "@mui/material";
@@ -1235,17 +1331,17 @@ var BlockListWrapperFlexBox = styled3(FlexCol4, {
1235
1331
 
1236
1332
  // src/components/chain/list/Animated.tsx
1237
1333
  var BlockListAnimated = /* @__PURE__ */ __name(({ blockChainRenderComponents }) => {
1238
- return /* @__PURE__ */ React31.createElement(BlockListWrapperFlexBox, {
1334
+ return /* @__PURE__ */ React32.createElement(BlockListWrapperFlexBox, {
1239
1335
  alignItems: "stretch",
1240
1336
  width: "100%"
1241
- }, /* @__PURE__ */ React31.createElement(AnimatedList, {
1337
+ }, /* @__PURE__ */ React32.createElement(AnimatedList, {
1242
1338
  fullWidth: true,
1243
1339
  items: blockChainRenderComponents
1244
1340
  }));
1245
1341
  }, "BlockListAnimated");
1246
1342
 
1247
1343
  // src/components/chain/render/dynamic/hooks/useDynamicBlockRenderComponents.ts
1248
- import { useMemo as useMemo12 } from "react";
1344
+ import { useMemo as useMemo13 } from "react";
1249
1345
 
1250
1346
  // src/hooks/chain-iterator/ChainIteratorStore.ts
1251
1347
  import { assertEx } from "@xylabs/assert";
@@ -1350,7 +1446,7 @@ var useChainIteratorParams = /* @__PURE__ */ __name(({ chainArchivist, chainInfo
1350
1446
 
1351
1447
  // src/hooks/chain-iterator/useChainIteratorStore.ts
1352
1448
  import { usePromise as usePromise4 } from "@xylabs/react-promise";
1353
- import { useEffect as useEffect3, useMemo as useMemo11, useRef as useRef3, useSyncExternalStore } from "react";
1449
+ import { useEffect as useEffect3, useMemo as useMemo12, useRef as useRef3, useSyncExternalStore } from "react";
1354
1450
 
1355
1451
  // src/hooks/chain-iterator/useChainIteratorUpdatingHead.ts
1356
1452
  import { toHex as toHex2 } from "@xylabs/hex";
@@ -1417,7 +1513,7 @@ var useChainIteratorStore = /* @__PURE__ */ __name((chainIteratorParams) => {
1417
1513
  chainIteratorStore
1418
1514
  ]);
1419
1515
  const cachedSnapshot = useRef3({});
1420
- const { getSnapShot, subscribe } = useMemo11(() => {
1516
+ const { getSnapShot, subscribe } = useMemo12(() => {
1421
1517
  if (chainIteratorStore) {
1422
1518
  return {
1423
1519
  getSnapShot: /* @__PURE__ */ __name(() => {
@@ -1499,7 +1595,7 @@ var useIterateChain = /* @__PURE__ */ __name((chainIteratorParams, maxDepth) =>
1499
1595
  // src/components/chain/render/dynamic/hooks/useDynamicBlockRenderComponents.ts
1500
1596
  var useDynamicBlockRenderComponents = /* @__PURE__ */ __name((BlockComponent, blockChainRenderProps) => {
1501
1597
  const { maxBlocks } = blockChainRenderProps ?? {};
1502
- const chainIteratorParams = useMemo12(() => blockChainRenderProps ?? {}, [
1598
+ const chainIteratorParams = useMemo13(() => blockChainRenderProps ?? {}, [
1503
1599
  blockChainRenderProps
1504
1600
  ]);
1505
1601
  const [params, paramsError] = useChainIteratorParams(chainIteratorParams);
@@ -1520,7 +1616,7 @@ var useDynamicBlockRenderComponents = /* @__PURE__ */ __name((BlockComponent, bl
1520
1616
 
1521
1617
  // src/components/chain/render/dynamic/hooks/useRemoteBlockChainRenderProps.ts
1522
1618
  import { usePromise as usePromise6 } from "@xylabs/react-promise";
1523
- import { useMemo as useMemo13 } from "react";
1619
+ import { useMemo as useMemo14 } from "react";
1524
1620
 
1525
1621
  // src/lib/getChainArchivist.ts
1526
1622
  import { assertEx as assertEx4 } from "@xylabs/assert";
@@ -1564,7 +1660,7 @@ var useRemoteBlockChainRenderProps = /* @__PURE__ */ __name((chainArchivistModul
1564
1660
  url,
1565
1661
  chainArchivistModuleId
1566
1662
  ]);
1567
- const blockChainRenderProps = useMemo13(() => ({
1663
+ const blockChainRenderProps = useMemo14(() => ({
1568
1664
  ...blockChainRenderPropsArg,
1569
1665
  chainArchivist
1570
1666
  }), [
@@ -1580,28 +1676,28 @@ var useRemoteBlockChainRenderProps = /* @__PURE__ */ __name((chainArchivistModul
1580
1676
  // src/components/chain/render/dynamic/flexbox/variants/Base.tsx
1581
1677
  var DynamicListBase = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props }) => {
1582
1678
  const { errors, blockChainRenderComponents, blocksWhilePaused, pollingState, updatePollingState } = useDynamicBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps);
1583
- return /* @__PURE__ */ React32.createElement(FlexCol5, {
1679
+ return /* @__PURE__ */ React33.createElement(FlexCol5, {
1584
1680
  alignItems: "start",
1585
1681
  ...props
1586
- }, errors?.map((error) => /* @__PURE__ */ React32.createElement(ErrorRender4, {
1682
+ }, errors?.map((error) => /* @__PURE__ */ React33.createElement(ErrorRender4, {
1587
1683
  error,
1588
1684
  key: error?.name,
1589
1685
  scope: "DynamicBlockchainRenderFlexboxInner"
1590
- })), /* @__PURE__ */ React32.createElement(MemoizedPollingControlsFlexbox, {
1686
+ })), /* @__PURE__ */ React33.createElement(MemoizedPollingControlsFlexbox, {
1591
1687
  blocksBehind: blocksWhilePaused?.length,
1592
1688
  pollingState,
1593
1689
  setPollingState: updatePollingState
1594
- }), /* @__PURE__ */ React32.createElement(BlockListAnimated, {
1690
+ }), /* @__PURE__ */ React33.createElement(BlockListAnimated, {
1595
1691
  blockChainRenderComponents
1596
1692
  }));
1597
1693
  }, "DynamicListBase");
1598
1694
 
1599
1695
  // src/components/chain/render/dynamic/flexbox/variants/WithAnalysis.tsx
1600
1696
  import { ChainProducersAnalyzer } from "@xyo-network/chain-protocol";
1601
- import React33, { useMemo as useMemo14 } from "react";
1697
+ import React34, { useMemo as useMemo15 } from "react";
1602
1698
  var WithAnalysis = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props }) => {
1603
1699
  const { chainInformation } = blockChainRenderProps ?? {};
1604
- const analyzers = useMemo14(() => {
1700
+ const analyzers = useMemo15(() => {
1605
1701
  if (chainInformation) {
1606
1702
  return {
1607
1703
  producers: new ChainProducersAnalyzer()
@@ -1610,9 +1706,9 @@ var WithAnalysis = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props })
1610
1706
  }, [
1611
1707
  chainInformation
1612
1708
  ]);
1613
- return /* @__PURE__ */ React33.createElement(ChainAnalyzersProvider, {
1709
+ return /* @__PURE__ */ React34.createElement(ChainAnalyzersProvider, {
1614
1710
  analyzers
1615
- }, /* @__PURE__ */ React33.createElement(ChainPollingProvider, null, /* @__PURE__ */ React33.createElement(DynamicListBase, {
1711
+ }, /* @__PURE__ */ React34.createElement(ChainPollingProvider, null, /* @__PURE__ */ React34.createElement(DynamicListBase, {
1616
1712
  blockChainRenderProps,
1617
1713
  ...props
1618
1714
  })));
@@ -1620,13 +1716,13 @@ var WithAnalysis = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props })
1620
1716
 
1621
1717
  // src/components/chain/render/dynamic/flexbox/variants/WithRemote.tsx
1622
1718
  import { ErrorRender as ErrorRender5 } from "@xylabs/react-error";
1623
- import React34 from "react";
1719
+ import React35 from "react";
1624
1720
  var WithRemote = /* @__PURE__ */ __name(({ url, chainArchivistModuleId, blockChainRenderProps: blockChainRenderPropsArg, ...props }) => {
1625
1721
  const { error, blockChainRenderProps } = useRemoteBlockChainRenderProps(chainArchivistModuleId, url, blockChainRenderPropsArg);
1626
- return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(ErrorRender5, {
1722
+ return /* @__PURE__ */ React35.createElement(React35.Fragment, null, /* @__PURE__ */ React35.createElement(ErrorRender5, {
1627
1723
  error,
1628
1724
  scope: "RemoteChainProviderFlexbox"
1629
- }), /* @__PURE__ */ React34.createElement(WithAnalysis, {
1725
+ }), /* @__PURE__ */ React35.createElement(WithAnalysis, {
1630
1726
  blockChainRenderProps,
1631
1727
  ...props
1632
1728
  }));
@@ -1642,16 +1738,16 @@ var DynamicBlockchainRenderFlexbox = {
1642
1738
  // src/components/chain/render/static/flexbox/variants/Base.tsx
1643
1739
  import { ErrorRender as ErrorRender6 } from "@xylabs/react-error";
1644
1740
  import { FlexCol as FlexCol6, FlexGrowRow as FlexGrowRow2 } from "@xylabs/react-flexbox";
1645
- import React35 from "react";
1741
+ import React36 from "react";
1646
1742
 
1647
1743
  // src/components/chain/render/static/hooks/useStaticBlockRenderComponents.ts
1648
1744
  import { exists } from "@xylabs/exists";
1649
- import { useMemo as useMemo15 } from "react";
1745
+ import { useMemo as useMemo16 } from "react";
1650
1746
  var DEFAULT_PAGE_SIZE = 25;
1651
1747
  var useStaticBlockRenderComponents = /* @__PURE__ */ __name((BlockComponent, blockChainRenderProps) => {
1652
1748
  const { maxBlocks } = blockChainRenderProps ?? {};
1653
1749
  const pageSize = blockChainRenderProps?.pageSize ?? DEFAULT_PAGE_SIZE;
1654
- const chainIteratorParams = useMemo15(() => blockChainRenderProps ?? {}, [
1750
+ const chainIteratorParams = useMemo16(() => blockChainRenderProps ?? {}, [
1655
1751
  blockChainRenderProps
1656
1752
  ]);
1657
1753
  const [params, paramsError] = useChainIteratorParams(chainIteratorParams);
@@ -1675,34 +1771,34 @@ var useStaticBlockRenderComponents = /* @__PURE__ */ __name((BlockComponent, blo
1675
1771
  // src/components/chain/render/static/flexbox/variants/Base.tsx
1676
1772
  var StaticListBase = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props }) => {
1677
1773
  const { blockComponents, errors, paginatedBlockComponents, onPageChange, page, pageSize } = useStaticBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps);
1678
- return /* @__PURE__ */ React35.createElement(FlexCol6, {
1774
+ return /* @__PURE__ */ React36.createElement(FlexCol6, {
1679
1775
  alignItems: "start",
1680
1776
  gap: 2,
1681
1777
  width: "100%",
1682
1778
  ...props
1683
- }, errors?.map((error) => /* @__PURE__ */ React35.createElement(ErrorRender6, {
1779
+ }, errors?.map((error) => /* @__PURE__ */ React36.createElement(ErrorRender6, {
1684
1780
  error,
1685
1781
  key: error.name,
1686
1782
  scope: "StaticBlockchainFlexboxInner"
1687
- })), paginatedBlockComponents?.length ? /* @__PURE__ */ React35.createElement(FlexGrowRow2, {
1783
+ })), paginatedBlockComponents?.length ? /* @__PURE__ */ React36.createElement(FlexGrowRow2, {
1688
1784
  justifyContent: "space-between",
1689
1785
  width: "100%"
1690
- }, /* @__PURE__ */ React35.createElement(ChainAnalyzerStatsDialogFromContext, null), /* @__PURE__ */ React35.createElement(BlockChainPagination, {
1786
+ }, /* @__PURE__ */ React36.createElement(ChainAnalyzerStatsDialogFromContext, null), /* @__PURE__ */ React36.createElement(BlockChainPagination, {
1691
1787
  count: blockComponents?.length ?? 0,
1692
1788
  onPageChange,
1693
1789
  page,
1694
1790
  rowsPerPage: pageSize
1695
- })) : null, /* @__PURE__ */ React35.createElement(BlockListAnimated, {
1791
+ })) : null, /* @__PURE__ */ React36.createElement(BlockListAnimated, {
1696
1792
  blockChainRenderComponents: paginatedBlockComponents
1697
1793
  }));
1698
1794
  }, "StaticListBase");
1699
1795
 
1700
1796
  // src/components/chain/render/static/flexbox/variants/WithAnalysis.tsx
1701
1797
  import { ChainProducersAnalyzer as ChainProducersAnalyzer2 } from "@xyo-network/chain-protocol";
1702
- import React36, { useMemo as useMemo16 } from "react";
1798
+ import React37, { useMemo as useMemo17 } from "react";
1703
1799
  var WithAnalysis2 = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props }) => {
1704
1800
  const { chainInformation } = blockChainRenderProps ?? {};
1705
- const analyzers = useMemo16(() => {
1801
+ const analyzers = useMemo17(() => {
1706
1802
  if (chainInformation) {
1707
1803
  return {
1708
1804
  producers: new ChainProducersAnalyzer2()
@@ -1711,9 +1807,9 @@ var WithAnalysis2 = /* @__PURE__ */ __name(({ blockChainRenderProps, ...props })
1711
1807
  }, [
1712
1808
  chainInformation
1713
1809
  ]);
1714
- return /* @__PURE__ */ React36.createElement(ChainAnalyzersProvider, {
1810
+ return /* @__PURE__ */ React37.createElement(ChainAnalyzersProvider, {
1715
1811
  analyzers
1716
- }, /* @__PURE__ */ React36.createElement(StaticListBase, {
1812
+ }, /* @__PURE__ */ React37.createElement(StaticListBase, {
1717
1813
  blockChainRenderProps,
1718
1814
  ...props
1719
1815
  }));
@@ -1728,19 +1824,19 @@ var StaticBlockchainRenderFlexBox = {
1728
1824
  // src/components/payload/builder/Flexbox.tsx
1729
1825
  import { FlexCol as FlexCol7 } from "@xylabs/react-flexbox";
1730
1826
  import { JsonViewerEx as JsonViewerEx2 } from "@xyo-network/react-payload-raw-info";
1731
- import React37, { useState as useState13 } from "react";
1827
+ import React38, { useState as useState13 } from "react";
1732
1828
  var PayloadBuilderFlexbox = /* @__PURE__ */ __name(({ BuilderComponent, onBuild, ...props }) => {
1733
1829
  const [payload, setPayload] = useState13();
1734
1830
  const onBuildLocal = /* @__PURE__ */ __name((payload2) => {
1735
1831
  onBuild?.(payload2);
1736
1832
  setPayload(payload2);
1737
1833
  }, "onBuildLocal");
1738
- return /* @__PURE__ */ React37.createElement(FlexCol7, {
1834
+ return /* @__PURE__ */ React38.createElement(FlexCol7, {
1739
1835
  gap: 2,
1740
1836
  ...props
1741
- }, /* @__PURE__ */ React37.createElement(BuilderComponent, {
1837
+ }, /* @__PURE__ */ React38.createElement(BuilderComponent, {
1742
1838
  onBuild: onBuildLocal
1743
- }), payload && /* @__PURE__ */ React37.createElement(JsonViewerEx2, {
1839
+ }), payload && /* @__PURE__ */ React38.createElement(JsonViewerEx2, {
1744
1840
  value: payload
1745
1841
  }));
1746
1842
  }, "PayloadBuilderFlexbox");
@@ -1748,11 +1844,11 @@ var PayloadBuilderFlexbox = /* @__PURE__ */ __name(({ BuilderComponent, onBuild,
1748
1844
  // src/components/payload/builder/producer-intent/Form.tsx
1749
1845
  import { Button as Button5, FormControl as FormControl5 } from "@mui/material";
1750
1846
  import { createProducerChainStakeIntent } from "@xyo-network/chain-ethereum";
1751
- import React40, { useMemo as useMemo18, useState as useState16 } from "react";
1847
+ import React41, { useMemo as useMemo19, useState as useState16 } from "react";
1752
1848
 
1753
1849
  // src/components/payload/fields/BlockNumberTextField.tsx
1754
1850
  import { FormControl as FormControl3, FormHelperText as FormHelperText2, TextField as TextField3 } from "@mui/material";
1755
- import React38, { useState as useState14 } from "react";
1851
+ import React39, { useState as useState14 } from "react";
1756
1852
  var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumberChanged, onChange, ...props }) => {
1757
1853
  const [blockNumber, setBlockNumber] = useState14();
1758
1854
  const handleChange = /* @__PURE__ */ __name((e) => {
@@ -1761,15 +1857,15 @@ var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumber
1761
1857
  onBlockNumberChanged?.(Number.parseInt(value));
1762
1858
  onChange?.(e);
1763
1859
  }, "handleChange");
1764
- return /* @__PURE__ */ React38.createElement(FormControl3, {
1860
+ return /* @__PURE__ */ React39.createElement(FormControl3, {
1765
1861
  fullWidth: true
1766
- }, /* @__PURE__ */ React38.createElement(TextField3, {
1862
+ }, /* @__PURE__ */ React39.createElement(TextField3, {
1767
1863
  error: !!errorMessage,
1768
1864
  onChange: handleChange,
1769
1865
  type: "number",
1770
1866
  value: blockNumber ?? "",
1771
1867
  ...props
1772
- }), errorMessage && /* @__PURE__ */ React38.createElement(FormHelperText2, {
1868
+ }), errorMessage && /* @__PURE__ */ React39.createElement(FormHelperText2, {
1773
1869
  sx: {
1774
1870
  color: /* @__PURE__ */ __name((theme) => theme.palette.error.main, "color")
1775
1871
  }
@@ -1779,11 +1875,11 @@ var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumber
1779
1875
  // src/components/payload/fields/XyoAddressTextField.tsx
1780
1876
  import { FormControl as FormControl4, FormHelperText as FormHelperText3, TextField as TextField4 } from "@mui/material";
1781
1877
  import { asAddress } from "@xylabs/hex";
1782
- import React39, { useMemo as useMemo17, useState as useState15 } from "react";
1878
+ import React40, { useMemo as useMemo18, useState as useState15 } from "react";
1783
1879
  var XyoAddressTextField = /* @__PURE__ */ __name(({ onAddressChanged, onChange, resetValue, ...props }) => {
1784
1880
  const [address, setAddress] = useState15("");
1785
1881
  const [addressError, setAddressError] = useState15();
1786
- useMemo17(() => setAddress(""), [
1882
+ useMemo18(() => setAddress(""), [
1787
1883
  resetValue
1788
1884
  ]);
1789
1885
  const handleChange = /* @__PURE__ */ __name((event) => {
@@ -1803,15 +1899,15 @@ var XyoAddressTextField = /* @__PURE__ */ __name(({ onAddressChanged, onChange,
1803
1899
  onAddressChanged?.();
1804
1900
  }
1805
1901
  }, "handleBlur");
1806
- return /* @__PURE__ */ React39.createElement(FormControl4, {
1902
+ return /* @__PURE__ */ React40.createElement(FormControl4, {
1807
1903
  fullWidth: true
1808
- }, /* @__PURE__ */ React39.createElement(TextField4, {
1904
+ }, /* @__PURE__ */ React40.createElement(TextField4, {
1809
1905
  error: !!addressError,
1810
1906
  onBlur: handleBlur,
1811
1907
  onChange: handleChange,
1812
1908
  value: address,
1813
1909
  ...props
1814
- }), addressError && /* @__PURE__ */ React39.createElement(FormHelperText3, {
1910
+ }), addressError && /* @__PURE__ */ React40.createElement(FormHelperText3, {
1815
1911
  sx: {
1816
1912
  color: /* @__PURE__ */ __name((theme) => theme.palette.error.main, "color")
1817
1913
  }
@@ -1824,7 +1920,7 @@ var ProducerIntentBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1824
1920
  const [exp, setExp] = useState16();
1825
1921
  const [nbf, setNbf] = useState16();
1826
1922
  const [blockRangeError, setBlockRangeError] = useState16();
1827
- const intentPayload = useMemo18(() => {
1923
+ const intentPayload = useMemo19(() => {
1828
1924
  if (exp !== void 0 && nbf !== void 0) {
1829
1925
  if (exp <= nbf) {
1830
1926
  setBlockRangeError(new Error("Expires must be greater than Not Before"));
@@ -1844,33 +1940,33 @@ var ProducerIntentBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1844
1940
  const onBuildLocal = /* @__PURE__ */ __name(() => {
1845
1941
  if (onBuild && intentPayload) onBuild?.(intentPayload);
1846
1942
  }, "onBuildLocal");
1847
- return /* @__PURE__ */ React40.createElement(React40.Fragment, null, /* @__PURE__ */ React40.createElement(FormControl5, {
1943
+ return /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(FormControl5, {
1848
1944
  fullWidth: true
1849
- }, /* @__PURE__ */ React40.createElement(XyoAddressTextField, {
1945
+ }, /* @__PURE__ */ React41.createElement(XyoAddressTextField, {
1850
1946
  label: "Delegate",
1851
1947
  name: "delegate",
1852
1948
  onAddressChanged: setDelegate,
1853
1949
  required: true,
1854
1950
  size: "small"
1855
- })), /* @__PURE__ */ React40.createElement(FormControl5, {
1951
+ })), /* @__PURE__ */ React41.createElement(FormControl5, {
1856
1952
  fullWidth: true
1857
- }, /* @__PURE__ */ React40.createElement(BlockNumberTextField, {
1953
+ }, /* @__PURE__ */ React41.createElement(BlockNumberTextField, {
1858
1954
  errorMessage: blockRangeError?.message,
1859
1955
  label: "Expires",
1860
1956
  name: "exp",
1861
1957
  onBlockNumberChanged: setExp,
1862
1958
  required: true,
1863
1959
  size: "small"
1864
- })), /* @__PURE__ */ React40.createElement(FormControl5, {
1960
+ })), /* @__PURE__ */ React41.createElement(FormControl5, {
1865
1961
  fullWidth: true
1866
- }, /* @__PURE__ */ React40.createElement(BlockNumberTextField, {
1962
+ }, /* @__PURE__ */ React41.createElement(BlockNumberTextField, {
1867
1963
  errorMessage: blockRangeError?.message,
1868
1964
  label: "Not Before",
1869
1965
  name: "nbf",
1870
1966
  onBlockNumberChanged: setNbf,
1871
1967
  required: true,
1872
1968
  size: "small"
1873
- })), /* @__PURE__ */ React40.createElement(Button5, {
1969
+ })), /* @__PURE__ */ React41.createElement(Button5, {
1874
1970
  disabled: !intentPayload,
1875
1971
  variant: "contained",
1876
1972
  onClick: onBuildLocal
@@ -1878,24 +1974,24 @@ var ProducerIntentBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1878
1974
  }, "ProducerIntentBuilderForm");
1879
1975
 
1880
1976
  // src/components/payload/builder/transfer/Flexbox.tsx
1881
- import React43 from "react";
1977
+ import React44 from "react";
1882
1978
 
1883
1979
  // src/components/payload/builder/transfer/Form.tsx
1884
1980
  import { Button as Button6, FormControl as FormControl7 } from "@mui/material";
1885
1981
  import { TransferSchema } from "@xyo-network/xl1-model";
1886
- import React42, { useMemo as useMemo20, useState as useState18 } from "react";
1982
+ import React43, { useMemo as useMemo21, useState as useState18 } from "react";
1887
1983
 
1888
1984
  // src/components/payload/builder/transfer/builder/SingleFlexbox.tsx
1889
1985
  import { RemoveCircle } from "@mui/icons-material";
1890
1986
  import { FormControl as FormControl6, Icon as Icon3, IconButton as IconButton5 } from "@mui/material";
1891
1987
  import { toHex as toHex3 } from "@xylabs/hex";
1892
- import { FlexRow as FlexRow7 } from "@xylabs/react-flexbox";
1988
+ import { FlexRow as FlexRow8 } from "@xylabs/react-flexbox";
1893
1989
  import { BigIntInput } from "@xyo-network/react-shared";
1894
- import React41, { useEffect as useEffect4, useMemo as useMemo19, useState as useState17 } from "react";
1990
+ import React42, { useEffect as useEffect4, useMemo as useMemo20, useState as useState17 } from "react";
1895
1991
  var SingleTransferBuilderFlexbox = /* @__PURE__ */ __name(({ onTransferUpdated, onRemoveTransfer, singleTransfer, ...props }) => {
1896
1992
  const [toAddress, setToAddress] = useState17();
1897
1993
  const [amount, setAmount] = useState17();
1898
- const transferAmount = useMemo19(() => {
1994
+ const transferAmount = useMemo20(() => {
1899
1995
  if (toAddress && amount) {
1900
1996
  return {
1901
1997
  ...singleTransfer,
@@ -1912,36 +2008,36 @@ var SingleTransferBuilderFlexbox = /* @__PURE__ */ __name(({ onTransferUpdated,
1912
2008
  }, [
1913
2009
  transferAmount
1914
2010
  ]);
1915
- return /* @__PURE__ */ React41.createElement(FlexRow7, {
2011
+ return /* @__PURE__ */ React42.createElement(FlexRow8, {
1916
2012
  alignItems: "start",
1917
2013
  gap: 1,
1918
2014
  ...props
1919
- }, /* @__PURE__ */ React41.createElement(FormControl6, {
2015
+ }, /* @__PURE__ */ React42.createElement(FormControl6, {
1920
2016
  fullWidth: true
1921
- }, /* @__PURE__ */ React41.createElement(XyoAddressTextField, {
2017
+ }, /* @__PURE__ */ React42.createElement(XyoAddressTextField, {
1922
2018
  label: "To",
1923
2019
  name: "to",
1924
2020
  onAddressChanged: setToAddress,
1925
2021
  required: true,
1926
2022
  size: "small"
1927
- })), /* @__PURE__ */ React41.createElement(FormControl6, {
2023
+ })), /* @__PURE__ */ React42.createElement(FormControl6, {
1928
2024
  fullWidth: true
1929
- }, /* @__PURE__ */ React41.createElement(BigIntInput.TextField, {
2025
+ }, /* @__PURE__ */ React42.createElement(BigIntInput.TextField, {
1930
2026
  label: "Amount",
1931
2027
  name: "amount",
1932
2028
  onChangeFixedPoint: setAmount,
1933
2029
  required: true,
1934
2030
  size: "small"
1935
- })), /* @__PURE__ */ React41.createElement(IconButton5, {
2031
+ })), /* @__PURE__ */ React42.createElement(IconButton5, {
1936
2032
  onClick: /* @__PURE__ */ __name(() => onRemoveTransfer?.(singleTransfer.transferId), "onClick")
1937
- }, /* @__PURE__ */ React41.createElement(Icon3, null, /* @__PURE__ */ React41.createElement(RemoveCircle, null))));
2033
+ }, /* @__PURE__ */ React42.createElement(Icon3, null, /* @__PURE__ */ React42.createElement(RemoveCircle, null))));
1938
2034
  }, "SingleTransferBuilderFlexbox");
1939
2035
 
1940
2036
  // src/components/payload/builder/transfer/Form.tsx
1941
2037
  var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1942
2038
  const [fromAddress, setFromAddress] = useState18();
1943
2039
  const [transfers, setTransfers] = useState18([]);
1944
- const transferPayload = useMemo20(() => {
2040
+ const transferPayload = useMemo21(() => {
1945
2041
  if (fromAddress && transfers.length > 0) {
1946
2042
  const transfersRecord = {};
1947
2043
  for (const transfer of transfers) {
@@ -1983,19 +2079,19 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1983
2079
  return transfer;
1984
2080
  }));
1985
2081
  }, "onTransferUpdated");
1986
- return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(FormControl7, {
2082
+ return /* @__PURE__ */ React43.createElement(React43.Fragment, null, /* @__PURE__ */ React43.createElement(FormControl7, {
1987
2083
  fullWidth: true
1988
- }, /* @__PURE__ */ React42.createElement(XyoAddressTextField, {
2084
+ }, /* @__PURE__ */ React43.createElement(XyoAddressTextField, {
1989
2085
  label: "From",
1990
2086
  name: "from",
1991
2087
  onAddressChanged: setFromAddress,
1992
2088
  required: true,
1993
2089
  size: "small"
1994
- })), /* @__PURE__ */ React42.createElement(Button6, {
2090
+ })), /* @__PURE__ */ React43.createElement(Button6, {
1995
2091
  onClick: onTransferAdded,
1996
2092
  size: "small",
1997
2093
  variant: "contained"
1998
- }, "Add Transfer"), transfers.map((transfer) => /* @__PURE__ */ React42.createElement(SingleTransferBuilderFlexbox, {
2094
+ }, "Add Transfer"), transfers.map((transfer) => /* @__PURE__ */ React43.createElement(SingleTransferBuilderFlexbox, {
1999
2095
  key: transfer.transferId,
2000
2096
  onTransferUpdated,
2001
2097
  onRemoveTransfer: onTransferRemoved,
@@ -2003,7 +2099,7 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
2003
2099
  sx: {
2004
2100
  width: "100%"
2005
2101
  }
2006
- })), /* @__PURE__ */ React42.createElement(Button6, {
2102
+ })), /* @__PURE__ */ React43.createElement(Button6, {
2007
2103
  disabled: !transferPayload,
2008
2104
  variant: "contained",
2009
2105
  onClick: onBuildLocal
@@ -2011,7 +2107,7 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
2011
2107
  }, "TransferBuilderForm");
2012
2108
 
2013
2109
  // src/components/payload/builder/transfer/Flexbox.tsx
2014
- var TransferBuilderFlexbox = /* @__PURE__ */ __name(({ onBuild, ...props }) => /* @__PURE__ */ React43.createElement(PayloadBuilderFlexbox, {
2110
+ var TransferBuilderFlexbox = /* @__PURE__ */ __name(({ onBuild, ...props }) => /* @__PURE__ */ React44.createElement(PayloadBuilderFlexbox, {
2015
2111
  gap: 4,
2016
2112
  alignItems: "start",
2017
2113
  BuilderComponent: TransferBuilderForm,
@@ -2038,7 +2134,7 @@ import { usePromise as usePromise7 } from "@xylabs/react-promise";
2038
2134
  import { MemoryArchivist } from "@xyo-network/archivist-memory";
2039
2135
  import { ArchivistConfigSchema } from "@xyo-network/archivist-model";
2040
2136
  import { flattenHydratedBlocks } from "@xyo-network/chain-protocol";
2041
- import React44, { useEffect as useEffect5 } from "react";
2137
+ import React45, { useEffect as useEffect5 } from "react";
2042
2138
  var ChainArchivistDecorator = /* @__PURE__ */ __name((Story, context) => {
2043
2139
  const [randomBlockChain] = usePromise7(async () => await buildRandomBlockChain(), []);
2044
2140
  const [blockChainRenderProps, blockChainRenderPropsError] = usePromise7(async () => {
@@ -2078,7 +2174,7 @@ var ChainArchivistDecorator = /* @__PURE__ */ __name((Story, context) => {
2078
2174
  }
2079
2175
  }
2080
2176
  };
2081
- return blockChainRenderProps?.chainArchivist ? /* @__PURE__ */ React44.createElement(Story, props) : /* @__PURE__ */ React44.createElement(CircularProgress, null);
2177
+ return blockChainRenderProps?.chainArchivist ? /* @__PURE__ */ React45.createElement(Story, props) : /* @__PURE__ */ React45.createElement(CircularProgress, null);
2082
2178
  }, "ChainArchivistDecorator");
2083
2179
 
2084
2180
  // src/stories/ChainArchivistDelayedInsertDecorator.tsx
@@ -2088,7 +2184,7 @@ import { usePromise as usePromise8 } from "@xylabs/react-promise";
2088
2184
  import { MemoryArchivist as MemoryArchivist2 } from "@xyo-network/archivist-memory";
2089
2185
  import { ArchivistConfigSchema as ArchivistConfigSchema2 } from "@xyo-network/archivist-model";
2090
2186
  import { flattenHydratedBlock } from "@xyo-network/chain-protocol";
2091
- import React45, { useEffect as useEffect6, useState as useState19 } from "react";
2187
+ import React46, { useEffect as useEffect6, useState as useState19 } from "react";
2092
2188
  var chainArchivistRef;
2093
2189
  var ChainArchivistDelayedInsertDecorator = /* @__PURE__ */ __name((Story, context) => {
2094
2190
  const [firstBlock, setFirstBlock] = useState19();
@@ -2146,7 +2242,7 @@ var ChainArchivistDelayedInsertDecorator = /* @__PURE__ */ __name((Story, contex
2146
2242
  }
2147
2243
  }
2148
2244
  };
2149
- return firstBlock ? /* @__PURE__ */ React45.createElement(Story, props) : /* @__PURE__ */ React45.createElement(CircularProgress2, null);
2245
+ return firstBlock ? /* @__PURE__ */ React46.createElement(Story, props) : /* @__PURE__ */ React46.createElement(CircularProgress2, null);
2150
2246
  }, "ChainArchivistDelayedInsertDecorator");
2151
2247
 
2152
2248
  // src/stories/ChainInfoContextDecorator.tsx
@@ -2155,7 +2251,7 @@ import { usePromise as usePromise9 } from "@xylabs/react-promise";
2155
2251
  import { XyoChainBlockNumberIterator as XyoChainBlockNumberIterator3 } from "@xyo-network/chain-services";
2156
2252
  import { findFirstMatching } from "@xyo-network/chain-utils";
2157
2253
  import { isBlockBoundWitness as isBlockBoundWitness3 } from "@xyo-network/xl1-model";
2158
- import React46 from "react";
2254
+ import React47 from "react";
2159
2255
  var archivistConfig = {
2160
2256
  url: "http://localhost:8080",
2161
2257
  chainArchivistModuleId: "XYOPublic:XYOChain:Chain"
@@ -2181,11 +2277,11 @@ var ChainInfoContextDecorator = /* @__PURE__ */ __name((Story, context) => {
2181
2277
  chainArchivist,
2182
2278
  chainInformation
2183
2279
  ]);
2184
- return /* @__PURE__ */ React46.createElement(ChainInfoProvider, {
2280
+ return /* @__PURE__ */ React47.createElement(ChainInfoProvider, {
2185
2281
  chainArchivist,
2186
2282
  chainInformation,
2187
2283
  chainIterator
2188
- }, /* @__PURE__ */ React46.createElement(Story, context));
2284
+ }, /* @__PURE__ */ React47.createElement(Story, context));
2189
2285
  }, "ChainInfoContextDecorator");
2190
2286
  export {
2191
2287
  BlockChainPagination,
@@ -2196,6 +2292,7 @@ export {
2196
2292
  BlockListWrapperFlexBox,
2197
2293
  BlockNumberTableCell,
2198
2294
  BlockNumberTextField,
2295
+ BlockPayloadCountsTableCell,
2199
2296
  BlockProducerChip,
2200
2297
  BlockProducerTableCell,
2201
2298
  BlockTransactionCountTableCell,
@@ -2231,6 +2328,7 @@ export {
2231
2328
  buildBlockHeadingComponent,
2232
2329
  buildRandomBlockChain,
2233
2330
  buildRandomBlockChainBlocksOnly,
2331
+ payloadCountsFromBlock,
2234
2332
  resolveDefinedHead,
2235
2333
  txsFromBlock,
2236
2334
  useAnchorElement,
@@ -2243,6 +2341,7 @@ export {
2243
2341
  useDynamicBlockComponents,
2244
2342
  useIterateChain,
2245
2343
  useOnBlock,
2344
+ usePayloadCountsFromBlock,
2246
2345
  useStaticBlockComponents,
2247
2346
  useTxsFromBlock
2248
2347
  };