@xyo-network/react-chain-blockchain 1.20.12 → 1.20.14

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 (46) hide show
  1. package/dist/browser/components/account/table/BalanceHistoryTableRow.d.ts.map +1 -1
  2. package/dist/browser/components/account/table/RawAmountTableCell.d.ts +2 -0
  3. package/dist/browser/components/account/table/RawAmountTableCell.d.ts.map +1 -1
  4. package/dist/browser/components/account/table/cell/AddressTableCell.d.ts +2 -0
  5. package/dist/browser/components/account/table/cell/AddressTableCell.d.ts.map +1 -1
  6. package/dist/browser/components/account/table/cell/BlockNumber.d.ts +14 -0
  7. package/dist/browser/components/account/table/cell/BlockNumber.d.ts.map +1 -0
  8. package/dist/browser/components/account/table/cell/HashTableCell.d.ts +3 -0
  9. package/dist/browser/components/account/table/cell/HashTableCell.d.ts.map +1 -1
  10. package/dist/browser/components/account/table/cell/index.d.ts +1 -0
  11. package/dist/browser/components/account/table/cell/index.d.ts.map +1 -1
  12. package/dist/browser/components/account/table/hooks/index.d.ts +2 -0
  13. package/dist/browser/components/account/table/hooks/index.d.ts.map +1 -0
  14. package/dist/browser/components/account/table/hooks/useLinkedBalanceHistoryItem.d.ts +5 -0
  15. package/dist/browser/components/account/table/hooks/useLinkedBalanceHistoryItem.d.ts.map +1 -0
  16. package/dist/browser/components/account/table/index.d.ts +1 -0
  17. package/dist/browser/components/account/table/index.d.ts.map +1 -1
  18. package/dist/browser/components/account/table/types/index.d.ts +2 -2
  19. package/dist/browser/components/account/table/types/index.d.ts.map +1 -1
  20. package/dist/browser/components/block/table/cell/BlockNumber.d.ts +2 -0
  21. package/dist/browser/components/block/table/cell/BlockNumber.d.ts.map +1 -1
  22. package/dist/browser/components/block/table/row/TableRow.d.ts.map +1 -1
  23. package/dist/browser/components/table/StyledLinkableTableRow.d.ts +6 -0
  24. package/dist/browser/components/table/StyledLinkableTableRow.d.ts.map +1 -0
  25. package/dist/browser/components/table/index.d.ts +2 -0
  26. package/dist/browser/components/table/index.d.ts.map +1 -0
  27. package/dist/browser/index.mjs +282 -205
  28. package/dist/browser/index.mjs.map +1 -1
  29. package/package.json +20 -20
  30. package/src/components/account/table/BalanceHistoryTableEx.stories.tsx +1 -1
  31. package/src/components/account/table/BalanceHistoryTableRow.stories.tsx +52 -0
  32. package/src/components/account/table/BalanceHistoryTableRow.tsx +31 -14
  33. package/src/components/account/table/RawAmountTableCell.tsx +5 -5
  34. package/src/components/account/table/cell/AddressTableCell.tsx +6 -5
  35. package/src/components/account/table/cell/BlockNumber.tsx +39 -0
  36. package/src/components/account/table/cell/HashTableCell.tsx +6 -5
  37. package/src/components/account/table/cell/index.ts +1 -0
  38. package/src/components/account/table/hooks/index.ts +1 -0
  39. package/src/components/account/table/hooks/useLinkedBalanceHistoryItem.tsx +29 -0
  40. package/src/components/account/table/index.ts +1 -0
  41. package/src/components/account/table/types/index.ts +3 -2
  42. package/src/components/block/table/cell/BlockNumber.tsx +9 -10
  43. package/src/components/block/table/row/TableRow.stories.tsx +6 -2
  44. package/src/components/block/table/row/TableRow.tsx +5 -12
  45. package/src/components/table/StyledLinkableTableRow.tsx +12 -0
  46. package/src/components/table/index.ts +1 -0
@@ -2,13 +2,13 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
 
4
4
  // src/components/account/BalanceHistoryFlexbox.tsx
5
- import { Typography as Typography7 } from "@mui/material";
5
+ import { Typography as Typography8 } from "@mui/material";
6
6
  import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
7
- import { isDefined as isDefined7 } from "@xylabs/sdk-js";
7
+ import { isDefined as isDefined8 } from "@xylabs/sdk-js";
8
8
  import { useAccountBalanceHistory } from "@xyo-network/react-chain-provider";
9
9
  import { ErrorRender as ErrorRender3 } from "@xyo-network/react-error";
10
10
  import { AttoXL1 } from "@xyo-network/xl1-sdk";
11
- import React30 from "react";
11
+ import React31 from "react";
12
12
 
13
13
  // src/components/account/helpers/formatBalanceMagnitude.ts
14
14
  import { XL1Amount } from "@xyo-network/xl1-sdk";
@@ -29,15 +29,16 @@ var formatBalance = /* @__PURE__ */ __name((balance) => {
29
29
  }, "formatBalance");
30
30
 
31
31
  // src/components/account/table/BalanceHistoryTableEx.tsx
32
- import { TableBody as TableBody2, TableCell as TableCell14, TableHead as TableHead2, TableRow as TableRow4 } from "@mui/material";
33
- import { isDefined as isDefined6 } from "@xylabs/sdk-js";
32
+ import { TableBody as TableBody2, TableCell as TableCell15, TableHead as TableHead2, TableRow as TableRow3 } from "@mui/material";
33
+ import { isDefined as isDefined7 } from "@xylabs/sdk-js";
34
34
  import { TableEx as TableEx2 } from "@xyo-network/react-table";
35
- import React29 from "react";
35
+ import React30 from "react";
36
36
 
37
37
  // src/components/account/table/BalanceHistoryTableRow.tsx
38
- import { TableCell as TableCell13, TableRow as TableRow3 } from "@mui/material";
38
+ import { TableCell as TableCell14 } from "@mui/material";
39
+ import { isDefined as isDefined6 } from "@xylabs/sdk-js";
39
40
  import { RawInfoIconButton } from "@xyo-network/react-payload-raw-info";
40
- import React28, { useMemo as useMemo7 } from "react";
41
+ import React29, { useMemo as useMemo7 } from "react";
41
42
 
42
43
  // src/components/block/BlockHeadingFlexbox.tsx
43
44
  import { FlexCol as FlexCol2, FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
@@ -650,19 +651,43 @@ var BlockHeadingFlexbox = /* @__PURE__ */ __name(({ block, defaultExpanded, tran
650
651
 
651
652
  // src/components/block/table/cell/BlockNumber.tsx
652
653
  import { Link, TableCell, Tooltip, Typography as Typography3 } from "@mui/material";
653
- import { useEvent as useEvent2 } from "@xyo-network/react-event";
654
654
  import React13 from "react";
655
- var BlockNumberTableCell = /* @__PURE__ */ __name(({ block, linked, ...props }) => {
655
+
656
+ // src/components/block/table/cell/hooks/useLinkedBlockItem.tsx
657
+ import { useEvent as useEvent2 } from "@xyo-network/react-event";
658
+ var useLinkedBlockItem = /* @__PURE__ */ __name((noun, data) => {
659
+ const [ref, dispatch] = useEvent2();
660
+ const handleClick = /* @__PURE__ */ __name((event) => {
661
+ event.preventDefault();
662
+ event.stopPropagation();
663
+ if (noun === void 0) {
664
+ console.warn("useLinkedBlockItem: noun is required");
665
+ return;
666
+ }
667
+ const selection = globalThis.getSelection();
668
+ const isTextSelected = selection && selection.toString().length > 0;
669
+ if (!isTextSelected) {
670
+ dispatch(noun, "click", data, event.nativeEvent);
671
+ }
672
+ }, "handleClick");
673
+ return [
674
+ ref,
675
+ handleClick
676
+ ];
677
+ }, "useLinkedBlockItem");
678
+
679
+ // src/components/block/table/cell/BlockNumber.tsx
680
+ var BlockNumberTableCell = /* @__PURE__ */ __name(({ block, eventNoun = "block-number", linked, ...props }) => {
656
681
  const blockNumber = block?.[0].block;
657
682
  return /* @__PURE__ */ React13.createElement(BlockNumberTableCellInner, {
658
683
  blockNumber,
684
+ eventNoun,
659
685
  linked,
660
686
  ...props
661
687
  });
662
688
  }, "BlockNumberTableCell");
663
- var BlockNumberTableCellInner = /* @__PURE__ */ __name(({ blockNumber, linked, ...props }) => {
664
- const [ref, dispatch] = useEvent2();
665
- const handleClick = /* @__PURE__ */ __name((event) => dispatch("block-number", "click", blockNumber?.toString() ?? "", event.nativeEvent), "handleClick");
689
+ var BlockNumberTableCellInner = /* @__PURE__ */ __name(({ blockNumber, eventNoun = "block-number", linked, ...props }) => {
690
+ const [ref, handleClick] = useLinkedBlockItem(eventNoun, blockNumber?.toLocaleString());
666
691
  return /* @__PURE__ */ React13.createElement(TableCell, {
667
692
  ref,
668
693
  ...props
@@ -783,29 +808,6 @@ var FeatureNotAvailable = /* @__PURE__ */ __name(({ featureName = "Feature", ...
783
808
  onClick: /* @__PURE__ */ __name((e) => props.onClose?.(e, "backdropClick"), "onClick")
784
809
  }, "Close"))), "FeatureNotAvailable");
785
810
 
786
- // src/components/block/table/cell/hooks/useLinkedBlockItem.tsx
787
- import { useEvent as useEvent3 } from "@xyo-network/react-event";
788
- var useLinkedBlockItem = /* @__PURE__ */ __name((noun, data) => {
789
- const [ref, dispatch] = useEvent3();
790
- const handleClick = /* @__PURE__ */ __name((event) => {
791
- event.preventDefault();
792
- event.stopPropagation();
793
- if (noun === void 0) {
794
- console.warn("useLinkedBlockItem: noun is required");
795
- return;
796
- }
797
- const selection = globalThis.getSelection();
798
- const isTextSelected = selection && selection.toString().length > 0;
799
- if (!isTextSelected) {
800
- dispatch(noun, "click", data, event.nativeEvent);
801
- }
802
- }, "handleClick");
803
- return [
804
- ref,
805
- handleClick
806
- ];
807
- }, "useLinkedBlockItem");
808
-
809
811
  // src/components/block/table/cell/Hash.tsx
810
812
  var BlockHashTableCell = /* @__PURE__ */ __name(({ block, notAvailableDialog, linked, ...props }) => {
811
813
  const hash = usePayloadRootHash(block?.[0]);
@@ -1051,11 +1053,24 @@ var BlockchainTableEx = /* @__PURE__ */ __name(({ ref, children, ...props }) =>
1051
1053
  BlockchainTableEx.displayName = "BlockchainTableEx";
1052
1054
 
1053
1055
  // src/components/block/table/row/TableRow.tsx
1054
- import { TableRow as TableRow2, useTheme } from "@mui/material";
1055
- import { alphaCss } from "@xylabs/react-theme";
1056
1056
  import { usePayloadRootHash as usePayloadRootHash3 } from "@xyo-network/react-shared";
1057
1057
  import React24, { useMemo as useMemo6 } from "react";
1058
- var BlockChainTableRow = /* @__PURE__ */ __name(({ block, deepValidation, defaultExpanded, linked, sx, ...props }) => {
1058
+
1059
+ // src/components/table/StyledLinkableTableRow.tsx
1060
+ import { styled, TableRow as TableRow2 } from "@mui/material";
1061
+ import { alphaCss } from "@xylabs/react-theme";
1062
+ var StyledLinkableTableRow = styled(TableRow2, {
1063
+ shouldForwardProp: /* @__PURE__ */ __name((prop) => prop !== "linked", "shouldForwardProp")
1064
+ })(({ theme, linked }) => ({
1065
+ "cursor": linked ? "pointer" : "default",
1066
+ "overflowY": "scroll",
1067
+ "&:hover": {
1068
+ backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15)
1069
+ }
1070
+ }));
1071
+
1072
+ // src/components/block/table/row/TableRow.tsx
1073
+ var BlockChainTableRow = /* @__PURE__ */ __name(({ block, deepValidation, defaultExpanded, linked, ...props }) => {
1059
1074
  const linkedTableCellProps = useMemo6(() => ({
1060
1075
  block,
1061
1076
  linked
@@ -1070,18 +1085,10 @@ var BlockChainTableRow = /* @__PURE__ */ __name(({ block, deepValidation, defaul
1070
1085
  ]);
1071
1086
  const hash = usePayloadRootHash3(block?.[0]);
1072
1087
  const [ref, handleClick] = useLinkedBlockItem("block-hash", hash);
1073
- const theme = useTheme();
1074
- return /* @__PURE__ */ React24.createElement(TableRow2, {
1088
+ return /* @__PURE__ */ React24.createElement(StyledLinkableTableRow, {
1075
1089
  onClick: linked ? handleClick : void 0,
1076
1090
  ref,
1077
- sx: {
1078
- "cursor": linked ? "pointer" : "default",
1079
- "overflowY": "scroll",
1080
- "&:hover": {
1081
- backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15)
1082
- },
1083
- ...sx
1084
- },
1091
+ linked,
1085
1092
  ...props
1086
1093
  }, /* @__PURE__ */ React24.createElement(BlockNumberTableCell, {
1087
1094
  align: "left",
@@ -1109,11 +1116,34 @@ var BlockChainTableRow = /* @__PURE__ */ __name(({ block, deepValidation, defaul
1109
1116
 
1110
1117
  // src/components/account/table/cell/AddressTableCell.tsx
1111
1118
  import { TableCell as TableCell10, Tooltip as Tooltip8 } from "@mui/material";
1112
- import { useEvent as useEvent4 } from "@xyo-network/react-event";
1113
1119
  import React25 from "react";
1114
- var AddressTableCell = /* @__PURE__ */ __name(({ address, linked, toolTipTitle, sx, ...props }) => {
1115
- const [ref, dispatch] = useEvent4();
1116
- const handleClick = /* @__PURE__ */ __name((event) => dispatch("address", "click", address, event.nativeEvent), "handleClick");
1120
+
1121
+ // src/components/account/table/hooks/useLinkedBalanceHistoryItem.tsx
1122
+ import { useEvent as useEvent3 } from "@xyo-network/react-event";
1123
+ var useLinkedBalanceHistoryItem = /* @__PURE__ */ __name(() => {
1124
+ const [ref, dispatch] = useEvent3();
1125
+ const handleClick = /* @__PURE__ */ __name((event, noun, data) => {
1126
+ event.preventDefault();
1127
+ event.stopPropagation();
1128
+ if (noun === void 0) {
1129
+ console.warn("useLinkedBalanceHistoryItem: noun is required");
1130
+ return;
1131
+ }
1132
+ const selection = globalThis.getSelection();
1133
+ const isTextSelected = selection && selection.toString().length > 0;
1134
+ if (!isTextSelected) {
1135
+ dispatch(noun, "click", data, event.nativeEvent);
1136
+ }
1137
+ }, "handleClick");
1138
+ return [
1139
+ ref,
1140
+ handleClick
1141
+ ];
1142
+ }, "useLinkedBalanceHistoryItem");
1143
+
1144
+ // src/components/account/table/cell/AddressTableCell.tsx
1145
+ var AddressTableCell = /* @__PURE__ */ __name(({ address, eventNoun, linked, toolTipTitle, sx, ...props }) => {
1146
+ const [ref, handleClick] = useLinkedBalanceHistoryItem();
1117
1147
  return /* @__PURE__ */ React25.createElement(TableCell10, {
1118
1148
  ref,
1119
1149
  sx: {
@@ -1125,29 +1155,57 @@ var AddressTableCell = /* @__PURE__ */ __name(({ address, linked, toolTipTitle,
1125
1155
  title: toolTipTitle
1126
1156
  }, /* @__PURE__ */ React25.createElement(BlockAddressChip, {
1127
1157
  address,
1128
- onClick: handleClick
1158
+ onClick: linked ? (e) => handleClick(e, eventNoun, address) : void 0
1129
1159
  })));
1130
1160
  }, "AddressTableCell");
1131
1161
 
1132
- // src/components/account/table/cell/HashTableCell.tsx
1162
+ // src/components/account/table/cell/BlockNumber.tsx
1133
1163
  import { Link as Link5, TableCell as TableCell11, Tooltip as Tooltip9, Typography as Typography6 } from "@mui/material";
1134
- import { ellipsize as ellipsize2, isDefined as isDefined4 } from "@xylabs/sdk-js";
1135
- import { useEvent as useEvent5 } from "@xyo-network/react-event";
1136
1164
  import React26 from "react";
1137
- var HashTableCell = /* @__PURE__ */ __name(({ hash, linked, toolTipTitle, sx, ...props }) => {
1138
- const [ref, dispatch] = useEvent5();
1139
- const handleClick = /* @__PURE__ */ __name((event) => dispatch("tx-hash", "click", hash, event.nativeEvent), "handleClick");
1140
- const shortenedHash = isDefined4(hash) ? ellipsize2(hash, 6) : "N/A";
1165
+ var BalanceHistoryBlockNumberTableCell = /* @__PURE__ */ __name(({ block, eventNoun = "block-number", linked, ...props }) => {
1166
+ const blockNumber = block?.[0].block;
1167
+ return /* @__PURE__ */ React26.createElement(BalanceHistoryBlockNumberTableCellInner, {
1168
+ blockNumber,
1169
+ eventNoun,
1170
+ linked,
1171
+ ...props
1172
+ });
1173
+ }, "BalanceHistoryBlockNumberTableCell");
1174
+ var BalanceHistoryBlockNumberTableCellInner = /* @__PURE__ */ __name(({ blockNumber, eventNoun = "block-number", linked, ...props }) => {
1175
+ const [ref, handleClick] = useLinkedBalanceHistoryItem();
1141
1176
  return /* @__PURE__ */ React26.createElement(TableCell11, {
1142
1177
  ref,
1143
1178
  ...props
1144
- }, hash ? /* @__PURE__ */ React26.createElement(Tooltip9, {
1145
- title: toolTipTitle
1179
+ }, /* @__PURE__ */ React26.createElement(Tooltip9, {
1180
+ title: `Block Number: ${blockNumber}`
1146
1181
  }, /* @__PURE__ */ React26.createElement(Typography6, {
1147
1182
  component: "span",
1148
1183
  variant: "body1"
1149
1184
  }, linked ? /* @__PURE__ */ React26.createElement(Link5, {
1150
- onClick: handleClick,
1185
+ onClick: /* @__PURE__ */ __name((e) => handleClick(e, eventNoun, blockNumber?.toString() ?? ""), "onClick"),
1186
+ sx: {
1187
+ cursor: "pointer"
1188
+ }
1189
+ }, blockNumber) : blockNumber)));
1190
+ }, "BalanceHistoryBlockNumberTableCellInner");
1191
+
1192
+ // src/components/account/table/cell/HashTableCell.tsx
1193
+ import { Link as Link6, TableCell as TableCell12, Tooltip as Tooltip10, Typography as Typography7 } from "@mui/material";
1194
+ import { ellipsize as ellipsize2, isDefined as isDefined4 } from "@xylabs/sdk-js";
1195
+ import React27 from "react";
1196
+ var HashTableCell = /* @__PURE__ */ __name(({ eventData, eventNoun = "tx-hash", hash, linked, toolTipTitle, sx, ...props }) => {
1197
+ const [ref, handleClick] = useLinkedBalanceHistoryItem();
1198
+ const shortenedHash = isDefined4(hash) ? ellipsize2(hash, 6) : "N/A";
1199
+ return /* @__PURE__ */ React27.createElement(TableCell12, {
1200
+ ref,
1201
+ ...props
1202
+ }, hash ? /* @__PURE__ */ React27.createElement(Tooltip10, {
1203
+ title: toolTipTitle
1204
+ }, /* @__PURE__ */ React27.createElement(Typography7, {
1205
+ component: "span",
1206
+ variant: "body1"
1207
+ }, linked ? /* @__PURE__ */ React27.createElement(Link6, {
1208
+ onClick: /* @__PURE__ */ __name((e) => handleClick(e, eventNoun, eventData), "onClick"),
1151
1209
  sx: {
1152
1210
  cursor: "pointer"
1153
1211
  }
@@ -1155,14 +1213,12 @@ var HashTableCell = /* @__PURE__ */ __name(({ hash, linked, toolTipTitle, sx, ..
1155
1213
  }, "HashTableCell");
1156
1214
 
1157
1215
  // src/components/account/table/RawAmountTableCell.tsx
1158
- import { Link as Link6, TableCell as TableCell12, Tooltip as Tooltip10 } from "@mui/material";
1216
+ import { Link as Link7, TableCell as TableCell13, Tooltip as Tooltip11 } from "@mui/material";
1159
1217
  import { isDefined as isDefined5, toHex as toHex2 } from "@xylabs/sdk-js";
1160
- import { useEvent as useEvent6 } from "@xyo-network/react-event";
1161
1218
  import { XL1Amount as XL1Amount2 } from "@xyo-network/xl1-sdk";
1162
- import React27 from "react";
1163
- var RawAmountTableCell = /* @__PURE__ */ __name(({ amount, linked, sx, type, ...props }) => {
1164
- const [ref, dispatch] = useEvent6();
1165
- const handleClick = /* @__PURE__ */ __name((event) => dispatch("amount", "click", isDefined5(amount) ? toHex2(amount) : "", event.nativeEvent), "handleClick");
1219
+ import React28 from "react";
1220
+ var RawAmountTableCell = /* @__PURE__ */ __name(({ amount, eventNoun = "amount", linked, sx, type, ...props }) => {
1221
+ const [ref, handleClick] = useLinkedBalanceHistoryItem();
1166
1222
  const formatAmount = /* @__PURE__ */ __name((amount2) => {
1167
1223
  if (!isDefined5(amount2)) {
1168
1224
  return "N/A";
@@ -1176,52 +1232,69 @@ var RawAmountTableCell = /* @__PURE__ */ __name(({ amount, linked, sx, type, ...
1176
1232
  locale: navigator.language
1177
1233
  });
1178
1234
  }, "formatAmount");
1179
- return /* @__PURE__ */ React27.createElement(TableCell12, {
1235
+ return /* @__PURE__ */ React28.createElement(TableCell13, {
1180
1236
  ref,
1181
1237
  ...props
1182
- }, /* @__PURE__ */ React27.createElement(Tooltip10, {
1238
+ }, /* @__PURE__ */ React28.createElement(Tooltip11, {
1183
1239
  title: `Raw Amount: ${amount}`
1184
- }, linked ? /* @__PURE__ */ React27.createElement(Link6, {
1185
- onClick: handleClick,
1240
+ }, linked ? /* @__PURE__ */ React28.createElement(Link7, {
1241
+ onClick: /* @__PURE__ */ __name((e) => handleClick(e, eventNoun, isDefined5(amount) ? toHex2(amount) : ""), "onClick"),
1186
1242
  sx: {
1187
1243
  cursor: "pointer"
1188
1244
  }
1189
- }, type === "send" ? "-" : "", formatAmount(amount)) : /* @__PURE__ */ React27.createElement("span", null, type === "send" ? "-" : "", formatAmount(amount))));
1245
+ }, type === "send" ? "-" : "", formatAmount(amount)) : /* @__PURE__ */ React28.createElement("span", null, type === "send" ? "-" : "", formatAmount(amount))));
1190
1246
  }, "RawAmountTableCell");
1191
1247
 
1192
1248
  // src/components/account/table/BalanceHistoryTableRow.tsx
1193
1249
  var BalanceHistoryTableRow = /* @__PURE__ */ __name(({ linked, row, ...props }) => {
1194
- const { amount, blockNumber, debug, from, key, timestamp, to, type, txHash } = row ?? {};
1250
+ const { amount, blockNumber, debug, from, key, timestamp, to, type, txHash, transferHash } = row ?? {};
1195
1251
  const linkedTableCallProps = useMemo7(() => ({
1196
1252
  linked
1197
1253
  }), [
1198
1254
  linked
1199
1255
  ]);
1200
- return /* @__PURE__ */ React28.createElement(TableRow3, {
1256
+ const [ref, handleClick] = useLinkedBalanceHistoryItem();
1257
+ const noun = isDefined6(txHash) ? "tx-hash|transfer-hash" : "block-number|transfer-hash";
1258
+ const data = isDefined6(txHash) ? `${txHash}|${transferHash}` : `${blockNumber}|${transferHash}`;
1259
+ return /* @__PURE__ */ React29.createElement(StyledLinkableTableRow, {
1260
+ linked,
1201
1261
  key,
1262
+ onClick: linked ? (e) => handleClick(e, noun, data) : void 0,
1263
+ ref,
1202
1264
  ...props
1203
- }, /* @__PURE__ */ React28.createElement(HashTableCell, {
1265
+ }, /* @__PURE__ */ React29.createElement(HashTableCell, {
1204
1266
  hash: txHash,
1205
1267
  toolTipTitle: `Transaction Hash: ${txHash}`,
1268
+ eventNoun: "tx-hash",
1206
1269
  ...linkedTableCallProps
1207
- }), /* @__PURE__ */ React28.createElement(BlockNumberTableCellInner, {
1270
+ }), /* @__PURE__ */ React29.createElement(BalanceHistoryBlockNumberTableCellInner, {
1208
1271
  blockNumber,
1272
+ eventNoun: "block-number",
1209
1273
  ...linkedTableCallProps
1210
- }), /* @__PURE__ */ React28.createElement(BlockEpochTableCellInner, {
1274
+ }), /* @__PURE__ */ React29.createElement(BlockEpochTableCellInner, {
1211
1275
  epoch: timestamp,
1212
1276
  ...linkedTableCallProps
1213
- }), /* @__PURE__ */ React28.createElement(AddressTableCell, {
1277
+ }), /* @__PURE__ */ React29.createElement(AddressTableCell, {
1214
1278
  address: from,
1215
1279
  toolTipTitle: `From Address: ${from}`,
1280
+ eventNoun: "from-address",
1216
1281
  ...linkedTableCallProps
1217
- }), /* @__PURE__ */ React28.createElement(AddressTableCell, {
1282
+ }), /* @__PURE__ */ React29.createElement(AddressTableCell, {
1218
1283
  address: to,
1219
1284
  toolTipTitle: `To Address: ${to}`,
1285
+ eventNoun: "to-address",
1220
1286
  ...linkedTableCallProps
1221
- }), /* @__PURE__ */ React28.createElement(RawAmountTableCell, {
1287
+ }), /* @__PURE__ */ React29.createElement(RawAmountTableCell, {
1222
1288
  amount,
1223
- type
1224
- }), /* @__PURE__ */ React28.createElement(TableCell13, null, /* @__PURE__ */ React28.createElement(RawInfoIconButton, {
1289
+ type,
1290
+ eventNoun: "amount"
1291
+ }), /* @__PURE__ */ React29.createElement(HashTableCell, {
1292
+ hash: transferHash,
1293
+ toolTipTitle: `Transfer Hash: ${transferHash}`,
1294
+ eventNoun: noun,
1295
+ eventData: data,
1296
+ ...linkedTableCallProps
1297
+ }), /* @__PURE__ */ React29.createElement(TableCell14, null, /* @__PURE__ */ React29.createElement(RawInfoIconButton, {
1225
1298
  rawValue: debug
1226
1299
  })));
1227
1300
  }, "BalanceHistoryTableRow");
@@ -1234,14 +1307,15 @@ var TableHeadingLabels = [
1234
1307
  "From",
1235
1308
  "To",
1236
1309
  "Amount",
1310
+ "TransferHash",
1237
1311
  "Debug"
1238
1312
  ];
1239
1313
 
1240
1314
  // src/components/account/table/BalanceHistoryTableEx.tsx
1241
1315
  var AccountBalanceHistoryTableEx = /* @__PURE__ */ __name(({ history, linked, ...props }) => {
1242
- return isDefined6(history) ? /* @__PURE__ */ React29.createElement(TableEx2, props, /* @__PURE__ */ React29.createElement(TableHead2, null, /* @__PURE__ */ React29.createElement(TableRow4, null, TableHeadingLabels.map((heading) => /* @__PURE__ */ React29.createElement(TableCell14, {
1316
+ return isDefined7(history) ? /* @__PURE__ */ React30.createElement(TableEx2, props, /* @__PURE__ */ React30.createElement(TableHead2, null, /* @__PURE__ */ React30.createElement(TableRow3, null, TableHeadingLabels.map((heading) => /* @__PURE__ */ React30.createElement(TableCell15, {
1243
1317
  key: heading
1244
- }, heading)))), /* @__PURE__ */ React29.createElement(TableBody2, null, history?.map((row) => /* @__PURE__ */ React29.createElement(BalanceHistoryTableRow, {
1318
+ }, heading)))), /* @__PURE__ */ React30.createElement(TableBody2, null, history?.map((row) => /* @__PURE__ */ React30.createElement(BalanceHistoryTableRow, {
1245
1319
  key: row.key,
1246
1320
  linked,
1247
1321
  row
@@ -1258,22 +1332,22 @@ var AccountBalanceHistoryFlexBox = /* @__PURE__ */ __name(({ address, refresh, v
1258
1332
  ],
1259
1333
  history: void 0
1260
1334
  };
1261
- return isDefined7(history) && isDefined7(address) ? /* @__PURE__ */ React30.createElement(FlexCol3, props, /* @__PURE__ */ React30.createElement(ErrorRender3, {
1335
+ return isDefined8(history) && isDefined8(address) ? /* @__PURE__ */ React31.createElement(FlexCol3, props, /* @__PURE__ */ React31.createElement(ErrorRender3, {
1262
1336
  error,
1263
1337
  scope: "AccountBalanceHistoryTable"
1264
- }), /* @__PURE__ */ React30.createElement(Typography7, {
1338
+ }), /* @__PURE__ */ React31.createElement(Typography8, {
1265
1339
  variant: "h6",
1266
1340
  gutterBottom: true
1267
- }, formatBalanceMagnitude(balance)), truncated ? /* @__PURE__ */ React30.createElement(Typography7, {
1341
+ }, formatBalanceMagnitude(balance)), truncated ? /* @__PURE__ */ React31.createElement(Typography8, {
1268
1342
  variant: "caption",
1269
1343
  gutterBottom: true
1270
- }, "Ranged Balance from", " ", history.at(-1).blockNumber, " ", "-", " ", history[0].blockNumber) : null, /* @__PURE__ */ React30.createElement(AccountBalanceHistoryTableEx, {
1344
+ }, "Ranged Balance from", " ", history.at(-1).blockNumber, " ", "-", " ", history[0].blockNumber) : null, /* @__PURE__ */ React31.createElement(AccountBalanceHistoryTableEx, {
1271
1345
  history
1272
1346
  })) : null;
1273
1347
  }, "AccountBalanceHistoryFlexBox");
1274
1348
 
1275
1349
  // src/components/account/hooks/usePagedAccountBalanceHistory.ts
1276
- import { isDefined as isDefined8 } from "@xylabs/sdk-js";
1350
+ import { isDefined as isDefined9 } from "@xylabs/sdk-js";
1277
1351
  import { useAccountBalanceHistory as useAccountBalanceHistory2 } from "@xyo-network/react-chain-provider";
1278
1352
  import { useCallback, useState as useState9 } from "react";
1279
1353
  var usePagedAccountBalanceHistory = /* @__PURE__ */ __name((address, viewer, maxPage = 1) => {
@@ -1282,17 +1356,17 @@ var usePagedAccountBalanceHistory = /* @__PURE__ */ __name((address, viewer, max
1282
1356
  const [results, error, loading] = useAccountBalanceHistory2(address, viewer, maxPage, updatedBlockRange);
1283
1357
  const { history, truncated } = results || {};
1284
1358
  const [previousHistory, setPreviousHistory] = useState9(history);
1285
- if (isDefined8(history) && history !== previousHistory) {
1359
+ if (isDefined9(history) && history !== previousHistory) {
1286
1360
  setPagedHistory([
1287
1361
  ...pagedHistory ?? [],
1288
1362
  ...history
1289
1363
  ]);
1290
1364
  setPreviousHistory(history);
1291
1365
  }
1292
- const lastBlock = isDefined8(history) ? history.at(-1)?.blockNumber : void 0;
1293
- const historyComplete = isDefined8(history) && history.length === 0 || lastBlock === 0;
1366
+ const lastBlock = isDefined9(history) ? history.at(-1)?.blockNumber : void 0;
1367
+ const historyComplete = isDefined9(history) && history.length === 0 || lastBlock === 0;
1294
1368
  const updateRange = useCallback(() => {
1295
- if (isDefined8(lastBlock) && lastBlock > 0 && truncated) {
1369
+ if (isDefined9(lastBlock) && lastBlock > 0 && truncated) {
1296
1370
  const newEndBlock = lastBlock - 1;
1297
1371
  setUpdatedBlockRange([
1298
1372
  0,
@@ -1314,31 +1388,31 @@ var usePagedAccountBalanceHistory = /* @__PURE__ */ __name((address, viewer, max
1314
1388
 
1315
1389
  // src/components/chain/controls/PollingControlsFlexbox.tsx
1316
1390
  import { Autorenew, Pause } from "@mui/icons-material";
1317
- import { Alert as Alert3, AlertTitle as AlertTitle2, Grow, Icon as Icon2, IconButton as IconButton4, Tooltip as Tooltip11 } from "@mui/material";
1391
+ import { Alert as Alert3, AlertTitle as AlertTitle2, Grow, Icon as Icon2, IconButton as IconButton4, Tooltip as Tooltip12 } from "@mui/material";
1318
1392
  import { FlexRow as FlexRow6 } from "@xylabs/react-flexbox";
1319
- import React35, { memo } from "react";
1393
+ import React36, { memo } from "react";
1320
1394
 
1321
1395
  // src/components/chain/stats/Dialog.tsx
1322
1396
  import { QueryStats } from "@mui/icons-material";
1323
1397
  import { Dialog as Dialog3, DialogContent as DialogContent3, DialogTitle as DialogTitle3, IconButton as IconButton3 } from "@mui/material";
1324
- import React33, { useState as useState10 } from "react";
1398
+ import React34, { useState as useState10 } from "react";
1325
1399
 
1326
1400
  // src/components/chain/stats/producer/ProducerFlexbox.tsx
1327
- import { Typography as Typography8 } from "@mui/material";
1401
+ import { Typography as Typography9 } from "@mui/material";
1328
1402
  import { ErrorRender as ErrorRender4 } from "@xylabs/react-error";
1329
1403
  import { FlexCol as FlexCol4 } from "@xylabs/react-flexbox";
1330
1404
  import { isChainSummaryProducers } from "@xyo-network/chain-analyze";
1331
- import React32, { useMemo as useMemo8 } from "react";
1405
+ import React33, { useMemo as useMemo8 } from "react";
1332
1406
 
1333
1407
  // src/components/chain/stats/producer/Table.tsx
1334
- import { Table, TableBody as TableBody3, TableCell as TableCell15, TableHead as TableHead3, TableRow as TableRow5, useTheme as useTheme2 } from "@mui/material";
1408
+ import { Table, TableBody as TableBody3, TableCell as TableCell16, TableHead as TableHead3, TableRow as TableRow4, useTheme } from "@mui/material";
1335
1409
  import { BlockiesAvatar as BlockiesAvatar2 } from "@xyo-network/react-chain-blockies";
1336
- import React31 from "react";
1410
+ import React32 from "react";
1337
1411
  var ChainProducerStatsTable = /* @__PURE__ */ __name(({ producers, ...props }) => {
1338
- const theme = useTheme2();
1339
- return /* @__PURE__ */ React31.createElement(Table, props, /* @__PURE__ */ React31.createElement(TableHead3, null, /* @__PURE__ */ React31.createElement(TableRow5, null, /* @__PURE__ */ React31.createElement(TableCell15, null, "Address"), /* @__PURE__ */ React31.createElement(TableCell15, null, "Blocks Produced"), /* @__PURE__ */ React31.createElement(TableCell15, null, "Rewards Earned Produced"))), /* @__PURE__ */ React31.createElement(TableBody3, null, producers?.map((producer) => /* @__PURE__ */ React31.createElement(TableRow5, {
1412
+ const theme = useTheme();
1413
+ return /* @__PURE__ */ React32.createElement(Table, props, /* @__PURE__ */ React32.createElement(TableHead3, null, /* @__PURE__ */ React32.createElement(TableRow4, null, /* @__PURE__ */ React32.createElement(TableCell16, null, "Address"), /* @__PURE__ */ React32.createElement(TableCell16, null, "Blocks Produced"), /* @__PURE__ */ React32.createElement(TableCell16, null, "Rewards Earned Produced"))), /* @__PURE__ */ React32.createElement(TableBody3, null, producers?.map((producer) => /* @__PURE__ */ React32.createElement(TableRow4, {
1340
1414
  key: producer.address
1341
- }, /* @__PURE__ */ React31.createElement(TableCell15, null, /* @__PURE__ */ React31.createElement(BlockiesAvatar2, {
1415
+ }, /* @__PURE__ */ React32.createElement(TableCell16, null, /* @__PURE__ */ React32.createElement(BlockiesAvatar2, {
1342
1416
  blockiesOptions: {
1343
1417
  seed: producer.address
1344
1418
  },
@@ -1346,7 +1420,7 @@ var ChainProducerStatsTable = /* @__PURE__ */ __name(({ producers, ...props }) =
1346
1420
  height: theme.spacing(2.75),
1347
1421
  width: theme.spacing(2.75)
1348
1422
  }
1349
- })), /* @__PURE__ */ React31.createElement(TableCell15, null, producer.blocksProduced.toString()), /* @__PURE__ */ React31.createElement(TableCell15, null, producer.rewardsEarned.toString())))));
1423
+ })), /* @__PURE__ */ React32.createElement(TableCell16, null, producer.blocksProduced.toString()), /* @__PURE__ */ React32.createElement(TableCell16, null, producer.rewardsEarned.toString())))));
1350
1424
  }, "ChainProducerStatsTable");
1351
1425
 
1352
1426
  // src/components/chain/stats/producer/ProducerFlexbox.tsx
@@ -1368,16 +1442,16 @@ var BlockProducerStatsFlexbox = /* @__PURE__ */ __name(({ payload, ...props }) =
1368
1442
  const producersArray = useMemo8(() => Object.values(producer?.producers ?? {}), [
1369
1443
  producer
1370
1444
  ]);
1371
- return /* @__PURE__ */ React32.createElement(FlexCol4, {
1445
+ return /* @__PURE__ */ React33.createElement(FlexCol4, {
1372
1446
  alignItems: "start",
1373
1447
  gap: 1,
1374
1448
  ...props
1375
- }, /* @__PURE__ */ React32.createElement(ErrorRender4, {
1449
+ }, /* @__PURE__ */ React33.createElement(ErrorRender4, {
1376
1450
  error: producerError,
1377
1451
  scope: "BlockProducerStatsFlexbox"
1378
- }), /* @__PURE__ */ React32.createElement(Typography8, {
1452
+ }), /* @__PURE__ */ React33.createElement(Typography9, {
1379
1453
  fontSize: "1rem"
1380
- }, "Block Producers"), /* @__PURE__ */ React32.createElement(ChainProducerStatsTable, {
1454
+ }, "Block Producers"), /* @__PURE__ */ React33.createElement(ChainProducerStatsTable, {
1381
1455
  producers: producersArray
1382
1456
  }));
1383
1457
  }, "BlockProducerStatsFlexbox");
@@ -1385,18 +1459,18 @@ var BlockProducerStatsFlexbox = /* @__PURE__ */ __name(({ payload, ...props }) =
1385
1459
  // src/components/chain/stats/Dialog.tsx
1386
1460
  var ChainAnalyzerStatsDialog = /* @__PURE__ */ __name((props) => {
1387
1461
  const { analyzers, statsUpdated } = useChainAnalyzersContext();
1388
- return /* @__PURE__ */ React33.createElement(Dialog3, props, /* @__PURE__ */ React33.createElement(DialogTitle3, null, "Chain Analysis"), /* @__PURE__ */ React33.createElement(DialogContent3, null, statsUpdated > 0 ? Object.entries(analyzers).map(([id2, analyzer]) => /* @__PURE__ */ React33.createElement("div", {
1462
+ return /* @__PURE__ */ React34.createElement(Dialog3, props, /* @__PURE__ */ React34.createElement(DialogTitle3, null, "Chain Analysis"), /* @__PURE__ */ React34.createElement(DialogContent3, null, statsUpdated > 0 ? Object.entries(analyzers).map(([id2, analyzer]) => /* @__PURE__ */ React34.createElement("div", {
1389
1463
  key: id2
1390
- }, id2 === "producers" ? /* @__PURE__ */ React33.createElement(BlockProducerStatsFlexbox, {
1464
+ }, id2 === "producers" ? /* @__PURE__ */ React34.createElement(BlockProducerStatsFlexbox, {
1391
1465
  payload: analyzer.result()
1392
1466
  }) : null)) : null));
1393
1467
  }, "ChainAnalyzerStatsDialog");
1394
1468
  var ChainAnalyzerStatsDialogFromContext = /* @__PURE__ */ __name((props) => {
1395
1469
  const [open, setOpen] = useState10(false);
1396
1470
  const handleClose = /* @__PURE__ */ __name(() => setOpen(false), "handleClose");
1397
- return /* @__PURE__ */ React33.createElement(React33.Fragment, null, /* @__PURE__ */ React33.createElement(IconButton3, {
1471
+ return /* @__PURE__ */ React34.createElement(React34.Fragment, null, /* @__PURE__ */ React34.createElement(IconButton3, {
1398
1472
  onClick: /* @__PURE__ */ __name(() => setOpen(true), "onClick")
1399
- }, /* @__PURE__ */ React33.createElement(QueryStats, null)), /* @__PURE__ */ React33.createElement(ChainAnalyzerStatsDialog, {
1473
+ }, /* @__PURE__ */ React34.createElement(QueryStats, null)), /* @__PURE__ */ React34.createElement(ChainAnalyzerStatsDialog, {
1400
1474
  onClose: handleClose,
1401
1475
  open,
1402
1476
  ...props
@@ -1404,20 +1478,20 @@ var ChainAnalyzerStatsDialogFromContext = /* @__PURE__ */ __name((props) => {
1404
1478
  }, "ChainAnalyzerStatsDialogFromContext");
1405
1479
 
1406
1480
  // src/components/chain/controls/PulseSvgIcon.tsx
1407
- import { createSvgIcon, keyframes, styled } from "@mui/material";
1408
- import React34 from "react";
1409
- var PulseSvgIcon = createSvgIcon(/* @__PURE__ */ React34.createElement("svg", {
1481
+ import { createSvgIcon, keyframes, styled as styled2 } from "@mui/material";
1482
+ import React35 from "react";
1483
+ var PulseSvgIcon = createSvgIcon(/* @__PURE__ */ React35.createElement("svg", {
1410
1484
  viewBox: "0 0 80 80",
1411
1485
  version: "1.1",
1412
1486
  xmlns: "http://www.w3.org/2000/svg"
1413
- }, /* @__PURE__ */ React34.createElement("g", {
1487
+ }, /* @__PURE__ */ React35.createElement("g", {
1414
1488
  transform: "translate(34,34)"
1415
- }, /* @__PURE__ */ React34.createElement("circle", {
1489
+ }, /* @__PURE__ */ React35.createElement("circle", {
1416
1490
  className: "core",
1417
1491
  cx: "0",
1418
1492
  cy: "0",
1419
1493
  r: "6"
1420
- }), /* @__PURE__ */ React34.createElement("circle", {
1494
+ }), /* @__PURE__ */ React35.createElement("circle", {
1421
1495
  className: "radar",
1422
1496
  cx: "0",
1423
1497
  cy: "0",
@@ -1454,7 +1528,7 @@ var pulse2 = keyframes`
1454
1528
  opacity: 0;
1455
1529
  }
1456
1530
  `;
1457
- var StyledPulseSvgIcon = styled(PulseSvgIcon)(({ theme }) => {
1531
+ var StyledPulseSvgIcon = styled2(PulseSvgIcon)(({ theme }) => {
1458
1532
  return {
1459
1533
  "& .core": {
1460
1534
  animation: `${pulse1} 1.25s ease-in-out infinite`,
@@ -1481,24 +1555,24 @@ var StyledPulseSvgIcon = styled(PulseSvgIcon)(({ theme }) => {
1481
1555
  var PollingControlsFlexbox = /* @__PURE__ */ __name(({ blocksBehind, pollingState, setPollingState }) => {
1482
1556
  const paused = pollingState === "paused";
1483
1557
  const running = pollingState === "running";
1484
- return /* @__PURE__ */ React35.createElement(FlexRow6, {
1558
+ return /* @__PURE__ */ React36.createElement(FlexRow6, {
1485
1559
  justifyContent: "space-between",
1486
1560
  width: "100%"
1487
- }, /* @__PURE__ */ React35.createElement(FlexRow6, {
1561
+ }, /* @__PURE__ */ React36.createElement(FlexRow6, {
1488
1562
  gap: 2
1489
- }, running ? /* @__PURE__ */ React35.createElement(IconButton4, {
1563
+ }, running ? /* @__PURE__ */ React36.createElement(IconButton4, {
1490
1564
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("paused"), "onClick"),
1491
1565
  title: "Pause Block Stream"
1492
- }, /* @__PURE__ */ React35.createElement(Pause, null)) : null, paused ? /* @__PURE__ */ React35.createElement(IconButton4, {
1566
+ }, /* @__PURE__ */ React36.createElement(Pause, null)) : null, paused ? /* @__PURE__ */ React36.createElement(IconButton4, {
1493
1567
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("running"), "onClick"),
1494
1568
  title: "Re-Sync Block Stream"
1495
- }, /* @__PURE__ */ React35.createElement(Autorenew, null)) : null, /* @__PURE__ */ React35.createElement(ChainAnalyzerStatsDialogFromContext, null)), /* @__PURE__ */ React35.createElement(FlexRow6, {
1569
+ }, /* @__PURE__ */ React36.createElement(Autorenew, null)) : null, /* @__PURE__ */ React36.createElement(ChainAnalyzerStatsDialogFromContext, null)), /* @__PURE__ */ React36.createElement(FlexRow6, {
1496
1570
  gap: 2
1497
- }, /* @__PURE__ */ React35.createElement(Grow, {
1571
+ }, /* @__PURE__ */ React36.createElement(Grow, {
1498
1572
  in: (blocksBehind ?? 0) > 0
1499
- }, /* @__PURE__ */ React35.createElement(Tooltip11, {
1573
+ }, /* @__PURE__ */ React36.createElement(Tooltip12, {
1500
1574
  title: "Click to Re-Sync"
1501
- }, /* @__PURE__ */ React35.createElement(Alert3, {
1575
+ }, /* @__PURE__ */ React36.createElement(Alert3, {
1502
1576
  sx: {
1503
1577
  py: 0,
1504
1578
  px: 1,
@@ -1506,11 +1580,11 @@ var PollingControlsFlexbox = /* @__PURE__ */ __name(({ blocksBehind, pollingStat
1506
1580
  },
1507
1581
  severity: "warning",
1508
1582
  onClick: /* @__PURE__ */ __name(() => setPollingState?.("running"), "onClick")
1509
- }, /* @__PURE__ */ React35.createElement(AlertTitle2, {
1583
+ }, /* @__PURE__ */ React36.createElement(AlertTitle2, {
1510
1584
  sx: {
1511
1585
  mb: 0
1512
1586
  }
1513
- }, "Behind:", " ", blocksBehind)))), /* @__PURE__ */ React35.createElement(Icon2, null, /* @__PURE__ */ React35.createElement(StyledPulseSvgIcon, {
1587
+ }, "Behind:", " ", blocksBehind)))), /* @__PURE__ */ React36.createElement(Icon2, null, /* @__PURE__ */ React36.createElement(StyledPulseSvgIcon, {
1514
1588
  className: running ? "" : "paused"
1515
1589
  }))));
1516
1590
  }, "PollingControlsFlexbox");
@@ -1518,12 +1592,12 @@ var MemoizedPollingControlsFlexbox = /* @__PURE__ */ memo(PollingControlsFlexbox
1518
1592
 
1519
1593
  // src/components/chain/dialog/Dialog.tsx
1520
1594
  import { Button as Button4, Dialog as Dialog4, DialogActions as DialogActions3, DialogContent as DialogContent4 } from "@mui/material";
1521
- import React36 from "react";
1595
+ import React37 from "react";
1522
1596
  var TransactionsDialog = /* @__PURE__ */ __name(({ onClose, ...props }) => {
1523
- return /* @__PURE__ */ React36.createElement(Dialog4, {
1597
+ return /* @__PURE__ */ React37.createElement(Dialog4, {
1524
1598
  onClose,
1525
1599
  ...props
1526
- }, /* @__PURE__ */ React36.createElement(DialogContent4, null, "Transactions Dialog"), /* @__PURE__ */ React36.createElement(DialogActions3, null, /* @__PURE__ */ React36.createElement(Button4, {
1600
+ }, /* @__PURE__ */ React37.createElement(DialogContent4, null, "Transactions Dialog"), /* @__PURE__ */ React37.createElement(DialogActions3, null, /* @__PURE__ */ React37.createElement(Button4, {
1527
1601
  variant: "outlined",
1528
1602
  onClick: /* @__PURE__ */ __name((e) => onClose?.(e, "escapeKeyDown"), "onClick")
1529
1603
  }, "Close")));
@@ -1565,9 +1639,9 @@ var useOnBlock = /* @__PURE__ */ __name((initialHeadNumber, onAddBlock, liveHead
1565
1639
 
1566
1640
  // src/components/chain/pagination/BlockChainPagination.tsx
1567
1641
  import { TablePaginationActions } from "@xyo-network/react-payload-table";
1568
- import React37 from "react";
1642
+ import React38 from "react";
1569
1643
  var BlockChainPagination = /* @__PURE__ */ __name(({ count = 0, onPageChange, page, rowsPerPage = 10 }) => {
1570
- return /* @__PURE__ */ React37.createElement(TablePaginationActions, {
1644
+ return /* @__PURE__ */ React38.createElement(TablePaginationActions, {
1571
1645
  count,
1572
1646
  onPageChange,
1573
1647
  page,
@@ -1599,9 +1673,9 @@ var useChainPagination = /* @__PURE__ */ __name((pageSize, blockComponents) => {
1599
1673
  }, "useChainPagination");
1600
1674
 
1601
1675
  // src/components/chain/styled/BlockListWrapperFlexbox.tsx
1602
- import { styled as styled2 } from "@mui/material";
1676
+ import { styled as styled3 } from "@mui/material";
1603
1677
  import { FlexCol as FlexCol5 } from "@xylabs/react-flexbox";
1604
- var BlockListWrapperFlexBox = styled2(FlexCol5, {
1678
+ var BlockListWrapperFlexBox = styled3(FlexCol5, {
1605
1679
  name: "BlockListWrapperFlexbox"
1606
1680
  })(() => ({
1607
1681
  "& > div:nth-of-type(2) .block-heading-flexbox .divider-spacer": {
@@ -1618,19 +1692,19 @@ var BlockListWrapperFlexBox = styled2(FlexCol5, {
1618
1692
  // src/components/payload/builder/Flexbox.tsx
1619
1693
  import { FlexCol as FlexCol6 } from "@xylabs/react-flexbox";
1620
1694
  import { JsonViewerEx as JsonViewerEx2 } from "@xyo-network/react-payload-raw-info";
1621
- import React38, { useState as useState12 } from "react";
1695
+ import React39, { useState as useState12 } from "react";
1622
1696
  var PayloadBuilderFlexbox = /* @__PURE__ */ __name(({ BuilderComponent, onBuild, ...props }) => {
1623
1697
  const [payload, setPayload] = useState12();
1624
1698
  const onBuildLocal = /* @__PURE__ */ __name((payload2) => {
1625
1699
  onBuild?.(payload2);
1626
1700
  setPayload(payload2);
1627
1701
  }, "onBuildLocal");
1628
- return /* @__PURE__ */ React38.createElement(FlexCol6, {
1702
+ return /* @__PURE__ */ React39.createElement(FlexCol6, {
1629
1703
  gap: 2,
1630
1704
  ...props
1631
- }, /* @__PURE__ */ React38.createElement(BuilderComponent, {
1705
+ }, /* @__PURE__ */ React39.createElement(BuilderComponent, {
1632
1706
  onBuild: onBuildLocal
1633
- }), payload ? /* @__PURE__ */ React38.createElement(JsonViewerEx2, {
1707
+ }), payload ? /* @__PURE__ */ React39.createElement(JsonViewerEx2, {
1634
1708
  value: payload
1635
1709
  }) : null);
1636
1710
  }, "PayloadBuilderFlexbox");
@@ -1639,12 +1713,12 @@ var PayloadBuilderFlexbox = /* @__PURE__ */ __name(({ BuilderComponent, onBuild,
1639
1713
  import { Button as Button5, FormControl as FormControl5 } from "@mui/material";
1640
1714
  import { usePromise as usePromise3 } from "@xylabs/react-promise";
1641
1715
  import { createProducerChainStakeIntent } from "@xyo-network/chain-protocol";
1642
- import React41, { useState as useState15 } from "react";
1716
+ import React42, { useState as useState15 } from "react";
1643
1717
 
1644
1718
  // src/components/payload/fields/BlockNumberTextField.tsx
1645
1719
  import { FormControl as FormControl3, FormHelperText as FormHelperText2, TextField as TextField3 } from "@mui/material";
1646
1720
  import { toXL1BlockNumber as toXL1BlockNumber2 } from "@xyo-network/xl1-sdk";
1647
- import React39, { useState as useState13 } from "react";
1721
+ import React40, { useState as useState13 } from "react";
1648
1722
  var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumberChanged, onChange, ...props }) => {
1649
1723
  const [blockNumber, setBlockNumber] = useState13();
1650
1724
  const handleChange = /* @__PURE__ */ __name((e) => {
@@ -1654,15 +1728,15 @@ var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumber
1654
1728
  onChange?.(e);
1655
1729
  }, "handleChange");
1656
1730
  const errored = errorMessage !== void 0;
1657
- return /* @__PURE__ */ React39.createElement(FormControl3, {
1731
+ return /* @__PURE__ */ React40.createElement(FormControl3, {
1658
1732
  fullWidth: true
1659
- }, /* @__PURE__ */ React39.createElement(TextField3, {
1733
+ }, /* @__PURE__ */ React40.createElement(TextField3, {
1660
1734
  error: errored,
1661
1735
  onChange: handleChange,
1662
1736
  type: "number",
1663
1737
  value: blockNumber ?? "",
1664
1738
  ...props
1665
- }), errored ? /* @__PURE__ */ React39.createElement(FormHelperText2, {
1739
+ }), errored ? /* @__PURE__ */ React40.createElement(FormHelperText2, {
1666
1740
  sx: {
1667
1741
  color: "error.main"
1668
1742
  }
@@ -1671,13 +1745,13 @@ var BlockNumberTextField = /* @__PURE__ */ __name(({ errorMessage, onBlockNumber
1671
1745
 
1672
1746
  // src/components/payload/fields/XyoAddressTextField.tsx
1673
1747
  import { FormControl as FormControl4, FormHelperText as FormHelperText3, TextField as TextField4 } from "@mui/material";
1674
- import { asAddress, isAddress, isDefined as isDefined9 } from "@xylabs/sdk-js";
1675
- import React40, { useState as useState14 } from "react";
1748
+ import { asAddress, isAddress, isDefined as isDefined10 } from "@xylabs/sdk-js";
1749
+ import React41, { useState as useState14 } from "react";
1676
1750
  var XyoAddressTextField = /* @__PURE__ */ __name(({ onAddressChanged, onChange, resetValue, ...props }) => {
1677
1751
  const [address, setAddress] = useState14("");
1678
1752
  const [addressError, setAddressError] = useState14();
1679
1753
  const [previousResetValue, setPreviousResetValue] = useState14(resetValue);
1680
- if (isDefined9(resetValue) && resetValue !== previousResetValue) {
1754
+ if (isDefined10(resetValue) && resetValue !== previousResetValue) {
1681
1755
  setPreviousResetValue(resetValue);
1682
1756
  setAddress("");
1683
1757
  }
@@ -1702,15 +1776,15 @@ var XyoAddressTextField = /* @__PURE__ */ __name(({ onAddressChanged, onChange,
1702
1776
  onAddressChanged?.();
1703
1777
  }
1704
1778
  }, "handleBlur");
1705
- return /* @__PURE__ */ React40.createElement(FormControl4, {
1779
+ return /* @__PURE__ */ React41.createElement(FormControl4, {
1706
1780
  fullWidth: true
1707
- }, /* @__PURE__ */ React40.createElement(TextField4, {
1781
+ }, /* @__PURE__ */ React41.createElement(TextField4, {
1708
1782
  error: !!addressError,
1709
1783
  onBlur: handleBlur,
1710
1784
  onChange: handleChange,
1711
1785
  value: address,
1712
1786
  ...props
1713
- }), addressError ? /* @__PURE__ */ React40.createElement(FormHelperText3, {
1787
+ }), addressError ? /* @__PURE__ */ React41.createElement(FormHelperText3, {
1714
1788
  sx: {
1715
1789
  color: "error.main"
1716
1790
  }
@@ -1743,33 +1817,33 @@ var ProducerIntentBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1743
1817
  const onBuildLocal = /* @__PURE__ */ __name(() => {
1744
1818
  if (onBuild && intentPayload) onBuild?.(intentPayload);
1745
1819
  }, "onBuildLocal");
1746
- return /* @__PURE__ */ React41.createElement(React41.Fragment, null, /* @__PURE__ */ React41.createElement(FormControl5, {
1820
+ return /* @__PURE__ */ React42.createElement(React42.Fragment, null, /* @__PURE__ */ React42.createElement(FormControl5, {
1747
1821
  fullWidth: true
1748
- }, /* @__PURE__ */ React41.createElement(XyoAddressTextField, {
1822
+ }, /* @__PURE__ */ React42.createElement(XyoAddressTextField, {
1749
1823
  label: "Delegate",
1750
1824
  name: "delegate",
1751
1825
  onAddressChanged: setDelegate,
1752
1826
  required: true,
1753
1827
  size: "small"
1754
- })), /* @__PURE__ */ React41.createElement(FormControl5, {
1828
+ })), /* @__PURE__ */ React42.createElement(FormControl5, {
1755
1829
  fullWidth: true
1756
- }, /* @__PURE__ */ React41.createElement(BlockNumberTextField, {
1830
+ }, /* @__PURE__ */ React42.createElement(BlockNumberTextField, {
1757
1831
  errorMessage: blockRangeError?.message,
1758
1832
  label: "Expires",
1759
1833
  name: "exp",
1760
1834
  onBlockNumberChanged: setExp,
1761
1835
  required: true,
1762
1836
  size: "small"
1763
- })), /* @__PURE__ */ React41.createElement(FormControl5, {
1837
+ })), /* @__PURE__ */ React42.createElement(FormControl5, {
1764
1838
  fullWidth: true
1765
- }, /* @__PURE__ */ React41.createElement(BlockNumberTextField, {
1839
+ }, /* @__PURE__ */ React42.createElement(BlockNumberTextField, {
1766
1840
  errorMessage: blockRangeError?.message,
1767
1841
  label: "Not Before",
1768
1842
  name: "nbf",
1769
1843
  onBlockNumberChanged: setNbf,
1770
1844
  required: true,
1771
1845
  size: "small"
1772
- })), /* @__PURE__ */ React41.createElement(Button5, {
1846
+ })), /* @__PURE__ */ React42.createElement(Button5, {
1773
1847
  disabled: !intentPayload,
1774
1848
  variant: "contained",
1775
1849
  onClick: onBuildLocal
@@ -1777,13 +1851,13 @@ var ProducerIntentBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1777
1851
  }, "ProducerIntentBuilderForm");
1778
1852
 
1779
1853
  // src/components/payload/builder/transfer/Flexbox.tsx
1780
- import React44 from "react";
1854
+ import React45 from "react";
1781
1855
 
1782
1856
  // src/components/payload/builder/transfer/Form.tsx
1783
1857
  import { Button as Button6, FormControl as FormControl7 } from "@mui/material";
1784
1858
  import { isAddress as isAddress3 } from "@xylabs/sdk-js";
1785
1859
  import { TransferSchema } from "@xyo-network/xl1-sdk";
1786
- import React43, { useMemo as useMemo10, useState as useState17 } from "react";
1860
+ import React44, { useMemo as useMemo10, useState as useState17 } from "react";
1787
1861
 
1788
1862
  // src/components/payload/builder/transfer/builder/SingleFlexbox.tsx
1789
1863
  import { RemoveCircle } from "@mui/icons-material";
@@ -1791,7 +1865,7 @@ import { FormControl as FormControl6, Icon as Icon3, IconButton as IconButton5 }
1791
1865
  import { FlexRow as FlexRow7 } from "@xylabs/react-flexbox";
1792
1866
  import { isAddress as isAddress2, isDefinedNotNull, toHex as toHex3 } from "@xylabs/sdk-js";
1793
1867
  import { BigIntInput } from "@xyo-network/react-shared";
1794
- import React42, { useEffect as useEffect2, useState as useState16 } from "react";
1868
+ import React43, { useEffect as useEffect2, useState as useState16 } from "react";
1795
1869
  var SingleTransferBuilderFlexbox = /* @__PURE__ */ __name(({ onTransferUpdated, onRemoveTransfer, singleTransfer, ...props }) => {
1796
1870
  const [toAddress3, setToAddress] = useState16();
1797
1871
  const [amount, setAmount] = useState16();
@@ -1808,29 +1882,29 @@ var SingleTransferBuilderFlexbox = /* @__PURE__ */ __name(({ onTransferUpdated,
1808
1882
  singleTransfer,
1809
1883
  toAddress3
1810
1884
  ]);
1811
- return /* @__PURE__ */ React42.createElement(FlexRow7, {
1885
+ return /* @__PURE__ */ React43.createElement(FlexRow7, {
1812
1886
  alignItems: "start",
1813
1887
  gap: 1,
1814
1888
  ...props
1815
- }, /* @__PURE__ */ React42.createElement(FormControl6, {
1889
+ }, /* @__PURE__ */ React43.createElement(FormControl6, {
1816
1890
  fullWidth: true
1817
- }, /* @__PURE__ */ React42.createElement(XyoAddressTextField, {
1891
+ }, /* @__PURE__ */ React43.createElement(XyoAddressTextField, {
1818
1892
  label: "To",
1819
1893
  name: "to",
1820
1894
  onAddressChanged: setToAddress,
1821
1895
  required: true,
1822
1896
  size: "small"
1823
- })), /* @__PURE__ */ React42.createElement(FormControl6, {
1897
+ })), /* @__PURE__ */ React43.createElement(FormControl6, {
1824
1898
  fullWidth: true
1825
- }, /* @__PURE__ */ React42.createElement(BigIntInput.TextField, {
1899
+ }, /* @__PURE__ */ React43.createElement(BigIntInput.TextField, {
1826
1900
  label: "Amount",
1827
1901
  name: "amount",
1828
1902
  onChangeFixedPoint: setAmount,
1829
1903
  required: true,
1830
1904
  size: "small"
1831
- })), /* @__PURE__ */ React42.createElement(IconButton5, {
1905
+ })), /* @__PURE__ */ React43.createElement(IconButton5, {
1832
1906
  onClick: /* @__PURE__ */ __name(() => onRemoveTransfer?.(singleTransfer.transferId), "onClick")
1833
- }, /* @__PURE__ */ React42.createElement(Icon3, null, /* @__PURE__ */ React42.createElement(RemoveCircle, null))));
1907
+ }, /* @__PURE__ */ React43.createElement(Icon3, null, /* @__PURE__ */ React43.createElement(RemoveCircle, null))));
1834
1908
  }, "SingleTransferBuilderFlexbox");
1835
1909
 
1836
1910
  // src/components/payload/builder/transfer/Form.tsx
@@ -1881,19 +1955,19 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1881
1955
  return transfer;
1882
1956
  }));
1883
1957
  }, "onTransferUpdated");
1884
- return /* @__PURE__ */ React43.createElement(React43.Fragment, null, /* @__PURE__ */ React43.createElement(FormControl7, {
1958
+ return /* @__PURE__ */ React44.createElement(React44.Fragment, null, /* @__PURE__ */ React44.createElement(FormControl7, {
1885
1959
  fullWidth: true
1886
- }, /* @__PURE__ */ React43.createElement(XyoAddressTextField, {
1960
+ }, /* @__PURE__ */ React44.createElement(XyoAddressTextField, {
1887
1961
  label: "From",
1888
1962
  name: "from",
1889
1963
  onAddressChanged: setFromAddress,
1890
1964
  required: true,
1891
1965
  size: "small"
1892
- })), /* @__PURE__ */ React43.createElement(Button6, {
1966
+ })), /* @__PURE__ */ React44.createElement(Button6, {
1893
1967
  onClick: onTransferAdded,
1894
1968
  size: "small",
1895
1969
  variant: "contained"
1896
- }, "Add Transfer"), transfers.map((transfer) => /* @__PURE__ */ React43.createElement(SingleTransferBuilderFlexbox, {
1970
+ }, "Add Transfer"), transfers.map((transfer) => /* @__PURE__ */ React44.createElement(SingleTransferBuilderFlexbox, {
1897
1971
  key: transfer.transferId,
1898
1972
  onTransferUpdated,
1899
1973
  onRemoveTransfer: onTransferRemoved,
@@ -1901,7 +1975,7 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1901
1975
  sx: {
1902
1976
  width: "100%"
1903
1977
  }
1904
- })), /* @__PURE__ */ React43.createElement(Button6, {
1978
+ })), /* @__PURE__ */ React44.createElement(Button6, {
1905
1979
  disabled: !transferPayload,
1906
1980
  variant: "contained",
1907
1981
  onClick: onBuildLocal
@@ -1909,7 +1983,7 @@ var TransferBuilderForm = /* @__PURE__ */ __name(({ onBuild }) => {
1909
1983
  }, "TransferBuilderForm");
1910
1984
 
1911
1985
  // src/components/payload/builder/transfer/Flexbox.tsx
1912
- var TransferBuilderFlexbox = /* @__PURE__ */ __name(({ onBuild, ...props }) => /* @__PURE__ */ React44.createElement(PayloadBuilderFlexbox, {
1986
+ var TransferBuilderFlexbox = /* @__PURE__ */ __name(({ onBuild, ...props }) => /* @__PURE__ */ React45.createElement(PayloadBuilderFlexbox, {
1913
1987
  gap: 4,
1914
1988
  alignItems: "start",
1915
1989
  BuilderComponent: TransferBuilderForm,
@@ -1919,7 +1993,7 @@ var TransferBuilderFlexbox = /* @__PURE__ */ __name(({ onBuild, ...props }) => /
1919
1993
 
1920
1994
  // src/components/rate/flexbox/FlexBox.tsx
1921
1995
  import { FlexCol as FlexCol7 } from "@xylabs/react-flexbox";
1922
- import { isDefined as isDefined10 } from "@xylabs/sdk-js";
1996
+ import { isDefined as isDefined11 } from "@xylabs/sdk-js";
1923
1997
 
1924
1998
  // src/helpers/rate/rateUnitToLabel.ts
1925
1999
  var rateUnitToLabel = /* @__PURE__ */ __name((rateUnit) => {
@@ -1950,10 +2024,10 @@ var rateUnitToLabel = /* @__PURE__ */ __name((rateUnit) => {
1950
2024
 
1951
2025
  // src/components/rate/SpanTypography.tsx
1952
2026
  import { ViewAgendaOutlined } from "@mui/icons-material";
1953
- import { Tooltip as Tooltip12 } from "@mui/material";
2027
+ import { Tooltip as Tooltip13 } from "@mui/material";
1954
2028
 
1955
2029
  // src/components/rate/support/MetricTypography.tsx
1956
- import { Icon as Icon4, Typography as Typography9 } from "@mui/material";
2030
+ import { Icon as Icon4, Typography as Typography10 } from "@mui/material";
1957
2031
  import { isUndefined as isUndefined2 } from "@xylabs/sdk-js";
1958
2032
  import { useEffect as useEffect3, useState as useState18 } from "react";
1959
2033
  var MetricTypography = /* @__PURE__ */ __name(({ animationDurationMs = 1e3, disableAnimation, icon, label, metric, sx, ...props }) => {
@@ -1988,7 +2062,7 @@ var MetricTypography = /* @__PURE__ */ __name(({ animationDurationMs = 1e3, disa
1988
2062
  minimumFractionDigits: 0,
1989
2063
  maximumFractionDigits: isWholeNumber ? 0 : 2
1990
2064
  });
1991
- return /* @__PURE__ */ React.createElement(Typography9, {
2065
+ return /* @__PURE__ */ React.createElement(Typography10, {
1992
2066
  variant: "h4",
1993
2067
  mb: 1,
1994
2068
  sx: {
@@ -2000,7 +2074,7 @@ var MetricTypography = /* @__PURE__ */ __name(({ animationDurationMs = 1e3, disa
2000
2074
  ...props
2001
2075
  }, /* @__PURE__ */ React.createElement(Icon4, {
2002
2076
  fontSize: "large"
2003
- }, icon), formattedValue, " ", /* @__PURE__ */ React.createElement(Typography9, {
2077
+ }, icon), formattedValue, " ", /* @__PURE__ */ React.createElement(Typography10, {
2004
2078
  component: "span",
2005
2079
  variant: "caption",
2006
2080
  lineHeight: 1.86
@@ -2009,7 +2083,7 @@ var MetricTypography = /* @__PURE__ */ __name(({ animationDurationMs = 1e3, disa
2009
2083
 
2010
2084
  // src/components/rate/SpanTypography.tsx
2011
2085
  var BlockRateSpanTypography = /* @__PURE__ */ __name(({ range, span, sx, ...props }) => {
2012
- return /* @__PURE__ */ React.createElement(Tooltip12, {
2086
+ return /* @__PURE__ */ React.createElement(Tooltip13, {
2013
2087
  title: `Block Range: ${range?.join(" - ")}`
2014
2088
  }, /* @__PURE__ */ React.createElement(MetricTypography, {
2015
2089
  icon: /* @__PURE__ */ React.createElement(ViewAgendaOutlined, {
@@ -2050,7 +2124,7 @@ var BlockRateTimeTypography = /* @__PURE__ */ __name(({ timeUnit, timeDifference
2050
2124
  // src/components/rate/flexbox/FlexBox.tsx
2051
2125
  var BlockRateFlexBox = /* @__PURE__ */ __name(({ blockRate, ...flexBoxProps }) => {
2052
2126
  const { range, span, rate, timeUnit, timeDifference } = blockRate ?? {};
2053
- const rateUnitLabel = isDefined10(timeUnit) ? rateUnitToLabel(timeUnit) : "";
2127
+ const rateUnitLabel = isDefined11(timeUnit) ? rateUnitToLabel(timeUnit) : "";
2054
2128
  return /* @__PURE__ */ React.createElement(FlexCol7, {
2055
2129
  alignItems: "start",
2056
2130
  ...flexBoxProps
@@ -2070,7 +2144,7 @@ var BlockRateFlexBox = /* @__PURE__ */ __name(({ blockRate, ...flexBoxProps }) =
2070
2144
  import { GaugeContainer, GaugeReferenceArc, GaugeValueArc } from "@mui/x-charts";
2071
2145
 
2072
2146
  // src/components/rate/gauge/helpers/blockRateConversions.ts
2073
- import { isDefined as isDefined11, isUndefined as isUndefined3 } from "@xylabs/sdk-js";
2147
+ import { isDefined as isDefined12, isUndefined as isUndefined3 } from "@xylabs/sdk-js";
2074
2148
  var toBlocksPerMillisecond = /* @__PURE__ */ __name((rateValue, unit) => {
2075
2149
  if (isUndefined3(unit)) return rateValue;
2076
2150
  const conversions = {
@@ -2081,7 +2155,7 @@ var toBlocksPerMillisecond = /* @__PURE__ */ __name((rateValue, unit) => {
2081
2155
  days: 864e5,
2082
2156
  weeks: 6048e5
2083
2157
  };
2084
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2158
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2085
2159
  }, "toBlocksPerMillisecond");
2086
2160
  var toBlocksPerSecond = /* @__PURE__ */ __name((rateValue, unit) => {
2087
2161
  if (isUndefined3(unit)) return rateValue;
@@ -2093,7 +2167,7 @@ var toBlocksPerSecond = /* @__PURE__ */ __name((rateValue, unit) => {
2093
2167
  days: 86400,
2094
2168
  weeks: 604800
2095
2169
  };
2096
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2170
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2097
2171
  }, "toBlocksPerSecond");
2098
2172
  var toBlocksPerMinute = /* @__PURE__ */ __name((rateValue, unit) => {
2099
2173
  if (isUndefined3(unit)) return rateValue;
@@ -2105,7 +2179,7 @@ var toBlocksPerMinute = /* @__PURE__ */ __name((rateValue, unit) => {
2105
2179
  days: 1 / 1440,
2106
2180
  weeks: 1 / 10080
2107
2181
  };
2108
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2182
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2109
2183
  }, "toBlocksPerMinute");
2110
2184
  var toBlocksPerHour = /* @__PURE__ */ __name((rateValue, unit) => {
2111
2185
  if (isUndefined3(unit)) return rateValue;
@@ -2117,7 +2191,7 @@ var toBlocksPerHour = /* @__PURE__ */ __name((rateValue, unit) => {
2117
2191
  days: 1 / 24,
2118
2192
  weeks: 1 / 168
2119
2193
  };
2120
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2194
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2121
2195
  }, "toBlocksPerHour");
2122
2196
  var toBlocksPerDay = /* @__PURE__ */ __name((rateValue, unit) => {
2123
2197
  if (isUndefined3(unit)) return rateValue;
@@ -2129,7 +2203,7 @@ var toBlocksPerDay = /* @__PURE__ */ __name((rateValue, unit) => {
2129
2203
  days: 1,
2130
2204
  weeks: 1 / 7
2131
2205
  };
2132
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2206
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2133
2207
  }, "toBlocksPerDay");
2134
2208
  var toBlocksPerWeek = /* @__PURE__ */ __name((rateValue, unit) => {
2135
2209
  if (isUndefined3(unit)) return rateValue;
@@ -2141,7 +2215,7 @@ var toBlocksPerWeek = /* @__PURE__ */ __name((rateValue, unit) => {
2141
2215
  days: 7,
2142
2216
  weeks: 1
2143
2217
  };
2144
- return rateValue * (isDefined11(conversions[unit]) ? conversions[unit] : 1);
2218
+ return rateValue * (isDefined12(conversions[unit]) ? conversions[unit] : 1);
2145
2219
  }, "toBlocksPerWeek");
2146
2220
  var BlockRateConversions = {
2147
2221
  millis: toBlocksPerMillisecond,
@@ -2153,13 +2227,13 @@ var BlockRateConversions = {
2153
2227
  };
2154
2228
 
2155
2229
  // src/components/rate/gauge/Pointer.tsx
2156
- import { useTheme as useTheme3 } from "@mui/material";
2230
+ import { useTheme as useTheme2 } from "@mui/material";
2157
2231
  import { useGaugeState } from "@mui/x-charts/Gauge";
2158
- import { isDefined as isDefined12 } from "@xylabs/sdk-js";
2232
+ import { isDefined as isDefined13 } from "@xylabs/sdk-js";
2159
2233
  import { useEffect as useEffect4, useState as useState19 } from "react";
2160
2234
  var GaugePointer = /* @__PURE__ */ __name(({ pointerColor, startAngle = 0 }) => {
2161
- const theme = useTheme3();
2162
- const strokeColor = isDefined12(pointerColor) ? pointerColor : theme.palette.error.dark;
2235
+ const theme = useTheme2();
2236
+ const strokeColor = isDefined13(pointerColor) ? pointerColor : theme.palette.error.dark;
2163
2237
  const { valueAngle, outerRadius, cx, cy } = useGaugeState();
2164
2238
  const [currentAngle, setCurrentAngle] = useState19(startAngle);
2165
2239
  useEffect4(() => {
@@ -2206,13 +2280,13 @@ var GaugePointer = /* @__PURE__ */ __name(({ pointerColor, startAngle = 0 }) =>
2206
2280
  }, "GaugePointer");
2207
2281
 
2208
2282
  // src/components/rate/gauge/Ticks.tsx
2209
- import { useTheme as useTheme4 } from "@mui/material";
2283
+ import { useTheme as useTheme3 } from "@mui/material";
2210
2284
  import { useGaugeState as useGaugeState2 } from "@mui/x-charts/Gauge";
2211
- import { isDefined as isDefined13 } from "@xylabs/sdk-js";
2285
+ import { isDefined as isDefined14 } from "@xylabs/sdk-js";
2212
2286
  var GaugeTicks = /* @__PURE__ */ __name(({ numTicks = 11, minorTicksPerMajor = 4, majorTickLength = 0.2, minorTickLength = 0.15, majorTickWidth = 2, minorTickWidth = 1, tickColor }) => {
2213
- const theme = useTheme4();
2287
+ const theme = useTheme3();
2214
2288
  const { startAngle, endAngle, outerRadius, cx, cy } = useGaugeState2();
2215
- const color = isDefined13(tickColor) ? tickColor : theme.vars.palette.text.secondary;
2289
+ const color = isDefined14(tickColor) ? tickColor : theme.vars.palette.text.secondary;
2216
2290
  if (startAngle === null || endAngle === null) {
2217
2291
  return null;
2218
2292
  }
@@ -2290,9 +2364,9 @@ var BlockRateSpeedGaugeContainer = /* @__PURE__ */ __name(({ blockRate, children
2290
2364
 
2291
2365
  // src/components/rate/gauge/WithLabel.tsx
2292
2366
  import { FlexCol as FlexCol8 } from "@xylabs/react-flexbox";
2293
- import { isDefined as isDefined14 } from "@xylabs/sdk-js";
2367
+ import { isDefined as isDefined15 } from "@xylabs/sdk-js";
2294
2368
  var BlockRateSpeedGaugeWithLabel = /* @__PURE__ */ __name(({ blockRate, ...props }) => {
2295
- const rateUnitLabel = isDefined14(blockRate?.rate) ? rateUnitToLabel(blockRate?.timeUnit) : "";
2369
+ const rateUnitLabel = isDefined15(blockRate?.rate) ? rateUnitToLabel(blockRate?.timeUnit) : "";
2296
2370
  return /* @__PURE__ */ React.createElement(FlexCol8, null, /* @__PURE__ */ React.createElement(BlockRateSpeedGaugeContainer, {
2297
2371
  blockRate,
2298
2372
  ...props
@@ -2308,7 +2382,7 @@ import { usePromise as usePromise4 } from "@xylabs/react-promise";
2308
2382
  import { buildRandomBlockChain } from "@xyo-network/react-chain-shared";
2309
2383
  import { ArchivistConfigSchema, MemoryArchivist } from "@xyo-network/sdk-js";
2310
2384
  import { flattenHydratedBlocks } from "@xyo-network/xl1-sdk";
2311
- import React45, { useEffect as useEffect5 } from "react";
2385
+ import React46, { useEffect as useEffect5 } from "react";
2312
2386
 
2313
2387
  // src/lib/getChainId.ts
2314
2388
  import { toAddress as toAddress2 } from "@xylabs/sdk-js";
@@ -2357,7 +2431,7 @@ var ChainArchivistDecorator = /* @__PURE__ */ __name((Story, { args, ...context
2357
2431
  }
2358
2432
  }
2359
2433
  };
2360
- return blockChainRenderProps?.chainArchivist ? /* @__PURE__ */ React45.createElement(Story, props) : /* @__PURE__ */ React45.createElement(CircularProgress, null);
2434
+ return blockChainRenderProps?.chainArchivist ? /* @__PURE__ */ React46.createElement(Story, props) : /* @__PURE__ */ React46.createElement(CircularProgress, null);
2361
2435
  }, "ChainArchivistDecorator");
2362
2436
 
2363
2437
  // src/stories/ChainArchivistDelayedInsertDecorator.tsx
@@ -2367,7 +2441,7 @@ import { delay } from "@xylabs/sdk-js";
2367
2441
  import { buildRandomBlockChain as buildRandomBlockChain2 } from "@xyo-network/react-chain-shared";
2368
2442
  import { ArchivistConfigSchema as ArchivistConfigSchema2, MemoryArchivist as MemoryArchivist2 } from "@xyo-network/sdk-js";
2369
2443
  import { flattenHydratedBlock } from "@xyo-network/xl1-sdk";
2370
- import React46, { useEffect as useEffect6, useState as useState20 } from "react";
2444
+ import React47, { useEffect as useEffect6, useState as useState20 } from "react";
2371
2445
  var chainArchivistRef;
2372
2446
  var ChainArchivistDelayedInsertDecorator = /* @__PURE__ */ __name((Story, context) => {
2373
2447
  const [firstBlock, setFirstBlock] = useState20();
@@ -2426,12 +2500,14 @@ var ChainArchivistDelayedInsertDecorator = /* @__PURE__ */ __name((Story, contex
2426
2500
  }
2427
2501
  }
2428
2502
  };
2429
- return firstBlock ? /* @__PURE__ */ React46.createElement(Story, props) : /* @__PURE__ */ React46.createElement(CircularProgress2, null);
2503
+ return firstBlock ? /* @__PURE__ */ React47.createElement(Story, props) : /* @__PURE__ */ React47.createElement(CircularProgress2, null);
2430
2504
  }, "ChainArchivistDelayedInsertDecorator");
2431
2505
  export {
2432
2506
  AccountBalanceHistoryFlexBox,
2433
2507
  AccountBalanceHistoryTableEx,
2434
2508
  AddressTableCell,
2509
+ BalanceHistoryBlockNumberTableCell,
2510
+ BalanceHistoryBlockNumberTableCellInner,
2435
2511
  BalanceHistoryTableRow,
2436
2512
  BlockAddressChip,
2437
2513
  BlockChainPagination,
@@ -2496,6 +2572,7 @@ export {
2496
2572
  useBlockProducer,
2497
2573
  useChainIteratorParams,
2498
2574
  useChainPagination,
2575
+ useLinkedBalanceHistoryItem,
2499
2576
  useOnBlock,
2500
2577
  usePagedAccountBalanceHistory,
2501
2578
  usePayloadCountsFromBlock,